diff --git a/lib/src/main/java/io/cloudquery/scalar/Timestamp.java b/lib/src/main/java/io/cloudquery/scalar/Timestamp.java index 8702814..cf57c0d 100644 --- a/lib/src/main/java/io/cloudquery/scalar/Timestamp.java +++ b/lib/src/main/java/io/cloudquery/scalar/Timestamp.java @@ -13,7 +13,7 @@ public class Timestamp extends Scalar { public static final ZoneId zoneID = ZoneOffset.UTC; // TODO: add more units support later - private static final ArrowType dt = + public static final ArrowType dt = new ArrowType.Timestamp(TimeUnit.MILLISECOND, zoneID.toString()); public Timestamp() { diff --git a/lib/src/main/java/io/cloudquery/transformers/TypeTransformer.java b/lib/src/main/java/io/cloudquery/transformers/TypeTransformer.java index b1cc640..1a337e3 100644 --- a/lib/src/main/java/io/cloudquery/transformers/TypeTransformer.java +++ b/lib/src/main/java/io/cloudquery/transformers/TypeTransformer.java @@ -1,12 +1,12 @@ package io.cloudquery.transformers; +import io.cloudquery.scalar.Timestamp; import io.cloudquery.types.InetType; import io.cloudquery.types.JSONType; import io.cloudquery.types.ListType; import io.cloudquery.types.UUIDType; import java.lang.reflect.Field; import org.apache.arrow.vector.types.FloatingPointPrecision; -import org.apache.arrow.vector.types.TimeUnit; import org.apache.arrow.vector.types.pojo.ArrowType; public interface TypeTransformer { @@ -41,7 +41,7 @@ private static ArrowType transformArrowType(String name, Class type) return InetType.INSTANCE; } case "java.time.LocalDateTime" -> { - return new ArrowType.Timestamp(TimeUnit.MICROSECOND, null); + return Timestamp.dt; } case "java.util.UUID" -> { return new UUIDType(); diff --git a/lib/src/test/java/io/cloudquery/transformers/TransformWithClassTest.java b/lib/src/test/java/io/cloudquery/transformers/TransformWithClassTest.java index 9f40426..dc56c30 100644 --- a/lib/src/test/java/io/cloudquery/transformers/TransformWithClassTest.java +++ b/lib/src/test/java/io/cloudquery/transformers/TransformWithClassTest.java @@ -17,6 +17,7 @@ import io.cloudquery.types.ListType; import java.net.InetAddress; import java.time.LocalDateTime; +import java.time.ZoneOffset; import java.util.List; import java.util.Optional; import org.apache.arrow.vector.types.FloatingPointPrecision; @@ -97,7 +98,7 @@ public static final class TestClass { Column.builder().name("any_array_col").type(JSONType.INSTANCE).build(), Column.builder() .name("time_col") - .type(new Timestamp(TimeUnit.MICROSECOND, null)) + .type(new Timestamp(TimeUnit.MILLISECOND, ZoneOffset.UTC.getId())) .build()); public static final List expectedColumnsSimpleClass = diff --git a/lib/src/test/java/io/cloudquery/transformers/TypeTransformerTest.java b/lib/src/test/java/io/cloudquery/transformers/TypeTransformerTest.java index 52ece49..e455229 100644 --- a/lib/src/test/java/io/cloudquery/transformers/TypeTransformerTest.java +++ b/lib/src/test/java/io/cloudquery/transformers/TypeTransformerTest.java @@ -8,6 +8,7 @@ import io.cloudquery.types.ListType; import java.net.InetAddress; import java.time.LocalDateTime; +import java.time.ZoneOffset; import java.util.Map; import java.util.stream.Stream; import org.apache.arrow.vector.types.FloatingPointPrecision; @@ -102,7 +103,8 @@ public static Stream testArgumentsSource() { Arguments.of("stringArrayField", ListType.listOf(ArrowType.Utf8.INSTANCE)), // Time - Arguments.of("timeField", new ArrowType.Timestamp(TimeUnit.MICROSECOND, null)), + Arguments.of( + "timeField", new ArrowType.Timestamp(TimeUnit.MILLISECOND, ZoneOffset.UTC.getId())), // Byte Arguments.of("byteArrayField", ArrowType.Binary.INSTANCE),