[
https://issues.apache.org/jira/browse/AVRO-1402?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13943615#comment-13943615
]
Doug Cutting commented on AVRO-1402:
------------------------------------
> If an application isn't setting the read schema and a file is written with a
> changed schema, then there isn't a strong compatibility guarantee.
In this case, for Java applications that use BigDecimal, upgrading Avro alone
will change the schema. So the writing application's schema may change without
any other change to the application. That alone may be a compatibility problem.
BTW, we may also need to remove much of the stringable handling for BigDecimal
in SpecificData. We don't want both isString() and isBytes() to be true for
the same object. However we do still need to be able to read instances of the
old "java-class" schema for BigDecimal, and perhaps even continue to write
these. Ugh.
I wonder if we instead should use something like serializers, e.g.,:
{code}
interface TypeMapping<T> {
boolean isInstance(Object o);
Schema getSchema();
void write(T instance, Schema schema, Encoder encoder) throws IOException;
T read(Schema schema, Decoder decoder) throws IOException;
}
public class DecimalMapping implements TypeMapping<BigDecimal> {
private int scale;
public DecimalMapping(int scale) { this.scale = scale; }
...
}
{code}
To opt into using this, you'd do something like:
{code}
GenericData data = new GenericData();
data.addTypeMapping(new DecimalMapping(10));
...
{code}
An application would need to update both its write and read side to start using
this. That way each time we add a feature like this we won't need to make an
incompatible release.
> Support for DECIMAL primitive type
> ----------------------------------
>
> Key: AVRO-1402
> URL: https://issues.apache.org/jira/browse/AVRO-1402
> Project: Avro
> Issue Type: New Feature
> Affects Versions: 1.7.5
> Reporter: Mariano Dominguez
> Priority: Minor
> Labels: Hive
> Attachments: AVRO-1402.patch
>
>
> Currently, Avro does not seem to support a DECIMAL type or equivalent.
> http://avro.apache.org/docs/1.7.5/spec.html#schema_primitive
> Adding DECIMAL support would be particularly interesting when converting
> types from Avro to Hive, since DECIMAL is already a supported data type in
> Hive (0.11.0).
--
This message was sent by Atlassian JIRA
(v6.2#6252)