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);