diff --git a/mysql-test/r/partition.result b/mysql-test/r/partition.result index 1d186f0a56a..2722efefcb9 100644 --- a/mysql-test/r/partition.result +++ b/mysql-test/r/partition.result @@ -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) diff --git a/mysql-test/t/partition.test b/mysql-test/t/partition.test index dc1d96298d2..1c91802034c 100644 --- a/mysql-test/t/partition.test +++ b/mysql-test/t/partition.test @@ -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 # diff --git a/sql/ha_partition.cc b/sql/ha_partition.cc index 042b23632a6..10b531862fd 100644 --- a/sql/ha_partition.cc +++ b/sql/ha_partition.cc @@ -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) {