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",