Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Specify Locale for DecimalFormat #21136

Merged
merged 1 commit into from Mar 19, 2024

Conversation

kasiafi
Copy link
Member

@kasiafi kasiafi commented Mar 18, 2024

Before this change, when casting real or double to varchar, we used DecimalFormat without specified Locale. It defaulted to user's locale, causing inconsistent formatting and test failures. For example, with locale AU, the E in scientific notation is lowercase.

Release notes

( ) This is not user-visible or is docs only, and no release notes are required.
( ) Release notes are required. Please propose a release note for me.
(x) Release notes are required, with the following suggested text:

# General
* Ensure consistent formatting when casting from double or real to varchar. ({issue}`issuenumber`)

@cla-bot cla-bot bot added the cla-signed label Mar 18, 2024
@@ -55,7 +57,7 @@ public final class DoubleOperators
private static final double MIN_BYTE_AS_DOUBLE = -0x1p7;
private static final double MAX_BYTE_PLUS_ONE_AS_DOUBLE = 0x1p7;

private static final ThreadLocal<DecimalFormat> FORMAT = ThreadLocal.withInitial(() -> new DecimalFormat("0.0###################E0"));
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The same problem lives in RealOperators. Can we fix both @kasiafi ?

@findepi
Copy link
Member

findepi commented Mar 18, 2024

I guess tests cannot catch problems like this because we have air.test.language=en and air.test.region=US in airbase.
Maybe we could run tests with different locale. They should generally pass.

Before this change, when casting real or double to varchar,
we used DecimalFormat without specified Locale. It defaulted to
user's locale, causing inconsistent formatting and test failures.
For `AU`, the `E` in scientific notation is lowercase.
@kasiafi kasiafi force-pushed the 510_ScientificNotationLocale branch from 692e48f to 4236fa6 Compare March 19, 2024 07:47
@kasiafi
Copy link
Member Author

kasiafi commented Mar 19, 2024

@findepi AC

@kasiafi kasiafi merged commit 036a68d into trinodb:master Mar 19, 2024
94 checks passed
@github-actions github-actions bot added this to the 443 milestone Mar 19, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Development

Successfully merging this pull request may close these issues.

None yet

3 participants