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 <32808678+yizhou-y...@users.noreply.github.com>
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());
+    }
 }

Reply via email to