Browse Source

修复MySQL Short数据类型

AE86 4 months ago
parent
commit
6ecff33d5b

+ 5 - 0
dbsyncer-connector/dbsyncer-connector-mysql/src/main/java/org/dbsyncer/connector/mysql/deserializer/DeleteDeserializer.java

@@ -25,6 +25,11 @@ public final class DeleteDeserializer extends DeleteRowsEventDataDeserializer {
         return inputStream.readInteger(1);
     }
 
+    @Override
+    protected Serializable deserializeShort(ByteArrayInputStream inputStream) throws IOException {
+        return inputStream.readInteger(2);
+    }
+
     @Override
     protected Serializable deserializeDatetimeV2(int meta, ByteArrayInputStream inputStream) throws IOException {
         return datetimeV2Deserialize.deserializeDatetimeV2(meta, inputStream);

+ 5 - 0
dbsyncer-connector/dbsyncer-connector-mysql/src/main/java/org/dbsyncer/connector/mysql/deserializer/UpdateDeserializer.java

@@ -25,6 +25,11 @@ public final class UpdateDeserializer extends UpdateRowsEventDataDeserializer {
         return inputStream.readInteger(1);
     }
 
+    @Override
+    protected Serializable deserializeShort(ByteArrayInputStream inputStream) throws IOException {
+        return inputStream.readInteger(2);
+    }
+
     @Override
     protected Serializable deserializeDatetimeV2(int meta, ByteArrayInputStream inputStream) throws IOException {
         return datetimeV2Deserialize.deserializeDatetimeV2(meta, inputStream);

+ 5 - 0
dbsyncer-connector/dbsyncer-connector-mysql/src/main/java/org/dbsyncer/connector/mysql/deserializer/WriteDeserializer.java

@@ -25,6 +25,11 @@ public final class WriteDeserializer extends WriteRowsEventDataDeserializer {
         return inputStream.readInteger(1);
     }
 
+    @Override
+    protected Serializable deserializeShort(ByteArrayInputStream inputStream) throws IOException {
+        return inputStream.readInteger(2);
+    }
+
     @Override
     protected Serializable deserializeDatetimeV2(int meta, ByteArrayInputStream inputStream) throws IOException {
         return datetimeV2Deserialize.deserializeDatetimeV2(meta, inputStream);

+ 2 - 2
dbsyncer-connector/dbsyncer-connector-mysql/src/main/java/org/dbsyncer/connector/mysql/schema/support/MySQLBooleanType.java

@@ -29,8 +29,8 @@ public final class MySQLBooleanType extends BooleanType {
 
     @Override
     protected Boolean merge(Object val, Field field) {
-        if (val instanceof Integer) {
-            return (Integer) val == 1;
+        if (val instanceof Number) {
+            return ((Number) val).shortValue() == 1;
         }
         if (val instanceof BitSet) {
             BitSet bitSet = (BitSet) val;

+ 1 - 1
dbsyncer-sdk/src/main/java/org/dbsyncer/sdk/connector/AbstractConnector.java

@@ -142,7 +142,7 @@ public abstract class AbstractConnector {
                     Object o = resolver.merge(row.get(f.getName()), f);
                     row.put(f.getName(), resolver.convert(o, f));
                 } catch (Exception e) {
-                    logger.error("convert value error: ({}, {}, {}, {})", config.getTableName(), f.getName(), row.get(f.getName()), e);
+                    logger.error(String.format("convert value error: (%s, %s, %s)", config.getTableName(), f.getName(), row.get(f.getName())), e);
                     throw new SdkException(e);
                 }
             }

+ 1 - 1
dbsyncer-sdk/src/main/java/org/dbsyncer/sdk/schema/AbstractDataType.java

@@ -80,7 +80,7 @@ public abstract class AbstractDataType<T> implements DataType {
     }
 
     protected T throwUnsupportedException(Object val, Field field) {
-        throw new SdkException(String.format("%s does not support type [%s] convert to [%s], val [%s]", getClass().getSimpleName(), val.getClass(), field.getTypeName(), val));
+        throw new SdkException(String.format("%s does not support type [%s] convert to %s(%s), val [%s]", getClass().getSimpleName(), val.getClass(), field.getName(), field.getTypeName(), val));
     }
 
 }