Fix for Precision Loss in Int64 to Double Conversion in Parquet Reader
Details
| Detail name | Value |
|---|---|
| Changelog Number | 27025 |
| Type | Bug |
| Status | Resolved |
| Affected Versions | Exasol 2025.1.0 |
| Fix Versions | Exasol 2025.1.3, Exasol 2025.2.0 |
| Resolution Date | 2025-09-17 |
Description
A bug was identified in the Parquet Reader where int64_t and uint64_t values experienced precision loss during conversion to double for values exceeding the maximum capacity that a double can represent. This issue results in inaccurate or truncated floating-point representation of large integers, impacting the integrity of numerical data in downstream processing.
Workaround
Until a fix is applied, read int64_t and uint64_t values as their original data type (e.g., integers) instead of forcing automatic conversion to double. In terms of Exasol it means using DECIMAL datatype with precision greater than or equal to 20 (example DECIMAL(20,0)).
Fix
This issue has been fixed.
Precision Handling Enhancements: Added logic to detect and prevent the conversion of integers (int64_t/uint64_t) that exceed the capacity of double.
If precision loss is unavoidable, the system will throw an exception stating out of range.
ETL-2229: [Column=6 Row=0] [Transformation of value='-9223372036854775808' failed - value out of range] [File: s3://****.parquet]