Skip to content

Commit 8ea362f

Browse files
wk989898ti-chi-bot
authored andcommitted
This is an automated cherry-pick of #12038
Signed-off-by: ti-chi-bot <ti-community-prow-bot@tidb.io>
1 parent e150d73 commit 8ea362f

File tree

11 files changed

+426
-22
lines changed

11 files changed

+426
-22
lines changed

cdc/entry/mounter_test.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1679,13 +1679,13 @@ func TestNewDMRowChange(t *testing.T) {
16791679
cdcTableInfo := model.WrapTableInfo(0, "test", 0, originTI)
16801680
cols := []*model.Column{
16811681
{
1682-
Name: "id", Type: 3, Charset: "binary", Flag: 65, Value: 1, Default: nil,
1682+
Name: "id", Type: 3, Charset: "binary", Flag: 65, Value: 1,
16831683
},
16841684
{
1685-
Name: "a1", Type: 3, Charset: "binary", Flag: 51, Value: 1, Default: nil,
1685+
Name: "a1", Type: 3, Charset: "binary", Flag: 51, Value: 1,
16861686
},
16871687
{
1688-
Name: "a3", Type: 3, Charset: "binary", Flag: 51, Value: 2, Default: nil,
1688+
Name: "a3", Type: 3, Charset: "binary", Flag: 51, Value: 2,
16891689
},
16901690
}
16911691
recoveredTI := model.BuildTiDBTableInfo(cdcTableInfo.TableName.Table, cols, cdcTableInfo.IndexColumnsOffset)

cdc/model/codec/codec.go

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -223,7 +223,6 @@ func columnFromV1(c *codecv1.Column) *model.Column {
223223
Charset: c.Charset,
224224
Flag: c.Flag,
225225
Value: c.Value,
226-
Default: c.Default,
227226
ApproximateBytes: c.ApproximateBytes,
228227
}
229228
}

cdc/model/schema_storage.go

Lines changed: 0 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,6 @@ import (
2121
"github.com/pingcap/tidb/pkg/parser/mysql"
2222
"github.com/pingcap/tidb/pkg/parser/types"
2323
"github.com/pingcap/tidb/pkg/table/tables"
24-
datumTypes "github.com/pingcap/tidb/pkg/types"
2524
"github.com/pingcap/tidb/pkg/util/rowcodec"
2625
"go.uber.org/zap"
2726
)
@@ -501,13 +500,3 @@ func (ti *TableInfo) GetPrimaryKeyColumnNames() []string {
501500
}
502501
return result
503502
}
504-
505-
// GetColumnDefaultValue returns the default definition of a column.
506-
func GetColumnDefaultValue(col *model.ColumnInfo) interface{} {
507-
defaultValue := col.GetDefaultValue()
508-
if defaultValue == nil {
509-
defaultValue = col.GetOriginDefaultValue()
510-
}
511-
defaultDatum := datumTypes.NewDatum(defaultValue)
512-
return defaultDatum.GetValue()
513-
}

cdc/model/sink.go

Lines changed: 93 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -479,7 +479,6 @@ func columnData2Column(col *ColumnData, tableInfo *TableInfo) *Column {
479479
Collation: colInfo.GetCollate(),
480480
Flag: tableInfo.ColumnsFlag[colID],
481481
Value: col.Value,
482-
Default: GetColumnDefaultValue(colInfo),
483482
}
484483
}
485484

