This is an automated email from the ASF dual-hosted git repository.

diwu pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/doris-spark-connector.git


The following commit(s) were added to refs/heads/master by this push:
     new 7cd355b  [bug] Fix read datetime field occur LocalDateTime convert 
String error.  (#226)
7cd355b is described below

commit 7cd355b55b5688137fc5b7e166e667183b8a7b89
Author: Hong Liu <844981...@qq.com>
AuthorDate: Thu Aug 15 14:55:07 2024 +0800

    [bug] Fix read datetime field occur LocalDateTime convert String error.  
(#226)
---
 .../org/apache/doris/spark/serialization/RowBatch.java | 12 ++++++++----
 .../apache/doris/spark/serialization/TestRowBatch.java | 18 +++++++++---------
 2 files changed, 17 insertions(+), 13 deletions(-)

diff --git 
a/spark-doris-connector/src/main/java/org/apache/doris/spark/serialization/RowBatch.java
 
b/spark-doris-connector/src/main/java/org/apache/doris/spark/serialization/RowBatch.java
index 742d180..319bd3c 100644
--- 
a/spark-doris-connector/src/main/java/org/apache/doris/spark/serialization/RowBatch.java
+++ 
b/spark-doris-connector/src/main/java/org/apache/doris/spark/serialization/RowBatch.java
@@ -81,6 +81,11 @@ public class RowBatch {
     private static final Logger logger = 
LoggerFactory.getLogger(RowBatch.class);
     private static final ZoneId DEFAULT_ZONE_ID = ZoneId.systemDefault();
 
+    private static final DateTimeFormatter DATE_TIME_FORMATTER = new 
DateTimeFormatterBuilder()
+            .appendPattern("yyyy-MM-dd HH:mm:ss")
+            .appendFraction(ChronoField.MICRO_OF_SECOND, 0, 6, true)
+            .toFormatter();
+
     private static final String DATETIME_PATTERN = "yyyy-MM-dd HH:mm:ss";
     private static final String DATETIMEV2_PATTERN = "yyyy-MM-dd 
HH:mm:ss.SSSSSS";
     private final DateTimeFormatter dateTimeFormatter =
@@ -374,9 +379,7 @@ public class RowBatch {
                                     continue;
                                 }
                                 String value = new 
String(varCharVector.get(rowIndex), StandardCharsets.UTF_8);
-                                 value = completeMilliseconds(value);
-                                LocalDateTime parse = 
LocalDateTime.parse(value, dateTimeV2Formatter);
-                                addValueToRow(rowIndex, parse);
+                                addValueToRow(rowIndex, value);
                             }
                         } else if (curFieldVector instanceof TimeStampVector) {
                             TimeStampVector timeStampVector = 
(TimeStampVector) curFieldVector;
@@ -388,7 +391,8 @@ public class RowBatch {
                                     continue;
                                 }
                                 LocalDateTime dateTime = getDateTime(rowIndex, 
timeStampVector);
-                                addValueToRow(rowIndex, dateTime);
+                                String formatted = 
DATE_TIME_FORMATTER.format(dateTime);
+                                addValueToRow(rowIndex, formatted);
                             }
 
                         }
diff --git 
a/spark-doris-connector/src/test/java/org/apache/doris/spark/serialization/TestRowBatch.java
 
b/spark-doris-connector/src/test/java/org/apache/doris/spark/serialization/TestRowBatch.java
index 0320cd8..f12014f 100644
--- 
a/spark-doris-connector/src/test/java/org/apache/doris/spark/serialization/TestRowBatch.java
+++ 
b/spark-doris-connector/src/test/java/org/apache/doris/spark/serialization/TestRowBatch.java
@@ -273,7 +273,7 @@ public class TestRowBatch {
                 (float) 1.1,
                 (double) 1.1,
                 Date.valueOf("2008-08-08"),
-                LocalDateTime.of(2008, 8, 8, 0, 0, 0),
+                "2008-08-08 00:00:00",
                 Decimal.apply(1234L, 4, 2),
                 "char1"
         );
@@ -287,7 +287,7 @@ public class TestRowBatch {
                 (float) 2.2,
                 (double) 2.2,
                 Date.valueOf("1900-08-08"),
-                LocalDateTime.of(1900, 8, 8, 0, 0, 0),
+                "1900-08-08 00:00:00",
                 Decimal.apply(8888L, 4, 2),
                 "char2"
         );
@@ -301,7 +301,7 @@ public class TestRowBatch {
                 (float) 3.3,
                 (double) 3.3,
                 Date.valueOf("2100-08-08"),
-                LocalDateTime.of(2100, 8, 8, 0, 0, 0),
+                "2100-08-08 00:00:00",
                 Decimal.apply(10L, 2, 0),
                 "char3"
         );
@@ -832,16 +832,16 @@ public class TestRowBatch {
 
         Assert.assertTrue(rowBatch.hasNext());
         List<Object> actualRow0 = rowBatch.next();
-        Assert.assertEquals(LocalDateTime.of(2024, 3, 20, 0, 0, 0), 
actualRow0.get(0));
-        Assert.assertEquals(LocalDateTime.of(2024, 3, 20, 0, 0, 0), 
actualRow0.get(1));
+        Assert.assertEquals("2024-03-20 00:00:00", actualRow0.get(0));
+        Assert.assertEquals("2024-03-20 00:00:00", actualRow0.get(1));
 
         List<Object> actualRow1 = rowBatch.next();
-        Assert.assertEquals(LocalDateTime.of(2024, 3, 20, 0, 0, 1), 
actualRow1.get(0));
-        Assert.assertEquals(LocalDateTime.of(2024, 3, 20, 0, 0, 0, 123000000), 
actualRow1.get(1));
+        Assert.assertEquals("2024-03-20 00:00:01", actualRow1.get(0));
+        Assert.assertEquals("2024-03-20 00:00:00.123", actualRow1.get(1));
 
         List<Object> actualRow2 = rowBatch.next();
-        Assert.assertEquals(LocalDateTime.of(2024, 3, 20, 0, 0, 2), 
actualRow2.get(0));
-        Assert.assertEquals(LocalDateTime.of(2024, 3, 20, 0, 0, 0, 123456000), 
actualRow2.get(1));
+        Assert.assertEquals("2024-03-20 00:00:02", actualRow2.get(0));
+        Assert.assertEquals("2024-03-20 00:00:00.123456", actualRow2.get(1));
 
 
         Assert.assertFalse(rowBatch.hasNext());


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscr...@doris.apache.org
For additional commands, e-mail: commits-h...@doris.apache.org

Reply via email to