diff --git a/driver/src/main/java/com/alibaba/otter/canal/parse/driver/mysql/packets/UUIDSet.java b/driver/src/main/java/com/alibaba/otter/canal/parse/driver/mysql/packets/UUIDSet.java index 0eaea9cd..5926a4fa 100644 --- a/driver/src/main/java/com/alibaba/otter/canal/parse/driver/mysql/packets/UUIDSet.java +++ b/driver/src/main/java/com/alibaba/otter/canal/parse/driver/mysql/packets/UUIDSet.java @@ -181,7 +181,9 @@ public class UUIDSet { int j; for (j = i + 1; j < len; j++) { if (intervals.get(i).stop >= intervals.get(j).start) { - intervals.get(i).stop = intervals.get(j).stop; + if (intervals.get(i).stop < intervals.get(j).stop) { + intervals.get(i).stop = intervals.get(j).stop; + } } else { break; } diff --git a/driver/src/test/java/com/alibaba/otter/canal/parse/driver/mysql/MysqlGTIDSetTest.java b/driver/src/test/java/com/alibaba/otter/canal/parse/driver/mysql/MysqlGTIDSetTest.java index 26103611..bf29f7d9 100644 --- a/driver/src/test/java/com/alibaba/otter/canal/parse/driver/mysql/MysqlGTIDSetTest.java +++ b/driver/src/test/java/com/alibaba/otter/canal/parse/driver/mysql/MysqlGTIDSetTest.java @@ -36,6 +36,18 @@ public class MysqlGTIDSetTest { } } + @Test + public void testUpdate() { + String gtid1 = "726757ad-4455-11e8-ae04-0242ac110002:1-25536412"; + MysqlGTIDSet mysqlGTIDSet1 = MysqlGTIDSet.parse(gtid1); + + String gtid2 = "726757ad-4455-11e8-ae04-0242ac110002:1-20304074"; + MysqlGTIDSet mysqlGTIDSet2 = MysqlGTIDSet.parse(gtid2); + + mysqlGTIDSet1.update(gtid2); + assertEquals("726757ad-4455-11e8-ae04-0242ac110002:1-25536412", mysqlGTIDSet1.toString()); + } + @Test public void testParse() { Map cases = new HashMap<>(5);