[
https://issues.apache.org/jira/browse/AVRO-1877?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15369372#comment-15369372
]
Michael Wong commented on AVRO-1877:
------------------------------------
Hi, I noticed there are still a couple of issues:
# The way you call {{javaType}} from {{javaUnbox}} in this latest patch is not
correct. For example, if you have a {{union \{null, double\}}}, javaType() will
turn it into a boxed {{java.lang.Double}} that is nullable. Your changes to
javaUnbox will then incorrectly convert that to a primitive type {{double}}. My
suggestion is to revert to the old code and *maybe* refactor the duplicate
SPECIFIC conversion part into a separate method.
# In AVRO-1847, you had added this to javaType:
{code}
@@ -564,10 +575,13 @@ private String getStringType(JsonNode
overrideClassProperty) {
/** Utility for template use. Returns the java type for a Schema. */
public String javaType(Schema schema) {
- Conversion<?> conversion = SPECIFIC
- .getConversionFor(schema.getLogicalType());
- if (conversion != null) {
- return conversion.getConvertedType().getName();
+ if (enableDecimalLogicalType
+ || !(schema.getLogicalType() instanceof LogicalTypes.Decimal)) {
+ Conversion<?> conversion = SPECIFIC
+ .getConversionFor(schema.getLogicalType());
+ if (conversion != null) {
+ return conversion.getConvertedType().getName();
+ }
}
{code}
The problem is that {{enableDecimalLogicalType}} only applies to the Decimal
logical type. For the other logical types, such as {{date}} or
{{timestamp-millis}}, they would be converted even if you didn't
enableDecimalLogicalType. That's at least how it was in 1.8.1. You can test
this is the case by compiling some date or timestamp-millis logical types
without setting enableDecimalLogicalType.
Much appreciated if you can fix these.
> AVRO-1847 accidentally breaks javaUnbox method in SpecificCompiler
> ------------------------------------------------------------------
>
> Key: AVRO-1877
> URL: https://issues.apache.org/jira/browse/AVRO-1877
> Project: Avro
> Issue Type: Bug
> Components: java
> Affects Versions: 1.9.0
> Reporter: Yibing Shi
> Priority: Blocker
> Attachments: AVRO-1877.1.patch
>
>
> AVRO-1847 accidentally removes the logical type conversion logic in method
> {{SpecificCompiler.javaUnbox}}, which breaks the data time type compiling in
> specific compiler.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)