diff --git a/pkg/ddl/column.go b/pkg/ddl/column.go index 7033702d42e3e..37148d2c32e1a 100644 --- a/pkg/ddl/column.go +++ b/pkg/ddl/column.go @@ -731,6 +731,9 @@ func (w *worker) doModifyColumnTypeWithData( case model.StateDeleteOnly: // Column from null to not null. if !mysql.HasNotNullFlag(oldCol.GetFlag()) && mysql.HasNotNullFlag(changingCol.GetFlag()) { + if d.lease > 0 { + delayForAsyncCommit() + } // Introduce the `mysql.PreventNullInsertFlag` flag to prevent users from inserting or updating null values. err := modifyColsFromNull2NotNull(w, dbInfo, tblInfo, []*model.ColumnInfo{oldCol}, targetCol, oldCol.GetType() != changingCol.GetType()) if err != nil { diff --git a/pkg/ddl/constraint.go b/pkg/ddl/constraint.go index 1eaee3c618fa0..b22fc5ae3805e 100644 --- a/pkg/ddl/constraint.go +++ b/pkg/ddl/constraint.go @@ -101,6 +101,9 @@ func (w *worker) onAddCheckConstraint(d *ddlCtx, t *meta.Meta, job *model.Job) ( constraintInfoInMeta.State = model.StateWriteReorganization ver, err = updateVersionAndTableInfoWithCheck(d, t, job, tblInfo, true) case model.StateWriteReorganization: + if d.lease > 0 { + delayForAsyncCommit() + } err = w.verifyRemainRecordsForCheckConstraint(dbInfo, tblInfo, constraintInfoInMeta) if err != nil { if dbterror.ErrCheckConstraintIsViolated.Equal(err) { @@ -238,6 +241,9 @@ func (w *worker) onAlterCheckConstraint(d *ddlCtx, t *meta.Meta, job *model.Job) constraintInfo.State = model.StateWriteOnly ver, err = updateVersionAndTableInfoWithCheck(d, t, job, tblInfo, true) case model.StateWriteOnly: + if d.lease > 0 { + delayForAsyncCommit() + } err = w.verifyRemainRecordsForCheckConstraint(dbInfo, tblInfo, constraintInfo) if err != nil { if dbterror.ErrCheckConstraintIsViolated.Equal(err) { diff --git a/pkg/ddl/foreign_key.go b/pkg/ddl/foreign_key.go index ce3f17d1353cc..c21aede2691e3 100644 --- a/pkg/ddl/foreign_key.go +++ b/pkg/ddl/foreign_key.go @@ -64,7 +64,10 @@ func (w *worker) onCreateForeignKey(d *ddlCtx, t *meta.Meta, job *model.Job) (ve job.SchemaState = model.StateWriteOnly return ver, nil case model.StateWriteOnly: - err = checkForeignKeyConstrain(w, job.SchemaName, tblInfo.Name.L, &fkInfo, fkCheck) + if d.lease > 0 { + delayForAsyncCommit() + } + err = checkForeignKeyConstraint(w, job.SchemaName, tblInfo.Name.L, &fkInfo, fkCheck) if err != nil { job.State = model.JobStateRollingback return ver, err @@ -669,7 +672,7 @@ func checkAddForeignKeyValidInOwner(d *ddlCtx, t *meta.Meta, schema string, tbIn return nil } -func checkForeignKeyConstrain(w *worker, schema, table string, fkInfo *model.FKInfo, fkCheck bool) error { +func checkForeignKeyConstraint(w *worker, schema, table string, fkInfo *model.FKInfo, fkCheck bool) error { if !fkCheck { return nil }