[ 
https://issues.apache.org/jira/browse/AVRO-2099?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Thiruvalluvan M. G. updated AVRO-2099:
--------------------------------------
    Component/s: spec

> Decimal precision is ignored
> ----------------------------
>
>                 Key: AVRO-2099
>                 URL: https://issues.apache.org/jira/browse/AVRO-2099
>             Project: Apache Avro
>          Issue Type: Improvement
>          Components: spec
>            Reporter: Kornel Kiełczewski
>            Priority: Major
>
> According to the documentation 
> https://avro.apache.org/docs/1.8.1/spec.html#Decimal 
> {quote}
> The decimal logical type represents an arbitrary-precision signed decimal 
> number of the form unscaled × 10-scale.
> {quote}
> Then in the schema we might have an entry like:
> {code}
> {
>   "type": "bytes",
>   "logicalType": "decimal",
>   "precision": 4,
>   "scale": 2
> }
> {code}
> However, in the java deserialization I see that the precision is ignored:
> https://github.com/apache/avro/blob/master/lang/java/avro/src/main/java/org/apache/avro/Conversions.java#L79
> {code}
>     @Override
>     public BigDecimal fromBytes(ByteBuffer value, Schema schema, LogicalType 
> type) {
>       int scale = ((LogicalTypes.Decimal) type).getScale();
>       // always copy the bytes out because BigInteger has no offset/length 
> ctor
>       byte[] bytes = new byte[value.remaining()];
>       value.get(bytes);
>       return new BigDecimal(new BigInteger(bytes), scale);
>     }
> {code}
> The logical type definition in the java api requires the precision to be set:
> https://github.com/apache/avro/blob/master/lang/java/avro/src/main/java/org/apache/avro/LogicalTypes.java#L116
> {code}
>   /** Create a Decimal LogicalType with the given precision and scale */
>   public static Decimal decimal(int precision, int scale) {
>     return new Decimal(precision, scale);
>   }
> {code}
> Is this a feature, that we allow arbitrary precision? If so, why do we have 
> the precision in the API and schema, if it's ignored?
> Maybe that's some java specific issue?
> Thanks for any hints.



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to