diff --git a/pkg/ddl/ddl_test.go b/pkg/ddl/ddl_test.go index 497fdd0c91442..b02681ac6d5ca 100644 --- a/pkg/ddl/ddl_test.go +++ b/pkg/ddl/ddl_test.go @@ -206,14 +206,12 @@ func TestBuildJobDependence(t *testing.T) { model.JobVersion1, model.JobVersion2, } - for _, ver := range vers { - model.SetJobVerInUse(ver) - testBuildJobDependence(t) + testBuildJobDependence(t, ver) } } -func testBuildJobDependence(t *testing.T) { +func testBuildJobDependence(t *testing.T, jobVer model.JobVersion) { store := createMockStore(t) defer func() { require.NoError(t, store.Close()) @@ -226,11 +224,11 @@ func testBuildJobDependence(t *testing.T) { job6 := &model.Job{ID: 6, TableID: 1, Type: model.ActionDropTable} job7 := &model.Job{ID: 7, TableID: 2, Type: model.ActionModifyColumn} job9 := &model.Job{ID: 9, SchemaID: 111, Type: model.ActionDropSchema} - job11 := &model.Job{ID: 11, TableID: 2, Type: model.ActionRenameTable, Version: model.GetJobVerInUse()} + job11 := &model.Job{ID: 11, TableID: 2, Type: model.ActionRenameTable, Version: jobVer} job11.FillArgs(&model.RenameTableArgs{ - OldSchemaID: 111, - NewTableName: pmodel.NewCIStr("new_table_name"), - SchemaName: pmodel.NewCIStr("old_db_name"), + OldSchemaID: 111, + NewTableName: pmodel.NewCIStr("new_table_name"), + OldSchemaName: pmodel.NewCIStr("old_db_name"), }) err := kv.RunInNewTxn(ctx, store, false, func(ctx context.Context, txn kv.Transaction) error { diff --git a/pkg/ddl/executor.go b/pkg/ddl/executor.go index ffa2630c51331..bd35ca78f4042 100644 --- a/pkg/ddl/executor.go +++ b/pkg/ddl/executor.go @@ -4283,7 +4283,11 @@ func (e *executor) renameTable(ctx sessionctx.Context, oldIdent, newIdent ast.Id SQLMode: ctx.GetSessionVars().SQLMode, } - args := model.NewRenameTableArgs(schemas[0].ID, schemas[1].ID, schemas[0].Name, tableID, newIdent.Name) + args := &model.RenameTableArgs{ + OldSchemaID: schemas[0].ID, + OldSchemaName: schemas[0].Name, + NewTableName: newIdent.Name, + } job.FillArgs(args) err = e.DoDDLJob(ctx, job) @@ -6445,6 +6449,20 @@ func getTruncateTableNewTableID(job *model.Job) int64 { return job.Args[0].(*model.TruncateTableArgs).NewTableID } +func getRenameTableUniqueIDs(job *model.Job, schema bool) []int64 { + if !schema { + return []int64{job.TableID} + } + + args := &model.RenameTableArgs{} + if job.Version == model.JobVersion1 { + args.OldSchemaID = job.Args[0].(int64) + } else { + args = job.Args[0].(*model.RenameTableArgs) + } + return []int64{args.OldSchemaID, job.SchemaID} +} + // HandleLockTablesOnSuccessSubmit handles the table lock for the job which is submitted // successfully. exported for testing purpose. func HandleLockTablesOnSuccessSubmit(ctx sessionctx.Context, jobW *JobWrapper) { diff --git a/pkg/ddl/job_scheduler.go b/pkg/ddl/job_scheduler.go index 7e4ead6c54fc0..0258775d620d5 100644 --- a/pkg/ddl/job_scheduler.go +++ b/pkg/ddl/job_scheduler.go @@ -705,7 +705,7 @@ func job2UniqueIDs(job *model.Job, schema bool) string { case model.ActionExchangeTablePartition, model.ActionRenameTables, model.ActionRenameTable: var ids []int64 if job.Type == model.ActionRenameTable { - ids = model.GetRenameTableUniqueIDs(job, schema) + ids = getRenameTableUniqueIDs(job, schema) } else { if schema { ids = job.CtxVars[0].([]int64) diff --git a/pkg/ddl/table.go b/pkg/ddl/table.go index 36218e12528cd..f5b5fccc8521a 100644 --- a/pkg/ddl/table.go +++ b/pkg/ddl/table.go @@ -764,13 +764,13 @@ func onRenameTable(jobCtx *jobContext, t *meta.Meta, job *model.Job) (ver int64, return ver, errors.Trace(err) } oldTableName := tblInfo.Name - ver, err = checkAndRenameTables(t, job, tblInfo, args.OldSchemaID, job.SchemaID, &args.SchemaName, &args.NewTableName) + ver, err = checkAndRenameTables(t, job, tblInfo, args.OldSchemaID, job.SchemaID, &args.OldSchemaName, &args.NewTableName) if err != nil { return ver, errors.Trace(err) } fkh := newForeignKeyHelper() err = adjustForeignKeyChildTableInfoAfterRenameTable(jobCtx.infoCache, t, - job, &fkh, tblInfo, args.SchemaName, oldTableName, args.NewTableName, newSchemaID) + job, &fkh, tblInfo, args.OldSchemaName, oldTableName, args.NewTableName, newSchemaID) if err != nil { return ver, errors.Trace(err) } diff --git a/pkg/ddl/table_test.go b/pkg/ddl/table_test.go index 3fecd26f31c42..fc12715c7c9fa 100644 --- a/pkg/ddl/table_test.go +++ b/pkg/ddl/table_test.go @@ -64,11 +64,9 @@ func testRenameTable( }, } args := model.RenameTableArgs{ - OldSchemaID: oldSchemaID, - SchemaName: oldSchemaName, - NewTableName: tblInfo.Name, - SchemaIDs: []int64{oldSchemaID, newSchemaID}, - TableIDs: []int64{tblInfo.ID}, + OldSchemaID: oldSchemaID, + OldSchemaName: oldSchemaName, + NewTableName: tblInfo.Name, } job.FillArgs(&args) diff --git a/pkg/meta/model/job_args.go b/pkg/meta/model/job_args.go index 1c1450a03b329..7117f6a23ad04 100644 --- a/pkg/meta/model/job_args.go +++ b/pkg/meta/model/job_args.go @@ -262,21 +262,14 @@ func getTruncateTableArgs(job *Job, argsOfFinished bool) (*TruncateTableArgs, er // RenameTableArgs is the arguements for rename table DDL job. type RenameTableArgs struct { // for Args - OldSchemaID int64 `json:"old_schema_id,omitempty"` - SchemaName pmodel.CIStr `json:"schema_name,omitempty"` - NewTableName pmodel.CIStr `json:"new_table_name,omitempty"` - - // for CtxVars - // SchemaIDs contains {oldSchemaID, newSchemaID} - SchemaIDs []int64 `json:"-"` - // TableIDs contains {tableID} - TableIDs []int64 `json:"-"` + OldSchemaID int64 `json:"old_schema_id,omitempty"` + OldSchemaName pmodel.CIStr `json:"schema_name,omitempty"` + NewTableName pmodel.CIStr `json:"new_table_name,omitempty"` } func (rt *RenameTableArgs) fillJob(job *Job) { if job.Version == JobVersion1 { - job.Args = []any{rt.OldSchemaID, rt.NewTableName, rt.SchemaName} - job.CtxVars = []any{rt.SchemaIDs, rt.TableIDs} + job.Args = []any{rt.OldSchemaID, rt.NewTableName, rt.OldSchemaName} } else { job.Args = []any{rt} } @@ -288,44 +281,38 @@ func NewRenameTableArgs( tableID int64, newTableName pmodel.CIStr, ) *RenameTableArgs { return &RenameTableArgs{ - OldSchemaID: oldSchemaID, - SchemaName: schemaName, - NewTableName: newTableName, - SchemaIDs: []int64{oldSchemaID, newSchemaID}, - TableIDs: []int64{tableID}, + OldSchemaID: oldSchemaID, + OldSchemaName: schemaName, + NewTableName: newTableName, } } // GetRenameTableArgs get the arguements from job. func GetRenameTableArgs(job *Job) (*RenameTableArgs, error) { - if job.Version == JobVersion1 { - var ( - oldSchemaID int64 - schemaName pmodel.CIStr - newTableName pmodel.CIStr - ) + var ( + oldSchemaID int64 + oldSchemaName pmodel.CIStr + newTableName pmodel.CIStr + ) + if job.Version == JobVersion1 { // decode args and cache in args. if len(job.Args) == 0 { - err := job.DecodeArgs(&oldSchemaID, &newTableName, &schemaName) + err := job.DecodeArgs(&oldSchemaID, &newTableName, &oldSchemaName) if err != nil { return nil, errors.Trace(err) } - job.Args = []any{oldSchemaID, newTableName, schemaName} + job.Args = []any{oldSchemaID, newTableName, oldSchemaName} } else { oldSchemaID = job.Args[0].(int64) - schemaName = job.Args[1].(pmodel.CIStr) - newTableName = job.Args[2].(pmodel.CIStr) + newTableName = job.Args[1].(pmodel.CIStr) + oldSchemaName = job.Args[2].(pmodel.CIStr) } args := RenameTableArgs{ - OldSchemaID: oldSchemaID, - SchemaName: schemaName, - NewTableName: newTableName, - } - if len(job.CtxVars) > 0 { - args.SchemaIDs = job.CtxVars[0].([]int64) - args.TableIDs = job.CtxVars[1].([]int64) + OldSchemaID: oldSchemaID, + OldSchemaName: oldSchemaName, + NewTableName: newTableName, } return &args, nil } @@ -336,20 +323,3 @@ func GetRenameTableArgs(job *Job) (*RenameTableArgs, error) { } return argsV2, err } - -// GetRenameTableUniqueIDs gets unique IDs from job for rename table type. -func GetRenameTableUniqueIDs(job *Job, schema bool) []int64 { - args := &RenameTableArgs{} - - if job.Version == JobVersion1 { - args.SchemaIDs = job.CtxVars[0].([]int64) - args.TableIDs = job.CtxVars[1].([]int64) - } else { - args = job.Args[0].(*RenameTableArgs) - } - - if schema { - return args.SchemaIDs - } - return args.TableIDs -}