Skip to content

Commit

Permalink
ddl: Add warning for resetting specified AUTO_INCREMENT value (#32078)
Browse files Browse the repository at this point in the history
ref #32043
  • Loading branch information
dveeden committed Mar 31, 2022
1 parent 0f47064 commit a262981
Show file tree
Hide file tree
Showing 2 changed files with 25 additions and 1 deletion.
17 changes: 17 additions & 0 deletions ddl/db_integration_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -2793,6 +2793,23 @@ func TestAutoIncrementForce(t *testing.T) {
tk.MustQuery("select * from t;").Check(testkit.Rows("101", "112", "500"))
tk.MustQuery("select * from t order by a;").Check(testkit.Rows("101", "112", "500"))
tk.MustExec("drop table if exists t;")

// Check for warning in case we can't set the auto_increment to the desired value
tk.MustExec("create table t(a int primary key auto_increment)")
tk.MustExec("insert into t values (200)")
tk.MustQuery("show create table t").Check(testkit.Rows(
"t CREATE TABLE `t` (\n" +
" `a` int(11) NOT NULL AUTO_INCREMENT,\n" +
" PRIMARY KEY (`a`) /*T![clustered_index] CLUSTERED */\n" +
") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin AUTO_INCREMENT=5201"))
tk.MustExec("alter table t auto_increment=100;")
tk.MustQuery("show warnings").Check(testkit.Rows("Warning 1105 Can't reset AUTO_INCREMENT to 100 without FORCE option, using 5201 instead"))
tk.MustQuery("show create table t").Check(testkit.Rows(
"t CREATE TABLE `t` (\n" +
" `a` int(11) NOT NULL AUTO_INCREMENT,\n" +
" PRIMARY KEY (`a`) /*T![clustered_index] CLUSTERED */\n" +
") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin AUTO_INCREMENT=5201"))
tk.MustExec("drop table t")
}

func TestIssue20490(t *testing.T) {
Expand Down
9 changes: 8 additions & 1 deletion ddl/ddl_api.go
Original file line number Diff line number Diff line change
Expand Up @@ -3247,10 +3247,17 @@ func (d *ddl) RebaseAutoID(ctx sessionctx.Context, ident ast.Ident, newBase int6
}

if !force {
newBase, err = adjustNewBaseToNextGlobalID(ctx, t, tp, newBase)
newBaseTemp, err := adjustNewBaseToNextGlobalID(ctx, t, tp, newBase)
if err != nil {
return err
}
if newBase != newBaseTemp {
ctx.GetSessionVars().StmtCtx.AppendWarning(
fmt.Errorf("Can't reset AUTO_INCREMENT to %d without FORCE option, using %d instead",
newBase, newBaseTemp,
))
}
newBase = newBaseTemp
}
job := &model.Job{
SchemaID: schema.ID,
Expand Down

0 comments on commit a262981

Please sign in to comment.