| 162 | } |
| 163 | |
| 164 | func ParseUUIDSet(str string) (*UUIDSet, error) { |
| 165 | str = strings.TrimSpace(str) |
| 166 | sep := strings.Split(str, ":") |
| 167 | if len(sep) < 2 { |
| 168 | return nil, errors.Errorf("invalid GTID format, must UUID:interval[:interval]") |
| 169 | } |
| 170 | |
| 171 | var err error |
| 172 | s := new(UUIDSet) |
| 173 | if s.SID, err = uuid.FromString(sep[0]); err != nil { |
| 174 | return nil, errors.Trace(err) |
| 175 | } |
| 176 | |
| 177 | // Handle interval |
| 178 | for i := 1; i < len(sep); i++ { |
| 179 | if in, err := parseInterval(sep[i]); err != nil { |
| 180 | return nil, errors.Trace(err) |
| 181 | } else { |
| 182 | s.Intervals = append(s.Intervals, in) |
| 183 | } |
| 184 | } |
| 185 | |
| 186 | s.Intervals = s.Intervals.Normalize() |
| 187 | |
| 188 | return s, nil |
| 189 | } |
| 190 | |
| 191 | func NewUUIDSet(sid uuid.UUID, in ...Interval) *UUIDSet { |
| 192 | s := new(UUIDSet) |