Skip to content

Commit e43a14e

Browse files
authored
ddl: fix args count for modify column (#58855)
close #58843
1 parent 1d0c33a commit e43a14e

File tree

2 files changed

+18
-0
lines changed

2 files changed

+18
-0
lines changed

pkg/meta/model/job_args.go

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1688,6 +1688,12 @@ type ModifyColumnArgs struct {
16881688
}
16891689

16901690
func (a *ModifyColumnArgs) getArgsV1(*Job) []any {
1691+
// during upgrade, if https://github.com/pingcap/tidb/issues/54689 triggered,
1692+
// older node might run the job submitted by new version, but it expects 5
1693+
// args initially, and append the later 3 at runtime.
1694+
if a.ChangingColumn == nil {
1695+
return []any{a.Column, a.OldColumnName, a.Position, a.ModifyColumnType, a.NewShardBits}
1696+
}
16911697
return []any{
16921698
a.Column, a.OldColumnName, a.Position, a.ModifyColumnType,
16931699
a.NewShardBits, a.ChangingColumn, a.ChangingIdxs, a.RedundantIdxs,

pkg/meta/model/job_args_test.go

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1129,6 +1129,12 @@ func TestModifyColumnsArgs(t *testing.T) {
11291129
require.Equal(t, *inArgs.ChangingColumn, *args.ChangingColumn)
11301130
require.Equal(t, inArgs.ChangingIdxs, args.ChangingIdxs)
11311131
require.Equal(t, inArgs.RedundantIdxs, args.RedundantIdxs)
1132+
1133+
if v == JobVersion1 {
1134+
var rawArgs []json.RawMessage
1135+
require.NoError(t, json.Unmarshal(j2.RawArgs, &rawArgs))
1136+
require.Len(t, rawArgs, 8)
1137+
}
11321138
}
11331139

11341140
for _, v := range []JobVersion{JobVersion1, JobVersion2} {
@@ -1140,4 +1146,10 @@ func TestModifyColumnsArgs(t *testing.T) {
11401146
require.Equal(t, inArgs.IndexIDs, args.IndexIDs)
11411147
require.Equal(t, inArgs.PartitionIDs, args.PartitionIDs)
11421148
}
1149+
1150+
j2 := &Job{}
1151+
require.NoError(t, j2.Decode(getJobBytes(t, &ModifyColumnArgs{}, JobVersion1, ActionModifyColumn)))
1152+
var rawArgs []json.RawMessage
1153+
require.NoError(t, json.Unmarshal(j2.RawArgs, &rawArgs))
1154+
require.Len(t, rawArgs, 5)
11431155
}

0 commit comments

Comments
 (0)