瀏覽代碼

支持mysql bit同步oracle raw

AE86 1 年之前
父節點
當前提交
baf716a14b

+ 1 - 1
dbsyncer-connector/src/main/java/org/dbsyncer/connector/oracle/OracleConnector.java

@@ -110,7 +110,7 @@ public final class OracleConnector extends AbstractDatabaseConnector {
                 return StringUtil.EMPTY;
             }
         }
-        return buildSqlWithQuotation();
+        return super.buildSqlFilterWithQuotation(value);
     }
 
     @Override

+ 16 - 0
dbsyncer-connector/src/main/java/org/dbsyncer/connector/schema/VarBinaryValueMapper.java

@@ -4,6 +4,8 @@ import org.dbsyncer.common.spi.ConnectorMapper;
 import org.dbsyncer.connector.AbstractValueMapper;
 import org.dbsyncer.connector.ConnectorException;
 
+import java.util.BitSet;
+
 /**
  * @author AE86
  * @version 1.0.0
@@ -18,6 +20,20 @@ public class VarBinaryValueMapper extends AbstractValueMapper<byte[]> {
 
     @Override
     protected byte[] convert(ConnectorMapper connectorMapper, Object val) {
+        if (val instanceof BitSet) {
+            BitSet bitSet = (BitSet) val;
+            return toByteArray(bitSet);
+        }
         throw new ConnectorException(String.format("%s can not find type [%s], val [%s]", getClass().getSimpleName(), val.getClass(), val));
     }
+
+    public byte[] toByteArray(BitSet bits) {
+        byte[] bytes = new byte[8];
+        for (int i = 0; i < bits.length(); i++) {
+            if (bits.get(i)) {
+                bytes[bytes.length - i / 8 - 1] |= 1 << (i % 8);
+            }
+        }
+        return bytes;
+    }
 }

+ 1 - 1
dbsyncer-connector/src/main/java/org/dbsyncer/connector/sqlserver/SqlServerConnector.java

@@ -61,7 +61,7 @@ public final class SqlServerConnector extends AbstractDatabaseConnector {
                 return StringUtil.EMPTY;
             }
         }
-        return buildSqlWithQuotation();
+        return super.buildSqlFilterWithQuotation(value);
     }
 
     @Override