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