airbytehq / airbytehq/airbyte-protocol

[java] loss of precision with `number` fields

Offen
#89 0 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen
Vorherrschende Sprache
Java
Sterne
13
Forks
13
PR-Merge-Kennzahlen
Keine gemergten PRs in 30 T.

Beschreibung

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.

Beitragsleitfaden

Für dieses Repository ist kein Beitragsleitfaden indexiert

Bewertung

Dieses Issue wurde noch nicht bewertet.

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.