瀏覽代碼

修复null值和做一些兼容改变

life 1 年之前
父節點
當前提交
4a4f54c5bd

+ 12 - 6
dbsyncer-connector/dbsyncer-connector-oracle/src/main/java/org/dbsyncer/connector/oracle/logminer/parser/AbstractParser.java

@@ -3,11 +3,6 @@
  */
 package org.dbsyncer.connector.oracle.logminer.parser;
 
-import java.sql.Types;
-import java.util.HashMap;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.Map;
 import net.sf.jsqlparser.expression.BinaryExpression;
 import net.sf.jsqlparser.expression.Expression;
 import net.sf.jsqlparser.expression.operators.relational.IsNullExpression;
@@ -17,6 +12,12 @@ import org.dbsyncer.sdk.model.Field;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+import java.sql.Types;
+import java.util.HashMap;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Map;
+
 /**
  * @Author AE86
  * @Version 1.0.0
@@ -55,6 +56,7 @@ public abstract class AbstractParser implements Parser {
             OracleColumnValue oracleColumnValue = new OracleColumnValue(
                     columnMap.get(field.getName()));
             switch (field.getType()) {
+                case Types.NUMERIC:
                 case Types.BIGINT:
                     data.add(oracleColumnValue.asBigInteger());
                     break;
@@ -63,7 +65,11 @@ public abstract class AbstractParser implements Parser {
                     break;
                 case Types.TIME:
                 case Types.TIMESTAMP:
-                    data.add(oracleColumnValue.asTime());
+                    data.add(oracleColumnValue.asTimestamp());
+                    break;
+                //timezone
+                case -101:
+                    data.add(oracleColumnValue.asTimestamp());
                     break;
                 default:
                     data.add(oracleColumnValue.asString());

+ 15 - 7
dbsyncer-connector/dbsyncer-connector-oracle/src/main/java/org/dbsyncer/connector/oracle/logminer/parser/OracleColumnValue.java

@@ -1,17 +1,11 @@
 package org.dbsyncer.connector.oracle.logminer.parser;
 
-import java.math.BigDecimal;
-import java.math.BigInteger;
-import java.sql.Date;
-import java.sql.Time;
-import java.sql.Timestamp;
-import java.util.List;
-import java.util.Objects;
 import net.sf.jsqlparser.expression.Expression;
 import net.sf.jsqlparser.expression.Function;
 import net.sf.jsqlparser.expression.NullValue;
 import net.sf.jsqlparser.expression.StringValue;
 import net.sf.jsqlparser.expression.operators.relational.ExpressionList;
+import net.sf.jsqlparser.expression.operators.relational.IsNullExpression;
 import org.dbsyncer.common.column.AbstractColumnValue;
 import org.dbsyncer.common.util.CollectionUtils;
 import org.dbsyncer.common.util.DateFormatUtil;
@@ -19,6 +13,14 @@ import org.dbsyncer.common.util.StringUtil;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+import java.math.BigDecimal;
+import java.math.BigInteger;
+import java.sql.Date;
+import java.sql.Time;
+import java.sql.Timestamp;
+import java.util.List;
+import java.util.Objects;
+
 public class OracleColumnValue extends AbstractColumnValue<Expression> {
 
     private final Logger logger = LoggerFactory.getLogger(getClass());
@@ -87,6 +89,12 @@ public class OracleColumnValue extends AbstractColumnValue<Expression> {
 
     @Override
     public Timestamp asTimestamp() {
+        if (getValue() instanceof IsNullExpression){
+            return null;
+        }
+        if (getValue() instanceof NullValue){
+            return null;
+        }
         Function function = (Function) getValue();
         List<String> multipartName = function.getMultipartName();
         ExpressionList parameters = function.getParameters();