airbytehq / airbytehq/airbyte-protocol

[java] loss of precision with `number` fields

Abierto
#89 0 comentarios 0 reacciones 0 asignados Ver en GitHub
Lenguaje dominante
Java
Estrellas
13
Forks
13
Métricas de merge de PR
Sin PR fusionados en 30 d

Descripción

We should set `useBigDecimals = true` in the jsonSchema2Pojo gradle config.

Presently, the protocol defines fields which are oddly of type `number`:
- `emitted_at` in TRACE and CONTROL messages
- `record_count`

The `emitted_at` field is always a millisecond epoch timestamp. In Java, the jackson library will always serialize `double` and `float` values using scientific notation, which can cause loss of precision in the least significant digits, yet these are precisely those which are interesting to the user here.

The `record_count` was deliberately picked to be a `double` though the reason isn't immediately obvious, a `long` should be quite sufficient.

In any case, the values are always integers and not terribly huge ones either, they should be perfectly safe to represent using `BigDecimal`.

This change is not backward-compatible, but perhaps that's not that big of a deal? I don't know.

Guía de contribución

No hay ninguna guía de contribución indexada para este repositorio

Evaluación

Este issue todavía no se ha evaluado.

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.