Browse Source

Merge pull request #682 from nbqyqx/master

Fix #631 Boolean java type support
agapple 7 years ago
parent
commit
cc8d5b4263

+ 1 - 7
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();

+ 6 - 0
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 {