diff --git a/dm/loader/util.go b/dm/loader/util.go index 688d3c4518..bacd9cb018 100644 --- a/dm/loader/util.go +++ b/dm/loader/util.go @@ -52,7 +52,7 @@ func getMydumpMetadata(ctx context.Context, cli *clientv3.Client, cfg *config.Su log.L().Warn("TestRemoveMetaFile Error", log.ShortError(err)) } }) - loc, _, err := dumpling.ParseMetaData(ctx, cfg.LoaderConfig.Dir, metafile, cfg.ExtStorage) + loc, _, err := dumpling.ParseMetaData(ctx, cfg.LoaderConfig.Dir, metafile, cfg.ExtStorage, cfg.Flavor) if err == nil { return loc.Position.String(), loc.GTIDSetStr(), nil } diff --git a/dm/pkg/dumpling/utils.go b/dm/pkg/dumpling/utils.go index cc9af119fa..ca6a65fb33 100644 --- a/dm/pkg/dumpling/utils.go +++ b/dm/pkg/dumpling/utils.go @@ -48,6 +48,7 @@ func ParseMetaData( dir string, filename string, extStorage storeapi.Storage, + flavor string, ) (*binlog.Location, *binlog.Location, error) { fd, err := storage.OpenFile(ctx, dir, filename, extStorage) if err != nil { @@ -55,11 +56,11 @@ func ParseMetaData( } defer fd.Close() - return ParseMetaDataByReader(filename, fd) + return ParseMetaDataByReader(filename, fd, flavor) } // ParseMetaDataByReader parses mydumper's output meta file by created reader and returns binlog location. -func ParseMetaDataByReader(filename string, rd io.Reader) (*binlog.Location, *binlog.Location, error) { +func ParseMetaDataByReader(filename string, rd io.Reader, flavor string) (*binlog.Location, *binlog.Location, error) { invalidErr := fmt.Errorf("file %s invalid format", filename) var ( @@ -156,7 +157,7 @@ func ParseMetaDataByReader(filename string, rd io.Reader) (*binlog.Location, *bi return nil, nil, terror.ErrMetadataNoBinlogLoc.Generate(filename) } - gset, err := gtid.ParserGTID("", gtidStr) + gset, err := gtid.ParserGTID(flavor, gtidStr) if err != nil { return nil, nil, invalidErr } diff --git a/dm/pkg/dumpling/utils_test.go b/dm/pkg/dumpling/utils_test.go index 7aa373e6b5..0cc8e27375 100644 --- a/dm/pkg/dumpling/utils_test.go +++ b/dm/pkg/dumpling/utils_test.go @@ -255,7 +255,7 @@ Finished dump at: 2020-09-30 12:16:49 for _, tc := range testCases { err2 := os.WriteFile(f.Name(), []byte(tc.source), 0o644) require.NoError(t, err2) - loc, loc2, err2 := ParseMetaData(ctx, fdir, fname, nil) + loc, loc2, err2 := ParseMetaData(ctx, fdir, fname, nil, "mysql") require.NoError(t, err2) require.Equal(t, tc.pos, loc.Position) gs, _ := gtid.ParserGTID("mysql", tc.gsetStr) @@ -274,7 +274,7 @@ Finished dump at: 2020-12-02 17:13:56 ` err = os.WriteFile(f.Name(), []byte(noBinlogLoc), 0o644) require.NoError(t, err) - _, _, err = ParseMetaData(ctx, fdir, fname, nil) + _, _, err = ParseMetaData(ctx, fdir, fname, nil, "mysql") require.True(t, terror.ErrMetadataNoBinlogLoc.Equal(err)) } diff --git a/dm/syncer/checkpoint.go b/dm/syncer/checkpoint.go index d227c64c0e..869a0ff0b2 100644 --- a/dm/syncer/checkpoint.go +++ b/dm/syncer/checkpoint.go @@ -1302,7 +1302,7 @@ func (cp *RemoteCheckPoint) genUpdateSQL(cpSchema, cpTable string, location binl func (cp *RemoteCheckPoint) parseMetaData(ctx context.Context) (*binlog.Location, *binlog.Location, error) { // `metadata` is mydumper's output meta file name filename := "metadata" - loc, loc2, err := dumpling.ParseMetaData(ctx, cp.cfg.LoaderConfig.Dir, filename, cp.cfg.ExtStorage) + loc, loc2, err := dumpling.ParseMetaData(ctx, cp.cfg.LoaderConfig.Dir, filename, cp.cfg.ExtStorage, cp.cfg.Flavor) if err != nil { toPrint, err2 := storage.ReadFile(ctx, cp.cfg.LoaderConfig.Dir, filename, nil) if err2 != nil {