This is an automated email from the ASF dual-hosted git repository.
zirui pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/inlong.git
The following commit(s) were added to refs/heads/master by this push:
new 4bb55ffdf [INLONG-6823][Sort] Parse the epoch date to normal date for
Doris sink (#6832)
4bb55ffdf is described below
commit 4bb55ffdf8859d2cc40b7ad7867cd3e5402a92e4
Author: Yizhou Yang <[email protected]>
AuthorDate: Fri Dec 16 19:24:02 2022 +0800
[INLONG-6823][Sort] Parse the epoch date to normal date for Doris sink
(#6832)
---
.../doris/table/DorisDynamicSchemaOutputFormat.java | 4 ++++
.../inlong/sort/doris/util/DorisParseUtils.java | 21 +++++++++++++++++++++
2 files changed, 25 insertions(+)
diff --git
a/inlong-sort/sort-connectors/doris/src/main/java/org/apache/inlong/sort/doris/table/DorisDynamicSchemaOutputFormat.java
b/inlong-sort/sort-connectors/doris/src/main/java/org/apache/inlong/sort/doris/table/DorisDynamicSchemaOutputFormat.java
index e5aeec53a..3e1e59a64 100644
---
a/inlong-sort/sort-connectors/doris/src/main/java/org/apache/inlong/sort/doris/table/DorisDynamicSchemaOutputFormat.java
+++
b/inlong-sort/sort-connectors/doris/src/main/java/org/apache/inlong/sort/doris/table/DorisDynamicSchemaOutputFormat.java
@@ -251,6 +251,10 @@ public class DorisDynamicSchemaOutputFormat<T> extends
RichOutputFormat<T> {
this.fieldGetters = new RowData.FieldGetter[logicalTypes.length];
for (int i = 0; i < logicalTypes.length; i++) {
fieldGetters[i] = RowData.createFieldGetter(logicalTypes[i],
i);
+ if ("DATE".equalsIgnoreCase(logicalTypes[i].toString())) {
+ int finalI = i;
+ fieldGetters[i] = row ->
DorisParseUtils.epochToDate(row.getInt(finalI));
+ }
}
}
diff --git
a/inlong-sort/sort-connectors/doris/src/main/java/org/apache/inlong/sort/doris/util/DorisParseUtils.java
b/inlong-sort/sort-connectors/doris/src/main/java/org/apache/inlong/sort/doris/util/DorisParseUtils.java
index 81f82762d..d5cc32169 100644
---
a/inlong-sort/sort-connectors/doris/src/main/java/org/apache/inlong/sort/doris/util/DorisParseUtils.java
+++
b/inlong-sort/sort-connectors/doris/src/main/java/org/apache/inlong/sort/doris/util/DorisParseUtils.java
@@ -18,6 +18,8 @@
package org.apache.inlong.sort.doris.util;
import org.apache.flink.types.RowKind;
+
+import java.time.LocalDate;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
@@ -67,4 +69,23 @@ public class DorisParseUtils {
return buf.toString();
}
+ /**
+ * A utility used to change epoch dates into normal dates
+ * <p/>
+ * Example input: 0
+ * Example output: 1970-01-01
+ *
+ * @param obj the epoch date that is either long or int
+ * @return the transformed local date
+ */
+ public static LocalDate epochToDate(Object obj) {
+ if (obj instanceof Long) {
+ return LocalDate.ofEpochDay((Long) obj);
+ }
+ if (obj instanceof Integer) {
+ return LocalDate.ofEpochDay((Integer) obj);
+ }
+ throw new IllegalArgumentException(
+ "Convert to LocalDate failed from unexpected value '" + obj +
"' of type " + obj.getClass().getName());
+ }
}