This is an automated email from the ASF dual-hosted git repository.
lzljs3620320 pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/incubator-paimon-trino.git
The following commit(s) were added to refs/heads/main by this push:
new 651adde fix timestamp problem between trino schema and paimon schema
(#28) (#29)
651adde is described below
commit 651adde20b7d61687bf12ac274af95a576bb7166
Author: jjrrzxc <[email protected]>
AuthorDate: Fri Sep 8 17:21:49 2023 +0800
fix timestamp problem between trino schema and paimon schema (#28) (#29)
---
.../org/apache/paimon/trino/TrinoTypeUtils.java | 6 ++++--
.../java/org/apache/paimon/trino/TestTrinoType.java | 21 ++++++++++++++++-----
2 files changed, 20 insertions(+), 7 deletions(-)
diff --git
a/paimon-trino-common/src/main/java/org/apache/paimon/trino/TrinoTypeUtils.java
b/paimon-trino-common/src/main/java/org/apache/paimon/trino/TrinoTypeUtils.java
index aec48df..5c7f8d8 100644
---
a/paimon-trino-common/src/main/java/org/apache/paimon/trino/TrinoTypeUtils.java
+++
b/paimon-trino-common/src/main/java/org/apache/paimon/trino/TrinoTypeUtils.java
@@ -152,7 +152,8 @@ public class TrinoTypeUtils {
@Override
public Type visit(TimestampType timestampType) {
- return io.trino.spi.type.TimestampType.TIMESTAMP_MILLIS;
+ int precision = timestampType.getPrecision();
+ return
io.trino.spi.type.TimestampType.createTimestampType(precision);
}
@Override
@@ -243,7 +244,8 @@ public class TrinoTypeUtils {
} else if (trinoType instanceof io.trino.spi.type.TimeType) {
return new TimeType();
} else if (trinoType instanceof io.trino.spi.type.TimestampType) {
- return DataTypes.TIMESTAMP();
+ int precision = ((io.trino.spi.type.TimestampType)
trinoType).getPrecision();
+ return new TimestampType(precision);
} else if (trinoType instanceof TimestampWithTimeZoneType) {
return DataTypes.TIMESTAMP_WITH_LOCAL_TIME_ZONE();
} else if (trinoType instanceof io.trino.spi.type.ArrayType) {
diff --git
a/paimon-trino-common/src/test/java/org/apache/paimon/trino/TestTrinoType.java
b/paimon-trino-common/src/test/java/org/apache/paimon/trino/TestTrinoType.java
index 603fa8b..cdb52c3 100644
---
a/paimon-trino-common/src/test/java/org/apache/paimon/trino/TestTrinoType.java
+++
b/paimon-trino-common/src/test/java/org/apache/paimon/trino/TestTrinoType.java
@@ -103,9 +103,14 @@ public class TestTrinoType {
Type timeType = TrinoTypeUtils.fromPaimonType(new TimeType());
assertThat(Objects.requireNonNull(timeType).getDisplayName()).isEqualTo("time(3)");
- Type timestampType =
TrinoTypeUtils.fromPaimonType(DataTypes.TIMESTAMP());
- assertThat(Objects.requireNonNull(timestampType).getDisplayName())
- .isEqualTo("timestamp(3)");
+ Type timestampType6 =
TrinoTypeUtils.fromPaimonType(DataTypes.TIMESTAMP());
+ assertThat(Objects.requireNonNull(timestampType6).getDisplayName())
+ .isEqualTo("timestamp(6)");
+
+ Type timestampType0 =
+ TrinoTypeUtils.fromPaimonType(new
org.apache.paimon.types.TimestampType(0));
+ assertThat(Objects.requireNonNull(timestampType0).getDisplayName())
+ .isEqualTo("timestamp(0)");
Type localZonedTimestampType =
TrinoTypeUtils.fromPaimonType(DataTypes.TIMESTAMP_WITH_LOCAL_TIME_ZONE());
@@ -176,8 +181,14 @@ public class TestTrinoType {
DataType timeType =
TrinoTypeUtils.toPaimonType(io.trino.spi.type.TimeType.TIME_MILLIS);
assertThat(timeType.asSQLString()).isEqualTo("TIME(0)");
- DataType timestampType =
TrinoTypeUtils.toPaimonType(TimestampType.TIMESTAMP_MILLIS);
- assertThat(timestampType.asSQLString()).isEqualTo("TIMESTAMP(6)");
+ DataType timestampType0 =
TrinoTypeUtils.toPaimonType(TimestampType.TIMESTAMP_SECONDS);
+ assertThat(timestampType0.asSQLString()).isEqualTo("TIMESTAMP(0)");
+
+ DataType timestampType3 =
TrinoTypeUtils.toPaimonType(TimestampType.TIMESTAMP_MILLIS);
+ assertThat(timestampType3.asSQLString()).isEqualTo("TIMESTAMP(3)");
+
+ DataType timestampType6 =
TrinoTypeUtils.toPaimonType(TimestampType.TIMESTAMP_MICROS);
+ assertThat(timestampType6.asSQLString()).isEqualTo("TIMESTAMP(6)");
DataType timestampWithTimeZoneType =
TrinoTypeUtils.toPaimonType(TimestampWithTimeZoneType.TIMESTAMP_TZ_MILLIS);