MDEV-7150 Wrong auto increment values on INSERT .. ON DUPLICATE KEY UPDATE when the inserted columns include NULL in an auto-increment column

when restoring auto-inc value in INSERT ... ON DUPLICATE KEY UPDATE, take into account that
1. it may be changed in the UPDATE clause (old code did that)
2. it may be changed in the INSERT clause and then cause a dup key (old code missed that)
This commit is contained in:
Sergei Golubchik 2014-12-18 00:13:16 +01:00
parent a4ff2afcb4
commit 724dbaabc0
3 changed files with 18 additions and 1 deletions

View File

@ -0,0 +1,9 @@
create table t1 (a int(10) auto_increment primary key, b int(11));
insert t1 values (null,1);
insert t1 values (null,2), (1,-1), (null,3) on duplicate key update b=values(b);
select * from t1;
a b
1 -1
2 2
3 3
drop table t1;

View File

@ -0,0 +1,8 @@
#
# MDEV-7150 Wrong auto increment values on INSERT .. ON DUPLICATE KEY UPDATE when the inserted columns include NULL in an auto-increment column
#
create table t1 (a int(10) auto_increment primary key, b int(11));
insert t1 values (null,1);
insert t1 values (null,2), (1,-1), (null,3) on duplicate key update b=values(b);
select * from t1;
drop table t1;

View File

@ -1754,7 +1754,7 @@ int write_record(THD *thd, TABLE *table,COPY_INFO *info)
table->file->adjust_next_insert_id_after_explicit_value(table->next_number_field->val_int());
}
else
else if (prev_insert_id_for_cur_row)
{
table->file->restore_auto_increment(prev_insert_id_for_cur_row);
}