From e8d138d3bde874c2bee4896d3ee601a5ddba6377 Mon Sep 17 00:00:00 2001 From: ltamber Date: Fri, 16 Apr 2021 21:37:55 +0800 Subject: [PATCH] fix: uuidset combine fix (#3432) --- .../canal/parse/driver/mysql/packets/UUIDSet.java | 4 +++- .../canal/parse/driver/mysql/MysqlGTIDSetTest.java | 12 ++++++++++++ 2 files changed, 15 insertions(+), 1 deletion(-) 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);