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

junhao pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/paimon.git


The following commit(s) were added to refs/heads/master by this push:
     new d06d9688b [arrow] Read timestamp vector and process by paimon self 
(#4008)
d06d9688b is described below

commit d06d9688b3c1204a474790d684581225286e9903
Author: YeJunHao <[email protected]>
AuthorDate: Tue Aug 20 17:24:05 2024 +0800

    [arrow] Read timestamp vector and process by paimon self (#4008)
---
 .../arrow/converter/Arrow2PaimonVectorConverter.java | 20 ++++++++++++++------
 1 file changed, 14 insertions(+), 6 deletions(-)

diff --git 
a/paimon-arrow/src/main/java/org/apache/paimon/arrow/converter/Arrow2PaimonVectorConverter.java
 
b/paimon-arrow/src/main/java/org/apache/paimon/arrow/converter/Arrow2PaimonVectorConverter.java
index ff73f0694..04e9273e4 100644
--- 
a/paimon-arrow/src/main/java/org/apache/paimon/arrow/converter/Arrow2PaimonVectorConverter.java
+++ 
b/paimon-arrow/src/main/java/org/apache/paimon/arrow/converter/Arrow2PaimonVectorConverter.java
@@ -74,14 +74,13 @@ import org.apache.arrow.vector.Float8Vector;
 import org.apache.arrow.vector.IntVector;
 import org.apache.arrow.vector.SmallIntVector;
 import org.apache.arrow.vector.TimeMilliVector;
+import org.apache.arrow.vector.TimeStampVector;
 import org.apache.arrow.vector.TinyIntVector;
 import org.apache.arrow.vector.VarBinaryVector;
 import org.apache.arrow.vector.VarCharVector;
 import org.apache.arrow.vector.complex.ListVector;
-import org.apache.arrow.vector.complex.MapVector;
 import org.apache.arrow.vector.complex.StructVector;
 
-import java.time.LocalDateTime;
 import java.util.ArrayList;
 import java.util.List;
 
@@ -375,8 +374,17 @@ public interface Arrow2PaimonVectorConverter {
 
                         @Override
                         public Timestamp getTimestamp(int i, int precision) {
-                            return Timestamp.fromLocalDateTime(
-                                    (LocalDateTime) (vector.getObject(i)));
+                            long value = ((TimeStampVector) vector).get(i);
+                            if (precision == 0) {
+                                return Timestamp.fromEpochMillis(value * 1000);
+                            } else if (precision >= 1 && precision <= 3) {
+                                return Timestamp.fromEpochMillis(value);
+                            } else if (precision >= 4 && precision <= 6) {
+                                return Timestamp.fromMicros(value);
+                            } else {
+                                return Timestamp.fromEpochMillis(
+                                        value / 1_000_000, (int) value % 
1_000_000);
+                            }
                         }
                     };
         }
@@ -463,13 +471,13 @@ public interface Arrow2PaimonVectorConverter {
                     new MapColumnVector() {
 
                         private boolean inited = false;
-                        private MapVector mapVector;
+                        private ListVector mapVector;
                         private ColumnVector keyColumnVector;
                         private ColumnVector valueColumnVector;
 
                         private void init() {
                             if (!inited) {
-                                this.mapVector = (MapVector) vector;
+                                this.mapVector = (ListVector) vector;
                                 StructVector listVector = (StructVector) 
mapVector.getDataVector();
 
                                 FieldVector keyVector = 
listVector.getChildrenFromFields().get(0);

Reply via email to