diff --git a/cdc/model/codec/codec.go b/cdc/model/codec/codec.go index a361faecfa..fbba781c2d 100644 --- a/cdc/model/codec/codec.go +++ b/cdc/model/codec/codec.go @@ -163,11 +163,7 @@ func MarshalRedoLog(r *model.RedoLog, b []byte) (o []byte, err error) { // MarshalDDLAsRedoLog converts a DDLEvent into RedoLog, and then marshals it. func MarshalDDLAsRedoLog(d *model.DDLEvent, b []byte) (o []byte, err error) { - log := &model.RedoLog{ - RedoDDL: model.RedoDDLEvent{DDL: d}, - Type: model.RedoLogTypeDDL, - } - return MarshalRedoLog(log, b) + return MarshalRedoLog(d.ToRedoLog(), b) } func decodeVersion(bts []byte) (uint16, []byte) { diff --git a/cdc/model/codec/v1/codec_gen.go b/cdc/model/codec/v1/codec_gen.go index db0dea0f8a..abfabc5cb8 100644 --- a/cdc/model/codec/v1/codec_gen.go +++ b/cdc/model/codec/v1/codec_gen.go @@ -1,7 +1,7 @@ -package v1 - // Code generated by github.com/tinylib/msgp DO NOT EDIT. +package v1 + import ( "github.com/tinylib/msgp/msgp" ) diff --git a/cdc/model/codec/v1/codec_gen_test.go b/cdc/model/codec/v1/codec_gen_test.go index de5de84b2d..3f4bc47b53 100644 --- a/cdc/model/codec/v1/codec_gen_test.go +++ b/cdc/model/codec/v1/codec_gen_test.go @@ -1,7 +1,7 @@ -package v1 - // Code generated by github.com/tinylib/msgp DO NOT EDIT. +package v1 + import ( "bytes" "testing" diff --git a/cdc/model/kv_gen.go b/cdc/model/kv_gen.go index d78e50d360..edbf1de4e8 100644 --- a/cdc/model/kv_gen.go +++ b/cdc/model/kv_gen.go @@ -1,7 +1,7 @@ -package model - // Code generated by github.com/tinylib/msgp DO NOT EDIT. +package model + import ( "github.com/tinylib/msgp/msgp" ) diff --git a/cdc/model/kv_gen_test.go b/cdc/model/kv_gen_test.go index dbf9aefd37..5d6bcdf81f 100644 --- a/cdc/model/kv_gen_test.go +++ b/cdc/model/kv_gen_test.go @@ -1,7 +1,7 @@ -package model - // Code generated by github.com/tinylib/msgp DO NOT EDIT. +package model + import ( "bytes" "testing" diff --git a/cdc/model/sink.go b/cdc/model/sink.go index 54ccf98d3e..1734f9aeb1 100644 --- a/cdc/model/sink.go +++ b/cdc/model/sink.go @@ -286,9 +286,18 @@ type RedoRowChangedEvent struct { // RedoDDLEvent represents DDL event used in redo log persistent type RedoDDLEvent struct { - DDL *DDLEvent `msg:"ddl"` - Type byte `msg:"type"` - TableName TableName `msg:"table-name"` + DDL *DDLEvent `msg:"ddl"` + Type byte `msg:"type"` + TableName TableName `msg:"table-name"` + Columns []*ColumnInfo `msg:"columns"` +} + +// ColumnInfo is for column meta in DDL event +type ColumnInfo struct { + Name string `msg:"name"` + OriginDefaultValue any `msg:"origin_default"` + Type byte `msg:"type"` + Version uint64 `msg:"version"` } // ToRedoLog converts row changed event to redo log @@ -314,8 +323,20 @@ func (r *RowChangedEvent) ToRedoLog() *RedoLog { // ToRedoLog converts ddl event to redo log func (d *DDLEvent) ToRedoLog() *RedoLog { + var columns []*ColumnInfo + if d.TableInfo != nil && d.TableInfo.TableInfo != nil { + columns = make([]*ColumnInfo, 0, len(d.TableInfo.Columns)) + for _, col := range d.TableInfo.Columns { + columns = append(columns, &ColumnInfo{ + Name: col.Name.String(), + OriginDefaultValue: col.GetOriginDefaultValue(), + Type: col.GetType(), + Version: col.Version, + }) + } + } return &RedoLog{ - RedoDDL: RedoDDLEvent{DDL: d}, + RedoDDL: RedoDDLEvent{DDL: d, Columns: columns}, Type: RedoLogTypeDDL, } } diff --git a/cdc/model/sink_gen.go b/cdc/model/sink_gen.go index 7e87c2c081..c250e9a760 100644 --- a/cdc/model/sink_gen.go +++ b/cdc/model/sink_gen.go @@ -1,7 +1,7 @@ -package model - // Code generated by github.com/tinylib/msgp DO NOT EDIT. +package model + import ( "github.com/tinylib/msgp/msgp" ) @@ -484,6 +484,188 @@ func (z *ColumnDataX) Msgsize() (s int) { return } +// DecodeMsg implements msgp.Decodable +func (z *ColumnInfo) DecodeMsg(dc *msgp.Reader) (err error) { + var field []byte + _ = field + var zb0001 uint32 + zb0001, err = dc.ReadMapHeader() + if err != nil { + err = msgp.WrapError(err) + return + } + for zb0001 > 0 { + zb0001-- + field, err = dc.ReadMapKeyPtr() + if err != nil { + err = msgp.WrapError(err) + return + } + switch msgp.UnsafeString(field) { + case "name": + z.Name, err = dc.ReadString() + if err != nil { + err = msgp.WrapError(err, "Name") + return + } + case "origin_default": + z.OriginDefaultValue, err = dc.ReadIntf() + if err != nil { + err = msgp.WrapError(err, "OriginDefaultValue") + return + } + case "type": + z.Type, err = dc.ReadByte() + if err != nil { + err = msgp.WrapError(err, "Type") + return + } + case "version": + z.Version, err = dc.ReadUint64() + if err != nil { + err = msgp.WrapError(err, "Version") + return + } + default: + err = dc.Skip() + if err != nil { + err = msgp.WrapError(err) + return + } + } + } + return +} + +// EncodeMsg implements msgp.Encodable +func (z *ColumnInfo) EncodeMsg(en *msgp.Writer) (err error) { + // map header, size 4 + // write "name" + err = en.Append(0x84, 0xa4, 0x6e, 0x61, 0x6d, 0x65) + if err != nil { + return + } + err = en.WriteString(z.Name) + if err != nil { + err = msgp.WrapError(err, "Name") + return + } + // write "origin_default" + err = en.Append(0xae, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x5f, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74) + if err != nil { + return + } + err = en.WriteIntf(z.OriginDefaultValue) + if err != nil { + err = msgp.WrapError(err, "OriginDefaultValue") + return + } + // write "type" + err = en.Append(0xa4, 0x74, 0x79, 0x70, 0x65) + if err != nil { + return + } + err = en.WriteByte(z.Type) + if err != nil { + err = msgp.WrapError(err, "Type") + return + } + // write "version" + err = en.Append(0xa7, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e) + if err != nil { + return + } + err = en.WriteUint64(z.Version) + if err != nil { + err = msgp.WrapError(err, "Version") + return + } + return +} + +// MarshalMsg implements msgp.Marshaler +func (z *ColumnInfo) MarshalMsg(b []byte) (o []byte, err error) { + o = msgp.Require(b, z.Msgsize()) + // map header, size 4 + // string "name" + o = append(o, 0x84, 0xa4, 0x6e, 0x61, 0x6d, 0x65) + o = msgp.AppendString(o, z.Name) + // string "origin_default" + o = append(o, 0xae, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x5f, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74) + o, err = msgp.AppendIntf(o, z.OriginDefaultValue) + if err != nil { + err = msgp.WrapError(err, "OriginDefaultValue") + return + } + // string "type" + o = append(o, 0xa4, 0x74, 0x79, 0x70, 0x65) + o = msgp.AppendByte(o, z.Type) + // string "version" + o = append(o, 0xa7, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e) + o = msgp.AppendUint64(o, z.Version) + return +} + +// UnmarshalMsg implements msgp.Unmarshaler +func (z *ColumnInfo) UnmarshalMsg(bts []byte) (o []byte, err error) { + var field []byte + _ = field + var zb0001 uint32 + zb0001, bts, err = msgp.ReadMapHeaderBytes(bts) + if err != nil { + err = msgp.WrapError(err) + return + } + for zb0001 > 0 { + zb0001-- + field, bts, err = msgp.ReadMapKeyZC(bts) + if err != nil { + err = msgp.WrapError(err) + return + } + switch msgp.UnsafeString(field) { + case "name": + z.Name, bts, err = msgp.ReadStringBytes(bts) + if err != nil { + err = msgp.WrapError(err, "Name") + return + } + case "origin_default": + z.OriginDefaultValue, bts, err = msgp.ReadIntfBytes(bts) + if err != nil { + err = msgp.WrapError(err, "OriginDefaultValue") + return + } + case "type": + z.Type, bts, err = msgp.ReadByteBytes(bts) + if err != nil { + err = msgp.WrapError(err, "Type") + return + } + case "version": + z.Version, bts, err = msgp.ReadUint64Bytes(bts) + if err != nil { + err = msgp.WrapError(err, "Version") + return + } + default: + bts, err = msgp.Skip(bts) + if err != nil { + err = msgp.WrapError(err) + return + } + } + } + o = bts + return +} + +// Msgsize returns an upper bound estimate of the number of bytes occupied by the serialized message +func (z *ColumnInfo) Msgsize() (s int) { + s = 1 + 5 + msgp.StringPrefixSize + len(z.Name) + 15 + msgp.GuessSize(z.OriginDefaultValue) + 5 + msgp.ByteSize + 8 + msgp.Uint64Size + return +} + // DecodeMsg implements msgp.Decodable func (z *DDLEvent) DecodeMsg(dc *msgp.Reader) (err error) { var field []byte @@ -919,6 +1101,37 @@ func (z *RedoDDLEvent) DecodeMsg(dc *msgp.Reader) (err error) { err = msgp.WrapError(err, "TableName") return } + case "columns": + var zb0002 uint32 + zb0002, err = dc.ReadArrayHeader() + if err != nil { + err = msgp.WrapError(err, "Columns") + return + } + if cap(z.Columns) >= int(zb0002) { + z.Columns = (z.Columns)[:zb0002] + } else { + z.Columns = make([]*ColumnInfo, zb0002) + } + for za0001 := range z.Columns { + if dc.IsNil() { + err = dc.ReadNil() + if err != nil { + err = msgp.WrapError(err, "Columns", za0001) + return + } + z.Columns[za0001] = nil + } else { + if z.Columns[za0001] == nil { + z.Columns[za0001] = new(ColumnInfo) + } + err = z.Columns[za0001].DecodeMsg(dc) + if err != nil { + err = msgp.WrapError(err, "Columns", za0001) + return + } + } + } default: err = dc.Skip() if err != nil { @@ -932,9 +1145,9 @@ func (z *RedoDDLEvent) DecodeMsg(dc *msgp.Reader) (err error) { // EncodeMsg implements msgp.Encodable func (z *RedoDDLEvent) EncodeMsg(en *msgp.Writer) (err error) { - // map header, size 3 + // map header, size 4 // write "ddl" - err = en.Append(0x83, 0xa3, 0x64, 0x64, 0x6c) + err = en.Append(0x84, 0xa3, 0x64, 0x64, 0x6c) if err != nil { return } @@ -970,15 +1183,39 @@ func (z *RedoDDLEvent) EncodeMsg(en *msgp.Writer) (err error) { err = msgp.WrapError(err, "TableName") return } + // write "columns" + err = en.Append(0xa7, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x73) + if err != nil { + return + } + err = en.WriteArrayHeader(uint32(len(z.Columns))) + if err != nil { + err = msgp.WrapError(err, "Columns") + return + } + for za0001 := range z.Columns { + if z.Columns[za0001] == nil { + err = en.WriteNil() + if err != nil { + return + } + } else { + err = z.Columns[za0001].EncodeMsg(en) + if err != nil { + err = msgp.WrapError(err, "Columns", za0001) + return + } + } + } return } // MarshalMsg implements msgp.Marshaler func (z *RedoDDLEvent) MarshalMsg(b []byte) (o []byte, err error) { o = msgp.Require(b, z.Msgsize()) - // map header, size 3 + // map header, size 4 // string "ddl" - o = append(o, 0x83, 0xa3, 0x64, 0x64, 0x6c) + o = append(o, 0x84, 0xa3, 0x64, 0x64, 0x6c) if z.DDL == nil { o = msgp.AppendNil(o) } else { @@ -998,6 +1235,20 @@ func (z *RedoDDLEvent) MarshalMsg(b []byte) (o []byte, err error) { err = msgp.WrapError(err, "TableName") return } + // string "columns" + o = append(o, 0xa7, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x73) + o = msgp.AppendArrayHeader(o, uint32(len(z.Columns))) + for za0001 := range z.Columns { + if z.Columns[za0001] == nil { + o = msgp.AppendNil(o) + } else { + o, err = z.Columns[za0001].MarshalMsg(o) + if err != nil { + err = msgp.WrapError(err, "Columns", za0001) + return + } + } + } return } @@ -1048,6 +1299,36 @@ func (z *RedoDDLEvent) UnmarshalMsg(bts []byte) (o []byte, err error) { err = msgp.WrapError(err, "TableName") return } + case "columns": + var zb0002 uint32 + zb0002, bts, err = msgp.ReadArrayHeaderBytes(bts) + if err != nil { + err = msgp.WrapError(err, "Columns") + return + } + if cap(z.Columns) >= int(zb0002) { + z.Columns = (z.Columns)[:zb0002] + } else { + z.Columns = make([]*ColumnInfo, zb0002) + } + for za0001 := range z.Columns { + if msgp.IsNil(bts) { + bts, err = msgp.ReadNilBytes(bts) + if err != nil { + return + } + z.Columns[za0001] = nil + } else { + if z.Columns[za0001] == nil { + z.Columns[za0001] = new(ColumnInfo) + } + bts, err = z.Columns[za0001].UnmarshalMsg(bts) + if err != nil { + err = msgp.WrapError(err, "Columns", za0001) + return + } + } + } default: bts, err = msgp.Skip(bts) if err != nil { @@ -1068,7 +1349,14 @@ func (z *RedoDDLEvent) Msgsize() (s int) { } else { s += z.DDL.Msgsize() } - s += 5 + msgp.ByteSize + 11 + z.TableName.Msgsize() + s += 5 + msgp.ByteSize + 11 + z.TableName.Msgsize() + 8 + msgp.ArrayHeaderSize + for za0001 := range z.Columns { + if z.Columns[za0001] == nil { + s += msgp.NilSize + } else { + s += z.Columns[za0001].Msgsize() + } + } return } diff --git a/cdc/model/sink_gen_test.go b/cdc/model/sink_gen_test.go index dbe154f0e7..5e375b5d3d 100644 --- a/cdc/model/sink_gen_test.go +++ b/cdc/model/sink_gen_test.go @@ -1,7 +1,7 @@ -package model - // Code generated by github.com/tinylib/msgp DO NOT EDIT. +package model + import ( "bytes" "testing" @@ -348,6 +348,119 @@ func BenchmarkDecodeColumnDataX(b *testing.B) { } } +func TestMarshalUnmarshalColumnInfo(t *testing.T) { + v := ColumnInfo{} + bts, err := v.MarshalMsg(nil) + if err != nil { + t.Fatal(err) + } + left, err := v.UnmarshalMsg(bts) + if err != nil { + t.Fatal(err) + } + if len(left) > 0 { + t.Errorf("%d bytes left over after UnmarshalMsg(): %q", len(left), left) + } + + left, err = msgp.Skip(bts) + if err != nil { + t.Fatal(err) + } + if len(left) > 0 { + t.Errorf("%d bytes left over after Skip(): %q", len(left), left) + } +} + +func BenchmarkMarshalMsgColumnInfo(b *testing.B) { + v := ColumnInfo{} + b.ReportAllocs() + b.ResetTimer() + for i := 0; i < b.N; i++ { + v.MarshalMsg(nil) + } +} + +func BenchmarkAppendMsgColumnInfo(b *testing.B) { + v := ColumnInfo{} + bts := make([]byte, 0, v.Msgsize()) + bts, _ = v.MarshalMsg(bts[0:0]) + b.SetBytes(int64(len(bts))) + b.ReportAllocs() + b.ResetTimer() + for i := 0; i < b.N; i++ { + bts, _ = v.MarshalMsg(bts[0:0]) + } +} + +func BenchmarkUnmarshalColumnInfo(b *testing.B) { + v := ColumnInfo{} + bts, _ := v.MarshalMsg(nil) + b.ReportAllocs() + b.SetBytes(int64(len(bts))) + b.ResetTimer() + for i := 0; i < b.N; i++ { + _, err := v.UnmarshalMsg(bts) + if err != nil { + b.Fatal(err) + } + } +} + +func TestEncodeDecodeColumnInfo(t *testing.T) { + v := ColumnInfo{} + var buf bytes.Buffer + msgp.Encode(&buf, &v) + + m := v.Msgsize() + if buf.Len() > m { + t.Log("WARNING: TestEncodeDecodeColumnInfo Msgsize() is inaccurate") + } + + vn := ColumnInfo{} + err := msgp.Decode(&buf, &vn) + if err != nil { + t.Error(err) + } + + buf.Reset() + msgp.Encode(&buf, &v) + err = msgp.NewReader(&buf).Skip() + if err != nil { + t.Error(err) + } +} + +func BenchmarkEncodeColumnInfo(b *testing.B) { + v := ColumnInfo{} + var buf bytes.Buffer + msgp.Encode(&buf, &v) + b.SetBytes(int64(buf.Len())) + en := msgp.NewWriter(msgp.Nowhere) + b.ReportAllocs() + b.ResetTimer() + for i := 0; i < b.N; i++ { + v.EncodeMsg(en) + } + en.Flush() +} + +func BenchmarkDecodeColumnInfo(b *testing.B) { + v := ColumnInfo{} + var buf bytes.Buffer + msgp.Encode(&buf, &v) + b.SetBytes(int64(buf.Len())) + rd := msgp.NewEndlessReader(buf.Bytes(), b) + dc := msgp.NewReader(rd) + b.ReportAllocs() + b.ResetTimer() + for i := 0; i < b.N; i++ { + err := v.DecodeMsg(dc) + if err != nil { + b.Fatal(err) + } + } +} + func TestMarshalUnmarshalDDLEvent(t *testing.T) { v := DDLEvent{} bts, err := v.MarshalMsg(nil) diff --git a/cdc/model/sink_test.go b/cdc/model/sink_test.go index a38f92840b..d80f2aeba3 100644 --- a/cdc/model/sink_test.go +++ b/cdc/model/sink_test.go @@ -636,6 +636,8 @@ func TestTxnTrySplitAndSortUpdateEvent(t *testing.T) { } func TestToRedoLog(t *testing.T) { + t.Parallel() + cols := []*Column{ { Name: "col1", @@ -671,3 +673,24 @@ func TestToRedoLog(t *testing.T) { require.Equal(t, event.TableInfo.GetTableName(), eventInRedoLog.RedoRow.Row.Table.Table) require.Equal(t, event.Columns, Columns2ColumnDatas(eventInRedoLog.RedoRow.Row.Columns, tableInfo)) } + +func TestDDLToRedoLogWithoutInnerTableInfo(t *testing.T) { + t.Parallel() + + ddl := &DDLEvent{ + StartTs: 100, + CommitTs: 200, + Query: "CREATE DATABASE test", + Type: timodel.ActionCreateSchema, + TableInfo: &TableInfo{ + TableName: TableName{Schema: "test"}, + Version: 200, + }, + } + + redoLog := ddl.ToRedoLog() + require.NotNil(t, redoLog) + require.Equal(t, RedoLogTypeDDL, redoLog.Type) + require.Same(t, ddl, redoLog.RedoDDL.DDL) + require.Nil(t, redoLog.RedoDDL.Columns) +} diff --git a/cdc/redo/common/redo_meta_gen.go b/cdc/redo/common/redo_meta_gen.go index 41b77dc570..7482909cfb 100644 --- a/cdc/redo/common/redo_meta_gen.go +++ b/cdc/redo/common/redo_meta_gen.go @@ -1,7 +1,7 @@ -package common - // Code generated by github.com/tinylib/msgp DO NOT EDIT. +package common + import ( "github.com/tinylib/msgp/msgp" ) diff --git a/cdc/redo/common/redo_meta_gen_test.go b/cdc/redo/common/redo_meta_gen_test.go index 4364e7bd39..252c2edd3a 100644 --- a/cdc/redo/common/redo_meta_gen_test.go +++ b/cdc/redo/common/redo_meta_gen_test.go @@ -1,7 +1,7 @@ -package common - // Code generated by github.com/tinylib/msgp DO NOT EDIT. +package common + import ( "bytes" "testing" diff --git a/cdc/redo/reader/reader.go b/cdc/redo/reader/reader.go index ffb943c89a..0bdd10a0ac 100644 --- a/cdc/redo/reader/reader.go +++ b/cdc/redo/reader/reader.go @@ -23,6 +23,8 @@ import ( "time" "github.com/pingcap/log" + timodel "github.com/pingcap/tidb/pkg/meta/model" + "github.com/pingcap/tidb/pkg/parser/ast" "github.com/pingcap/tiflow/cdc/model" "github.com/pingcap/tiflow/cdc/redo/common" "github.com/pingcap/tiflow/pkg/errors" @@ -208,6 +210,7 @@ func (l *LogReader) runReader(egCtx context.Context, cfg *readerConfig) error { case redo.RedoDDLLogFileType: ddl := item.data.RedoDDL.DDL if ddl != nil && ddl.CommitTs > cfg.startTs && ddl.CommitTs <= cfg.endTs { + ddl.TableInfo = setTableInfo(&item.data.RedoDDL) select { case <-egCtx.Done(): return errors.Trace(egCtx.Err()) @@ -395,3 +398,26 @@ func (h *logHeap) Pop() interface{} { *h = old[0 : n-1] return x } + +func setTableInfo(ddl *model.RedoDDLEvent) *model.TableInfo { + columns := make([]*timodel.ColumnInfo, 0, len(ddl.Columns)) + for _, col := range ddl.Columns { + colInfo := &timodel.ColumnInfo{ + Name: ast.NewCIStr(col.Name), + State: timodel.StatePublic, + Version: col.Version, + } + colInfo.SetType(col.Type) + if err := colInfo.SetOriginDefaultValue(col.OriginDefaultValue); err != nil { + log.Panic("set origin default value failed", + zap.String("column", col.Name), + zap.Any("originDefaultValue", col.OriginDefaultValue), + zap.Error(err)) + } + columns = append(columns, colInfo) + } + return model.WrapTableInfo(0, ddl.TableName.Schema, 100, &timodel.TableInfo{ + Name: ast.NewCIStr(ddl.TableName.Table), + Columns: columns, + }) +} diff --git a/cdc/redo/reader/reader_test.go b/cdc/redo/reader/reader_test.go index 6462ff726a..e945149693 100644 --- a/cdc/redo/reader/reader_test.go +++ b/cdc/redo/reader/reader_test.go @@ -23,6 +23,7 @@ import ( "time" "github.com/google/uuid" + timodel "github.com/pingcap/tidb/pkg/meta/model" "github.com/pingcap/tiflow/cdc/model" "github.com/pingcap/tiflow/cdc/model/codec" "github.com/pingcap/tiflow/cdc/redo/common" @@ -68,8 +69,10 @@ func genLogFile( } } else if logType == redo.RedoDDLLogFileType { event := &model.DDLEvent{ - CommitTs: maxCommitTs, - TableInfo: &model.TableInfo{}, + CommitTs: maxCommitTs, + TableInfo: &model.TableInfo{ + TableInfo: &timodel.TableInfo{}, + }, } log := event.ToRedoLog() rawData, err := codec.MarshalRedoLog(log, nil) diff --git a/go.mod b/go.mod index ec9f8a7ce4..6ebfd86ecd 100644 --- a/go.mod +++ b/go.mod @@ -94,7 +94,7 @@ require ( github.com/tikv/client-go/v2 v2.0.8-0.20260319090224-0569333efa49 github.com/tikv/pd v1.1.0-beta.0.20240407022249-7179657d129b github.com/tikv/pd/client v0.0.0-20260323032024-d7b638033a14 - github.com/tinylib/msgp v1.1.6 + github.com/tinylib/msgp v1.5.0 github.com/uber-go/atomic v1.4.0 github.com/vmihailenco/msgpack/v5 v5.3.5 github.com/xdg/scram v1.0.5 @@ -367,7 +367,7 @@ require ( github.com/opentracing/opentracing-go v1.2.0 // indirect github.com/pelletier/go-toml/v2 v2.0.8 // indirect github.com/petermattis/goid v0.0.0-20250813065127-a731cc31b4fe // indirect - github.com/philhofer/fwd v1.1.1 // indirect + github.com/philhofer/fwd v1.2.0 // indirect github.com/pierrec/lz4 v2.6.1+incompatible // indirect github.com/pingcap/badger v1.5.1-0.20241015064302-38533b6cbf8d // indirect github.com/pingcap/fn v1.0.0 // indirect diff --git a/go.sum b/go.sum index 1cabd51f1c..d2b18083fa 100644 --- a/go.sum +++ b/go.sum @@ -855,8 +855,8 @@ github.com/petermattis/goid v0.0.0-20250813065127-a731cc31b4fe h1:vHpqOnPlnkba8i github.com/petermattis/goid v0.0.0-20250813065127-a731cc31b4fe/go.mod h1:pxMtw7cyUw6B2bRH0ZBANSPg+AoSud1I1iyJHI69jH4= github.com/phayes/freeport v0.0.0-20180830031419-95f893ade6f2 h1:JhzVVoYvbOACxoUmOs6V/G4D5nPVUW73rKvXxP4XUJc= github.com/phayes/freeport v0.0.0-20180830031419-95f893ade6f2/go.mod h1:iIss55rKnNBTvrwdmkUpLnDpZoAHvWaiq5+iMmen4AE= -github.com/philhofer/fwd v1.1.1 h1:GdGcTjf5RNAxwS4QLsiMzJYj5KEvPJD3Abr261yRQXQ= -github.com/philhofer/fwd v1.1.1/go.mod h1:gk3iGcWd9+svBvR0sR+KPcfE+RNWozjowpeBVG3ZVNU= +github.com/philhofer/fwd v1.2.0 h1:e6DnBTl7vGY+Gz322/ASL4Gyp1FspeMvx1RNDoToZuM= +github.com/philhofer/fwd v1.2.0/go.mod h1:RqIHx9QI14HlwKwm98g9Re5prTQ6LdeRQn+gXJFxsJM= github.com/pierrec/lz4 v2.6.1+incompatible h1:9UY3+iC23yxF0UfGaYrGplQ+79Rg+h/q9FV9ix19jjM= github.com/pierrec/lz4 v2.6.1+incompatible/go.mod h1:pdkljMzZIN41W+lC3N2tnIh5sFi+IEE17M5jbnwPHcY= github.com/pierrec/lz4/v4 v4.1.15/go.mod h1:gZWDp/Ze/IJXGXf23ltt2EXimqmTUXEy0GFuRQyBid4= @@ -1088,8 +1088,8 @@ github.com/tikv/pd v1.1.0-beta.0.20240407022249-7179657d129b h1:t2XoZp4UHrkPpYPs github.com/tikv/pd v1.1.0-beta.0.20240407022249-7179657d129b/go.mod h1:7HJMdb0O5umNpZIFt8e/wKAcEmH99n2HsYgXX+vZj3k= github.com/tikv/pd/client v0.0.0-20260323032024-d7b638033a14 h1:TVSx20m6DZMSiI37Dduu9RZb8yUvT1sgW8kCLAe+T5U= github.com/tikv/pd/client v0.0.0-20260323032024-d7b638033a14/go.mod h1:4kxXuAQAREpH+lVbydVwGNNDmcwdj0RG4Ofwky08W/k= -github.com/tinylib/msgp v1.1.6 h1:i+SbKraHhnrf9M5MYmvQhFnbLhAXSDWF8WWsuyRdocw= -github.com/tinylib/msgp v1.1.6/go.mod h1:75BAfg2hauQhs3qedfdDZmWAPcFMAvJE5b9rGOMufyw= +github.com/tinylib/msgp v1.5.0 h1:GWnqAE54wmnlFazjq2+vgr736Akg58iiHImh+kPY2pc= +github.com/tinylib/msgp v1.5.0/go.mod h1:cvjFkb4RiC8qSBOPMGPSzSAx47nAsfhLVTCZZNuHv5o= github.com/tjfoc/gmsm v1.3.2/go.mod h1:HaUcFuY0auTiaHB9MHFGCPx5IaLhTUd2atbCFBQXn9w= github.com/tjfoc/gmsm v1.4.1 h1:aMe1GlZb+0bLjn+cKTPEvvn9oUEBlJitaZiiBwsbgho= github.com/tjfoc/gmsm v1.4.1/go.mod h1:j4INPkHWMrhJb38G+J6W4Tw0AbuN8Thu3PbdVYhVcTE= @@ -1481,7 +1481,6 @@ golang.org/x/tools v0.0.0-20200130002326-2f3ba24bd6e7/go.mod h1:TB2adYChydJhpapK golang.org/x/tools v0.0.0-20200509030707-2212a7e161a5/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20200918232735-d647fc253266/go.mod h1:z6u4i615ZeAfBE4XtMziQW1fSVJXACjjbWkB/mvPzlU= -golang.org/x/tools v0.0.0-20201022035929-9cf592e881e9/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20210114065538-d78b04bdf963/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.1.1/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= diff --git a/tools/check/go.mod b/tools/check/go.mod index 0f78bbba9c..d71aa27635 100644 --- a/tools/check/go.mod +++ b/tools/check/go.mod @@ -16,7 +16,7 @@ require ( github.com/pingcap/errors v0.11.5-0.20211009033009-93128226aaa3 github.com/pingcap/failpoint v0.0.0-20210316064728-7acb0f0a3dfd github.com/swaggo/swag v1.7.8 - github.com/tinylib/msgp v1.1.6 + github.com/tinylib/msgp v1.5.0 github.com/vektra/mockery/v2 v2.14.1 github.com/zhouqiang-cl/gocovmerge v0.0.0-20190125174600-5256314471af golang.org/x/tools v0.36.0 @@ -160,7 +160,7 @@ require ( github.com/olekukonko/tablewriter v0.0.5 // indirect github.com/pelletier/go-toml v1.9.5 // indirect github.com/pelletier/go-toml/v2 v2.2.3 // indirect - github.com/philhofer/fwd v1.1.1 // indirect + github.com/philhofer/fwd v1.2.0 // indirect github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e // indirect github.com/pkg/errors v0.9.1 // indirect github.com/pmezard/go-difflib v1.0.0 // indirect diff --git a/tools/check/go.sum b/tools/check/go.sum index 94664882a1..03ed97350e 100644 --- a/tools/check/go.sum +++ b/tools/check/go.sum @@ -533,8 +533,8 @@ github.com/pelletier/go-toml v1.9.5 h1:4yBQzkHv+7BHq2PQUZF3Mx0IYxG7LsP222s7Agd3v github.com/pelletier/go-toml v1.9.5/go.mod h1:u1nR/EPcESfeI/szUZKdtJ0xRNbUoANCkoOuaOx1Y+c= github.com/pelletier/go-toml/v2 v2.2.3 h1:YmeHyLY8mFWbdkNWwpr+qIL2bEqT0o95WSdkNHvL12M= github.com/pelletier/go-toml/v2 v2.2.3/go.mod h1:MfCQTFTvCcUyyvvwm1+G6H/jORL20Xlb6rzQu9GuUkc= -github.com/philhofer/fwd v1.1.1 h1:GdGcTjf5RNAxwS4QLsiMzJYj5KEvPJD3Abr261yRQXQ= -github.com/philhofer/fwd v1.1.1/go.mod h1:gk3iGcWd9+svBvR0sR+KPcfE+RNWozjowpeBVG3ZVNU= +github.com/philhofer/fwd v1.2.0 h1:e6DnBTl7vGY+Gz322/ASL4Gyp1FspeMvx1RNDoToZuM= +github.com/philhofer/fwd v1.2.0/go.mod h1:RqIHx9QI14HlwKwm98g9Re5prTQ6LdeRQn+gXJFxsJM= github.com/pingcap/check v0.0.0-20190102082844-67f458068fc8 h1:USx2/E1bX46VG32FIw034Au6seQ2fY9NEILmNh/UlQg= github.com/pingcap/check v0.0.0-20190102082844-67f458068fc8/go.mod h1:B1+S9LNcuMyLH/4HMTViQOJevkGiik3wW2AN9zb2fNQ= github.com/pingcap/errors v0.11.4/go.mod h1:Oi8TUi2kEtXXLMJk9l1cGmz20kV3TaQ0usTwv5KuLY8= @@ -685,8 +685,8 @@ github.com/timakin/bodyclose v0.0.0-20241017074812-ed6a65f985e3 h1:y4mJRFlM6fUyP github.com/timakin/bodyclose v0.0.0-20241017074812-ed6a65f985e3/go.mod h1:mkjARE7Yr8qU23YcGMSALbIxTQ9r9QBVahQOBRfU460= github.com/timonwong/loggercheck v0.10.1 h1:uVZYClxQFpw55eh+PIoqM7uAOHMrhVcDoWDery9R8Lg= github.com/timonwong/loggercheck v0.10.1/go.mod h1:HEAWU8djynujaAVX7QI65Myb8qgfcZ1uKbdpg3ZzKl8= -github.com/tinylib/msgp v1.1.6 h1:i+SbKraHhnrf9M5MYmvQhFnbLhAXSDWF8WWsuyRdocw= -github.com/tinylib/msgp v1.1.6/go.mod h1:75BAfg2hauQhs3qedfdDZmWAPcFMAvJE5b9rGOMufyw= +github.com/tinylib/msgp v1.5.0 h1:GWnqAE54wmnlFazjq2+vgr736Akg58iiHImh+kPY2pc= +github.com/tinylib/msgp v1.5.0/go.mod h1:cvjFkb4RiC8qSBOPMGPSzSAx47nAsfhLVTCZZNuHv5o= github.com/tomarrell/wrapcheck/v2 v2.10.0 h1:SzRCryzy4IrAH7bVGG4cK40tNUhmVmMDuJujy4XwYDg= github.com/tomarrell/wrapcheck/v2 v2.10.0/go.mod h1:g9vNIyhb5/9TQgumxQyOEqDHsmGYcGsVMOx/xGkqdMo= github.com/tommy-muehle/go-mnd/v2 v2.5.1 h1:NowYhSdyE/1zwK9QCLeRb6USWdoif80Ie+v+yU8u1Zw= @@ -1025,7 +1025,6 @@ golang.org/x/tools v0.0.0-20200804011535-6c149bb5ef0d/go.mod h1:njjCfa9FT2d7l9Bc golang.org/x/tools v0.0.0-20200820010801-b793a1359eac/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= golang.org/x/tools v0.0.0-20200825202427-b303f430e36d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= golang.org/x/tools v0.0.0-20200918232735-d647fc253266/go.mod h1:z6u4i615ZeAfBE4XtMziQW1fSVJXACjjbWkB/mvPzlU= -golang.org/x/tools v0.0.0-20201022035929-9cf592e881e9/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20201023174141-c8cfbd0f21e6/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20210114065538-d78b04bdf963/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=