airbytehq / airbytehq/airbyte-protocol

[java] loss of precision with `number` fields

Đang mở
#89 0 bình luận 0 reaction 0 người được giao Xem trên GitHub
Ngôn ngữ chính
Java
Star
13
Fork
13
Chỉ số merge pull request
Không có pull request nào được merge trong 30 ngày

Mô tả

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.

Hướng dẫn đóng góp

Chưa lập chỉ mục được hướng dẫn đóng góp cho kho mã nguồn này

Đánh giá

Issue này chưa được đánh giá.

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.