Skip to content

Commit f231ea2

Browse files
committed
add mariadb GTID
1 parent 5b6254e commit f231ea2

File tree

1 file changed

+47
-0
lines changed

1 file changed

+47
-0
lines changed

mysql/mariadb_gtid.go

+47
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
package mysql
2+
3+
import (
4+
"fmt"
5+
"strconv"
6+
"strings"
7+
)
8+
9+
type MariadbGTID struct {
10+
DomainID uint32
11+
ServerID uint32
12+
SequenceNumber uint64
13+
}
14+
15+
func ParseMariadbGTID(str string) (MariadbGTID, error) {
16+
seps := strings.Split(str, "-")
17+
18+
var gtid MariadbGTID
19+
20+
if len(seps) != 3 {
21+
return gtid, fmt.Errorf("invalid Mariadb GTID %v, must domain-server-sequence", str)
22+
}
23+
24+
domainID, err := strconv.ParseUint(seps[0], 10, 32)
25+
if err != nil {
26+
return gtid, fmt.Errorf("invalid MariaDB GTID Domain ID (%v): %v", seps[0], err)
27+
}
28+
29+
serverID, err := strconv.ParseUint(seps[1], 10, 32)
30+
if err != nil {
31+
return gtid, fmt.Errorf("invalid MariaDB GTID Server ID (%v): %v", seps[1], err)
32+
}
33+
34+
sequenceID, err := strconv.ParseUint(seps[2], 10, 64)
35+
if err != nil {
36+
return gtid, fmt.Errorf("invalid MariaDB GTID Sequence number (%v): %v", seps[2], err)
37+
}
38+
39+
return MariadbGTID{
40+
DomainID: uint32(domainID),
41+
ServerID: uint32(serverID),
42+
SequenceNumber: sequenceID}, nil
43+
}
44+
45+
func (gtid MariadbGTID) String() string {
46+
return fmt.Sprintf("%d-%d-%d", gtid.DomainID, gtid.ServerID, gtid.SequenceNumber)
47+
}

0 commit comments

Comments
 (0)