From 71cbfd73bfc6a158043cb8618d3a768ad85c3b3d Mon Sep 17 00:00:00 2001 From: Diego Fernandez Date: Wed, 9 Aug 2023 00:11:02 -0700 Subject: [PATCH 1/2] Correctly consume JDBC timestamps when converting to Arrow --- .../apache/arrow/adapter/jdbc/JdbcToArrowUtils.java | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/java/adapter/jdbc/src/main/java/org/apache/arrow/adapter/jdbc/JdbcToArrowUtils.java b/java/adapter/jdbc/src/main/java/org/apache/arrow/adapter/jdbc/JdbcToArrowUtils.java index dc79f6efff3..2f06ba606b4 100644 --- a/java/adapter/jdbc/src/main/java/org/apache/arrow/adapter/jdbc/JdbcToArrowUtils.java +++ b/java/adapter/jdbc/src/main/java/org/apache/arrow/adapter/jdbc/JdbcToArrowUtils.java @@ -188,12 +188,9 @@ public static ArrowType getArrowTypeFromJdbcType(final JdbcFieldInfo fieldInfo, case Types.TIME: return new ArrowType.Time(TimeUnit.MILLISECOND, 32); case Types.TIMESTAMP: - final String timezone; - if (calendar != null) { - timezone = calendar.getTimeZone().getID(); - } else { - timezone = null; - } + return new ArrowType.Timestamp(TimeUnit.MILLISECOND); + case Types.TIMESTAMP_WITH_TIMEZONE: + final String timezone = calendar == null ? null : calendar.getTimeZone().getID(); return new ArrowType.Timestamp(TimeUnit.MILLISECOND, timezone); case Types.BINARY: case Types.VARBINARY: @@ -473,7 +470,7 @@ static JdbcConsumer getConsumer(ArrowType arrowType, int columnIndex, boolean nu case Time: return TimeConsumer.createConsumer((TimeMilliVector) vector, columnIndex, nullable, calendar); case Timestamp: - if (config.getCalendar() == null) { + if (((ArrowType.Timestamp) arrowType).getTimezone() == null) { return TimestampConsumer.createConsumer((TimeStampMilliVector) vector, columnIndex, nullable); } else { return TimestampTZConsumer.createConsumer((TimeStampMilliTZVector) vector, columnIndex, nullable, calendar); From 6a97ab8cfff1423ddda5fa2c2333ebfa88f42d4c Mon Sep 17 00:00:00 2001 From: Diego Fernandez Date: Wed, 9 Aug 2023 09:59:25 -0700 Subject: [PATCH 2/2] Small fix --- .../java/org/apache/arrow/adapter/jdbc/JdbcToArrowUtils.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/java/adapter/jdbc/src/main/java/org/apache/arrow/adapter/jdbc/JdbcToArrowUtils.java b/java/adapter/jdbc/src/main/java/org/apache/arrow/adapter/jdbc/JdbcToArrowUtils.java index 2f06ba606b4..3de19000e4e 100644 --- a/java/adapter/jdbc/src/main/java/org/apache/arrow/adapter/jdbc/JdbcToArrowUtils.java +++ b/java/adapter/jdbc/src/main/java/org/apache/arrow/adapter/jdbc/JdbcToArrowUtils.java @@ -188,7 +188,7 @@ public static ArrowType getArrowTypeFromJdbcType(final JdbcFieldInfo fieldInfo, case Types.TIME: return new ArrowType.Time(TimeUnit.MILLISECOND, 32); case Types.TIMESTAMP: - return new ArrowType.Timestamp(TimeUnit.MILLISECOND); + return new ArrowType.Timestamp(TimeUnit.MILLISECOND, null); case Types.TIMESTAMP_WITH_TIMEZONE: final String timezone = calendar == null ? null : calendar.getTimeZone().getID(); return new ArrowType.Timestamp(TimeUnit.MILLISECOND, timezone);