From 816dc702476954a7db16c9d3bfa914bb53702337 Mon Sep 17 00:00:00 2001 From: xiaobiao Date: Thu, 4 Jun 2020 10:34:00 +0800 Subject: [PATCH 1/3] =?UTF-8?q?mysql=20gtid=E6=8E=92=E5=BA=8F=E5=90=8E?= =?UTF-8?q?=E6=89=93=E5=8D=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- go.mod | 2 ++ mysql/mysql_gtid.go | 10 ++++++++-- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/go.mod b/go.mod index 3cc7b3424..025e09643 100644 --- a/go.mod +++ b/go.mod @@ -1,5 +1,7 @@ module github.com/siddontang/go-mysql +go 1.14 + require ( github.com/BurntSushi/toml v0.3.1 github.com/go-sql-driver/mysql v1.4.1 diff --git a/mysql/mysql_gtid.go b/mysql/mysql_gtid.go index 151581f85..207fa1342 100644 --- a/mysql/mysql_gtid.go +++ b/mysql/mysql_gtid.go @@ -419,10 +419,16 @@ func (s *MysqlGTIDSet) Equal(o GTIDSet) bool { func (s *MysqlGTIDSet) String() string { var buf bytes.Buffer - sep := "" + sets := make([]string, 0, len(s.Sets)) for _, set := range s.Sets { + sets = append(sets, set.String()) + } + + sort.Strings(sets) + sep := "" + for _, set := range sets { buf.WriteString(sep) - buf.WriteString(set.String()) + buf.WriteString(set) sep = "," } From c4608d0eb73060cf38361b58a6012d8f7aa87627 Mon Sep 17 00:00:00 2001 From: xiaobiao Date: Thu, 4 Jun 2020 11:27:49 +0800 Subject: [PATCH 2/3] restore go.mod --- go.mod | 2 -- 1 file changed, 2 deletions(-) diff --git a/go.mod b/go.mod index 025e09643..3cc7b3424 100644 --- a/go.mod +++ b/go.mod @@ -1,7 +1,5 @@ module github.com/siddontang/go-mysql -go 1.14 - require ( github.com/BurntSushi/toml v0.3.1 github.com/go-sql-driver/mysql v1.4.1 From f2f08b345e08293979316d4ac6957c3190354ca9 Mon Sep 17 00:00:00 2001 From: xiaobiao Date: Thu, 4 Jun 2020 11:40:29 +0800 Subject: [PATCH 3/3] direct return when only one element in set --- mysql/mysql_gtid.go | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/mysql/mysql_gtid.go b/mysql/mysql_gtid.go index 207fa1342..80287baf5 100644 --- a/mysql/mysql_gtid.go +++ b/mysql/mysql_gtid.go @@ -418,13 +418,21 @@ func (s *MysqlGTIDSet) Equal(o GTIDSet) bool { } func (s *MysqlGTIDSet) String() string { + // there is only one element in gtid set + if len(s.Sets) == 1 { + for _, set := range s.Sets { + return set.String() + } + } + + // sort multi set var buf bytes.Buffer sets := make([]string, 0, len(s.Sets)) for _, set := range s.Sets { sets = append(sets, set.String()) } - sort.Strings(sets) + sep := "" for _, set := range sets { buf.WriteString(sep)