BUG#21173: SHOW TABLE STATUS crashes mysqld

Review fixes
parent 47a8ebe7
...@@ -2,10 +2,28 @@ drop table if exists t1; ...@@ -2,10 +2,28 @@ drop table if exists t1;
create table t1 (a int) create table t1 (a int)
engine = innodb engine = innodb
partition by key (a); partition by key (a);
insert into t1 values (0);
show table status; 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 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 InnoDB 10 Compact 2 8192 16384 0 0 0 NULL NULL NULL NULL latin1_swedish_ci NULL partitioned t1 InnoDB 10 Compact 2 8192 16384 0 0 0 NULL NULL NULL NULL latin1_swedish_ci NULL partitioned
insert into t1 values (0), (1), (2), (3);
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 InnoDB 10 Compact 4 4096 16384 0 0 0 NULL NULL NULL NULL latin1_swedish_ci NULL partitioned
drop table t1;
create table t1 (a int auto_increment primary key)
engine = innodb
partition by key (a);
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 InnoDB 10 Compact 2 8192 16384 0 0 0 1 NULL NULL NULL latin1_swedish_ci NULL partitioned
insert into t1 values (NULL), (NULL), (NULL), (NULL);
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 InnoDB 10 Compact 4 4096 16384 0 0 0 5 NULL NULL NULL latin1_swedish_ci NULL partitioned
insert into t1 values (NULL), (NULL), (NULL), (NULL);
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 InnoDB 10 Compact 8 2048 16384 0 0 0 9 NULL NULL NULL latin1_swedish_ci NULL partitioned
drop table t1; drop table t1;
create table t1 (a int) create table t1 (a int)
partition by list (a) partition by list (a)
......
...@@ -15,10 +15,20 @@ drop table if exists t1; ...@@ -15,10 +15,20 @@ drop table if exists t1;
create table t1 (a int) create table t1 (a int)
engine = innodb engine = innodb
partition by key (a); partition by key (a);
insert into t1 values (0); show table status;
insert into t1 values (0), (1), (2), (3);
show table status; show table status;
drop table t1; drop table t1;
create table t1 (a int auto_increment primary key)
engine = innodb
partition by key (a);
show table status;
insert into t1 values (NULL), (NULL), (NULL), (NULL);
show table status;
insert into t1 values (NULL), (NULL), (NULL), (NULL);
show table status;
drop table t1;
# #
# Bug 19309 Partitions: Crash if double procedural alter # Bug 19309 Partitions: Crash if double procedural alter
# #
......
...@@ -4186,12 +4186,16 @@ void ha_partition::info(uint flag) ...@@ -4186,12 +4186,16 @@ void ha_partition::info(uint flag)
if (table->found_next_number_field) if (table->found_next_number_field)
{ {
/*
Can only call get_auto_increment for tables that actually
have auto_increment columns, otherwise there will be
problems in handlers that don't expect get_auto_increment
for non-autoincrement tables.
*/
get_auto_increment(0, 0, 0, &stats.auto_increment_value, get_auto_increment(0, 0, 0, &stats.auto_increment_value,
&nb_reserved_values); &nb_reserved_values);
release_auto_increment(); release_auto_increment();
} }
else
stats.auto_increment_value= ~(ulonglong)(0);
} }
if (flag & HA_STATUS_VARIABLE) if (flag & HA_STATUS_VARIABLE)
{ {
......
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