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
Your following extension
NonBSGenericDatumWriterofGenericDatumWriterignores proper support for AVRO'sLogicalType.Decimal(not callingConversions.DecimalConversion) when dealing withBigDecimaltypes.A possible fix (inside
NonBSGenericDatumWriter) might be: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