Skip to content

Commit

Permalink
dml : fix last insert id when autoid specified by user in first row. (#…
Browse files Browse the repository at this point in the history
  • Loading branch information
AilinKid authored and sre-bot committed Sep 2, 2019
1 parent 67d4f91 commit dbdb2f4
Show file tree
Hide file tree
Showing 2 changed files with 19 additions and 2 deletions.
5 changes: 3 additions & 2 deletions executor/insert_common.go
Original file line number Diff line number Diff line change
Expand Up @@ -570,8 +570,9 @@ func (e *InsertValues) adjustAutoIncrementDatum(ctx context.Context, d types.Dat
if e.filterErr(err) != nil {
return types.Datum{}, err
}
// It's compatible with mysql. So it sets last insert id to the first row.
if e.rowCount == 1 {
// It's compatible with mysql setting the first allocated autoID to lastInsertID.
// Cause autoID may be specified by user, judge only the first row is not suitable.
if e.lastInsertID == 0 {
e.lastInsertID = uint64(recordID)
}
}
Expand Down
16 changes: 16 additions & 0 deletions executor/insert_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -353,6 +353,22 @@ func (s *testSuite3) TestInsertWithAutoidSchema(c *C) {
`select * from t1 where id = 9`,
testkit.Rows(`9 9`),
},
// test last insert id
{
`insert into t1 values(3000, -1), (null, -2)`,
`select * from t1 where id = 3000`,
testkit.Rows(`3000 -1`),
},
{
`;`,
`select * from t1 where id = 3001`,
testkit.Rows(`3001 -2`),
},
{
`;`,
`select last_insert_id()`,
testkit.Rows(`3001`),
},
{
`insert into t2(id, n) values(1, 1)`,
`select * from t2 where id = 1`,
Expand Down

0 comments on commit dbdb2f4

Please sign in to comment.