[buf](fix) fix inaccurate mapping of RDMS datetime/timestamp to Doris (#292)
* Fix incorrect datetime precision mapping
diff --git a/flink-doris-connector/src/main/java/org/apache/doris/flink/tools/cdc/mysql/MysqlType.java b/flink-doris-connector/src/main/java/org/apache/doris/flink/tools/cdc/mysql/MysqlType.java
index e1e8854..180414b 100644
--- a/flink-doris-connector/src/main/java/org/apache/doris/flink/tools/cdc/mysql/MysqlType.java
+++ b/flink-doris-connector/src/main/java/org/apache/doris/flink/tools/cdc/mysql/MysqlType.java
@@ -144,8 +144,8 @@
return DorisType.DATE_V2;
case DATETIME:
case TIMESTAMP:
- return String.format(
- "%s(%s)", DorisType.DATETIME_V2, Math.min(length == null ? 0 : length, 6));
+ int dtScale = length > 19 ? length - 20 : 0;
+ return String.format("%s(%s)", DorisType.DATETIME_V2, Math.min(dtScale, 6));
case CHAR:
case VARCHAR:
Preconditions.checkNotNull(length);
diff --git a/flink-doris-connector/src/main/java/org/apache/doris/flink/tools/cdc/oracle/OracleType.java b/flink-doris-connector/src/main/java/org/apache/doris/flink/tools/cdc/oracle/OracleType.java
index 6bd5ce3..b6d2bae 100644
--- a/flink-doris-connector/src/main/java/org/apache/doris/flink/tools/cdc/oracle/OracleType.java
+++ b/flink-doris-connector/src/main/java/org/apache/doris/flink/tools/cdc/oracle/OracleType.java
@@ -48,7 +48,7 @@
if (oracleType.startsWith(INTERVAL)) {
oracleType = oracleType.substring(0, 8);
} else if (oracleType.startsWith(TIMESTAMP)) {
- return String.format("%s(%s)", DorisType.DATETIME_V2, 6);
+ return String.format("%s(%s)", DorisType.DATETIME_V2, Math.min(scale, 6));
}
switch (oracleType) {
case NUMBER:
diff --git a/flink-doris-connector/src/main/java/org/apache/doris/flink/tools/cdc/postgres/PostgresType.java b/flink-doris-connector/src/main/java/org/apache/doris/flink/tools/cdc/postgres/PostgresType.java
index 2508b15..ed80d45 100644
--- a/flink-doris-connector/src/main/java/org/apache/doris/flink/tools/cdc/postgres/PostgresType.java
+++ b/flink-doris-connector/src/main/java/org/apache/doris/flink/tools/cdc/postgres/PostgresType.java
@@ -97,8 +97,7 @@
case TIMESTAMP:
case TIMESTAMPTZ:
return String.format(
- "%s(%s)",
- DorisType.DATETIME_V2, Math.min(precision == null ? 0 : precision, 6));
+ "%s(%s)", DorisType.DATETIME_V2, Math.min(scale == null ? 0 : scale, 6));
case DATE:
return DorisType.DATE_V2;
case BOOL: