expression: fix type infer when wrap cast decimal as string #7451
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
What problem does this PR solve?
Before this PR:
After this PR:
What is changed and how it works?
When do type inferring for concat_ws, the argument will be wrapped a
CastAsString if the type of the arg is not type string. Especially when the
argument is of type decimal, the result length will be set to the length of the
decimal which do not take the decimal point and the negative sign into
consideration. During evaluation, the result of CastDecimalAsString will be
truncated to the wrong length, and cause the unexpected result of concat_ws.
Check List
Tests
Code changes
Side effects
Related changes