apache / arrow-rs

Official Rust implementation of Apache Arrow
https://arrow.apache.org/
Apache License 2.0
2.62k stars 802 forks source link

Fix signed decimal e-notation parsing #6729

Closed gruuya closed 1 week ago

gruuya commented 1 week ago

Which issue does this PR close?

Closes #6728.

Rationale for this change

When parsing signed decimal numbers the leading sign is stripped from the raw value bytes, and the e index is passed relative to the stripped slice.

However, the full value is passed into parse_e_notation, leading to a off-by-one error of the index for the signed numbers.

What changes are included in this PR?

Do not strip the sign when parsing, and make the e index relative to the full value, thus aligning parse_e_notation and parse_decimal.

Are there any user-facing changes?

None