mirror of
https://github.com/alibaba/canal.git
synced 2026-11-04 00:30:15 +08:00
feat unsigned bug (#3104)
This commit is contained in:
@@ -1,27 +1,22 @@
|
|||||||
package com.alibaba.otter.canal.client.adapter.rdb.support;
|
package com.alibaba.otter.canal.client.adapter.rdb.support;
|
||||||
|
|
||||||
|
import com.alibaba.otter.canal.client.adapter.rdb.config.MappingConfig;
|
||||||
|
import com.alibaba.otter.canal.client.adapter.support.Util;
|
||||||
|
import org.apache.commons.lang.StringUtils;
|
||||||
|
import org.slf4j.Logger;
|
||||||
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
import java.io.Reader;
|
import java.io.Reader;
|
||||||
import java.io.StringReader;
|
import java.io.StringReader;
|
||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
import java.nio.charset.StandardCharsets;
|
import java.nio.charset.StandardCharsets;
|
||||||
import java.sql.Blob;
|
import java.sql.*;
|
||||||
import java.sql.Clob;
|
|
||||||
import java.sql.Date;
|
|
||||||
import java.sql.PreparedStatement;
|
|
||||||
import java.sql.SQLException;
|
|
||||||
import java.sql.Time;
|
|
||||||
import java.sql.Timestamp;
|
|
||||||
import java.sql.Types;
|
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
import java.util.LinkedHashMap;
|
import java.util.LinkedHashMap;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
import org.apache.commons.lang.StringUtils;
|
|
||||||
|
|
||||||
import com.alibaba.otter.canal.client.adapter.rdb.config.MappingConfig;
|
|
||||||
import com.alibaba.otter.canal.client.adapter.support.Util;
|
|
||||||
|
|
||||||
public class SyncUtil {
|
public class SyncUtil {
|
||||||
|
private static final Logger logger = LoggerFactory.getLogger(SyncUtil.class);
|
||||||
|
|
||||||
public static Map<String, String> getColumnsMap(MappingConfig.DbMapping dbMapping, Map<String, Object> data) {
|
public static Map<String, String> getColumnsMap(MappingConfig.DbMapping dbMapping, Map<String, Object> data) {
|
||||||
return getColumnsMap(dbMapping, data.keySet());
|
return getColumnsMap(dbMapping, data.keySet());
|
||||||
@@ -93,15 +88,7 @@ public class SyncUtil {
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case Types.TINYINT:
|
case Types.TINYINT:
|
||||||
if (value instanceof Number) {
|
// 向上提升一级,处理unsigned情况
|
||||||
pstmt.setByte(i, ((Number) value).byteValue());
|
|
||||||
} else if (value instanceof String) {
|
|
||||||
pstmt.setByte(i, Byte.parseByte((String) value));
|
|
||||||
} else {
|
|
||||||
pstmt.setNull(i, type);
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case Types.SMALLINT:
|
|
||||||
if (value instanceof Number) {
|
if (value instanceof Number) {
|
||||||
pstmt.setShort(i, ((Number) value).shortValue());
|
pstmt.setShort(i, ((Number) value).shortValue());
|
||||||
} else if (value instanceof String) {
|
} else if (value instanceof String) {
|
||||||
@@ -110,7 +97,7 @@ public class SyncUtil {
|
|||||||
pstmt.setNull(i, type);
|
pstmt.setNull(i, type);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case Types.INTEGER:
|
case Types.SMALLINT:
|
||||||
if (value instanceof Number) {
|
if (value instanceof Number) {
|
||||||
pstmt.setInt(i, ((Number) value).intValue());
|
pstmt.setInt(i, ((Number) value).intValue());
|
||||||
} else if (value instanceof String) {
|
} else if (value instanceof String) {
|
||||||
@@ -119,7 +106,7 @@ public class SyncUtil {
|
|||||||
pstmt.setNull(i, type);
|
pstmt.setNull(i, type);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case Types.BIGINT:
|
case Types.INTEGER:
|
||||||
if (value instanceof Number) {
|
if (value instanceof Number) {
|
||||||
pstmt.setLong(i, ((Number) value).longValue());
|
pstmt.setLong(i, ((Number) value).longValue());
|
||||||
} else if (value instanceof String) {
|
} else if (value instanceof String) {
|
||||||
@@ -128,6 +115,15 @@ public class SyncUtil {
|
|||||||
pstmt.setNull(i, type);
|
pstmt.setNull(i, type);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
case Types.BIGINT:
|
||||||
|
if (value instanceof Number) {
|
||||||
|
pstmt.setBigDecimal(i, new BigDecimal(value.toString()));
|
||||||
|
} else if (value instanceof String) {
|
||||||
|
pstmt.setBigDecimal(i, new BigDecimal(value.toString()));
|
||||||
|
} else {
|
||||||
|
pstmt.setNull(i, type);
|
||||||
|
}
|
||||||
|
break;
|
||||||
case Types.DECIMAL:
|
case Types.DECIMAL:
|
||||||
case Types.NUMERIC:
|
case Types.NUMERIC:
|
||||||
if (value instanceof BigDecimal) {
|
if (value instanceof BigDecimal) {
|
||||||
|
|||||||
Reference in New Issue
Block a user