Bug#25262 Auto Increment lost when changing Engine type
- Try to copy the autoincrement value when altering the table
This commit is contained in:
parent
0ee93fdb02
commit
61140f0446
@ -826,3 +826,27 @@ create table t1 (t varchar(255) default null, key t (t(80)))
|
|||||||
engine=myisam default charset=latin1;
|
engine=myisam default charset=latin1;
|
||||||
alter table t1 change t t text;
|
alter table t1 change t t text;
|
||||||
drop table t1;
|
drop table t1;
|
||||||
|
create table t1(id int(8) primary key auto_increment) engine=heap;
|
||||||
|
insert into t1 values (null);
|
||||||
|
insert into t1 values (null);
|
||||||
|
select * from t1;
|
||||||
|
id
|
||||||
|
1
|
||||||
|
2
|
||||||
|
alter table t1 auto_increment = 50;
|
||||||
|
alter table t1 engine = myisam;
|
||||||
|
insert into t1 values (null);
|
||||||
|
select * from t1;
|
||||||
|
id
|
||||||
|
1
|
||||||
|
2
|
||||||
|
50
|
||||||
|
alter table t1 engine = heap;
|
||||||
|
insert into t1 values (null);
|
||||||
|
select * from t1;
|
||||||
|
id
|
||||||
|
1
|
||||||
|
2
|
||||||
|
50
|
||||||
|
51
|
||||||
|
drop table t1;
|
||||||
|
35
mysql-test/r/bdb_notembedded.result
Normal file
35
mysql-test/r/bdb_notembedded.result
Normal file
@ -0,0 +1,35 @@
|
|||||||
|
set autocommit=1;
|
||||||
|
reset master;
|
||||||
|
create table bug16206 (a int);
|
||||||
|
insert into bug16206 values(1);
|
||||||
|
start transaction;
|
||||||
|
insert into bug16206 values(2);
|
||||||
|
commit;
|
||||||
|
show binlog events;
|
||||||
|
Log_name Pos Event_type Server_id End_log_pos Info
|
||||||
|
f n Format_desc 1 n Server ver: VERSION, Binlog ver: 4
|
||||||
|
f n Query 1 n use `test`; create table bug16206 (a int)
|
||||||
|
f n Query 1 n use `test`; insert into bug16206 values(1)
|
||||||
|
f n Query 1 n use `test`; insert into bug16206 values(2)
|
||||||
|
drop table bug16206;
|
||||||
|
reset master;
|
||||||
|
create table bug16206 (a int) engine= bdb;
|
||||||
|
insert into bug16206 values(0);
|
||||||
|
insert into bug16206 values(1);
|
||||||
|
start transaction;
|
||||||
|
insert into bug16206 values(2);
|
||||||
|
commit;
|
||||||
|
insert into bug16206 values(3);
|
||||||
|
show binlog events;
|
||||||
|
Log_name Pos Event_type Server_id End_log_pos Info
|
||||||
|
f n Format_desc 1 n Server ver: VERSION, Binlog ver: 4
|
||||||
|
f n Query 1 n use `test`; create table bug16206 (a int) engine= bdb
|
||||||
|
f n Query 1 n use `test`; insert into bug16206 values(0)
|
||||||
|
f n Query 1 n use `test`; insert into bug16206 values(1)
|
||||||
|
f n Query 1 n use `test`; BEGIN
|
||||||
|
f n Query 1 n use `test`; insert into bug16206 values(2)
|
||||||
|
f n Query 1 n use `test`; COMMIT
|
||||||
|
f n Query 1 n use `test`; insert into bug16206 values(3)
|
||||||
|
drop table bug16206;
|
||||||
|
set autocommit=0;
|
||||||
|
End of 5.0 tests
|
@ -613,3 +613,31 @@ create table t1 (t varchar(255) default null, key t (t(80)))
|
|||||||
engine=myisam default charset=latin1;
|
engine=myisam default charset=latin1;
|
||||||
alter table t1 change t t text;
|
alter table t1 change t t text;
|
||||||
drop table t1;
|
drop table t1;
|
||||||
|
|
||||||
|
#
|
||||||
|
# Bug#25262 Auto Increment lost when changing Engine type
|
||||||
|
#
|
||||||
|
|
||||||
|
create table t1(id int(8) primary key auto_increment) engine=heap;
|
||||||
|
|
||||||
|
insert into t1 values (null);
|
||||||
|
insert into t1 values (null);
|
||||||
|
|
||||||
|
select * from t1;
|
||||||
|
|
||||||
|
# Set auto increment to 50
|
||||||
|
alter table t1 auto_increment = 50;
|
||||||
|
|
||||||
|
# Alter to myisam
|
||||||
|
alter table t1 engine = myisam;
|
||||||
|
|
||||||
|
# This insert should get id 50
|
||||||
|
insert into t1 values (null);
|
||||||
|
select * from t1;
|
||||||
|
|
||||||
|
# Alter to heap again
|
||||||
|
alter table t1 engine = heap;
|
||||||
|
insert into t1 values (null);
|
||||||
|
select * from t1;
|
||||||
|
|
||||||
|
drop table t1;
|
||||||
|
38
mysql-test/t/bdb_notembedded.test
Normal file
38
mysql-test/t/bdb_notembedded.test
Normal file
@ -0,0 +1,38 @@
|
|||||||
|
-- source include/not_embedded.inc
|
||||||
|
-- source include/have_bdb.inc
|
||||||
|
|
||||||
|
#
|
||||||
|
# Bug #16206: Superfluous COMMIT event in binlog when updating BDB in autocommit mode
|
||||||
|
#
|
||||||
|
set autocommit=1;
|
||||||
|
|
||||||
|
let $VERSION=`select version()`;
|
||||||
|
|
||||||
|
reset master;
|
||||||
|
create table bug16206 (a int);
|
||||||
|
insert into bug16206 values(1);
|
||||||
|
start transaction;
|
||||||
|
insert into bug16206 values(2);
|
||||||
|
commit;
|
||||||
|
--replace_result $VERSION VERSION
|
||||||
|
--replace_column 1 f 2 n 5 n
|
||||||
|
show binlog events;
|
||||||
|
drop table bug16206;
|
||||||
|
|
||||||
|
reset master;
|
||||||
|
create table bug16206 (a int) engine= bdb;
|
||||||
|
insert into bug16206 values(0);
|
||||||
|
insert into bug16206 values(1);
|
||||||
|
start transaction;
|
||||||
|
insert into bug16206 values(2);
|
||||||
|
commit;
|
||||||
|
insert into bug16206 values(3);
|
||||||
|
--replace_result $VERSION VERSION
|
||||||
|
--replace_column 1 f 2 n 5 n
|
||||||
|
show binlog events;
|
||||||
|
drop table bug16206;
|
||||||
|
|
||||||
|
set autocommit=0;
|
||||||
|
|
||||||
|
|
||||||
|
--echo End of 5.0 tests
|
@ -3274,6 +3274,12 @@ view_err:
|
|||||||
create_info->avg_row_length= table->s->avg_row_length;
|
create_info->avg_row_length= table->s->avg_row_length;
|
||||||
if (!(used_fields & HA_CREATE_USED_DEFAULT_CHARSET))
|
if (!(used_fields & HA_CREATE_USED_DEFAULT_CHARSET))
|
||||||
create_info->default_table_charset= table->s->table_charset;
|
create_info->default_table_charset= table->s->table_charset;
|
||||||
|
if (!(used_fields & HA_CREATE_USED_AUTO) && table->found_next_number_field)
|
||||||
|
{
|
||||||
|
/* Table has an autoincrement, copy value to new table */
|
||||||
|
table->file->info(HA_STATUS_AUTO);
|
||||||
|
create_info->auto_increment_value= table->file->auto_increment_value;
|
||||||
|
}
|
||||||
|
|
||||||
restore_record(table, s->default_values); // Empty record for DEFAULT
|
restore_record(table, s->default_values); // Empty record for DEFAULT
|
||||||
List_iterator<Alter_drop> drop_it(alter_info->drop_list);
|
List_iterator<Alter_drop> drop_it(alter_info->drop_list);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user