You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@avro.apache.org by fo...@apache.org on 2019/05/31 17:53:07 UTC

[avro] branch branch-1.9 updated: AVRO-2392: enble joda micros logical types supports (#517)

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

fokko pushed a commit to branch branch-1.9
in repository https://gitbox.apache.org/repos/asf/avro.git


The following commit(s) were added to refs/heads/branch-1.9 by this push:
     new 63d5148  AVRO-2392: enble joda micros logical types supports (#517)
63d5148 is described below

commit 63d51487daad17458a0edcec1c65ae76619de76e
Author: Shameera Yodage <sh...@gmail.com>
AuthorDate: Fri May 31 13:53:03 2019 -0400

    AVRO-2392: enble joda micros logical types supports (#517)
---
 .../avro/compiler/specific/SpecificCompiler.java   |  2 ++
 .../compiler/specific/TestSpecificCompiler.java    | 22 ++++++++++++++++++++++
 2 files changed, 24 insertions(+)

diff --git a/lang/java/compiler/src/main/java/org/apache/avro/compiler/specific/SpecificCompiler.java b/lang/java/compiler/src/main/java/org/apache/avro/compiler/specific/SpecificCompiler.java
index 19fce11..ef8e951 100644
--- a/lang/java/compiler/src/main/java/org/apache/avro/compiler/specific/SpecificCompiler.java
+++ b/lang/java/compiler/src/main/java/org/apache/avro/compiler/specific/SpecificCompiler.java
@@ -102,7 +102,9 @@ public class SpecificCompiler {
       void addLogicalTypeConversions(SpecificData specificData) {
         specificData.addLogicalTypeConversion(new JodaTimeConversions.DateConversion());
         specificData.addLogicalTypeConversion(new JodaTimeConversions.TimeConversion());
+        specificData.addLogicalTypeConversion(new JodaTimeConversions.TimeMicrosConversion());
         specificData.addLogicalTypeConversion(new JodaTimeConversions.TimestampConversion());
+        specificData.addLogicalTypeConversion(new JodaTimeConversions.TimestampMicrosConversion());
       }
     },
     JSR310 {
diff --git a/lang/java/compiler/src/test/java/org/apache/avro/compiler/specific/TestSpecificCompiler.java b/lang/java/compiler/src/test/java/org/apache/avro/compiler/specific/TestSpecificCompiler.java
index eb4b93d..34d8f1e 100644
--- a/lang/java/compiler/src/test/java/org/apache/avro/compiler/specific/TestSpecificCompiler.java
+++ b/lang/java/compiler/src/test/java/org/apache/avro/compiler/specific/TestSpecificCompiler.java
@@ -435,15 +435,21 @@ public class TestSpecificCompiler {
 
     Schema dateSchema = LogicalTypes.date().addToSchema(Schema.create(Schema.Type.INT));
     Schema timeSchema = LogicalTypes.timeMillis().addToSchema(Schema.create(Schema.Type.INT));
+    Schema timeMicroSchema = LogicalTypes.timeMicros().addToSchema(Schema.create(Schema.Type.LONG));
     Schema timestampSchema = LogicalTypes.timestampMillis().addToSchema(Schema.create(Schema.Type.LONG));
+    Schema timestampMicrosSchema = LogicalTypes.timestampMicros().addToSchema(Schema.create(Schema.Type.LONG));
     // Date/time types should always use upper level java classes, even though
     // their underlying representations are primitive types
     Assert.assertEquals("Should use Joda LocalDate for date type", "org.joda.time.LocalDate",
         compiler.javaUnbox(dateSchema));
     Assert.assertEquals("Should use Joda LocalTime for time-millis type", "org.joda.time.LocalTime",
         compiler.javaUnbox(timeSchema));
+    Assert.assertEquals("Should use Joda DateTime for timestamp-millis type", "org.joda.time.LocalTime",
+        compiler.javaUnbox(timeMicroSchema));
     Assert.assertEquals("Should use Joda DateTime for timestamp-millis type", "org.joda.time.DateTime",
         compiler.javaUnbox(timestampSchema));
+    Assert.assertEquals("Should use Joda DateTime for timestamp-millis type", "org.joda.time.DateTime",
+        compiler.javaUnbox(timestampMicrosSchema));
   }
 
   @Test
@@ -638,7 +644,9 @@ public class TestSpecificCompiler {
 
     Schema dateSchema = LogicalTypes.date().addToSchema(Schema.create(Schema.Type.INT));
     Schema timeSchema = LogicalTypes.timeMillis().addToSchema(Schema.create(Schema.Type.INT));
+    Schema timeMicroSchema = LogicalTypes.timeMicros().addToSchema(Schema.create(Schema.Type.LONG));
     Schema timestampSchema = LogicalTypes.timestampMillis().addToSchema(Schema.create(Schema.Type.LONG));
+    Schema timestampMicrosSchema = LogicalTypes.timestampMicros().addToSchema(Schema.create(Schema.Type.LONG));
     Schema decimalSchema = LogicalTypes.decimal(9, 2).addToSchema(Schema.create(Schema.Type.BYTES));
     Schema uuidSchema = LogicalTypes.uuid().addToSchema(Schema.create(Schema.Type.STRING));
 
@@ -646,9 +654,15 @@ public class TestSpecificCompiler {
         "new org.apache.avro.data.JodaTimeConversions.DateConversion()", compiler.conversionInstance(dateSchema));
     Assert.assertEquals("Should use time conversion for time type",
         "new org.apache.avro.data.JodaTimeConversions.TimeConversion()", compiler.conversionInstance(timeSchema));
+    Assert.assertEquals("Should use time conversion for time type",
+        "new org.apache.avro.data.JodaTimeConversions.TimeMicrosConversion()",
+        compiler.conversionInstance(timeMicroSchema));
     Assert.assertEquals("Should use timestamp conversion for date type",
         "new org.apache.avro.data.JodaTimeConversions.TimestampConversion()",
         compiler.conversionInstance(timestampSchema));
+    Assert.assertEquals("Should use timestamp conversion for date type",
+        "new org.apache.avro.data.JodaTimeConversions.TimestampMicrosConversion()",
+        compiler.conversionInstance(timestampMicrosSchema));
     Assert.assertEquals("Should use null for decimal if the flag is off", "null",
         compiler.conversionInstance(decimalSchema));
     Assert.assertEquals("Should use null for decimal if the flag is off", "null",
@@ -662,7 +676,9 @@ public class TestSpecificCompiler {
 
     Schema dateSchema = LogicalTypes.date().addToSchema(Schema.create(Schema.Type.INT));
     Schema timeSchema = LogicalTypes.timeMillis().addToSchema(Schema.create(Schema.Type.INT));
+    Schema timeMicroSchema = LogicalTypes.timeMicros().addToSchema(Schema.create(Schema.Type.LONG));
     Schema timestampSchema = LogicalTypes.timestampMillis().addToSchema(Schema.create(Schema.Type.LONG));
+    Schema timestampMicrosSchema = LogicalTypes.timestampMicros().addToSchema(Schema.create(Schema.Type.LONG));
     Schema decimalSchema = LogicalTypes.decimal(9, 2).addToSchema(Schema.create(Schema.Type.BYTES));
     Schema uuidSchema = LogicalTypes.uuid().addToSchema(Schema.create(Schema.Type.STRING));
 
@@ -670,9 +686,15 @@ public class TestSpecificCompiler {
         "new org.apache.avro.data.JodaTimeConversions.DateConversion()", compiler.conversionInstance(dateSchema));
     Assert.assertEquals("Should use time conversion for time type",
         "new org.apache.avro.data.JodaTimeConversions.TimeConversion()", compiler.conversionInstance(timeSchema));
+    Assert.assertEquals("Should use time conversion for time type",
+        "new org.apache.avro.data.JodaTimeConversions.TimeMicrosConversion()",
+        compiler.conversionInstance(timeMicroSchema));
     Assert.assertEquals("Should use timestamp conversion for date type",
         "new org.apache.avro.data.JodaTimeConversions.TimestampConversion()",
         compiler.conversionInstance(timestampSchema));
+    Assert.assertEquals("Should use timestamp conversion for date type",
+        "new org.apache.avro.data.JodaTimeConversions.TimestampMicrosConversion()",
+        compiler.conversionInstance(timestampMicrosSchema));
     Assert.assertEquals("Should use null for decimal if the flag is off",
         "new org.apache.avro.Conversions.DecimalConversion()", compiler.conversionInstance(decimalSchema));
     Assert.assertEquals("Should use null for decimal if the flag is off", "null",