Skip to content

Commit c508e4b

Browse files
authored
meta: clone table info with new foreign keys default to nil (#60103)
close #60044
1 parent def3d2d commit c508e4b

File tree

2 files changed

+23
-3
lines changed

2 files changed

+23
-3
lines changed

pkg/meta/meta_test.go

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -706,6 +706,23 @@ func TestIsTableInfoMustLoad(t *testing.T) {
706706
require.NoError(t, err)
707707
require.True(t, meta.IsTableInfoMustLoad(b))
708708

709+
tableInfo = tableInfo.Clone()
710+
b, err = json.Marshal(tableInfo)
711+
require.NoError(t, err)
712+
require.True(t, meta.IsTableInfoMustLoad(b))
713+
714+
tableInfo.ForeignKeys = nil
715+
tableInfo = tableInfo.Clone()
716+
b, err = json.Marshal(tableInfo)
717+
require.NoError(t, err)
718+
require.False(t, meta.IsTableInfoMustLoad(b))
719+
720+
tableInfo.ForeignKeys = make([]*model.FKInfo, 0)
721+
tableInfo = tableInfo.Clone()
722+
b, err = json.Marshal(tableInfo)
723+
require.NoError(t, err)
724+
require.False(t, meta.IsTableInfoMustLoad(b))
725+
709726
tableInfo = &model.TableInfo{
710727
TempTableType: model.TempTableGlobal,
711728
State: model.StatePublic,

pkg/meta/model/table.go

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -242,7 +242,7 @@ func (t *TableInfo) Clone() *TableInfo {
242242
nt := *t
243243
nt.Columns = make([]*ColumnInfo, len(t.Columns))
244244
nt.Indices = make([]*IndexInfo, len(t.Indices))
245-
nt.ForeignKeys = make([]*FKInfo, len(t.ForeignKeys))
245+
nt.ForeignKeys = nil
246246

247247
for i := range t.Columns {
248248
nt.Columns[i] = t.Columns[i].Clone()
@@ -252,8 +252,11 @@ func (t *TableInfo) Clone() *TableInfo {
252252
nt.Indices[i] = t.Indices[i].Clone()
253253
}
254254

255-
for i := range t.ForeignKeys {
256-
nt.ForeignKeys[i] = t.ForeignKeys[i].Clone()
255+
if len(t.ForeignKeys) > 0 {
256+
nt.ForeignKeys = make([]*FKInfo, len(t.ForeignKeys))
257+
for i := range t.ForeignKeys {
258+
nt.ForeignKeys[i] = t.ForeignKeys[i].Clone()
259+
}
257260
}
258261

259262
if t.Partition != nil {

0 commit comments

Comments
 (0)