Mryange opened a new pull request, #68251:
URL: https://github.com/apache/doris/pull/68251
Decimal rounding produced incorrect results when the input or result scale
exceeded the range supported by `uint64_t`, and `ceil`/`floor` could overflow
while adjusting values near the native Decimal limits. Root cause: Decimal
rescaling used the `uint64_t`-based `int_exp10` helper for Decimal128 and
Decimal256 values, while the rounding formulas added or subtracted the divisor
before division. This change uses scale factors with the Decimal type's native
width, performs rounding from quotient and remainder without overflow-prone
pre-adjustment, and handles divisors beyond the physical Decimal range for
directed rounding. The result scale is now applied consistently across vector
and constant Decimal inputs.
### Release note
None
### Check List (For Author)
- Test <!-- At least one of them must be included. -->
- [ ] Regression test
- [ ] Unit Test
- [ ] Manual test (add detailed scripts or steps below)
- [ ] No need to test or manual test. Explain why:
- [ ] This is a refactor/code format and no logic has been changed.
- [ ] Previous test can cover this change.
- [ ] No code files have been changed.
- [ ] Other reason <!-- Add your reason? -->
- Behavior changed:
- [ ] No.
- [ ] Yes. <!-- Explain the behavior change -->
- Does this need documentation?
- [ ] No.
- [ ] Yes. <!-- Add document PR link here. eg:
https://github.com/apache/doris-website/pull/1214 -->
### Check List (For Reviewer who merge this PR)
- [ ] Confirm the release note
- [ ] Confirm test cases
- [ ] Confirm document
- [ ] Add branch pick label <!-- Add branch pick label that this PR should
merge into -->
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]