You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@iceberg.apache.org by bl...@apache.org on 2020/05/13 00:02:27 UTC

[incubator-iceberg] branch master updated: Support time type in Avro generics (#1015)

This is an automated email from the ASF dual-hosted git repository.

blue pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-iceberg.git


The following commit(s) were added to refs/heads/master by this push:
     new 1443383  Support time type in Avro generics (#1015)
1443383 is described below

commit 14433838c83ce14381241e0c8f007821c5a6bcbe
Author: Xiang Li <wa...@gmail.com>
AuthorDate: Wed May 13 08:02:18 2020 +0800

    Support time type in Avro generics (#1015)
---
 core/src/main/java/org/apache/iceberg/avro/GenericAvroReader.java | 3 +++
 core/src/main/java/org/apache/iceberg/avro/GenericAvroWriter.java | 3 +++
 core/src/test/java/org/apache/iceberg/avro/AvroDataTest.java      | 3 ++-
 3 files changed, 8 insertions(+), 1 deletion(-)

diff --git a/core/src/main/java/org/apache/iceberg/avro/GenericAvroReader.java b/core/src/main/java/org/apache/iceberg/avro/GenericAvroReader.java
index d04ec53..f9b5127 100644
--- a/core/src/main/java/org/apache/iceberg/avro/GenericAvroReader.java
+++ b/core/src/main/java/org/apache/iceberg/avro/GenericAvroReader.java
@@ -158,6 +158,9 @@ class GenericAvroReader<T> implements DatumReader<T> {
             // Spark uses the same representation
             return ValueReaders.ints();
 
+          case "time-micros":
+            return ValueReaders.longs();
+
           case "timestamp-millis":
             // adjust to microseconds
             ValueReader<Long> longs = ValueReaders.longs();
diff --git a/core/src/main/java/org/apache/iceberg/avro/GenericAvroWriter.java b/core/src/main/java/org/apache/iceberg/avro/GenericAvroWriter.java
index dd97f2e..65166da 100644
--- a/core/src/main/java/org/apache/iceberg/avro/GenericAvroWriter.java
+++ b/core/src/main/java/org/apache/iceberg/avro/GenericAvroWriter.java
@@ -91,6 +91,9 @@ class GenericAvroWriter<T> implements DatumWriter<T> {
           case "date":
             return ValueWriters.ints();
 
+          case "time-micros":
+            return ValueWriters.longs();
+
           case "timestamp-micros":
             return ValueWriters.longs();
 
diff --git a/core/src/test/java/org/apache/iceberg/avro/AvroDataTest.java b/core/src/test/java/org/apache/iceberg/avro/AvroDataTest.java
index cbe36f3..59a8150 100644
--- a/core/src/test/java/org/apache/iceberg/avro/AvroDataTest.java
+++ b/core/src/test/java/org/apache/iceberg/avro/AvroDataTest.java
@@ -55,7 +55,8 @@ public abstract class AvroDataTest {
       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