diff --git a/example/src/main/java/com/alibaba/otter/canal/example/AbstractCanalClientTest.java b/example/src/main/java/com/alibaba/otter/canal/example/AbstractCanalClientTest.java index 6b30b98b..33ea6550 100644 --- a/example/src/main/java/com/alibaba/otter/canal/example/AbstractCanalClientTest.java +++ b/example/src/main/java/com/alibaba/otter/canal/example/AbstractCanalClientTest.java @@ -96,13 +96,7 @@ public class AbstractCanalClientTest { if (!running) { return; } - running = false; - if (waiting) { - if (connector instanceof ClusterCanalConnector) { - ((ClusterCanalConnector) connector).setRetryTimes(-1); - } - thread.interrupt(); - } + connector.stopRunning(); if (thread != null) { try { thread.join(); diff --git a/parse/src/main/java/com/alibaba/otter/canal/parse/inbound/mysql/dbsync/LogEventConvert.java b/parse/src/main/java/com/alibaba/otter/canal/parse/inbound/mysql/dbsync/LogEventConvert.java index fe34e199..772043bb 100644 --- a/parse/src/main/java/com/alibaba/otter/canal/parse/inbound/mysql/dbsync/LogEventConvert.java +++ b/parse/src/main/java/com/alibaba/otter/canal/parse/inbound/mysql/dbsync/LogEventConvert.java @@ -634,11 +634,14 @@ public class LogEventConvert extends AbstractCanalLifeCycle implements BinlogPar // fixed issue // https://github.com/alibaba/canal/issues/66,特殊处理binary/varbinary,不能做编码处理 boolean isBinary = false; + boolean isSingleBit = false; if (fieldMeta != null) { if (StringUtils.containsIgnoreCase(fieldMeta.getColumnType(), "VARBINARY")) { isBinary = true; } else if (StringUtils.containsIgnoreCase(fieldMeta.getColumnType(), "BINARY")) { isBinary = true; + } else if (StringUtils.containsIgnoreCase(fieldMeta.getColumnType(), "tinyint(1)")) { + isSingleBit = true; } } buffer.nextValue(info.type, info.meta, isBinary); @@ -648,6 +651,9 @@ public class LogEventConvert extends AbstractCanalLifeCycle implements BinlogPar } int javaType = buffer.getJavaType(); + if (isSingleBit && javaType == Types.TINYINT) { + javaType = Types.BIT; + } if (buffer.isNull()) { columnBuilder.setIsNull(true); } else {