Release 87: AVRO Decimal Logical Type Support

Thursday, November 4th 2021 by Factor House

Kpow v87 features support for AVRO Decimal Logical Type fields, improved Data Import UX for CSV message upload, and support for RHOSAK.

AVRO Decimal Logical Type Support

The AVRO specification allows for several logical types, including decimal type which allows for an arbitrary precision number with optional scale.

On the JVM decimal types result in a BigDecimal, with the wire-format being a BigInteger stuffed into a ByteBuffer. In early version of Kpow this resulted in users seeing strange characters output for decimal types as our inspect engine just naively converted the ByteBuffer into a string (sorry about that!). Data Produce of decimals wasn't supported.

In time we added a logical type conversion that converted these ByteBuffers into floats in the Data Inspect results, but that's not a great solution due to float precision / interpretation.

Now in v87 of Kpow decimal logical type fields are represented in our UI as string fields, this means that there is no room for float precision issues between the many hands that ferry fields between browser, JVM, to Kafka, and back again.

Where a schema declares a decimal logical type field our UI will check both scale and precision when producing messages. Both Avro and Avro (Strict) serdes now support consuming and producing messages with decimal fields.

Full Changelog

  • AVRO Decimal Logical Type Support
  • RHOSAK Support
  • Data Import CSV UX Improvements

Get this release on Dockerhub, on the AWS Marketplace, on the Red Hat Marketplace, on ArtifactHub (Helm Charts), or Download as a JAR File.
AWS Marketplace Logo

Pull the latest Kpow Docker Container

docker pull operatr/kpow:87

Download the latest Kpow Java JAR

Download the Kpow Java 8 JAR (uses Jetty 9, we recommend updating to Java 11+ and using our standard JAR)


Data Inspect
Data Produce
Logical Type