@@ -624,7 +623,6 @@ type Column struct {
624623
Collation string `msg:"collation"`
625624
Flag ColumnFlagType `msg:"-"`
626625
Value interface{} `msg:"-"`
627-
Default interface{} `msg:"-"`
628626

629627
// ApproximateBytes is approximate bytes consumed by the column.
630628
ApproximateBytes int `msg:"-"`
@@ -1292,3 +1290,96 @@ type TopicPartitionKey struct {
12921290
PartitionKey string
12931291
TotalPartition int32
12941292
}
1293+
<<<<<<< HEAD
1294+
=======
1295+
1296+
// ColumnDataX is like ColumnData, but contains more informations.
1297+
//
1298+
//msgp:ignore RowChangedEvent
1299+
type ColumnDataX struct {
1300+
*ColumnData
1301+
flag *ColumnFlagType
1302+
info *model.ColumnInfo
1303+
}
1304+
1305+
// GetColumnDataX encapsures ColumnData to ColumnDataX.
1306+
func GetColumnDataX(col *ColumnData, tb *TableInfo) ColumnDataX {
1307+
x := ColumnDataX{ColumnData: col}
1308+
if x.ColumnData != nil {
1309+
x.flag = tb.ColumnsFlag[col.ColumnID]
1310+
x.info = tb.Columns[tb.columnsOffset[col.ColumnID]]
1311+
}
1312+
return x
1313+
}
1314+
1315+
// GetName returns name.
1316+
func (x ColumnDataX) GetName() string {
1317+
return x.info.Name.O
1318+
}
1319+
1320+
// GetType returns type.
1321+
func (x ColumnDataX) GetType() byte {
1322+
return x.info.GetType()
1323+
}
1324+
1325+
// GetCharset returns charset.
1326+
func (x ColumnDataX) GetCharset() string {
1327+
return x.info.GetCharset()
1328+
}
1329+
1330+
// GetCollation returns collation.
1331+
func (x ColumnDataX) GetCollation() string {
1332+
return x.info.GetCollate()
1333+
}
1334+
1335+
// GetFlag returns flag.
1336+
func (x ColumnDataX) GetFlag() ColumnFlagType {
1337+
return *x.flag
1338+
}
1339+
1340+
// GetDefaultValue return default value.
1341+
func (x ColumnDataX) GetDefaultValue() interface{} {
1342+
return x.info.GetDefaultValue()
1343+
}
1344+
1345+
// GetColumnInfo returns column info.
1346+
func (x ColumnDataX) GetColumnInfo() *model.ColumnInfo {
1347+
return x.info
1348+
}
1349+
1350+
// Columns2ColumnDataForTest is for tests.
1351+
func Columns2ColumnDataForTest(columns []*Column) ([]*ColumnData, *TableInfo) {
1352+
info := &TableInfo{
1353+
TableInfo: &model.TableInfo{
1354+
Columns: make([]*model.ColumnInfo, len(columns)),
1355+
},
1356+
ColumnsFlag: make(map[int64]*ColumnFlagType, len(columns)),
1357+
columnsOffset: make(map[int64]int),
1358+
}
1359+
colDatas := make([]*ColumnData, 0, len(columns))
1360+
1361+
for i, column := range columns {
1362+
var columnID int64 = int64(i)
1363+
info.columnsOffset[columnID] = i
1364+
1365+
info.Columns[i] = &model.ColumnInfo{}
1366+
info.Columns[i].Name.O = column.Name
1367+
info.Columns[i].SetType(column.Type)
1368+
info.Columns[i].SetCharset(column.Charset)
1369+
info.Columns[i].SetCollate(column.Collation)
1370+
1371+
info.ColumnsFlag[columnID] = new(ColumnFlagType)
1372+
*info.ColumnsFlag[columnID] = column.Flag
1373+
1374+
colDatas = append(colDatas, &ColumnData{ColumnID: columnID, Value: column.Value})
1375+
}
1376+
1377+
return colDatas, info
1378+
}
1379+
1380+
// Column2ColumnDataXForTest is for tests.
1381+
func Column2ColumnDataXForTest(column *Column) ColumnDataX {
1382+
datas, info := Columns2ColumnDataForTest([]*Column{column})
1383+
return GetColumnDataX(datas[0], info)
1384+
}
1385+
>>>>>>> 600286c56d (sink(ticdc): fix incorrect `default` field (#12038))

pkg/sink/cloudstorage/table_definition.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,7 @@ func (t *TableCol) FromTiColumnInfo(col *timodel.ColumnInfo, outputColumnID bool
7676
if mysql.HasNotNullFlag(col.GetFlag()) {
7777
t.Nullable = "false"
7878
}
79-
t.Default = model.GetColumnDefaultValue(col)
79+
t.Default = col.GetDefaultValue()
8080

8181
switch col.GetType() {
8282
case mysql.TypeTimestamp, mysql.TypeDatetime, mysql.TypeDuration:

pkg/sink/codec/debezium/codec.go

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -499,6 +499,12 @@ func (c *dbzCodec) writeDebeziumFieldValue(
499499
ft *types.FieldType,
500500
) error {
501501
value := col.Value
502+
<<<<<<< HEAD
503+
=======
504+
if value == nil {
505+
value = col.GetDefaultValue()
506+
}
507+
>>>>>>> 600286c56d (sink(ticdc): fix incorrect `default` field (#12038))
502508
if value == nil {
503509
value = col.Default
504510
}

0 commit comments

Comments
 (0)