diff --git a/mysql/gtid.go b/mysql/gtid.go index b73bd7eda..b1e2fa33d 100644 --- a/mysql/gtid.go +++ b/mysql/gtid.go @@ -17,6 +17,9 @@ type GTIDSet interface { Update(GTIDStr string) error Clone() GTIDSet + + // IsEmpty returns true if the given set is empty and false otherwise. + IsEmpty() bool } func ParseGTIDSet(flavor string, s string) (GTIDSet, error) { diff --git a/mysql/mariadb_gtid.go b/mysql/mariadb_gtid.go index fede4a2f2..0ade1dd5f 100644 --- a/mysql/mariadb_gtid.go +++ b/mysql/mariadb_gtid.go @@ -256,3 +256,7 @@ func (s *MariadbGTIDSet) Contain(o GTIDSet) bool { return true } + +func (s *MariadbGTIDSet) IsEmpty() bool { + return len(s.Sets) == 0 +} diff --git a/mysql/mariadb_gtid_test.go b/mysql/mariadb_gtid_test.go index bebdd6304..a710426b1 100644 --- a/mysql/mariadb_gtid_test.go +++ b/mysql/mariadb_gtid_test.go @@ -243,3 +243,13 @@ func TestMariaDBGTIDSetSortedString(t *testing.T) { require.Equal(t, strs[1], gtidSet.String()) } } + +func TestMariadbGTIDSetIsEmpty(t *testing.T) { + emptyGTIDSet := new(MariadbGTIDSet) + emptyGTIDSet.Sets = make(map[uint32]map[uint32]*MariadbGTID) + require.True(t, emptyGTIDSet.IsEmpty()) + + nonEmptyGTIDSet, err := ParseMariadbGTIDSet("0-1-2") + require.NoError(t, err) + require.False(t, nonEmptyGTIDSet.IsEmpty()) +} diff --git a/mysql/mysql_gtid.go b/mysql/mysql_gtid.go index 522348f76..1fbdcf747 100644 --- a/mysql/mysql_gtid.go +++ b/mysql/mysql_gtid.go @@ -596,3 +596,7 @@ func (gtid *MysqlGTIDSet) Clone() GTIDSet { return clone } + +func (s *MysqlGTIDSet) IsEmpty() bool { + return len(s.Sets) == 0 +} diff --git a/mysql/mysql_test.go b/mysql/mysql_test.go index 4486c2b9b..2aea1691c 100644 --- a/mysql/mysql_test.go +++ b/mysql/mysql_test.go @@ -360,3 +360,12 @@ func TestValidateFlavor(t *testing.T) { } } } + +func TestMysqlGTIDSetIsEmpty(t *testing.T) { + emptyGTIDSet := new(MysqlGTIDSet) + emptyGTIDSet.Sets = make(map[string]*UUIDSet) + require.True(t, emptyGTIDSet.IsEmpty()) + + nonEmptyGTIDSet := mysqlGTIDfromString(t, "de278ad0-2106-11e4-9f8e-6edd0ca20947:1-2") + require.False(t, nonEmptyGTIDSet.IsEmpty()) +}