diff --git a/reparo/syncer/util.go b/reparo/syncer/util.go index e18475143..96ffe74f6 100644 --- a/reparo/syncer/util.go +++ b/reparo/syncer/util.go @@ -46,7 +46,8 @@ func formatValue(value types.Datum, tp byte) types.Datum { case mysql.TypeSet: value = types.NewDatum(value.GetMysqlSet().Value) case mysql.TypeBit: - value = types.NewDatum(value.GetMysqlBit()) + // see drainer/translator/mysql.go formatData + value = types.NewDatum(value.GetUint64()) } return value diff --git a/reparo/syncer/util_test.go b/reparo/syncer/util_test.go index b3cbc3210..7cc191346 100644 --- a/reparo/syncer/util_test.go +++ b/reparo/syncer/util_test.go @@ -15,8 +15,7 @@ var _ = check.Suite(&testUtilSuite{}) func (s *testUtilSuite) TestFormatValue(c *check.C) { datetime, err := time.Parse("20060102150405", "20190415121212") c.Assert(err, check.IsNil) - bitVal, err2 := types.NewBitLiteral("b'10010'") - c.Assert(err2, check.IsNil) + bitVal := uint64(12) testCases := []struct { value interface{} @@ -81,8 +80,8 @@ func (s *testUtilSuite) TestFormatValue(c *check.C) { { value: bitVal, tp: mysql.TypeBit, - expectStr: "0x12", - expectVal: types.BinaryLiteral([]byte{0x12}), + expectStr: "12", + expectVal: uint64(12), }, } diff --git a/tests/dailytest/db.go b/tests/dailytest/db.go index d13ac3598..8c10e9005 100644 --- a/tests/dailytest/db.go +++ b/tests/dailytest/db.go @@ -23,8 +23,9 @@ import ( "github.com/pingcap/errors" "github.com/pingcap/log" - "github.com/pingcap/tidb-binlog/tests/util" "github.com/pingcap/tidb/parser/mysql" + + "github.com/pingcap/tidb-binlog/tests/util" ) func intRangeValue(column *column, min int64, max int64) (int64, int64) { @@ -221,6 +222,11 @@ func genColumnData(table *table, column *column) (string, error) { isUnsigned := mysql.HasUnsignedFlag(tp.Flag) switch tp.Tp { + case mysql.TypeBit: + if randInt(0, 1) == 0 { + return "b'0'", nil + } + return "b'1'", nil case mysql.TypeTiny: var data int64 if isUnique { diff --git a/tests/reparo/binlog.go b/tests/reparo/binlog.go index 7df0bc5a0..3f6fb8878 100644 --- a/tests/reparo/binlog.go +++ b/tests/reparo/binlog.go @@ -20,6 +20,7 @@ import ( _ "github.com/go-sql-driver/mysql" "github.com/pingcap/errors" "github.com/pingcap/log" + "github.com/pingcap/tidb-binlog/tests/dailytest" "github.com/pingcap/tidb-binlog/tests/util" ) @@ -70,6 +71,14 @@ func main() { c varchar(10) NOT NULL, d time unique ); + `, + ` + create table ntest2( + a int, + b double NOT NULL DEFAULT 2.0, + c varchar(10) NOT NULL, + d bit(20) + ); `} dailytest.RunDailyTest(sourceDB, tableSQLs, cfg.WorkerCount, cfg.JobCount, cfg.Batch)