Skip to content

Commit 911015d

Browse files
authored
Merge pull request #569 from mialinx/update_gtidset_fix
2 parents 2a68c0e + 83db121 commit 911015d

File tree

4 files changed

+43
-19
lines changed

4 files changed

+43
-19
lines changed

mysql/mariadb_gtid.go

+15-15
Original file line numberDiff line numberDiff line change
@@ -113,15 +113,9 @@ func ParseMariadbGTIDSet(str string) (GTIDSet, error) {
113113
if str == "" {
114114
return s, nil
115115
}
116-
117-
sp := strings.Split(str, ",")
118-
119-
//todo, handle redundant same uuid
120-
for i := 0; i < len(sp); i++ {
121-
err := s.Update(sp[i])
122-
if err != nil {
123-
return nil, errors.Trace(err)
124-
}
116+
err := s.Update(str)
117+
if err != nil {
118+
return nil, err
125119
}
126120
return s, nil
127121
}
@@ -147,13 +141,19 @@ func (s *MariadbGTIDSet) AddSet(gtid *MariadbGTID) error {
147141

148142
// Update updates mariadb gtid set
149143
func (s *MariadbGTIDSet) Update(GTIDStr string) error {
150-
gtid, err := ParseMariadbGTID(GTIDStr)
151-
if err != nil {
152-
return err
144+
sp := strings.Split(GTIDStr, ",")
145+
//todo, handle redundant same uuid
146+
for i := 0; i < len(sp); i++ {
147+
gtid, err := ParseMariadbGTID(sp[i])
148+
if err != nil {
149+
return errors.Trace(err)
150+
}
151+
err = s.AddSet(gtid)
152+
if err != nil {
153+
return errors.Trace(err)
154+
}
153155
}
154-
155-
err = s.AddSet(gtid)
156-
return errors.Trace(err)
156+
return nil
157157
}
158158

159159
func (s *MariadbGTIDSet) String() string {

mysql/mariadb_gtid_test.go

+1
Original file line numberDiff line numberDiff line change
@@ -152,6 +152,7 @@ func (t *mariaDBTestSuite) TestMariaDBGTIDSetUpdate(c *check.C) {
152152
{false, "1-2-2", map[uint32]string{1: "1-2-2", 2: "2-2-2"}},
153153
{false, "1-2-1", map[uint32]string{1: "1-2-1", 2: "2-2-2"}},
154154
{false, "3-2-1", map[uint32]string{1: "1-1-1", 2: "2-2-2", 3: "3-2-1"}},
155+
{false, "3-2-1,4-2-1", map[uint32]string{1: "1-1-1", 2: "2-2-2", 3: "3-2-1", 4: "4-2-1"}},
155156
}
156157

157158
for _, cs := range cases {

mysql/mysql_gtid.go

+4-4
Original file line numberDiff line numberDiff line change
@@ -363,13 +363,13 @@ func (s *MysqlGTIDSet) AddSet(set *UUIDSet) {
363363
}
364364

365365
func (s *MysqlGTIDSet) Update(GTIDStr string) error {
366-
uuidSet, err := ParseUUIDSet(GTIDStr)
366+
gtidSet, err := ParseMysqlGTIDSet(GTIDStr)
367367
if err != nil {
368368
return err
369369
}
370-
371-
s.AddSet(uuidSet)
372-
370+
for _, uuidSet := range gtidSet.(*MysqlGTIDSet).Sets {
371+
s.AddSet(uuidSet)
372+
}
373373
return nil
374374
}
375375

mysql/mysql_test.go

+23
Original file line numberDiff line numberDiff line change
@@ -106,6 +106,29 @@ func (t *mysqlTestSuite) TestMysqlUpdate(c *check.C) {
106106
c.Assert(err, check.IsNil)
107107

108108
c.Assert(strings.ToUpper(g1.String()), check.Equals, "3E11FA47-71CA-11E1-9E33-C80AA9429562:21-58")
109+
110+
g1, err = ParseMysqlGTIDSet(`
111+
519CE70F-A893-11E9-A95A-B32DC65A7026:1-1154661,
112+
5C9CA52B-9F11-11E9-8EAF-3381EC1CC790:1-244,
113+
802D69FD-A3B6-11E9-B1EA-50BAB55BA838:1-1221371,
114+
F2B50559-A891-11E9-B646-884FF0CA2043:1-479261
115+
`)
116+
c.Assert(err, check.IsNil)
117+
118+
err = g1.Update(`
119+
802D69FD-A3B6-11E9-B1EA-50BAB55BA838:1221110-1221371,
120+
F2B50559-A891-11E9-B646-884FF0CA2043:478509-479266
121+
`)
122+
c.Assert(err, check.IsNil)
123+
124+
g2, err := ParseMysqlGTIDSet(`
125+
519CE70F-A893-11E9-A95A-B32DC65A7026:1-1154661,
126+
5C9CA52B-9F11-11E9-8EAF-3381EC1CC790:1-244,
127+
802D69FD-A3B6-11E9-B1EA-50BAB55BA838:1-1221371,
128+
F2B50559-A891-11E9-B646-884FF0CA2043:1-479266
129+
`)
130+
c.Assert(err, check.IsNil)
131+
c.Assert(g2.Equal(g1), check.IsTrue)
109132
}
110133

111134
func (t *mysqlTestSuite) TestMysqlGTIDContain(c *check.C) {

0 commit comments

Comments
 (0)