Skip to content

Commit 13cab0e

Browse files
authored
Support empty GTID set (#4190)
Happens when the MySQL instance didn't execute any GTID transactions (restored from a backup or GTID recently enabled) or got reset. Was supported before, regressed in #4051 Validated on the real mirror that was failing Closes DBI-685
1 parent 81e8706 commit 13cab0e

2 files changed

Lines changed: 9 additions & 11 deletions

File tree

flow/connectors/mysql/replication_mechanism.go

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -18,10 +18,6 @@ type parsedReplicationOffset struct {
1818
}
1919

2020
func parseReplicationOffsetText(flavor string, offsetText string) (parsedReplicationOffset, error) {
21-
if offsetText == "" {
22-
return parsedReplicationOffset{}, nil
23-
}
24-
2521
if rest, isFilePos := strings.CutPrefix(offsetText, "!f:"); isFilePos {
2622
comma := strings.LastIndexByte(rest, ',')
2723
if comma == -1 {

flow/connectors/mysql/replication_mechanism_test.go

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -10,12 +10,6 @@ import (
1010
)
1111

1212
func TestParseReplicationOffsetText(t *testing.T) {
13-
t.Run("empty", func(t *testing.T) {
14-
parsedOffset, err := parseReplicationOffsetText("mysql", "")
15-
require.NoError(t, err)
16-
require.Equal(t, parsedReplicationOffset{}, parsedOffset)
17-
})
18-
1913
t.Run("filepos", func(t *testing.T) {
2014
parsedOffset, err := parseReplicationOffsetText("mysql", "!f:mysql-bin.000001,4d2")
2115
require.NoError(t, err)
@@ -42,6 +36,14 @@ func TestParseReplicationOffsetText(t *testing.T) {
4236
require.Equal(t, mysql.Position{}, parsedOffset.pos)
4337
})
4438

39+
t.Run("empty", func(t *testing.T) {
40+
parsedOffset, err := parseReplicationOffsetText("mysql", "")
41+
require.NoError(t, err)
42+
require.Equal(t, protos.MySqlReplicationMechanism_MYSQL_GTID.String(), parsedOffset.mechanism)
43+
require.True(t, parsedOffset.gset.IsEmpty())
44+
require.Equal(t, mysql.Position{}, parsedOffset.pos)
45+
})
46+
4547
t.Run("invalid gtid", func(t *testing.T) {
4648
_, err := parseReplicationOffsetText("mysql", "not-a-valid-offset")
4749
require.ErrorContains(t, err, `failed to parse mysql offset text "not-a-valid-offset" as GTID set`)
@@ -64,7 +66,7 @@ func TestReplicationMechanismInUseFromOffsetText(t *testing.T) {
6466
t.Run("empty", func(t *testing.T) {
6567
mechanism, err := replicationMechanismInUseFromOffsetText("mysql", "")
6668
require.NoError(t, err)
67-
require.Empty(t, mechanism)
69+
require.Equal(t, protos.MySqlReplicationMechanism_MYSQL_GTID.String(), mechanism)
6870
})
6971

7072
t.Run("invalid", func(t *testing.T) {

0 commit comments

Comments
 (0)