Closed
Description
Your following extension NonBSGenericDatumWriter
of GenericDatumWriter
ignores proper support for AVRO's LogicalType.Decimal
(not calling Conversions.DecimalConversion
) when dealing with BigDecimal
types.
A possible fix (inside NonBSGenericDatumWriter
) might be:
case BYTES:
if (datum instanceof byte[]) {
super.writeWithoutConversion(schema, ByteBuffer.wrap((byte[]) datum), out);
return;
}
// Try and convert Decimal types, if the logical type indicates it
LogicalType logicalType = schema.getLogicalType();
if (logicalType instanceof Decimal.LogicalType ) {
Conversion<BigDecimal> conversion = data.getConversionByClass(BigDecimal.class, logicalType);
byte[] decimal = convert(schema, logicalType, conversion, datum);
super.writeWithoutConversion(schema, ByteBuffer.wrap(decimal), out);
return;
}
break;
I'm willing to contribute a PR (including tests), but I'd like to apply it as a fix to 2.13.x branch.
@cowtowncoder Let me know what you think