Thomas Scott created AVRO-1864:
----------------------------------

             Summary: Decimal conversion should convert values with scale less 
than intended scale instead of erroring.
                 Key: AVRO-1864
                 URL: https://issues.apache.org/jira/browse/AVRO-1864
             Project: Avro
          Issue Type: Bug
    Affects Versions: 1.7.6
            Reporter: Thomas Scott
            Priority: Minor


Using Sqoop to import data to AVRO can mean that decimal scales in the incoming 
values do not match the scales expected in AVRO. In this situation AVRO file 
creation fails. However, in some cases this is not the correct behaviour, given 
a value of 3.1 and a scale of 3 the value will fit into the scale requirements 
and so should be adjusted.

Looking through the code this seems to be enforced here:

src/main/java/org/apache/avro/Conversions.java
public ByteBuffer toBytes(BigDecimal value, Schema schema, LogicalType type) {
int scale = ((LogicalTypes.Decimal) type).getScale();
if (scale != value.scale()) {
throw new AvroTypeException("Cannot encode decimal with scale " +
value.scale() + " as scale " + scale);

Should this not be:

if (scale < value.scale()) {

The same applies in:  toFixed()




--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to