mirror of
https://github.com/MariaDB/server.git
synced 2025-09-02 09:41:40 +03:00
Fix for bug#18753 Partitions: auto_increment fails
Current auto increment value is placed in partition in which latest record was saved. So to get auto_increment they have to scan all partitions and return max value. mysql-test/r/partition.result: Fix for bug#18753 Partitions: auto_increment fails test case mysql-test/t/partition.test: Fix for bug#18753 Partitions: auto_increment fails test case
This commit is contained in:
@@ -839,4 +839,21 @@ 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;
|
||||
create table t1 (s1 int auto_increment primary key)
|
||||
partition by list (s1)
|
||||
(partition p1 values in (1),
|
||||
partition p2 values in (2),
|
||||
partition p3 values in (3));
|
||||
insert into t1 values (null);
|
||||
insert into t1 values (null);
|
||||
insert into t1 values (null);
|
||||
select auto_increment from information_schema.tables where table_name='t1';
|
||||
auto_increment
|
||||
4
|
||||
select * from t1;
|
||||
s1
|
||||
1
|
||||
2
|
||||
3
|
||||
drop table t1;
|
||||
End of 5.1 tests
|
||||
|
@@ -956,4 +956,19 @@ PARTITION p2 VALUES LESS THAN (30) ENGINE = MyISAM);
|
||||
SHOW TABLE STATUS;
|
||||
DROP TABLE t1;
|
||||
|
||||
#
|
||||
# Bug#18753 Partitions: auto_increment fails
|
||||
#
|
||||
create table t1 (s1 int auto_increment primary key)
|
||||
partition by list (s1)
|
||||
(partition p1 values in (1),
|
||||
partition p2 values in (2),
|
||||
partition p3 values in (3));
|
||||
insert into t1 values (null);
|
||||
insert into t1 values (null);
|
||||
insert into t1 values (null);
|
||||
select auto_increment from information_schema.tables where table_name='t1';
|
||||
select * from t1;
|
||||
drop table t1;
|
||||
|
||||
--echo End of 5.1 tests
|
||||
|
@@ -4201,11 +4201,7 @@ void ha_partition::info(uint flag)
|
||||
if (flag & HA_STATUS_AUTO)
|
||||
{
|
||||
DBUG_PRINT("info", ("HA_STATUS_AUTO"));
|
||||
/*
|
||||
The auto increment value is only maintained by the first handler
|
||||
so we will only call this.
|
||||
*/
|
||||
m_file[0]->info(HA_STATUS_AUTO);
|
||||
auto_increment_value= get_auto_increment();
|
||||
}
|
||||
if (flag & HA_STATUS_VARIABLE)
|
||||
{
|
||||
@@ -5349,9 +5345,15 @@ void ha_partition::restore_auto_increment()
|
||||
|
||||
ulonglong ha_partition::get_auto_increment()
|
||||
{
|
||||
ulonglong auto_inc, max_auto_inc= 0;
|
||||
DBUG_ENTER("ha_partition::get_auto_increment");
|
||||
|
||||
DBUG_RETURN(m_file[0]->get_auto_increment());
|
||||
for (uint i= 0; i < m_tot_parts; i++)
|
||||
{
|
||||
auto_inc= m_file[i]->get_auto_increment();
|
||||
set_if_bigger(max_auto_inc, auto_inc);
|
||||
}
|
||||
DBUG_RETURN(max_auto_inc);
|
||||
}
|
||||
|
||||
|
||||
|
Reference in New Issue
Block a user