diff --git a/mysql/mariadb_gtid.go b/mysql/mariadb_gtid.go index 0a9136bb8..9cd32d842 100644 --- a/mysql/mariadb_gtid.go +++ b/mysql/mariadb_gtid.go @@ -3,12 +3,12 @@ package mysql import ( "bytes" "fmt" + "sort" "strconv" "strings" "github.com/pingcap/errors" "github.com/siddontang/go-log/log" - "github.com/siddontang/go/hack" ) // MariadbGTID represent mariadb gtid, [domain ID]-[server-id]-[sequence] @@ -157,7 +157,13 @@ func (s *MariadbGTIDSet) Update(GTIDStr string) error { } func (s *MariadbGTIDSet) String() string { - return hack.String(s.Encode()) + sets := make([]string, 0, len(s.Sets)) + for _, set := range s.Sets { + sets = append(sets, set.String()) + } + sort.Strings(sets) + + return strings.Join(sets, ",") } // Encode encodes mariadb gtid set diff --git a/mysql/mariadb_gtid_test.go b/mysql/mariadb_gtid_test.go index 1455e2641..e898bceb2 100644 --- a/mysql/mariadb_gtid_test.go +++ b/mysql/mariadb_gtid_test.go @@ -232,3 +232,14 @@ func (t *mariaDBTestSuite) TestMariaDBGTIDSetClone(c *check.C) { c.Assert(gtidSet.Clone(), check.DeepEquals, gtidSet) } } + +func (t *mariaDBTestSuite) TestMariaDBGTIDSetSortedString(c *check.C) { + cases := [][]string{{"", ""}, {"1-1-1", "1-1-1"}, + {"2-2-2,1-1-1,3-2-1", "1-1-1,2-2-2,3-2-1"}} + + for _, strs := range cases { + gtidSet, err := ParseMariadbGTIDSet(strs[0]) + c.Assert(err, check.IsNil) + c.Assert(gtidSet.String(), check.Equals, strs[1]) + } +}