Commit 8ed7e148 authored by unknown's avatar unknown
Browse files

BUG#21173: SHOW TABLE STATUS crashes mysqld

Review fixes


mysql-test/r/partition.result:
  New test cases
mysql-test/t/partition.test:
  New test cases
sql/ha_partition.cc:
  Added comments after review
  + removed erroneus setting
parent 9cfcc214
Loading
Loading
Loading
Loading
+19 −1
Original line number Diff line number Diff line
@@ -2,10 +2,28 @@ drop table if exists t1;
create table t1 (a int)
engine = innodb
partition by key (a);
insert into t1 values (0);
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	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;
create table t1 (a int)
partition by list (a)
+11 −1
Original line number Diff line number Diff line
@@ -15,10 +15,20 @@ drop table if exists t1;
create table t1 (a int)
engine = innodb
partition by key (a);
insert into t1 values (0);
show table status;
insert into t1 values (0), (1), (2), (3);
show table status;
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
#
+6 −2
Original line number Diff line number Diff line
@@ -4186,12 +4186,16 @@ void ha_partition::info(uint flag)

    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,
                         &nb_reserved_values);
      release_auto_increment();
    }
    else
      stats.auto_increment_value= ~(ulonglong)(0);
  }
  if (flag & HA_STATUS_VARIABLE)
  {