From 530f4af57eb06c7c968c7d6f93dcfdb1c240a01a Mon Sep 17 00:00:00 2001 From: Ashley Cox Date: Fri, 20 Sep 2019 14:57:51 -0700 Subject: [PATCH 1/3] Add TIME_MICROS support to GenericParquetReaders --- .../data/parquet/GenericParquetReaders.java | 18 +++++++++++++----- .../java/org/apache/iceberg/data/DataTest.java | 3 ++- 2 files changed, 15 insertions(+), 6 deletions(-) diff --git a/data/src/main/java/org/apache/iceberg/data/parquet/GenericParquetReaders.java b/data/src/main/java/org/apache/iceberg/data/parquet/GenericParquetReaders.java index c4d2a3504f0e..88908bf9d8bb 100644 --- a/data/src/main/java/org/apache/iceberg/data/parquet/GenericParquetReaders.java +++ b/data/src/main/java/org/apache/iceberg/data/parquet/GenericParquetReaders.java @@ -22,11 +22,8 @@ import com.google.common.collect.ImmutableList; import com.google.common.collect.Lists; import com.google.common.collect.Maps; -import java.time.Instant; -import java.time.LocalDate; -import java.time.LocalDateTime; -import java.time.OffsetDateTime; -import java.time.ZoneOffset; + +import java.time.*; import java.time.temporal.ChronoUnit; import java.util.Iterator; import java.util.List; @@ -229,6 +226,8 @@ public ParquetValueReader primitive(org.apache.iceberg.types.Type.PrimitiveTy } else { return new TimestampMillisReader(desc); } + case TIME_MICROS: + return new TimeReader(desc); case DECIMAL: DecimalMetadata decimal = primitive.getDecimalMetadata(); switch (primitive.getPrimitiveTypeName()) { @@ -366,6 +365,15 @@ public OffsetDateTime read(OffsetDateTime reuse) { } } + private static class TimeReader extends PrimitiveReader { + private TimeReader(ColumnDescriptor desc) { + super(desc); + } + + @Override + public LocalTime read(LocalTime reuse) { return LocalTime.MIN.plus(column.nextLong(), ChronoUnit.MICROS); } + } + private static class FixedReader extends PrimitiveReader { private FixedReader(ColumnDescriptor desc) { super(desc); diff --git a/data/src/test/java/org/apache/iceberg/data/DataTest.java b/data/src/test/java/org/apache/iceberg/data/DataTest.java index 60058ae645d2..d3266845c6df 100644 --- a/data/src/test/java/org/apache/iceberg/data/DataTest.java +++ b/data/src/test/java/org/apache/iceberg/data/DataTest.java @@ -52,7 +52,8 @@ public abstract class DataTest { optional(113, "bytes", Types.BinaryType.get()), required(114, "dec_9_0", Types.DecimalType.of(9, 0)), required(115, "dec_11_2", Types.DecimalType.of(11, 2)), - required(116, "dec_38_10", Types.DecimalType.of(38, 10)) // maximum precision + required(116, "dec_38_10", Types.DecimalType.of(38, 10)), // maximum precision + required(117, "time", Types.TimeType.get()) ); @Rule From facf39907e3d6a31177ee0cb3b8fdd3412047422 Mon Sep 17 00:00:00 2001 From: Ashley Cox Date: Fri, 20 Sep 2019 17:01:50 -0700 Subject: [PATCH 2/3] updates per review --- .../iceberg/data/parquet/GenericParquetReaders.java | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/data/src/main/java/org/apache/iceberg/data/parquet/GenericParquetReaders.java b/data/src/main/java/org/apache/iceberg/data/parquet/GenericParquetReaders.java index 88908bf9d8bb..84a9cb3f3b47 100644 --- a/data/src/main/java/org/apache/iceberg/data/parquet/GenericParquetReaders.java +++ b/data/src/main/java/org/apache/iceberg/data/parquet/GenericParquetReaders.java @@ -23,7 +23,12 @@ import com.google.common.collect.Lists; import com.google.common.collect.Maps; -import java.time.*; +import java.time.Instant; +import java.time.LocalDate; +import java.time.LocalDateTime; +import java.time.LocalTime; +import java.time.OffsetDateTime; +import java.time.ZoneOffset; import java.time.temporal.ChronoUnit; import java.util.Iterator; import java.util.List; @@ -371,7 +376,7 @@ private TimeReader(ColumnDescriptor desc) { } @Override - public LocalTime read(LocalTime reuse) { return LocalTime.MIN.plus(column.nextLong(), ChronoUnit.MICROS); } + public LocalTime read(LocalTime reuse) { return LocalTime.ofNanoOfDay(column.nextLong() * 1000L); } } private static class FixedReader extends PrimitiveReader { From cc11ea616cb27850f4ee9d3593f0795e420c261f Mon Sep 17 00:00:00 2001 From: Ashley Cox Date: Mon, 23 Sep 2019 09:18:58 -0700 Subject: [PATCH 3/3] Style updates --- .../apache/iceberg/data/parquet/GenericParquetReaders.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/data/src/main/java/org/apache/iceberg/data/parquet/GenericParquetReaders.java b/data/src/main/java/org/apache/iceberg/data/parquet/GenericParquetReaders.java index 84a9cb3f3b47..02b3bccd9d05 100644 --- a/data/src/main/java/org/apache/iceberg/data/parquet/GenericParquetReaders.java +++ b/data/src/main/java/org/apache/iceberg/data/parquet/GenericParquetReaders.java @@ -22,7 +22,6 @@ import com.google.common.collect.ImmutableList; import com.google.common.collect.Lists; import com.google.common.collect.Maps; - import java.time.Instant; import java.time.LocalDate; import java.time.LocalDateTime; @@ -376,7 +375,9 @@ private TimeReader(ColumnDescriptor desc) { } @Override - public LocalTime read(LocalTime reuse) { return LocalTime.ofNanoOfDay(column.nextLong() * 1000L); } + public LocalTime read(LocalTime reuse) { + return LocalTime.ofNanoOfDay(column.nextLong() * 1000L); + } } private static class FixedReader extends PrimitiveReader {