-
Notifications
You must be signed in to change notification settings - Fork 64
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
Retain result type after UNION as base type in T-SQL #487
Merged
Deepesh125
merged 1 commit into
babelfish-for-postgresql:BABEL_5_X_DEV__PG_17_X
from
amazon-aurora:jira-babel-5242
Dec 17, 2024
Merged
Retain result type after UNION as base type in T-SQL #487
Deepesh125
merged 1 commit into
babelfish-for-postgresql:BABEL_5_X_DEV__PG_17_X
from
amazon-aurora:jira-babel-5242
Dec 17, 2024
Conversation
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
hopebo
force-pushed
the
jira-babel-5242
branch
from
December 7, 2024 01:25
6c5f04e
to
47c6595
Compare
forestkeeper
reviewed
Dec 9, 2024
hopebo
force-pushed
the
jira-babel-5242
branch
from
December 12, 2024 22:57
47c6595
to
e57e20d
Compare
Description ----------- When a base type such as `money` is UNIONed with another integer type, the result type will be `fixeddecimal` instead of `money`, which is inconsistent with SQL Server's behaviour. And could also cause some characters not displaying well. Analysis -------- The root cause of the issue is Postgres will consider the base type of domain type as the result type. In Babelfish, `money` is implemented as a domain type of `fixeddecimal`. Actually, `money` is a base type in T-SQL, thus Babelfish should retain `money` type after UNION. Fix --- After a final type has determined by the optimizer, check if it's a base type in T-SQL. If it is, try to use the domain type as result type if the domain type has higher precision than other types. Task: BABEL-5242 Signed-off-by: Bo Li <[email protected]>
hopebo
force-pushed
the
jira-babel-5242
branch
from
December 12, 2024 23:39
e57e20d
to
7c14cab
Compare
Deepesh125
requested changes
Dec 16, 2024
Deepesh125
approved these changes
Dec 17, 2024
Deepesh125
merged commit Dec 17, 2024
ac51c42
into
babelfish-for-postgresql:BABEL_5_X_DEV__PG_17_X
2 checks passed
hopebo
added a commit
to amazon-aurora/postgresql_modified_for_babelfish
that referenced
this pull request
Dec 17, 2024
…ostgresql#487) Description ----------- When a base type such as `money` is UNIONed with another integer type, the result type will be `fixeddecimal` instead of `money`, which is inconsistent with SQL Server's behaviour. And could also cause some characters not displaying well. Analysis -------- The root cause of the issue is Postgres will consider the base type of domain type as the result type. In Babelfish, `money` is implemented as a domain type of `fixeddecimal`. Actually, `money` is a base type in T-SQL, thus Babelfish should retain `money` type after UNION. Fix --- After a final type has determined by the optimizer, check if it's a base type in T-SQL. If it is, try to use the domain type as result type if the domain type has higher precision than other types. Task: BABEL-5242 Signed-off-by: Bo Li <[email protected]>
1 task
hopebo
added a commit
to amazon-aurora/postgresql_modified_for_babelfish
that referenced
this pull request
Dec 17, 2024
…ostgresql#487) Description ----------- When a base type such as `money` is UNIONed with another integer type, the result type will be `fixeddecimal` instead of `money`, which is inconsistent with SQL Server's behaviour. And could also cause some characters not displaying well. Analysis -------- The root cause of the issue is Postgres will consider the base type of domain type as the result type. In Babelfish, `money` is implemented as a domain type of `fixeddecimal`. Actually, `money` is a base type in T-SQL, thus Babelfish should retain `money` type after UNION. Fix --- After a final type has determined by the optimizer, check if it's a base type in T-SQL. If it is, try to use the domain type as result type if the domain type has higher precision than other types. Task: BABEL-5242 Signed-off-by: Bo Li <[email protected]>
shardgupta
pushed a commit
that referenced
this pull request
Dec 19, 2024
Description ----------- When a base type such as `money` is UNIONed with another integer type, the result type will be `fixeddecimal` instead of `money`, which is inconsistent with SQL Server's behaviour. And could also cause some characters not displaying well. Analysis -------- The root cause of the issue is Postgres will consider the base type of domain type as the result type. In Babelfish, `money` is implemented as a domain type of `fixeddecimal`. Actually, `money` is a base type in T-SQL, thus Babelfish should retain `money` type after UNION. Fix --- After a final type has determined by the optimizer, check if it's a base type in T-SQL. If it is, try to use the domain type as result type if the domain type has higher precision than other types. Task: BABEL-5242 Signed-off-by: Bo Li <[email protected]>
shardgupta
pushed a commit
that referenced
this pull request
Dec 19, 2024
Description ----------- When a base type such as `money` is UNIONed with another integer type, the result type will be `fixeddecimal` instead of `money`, which is inconsistent with SQL Server's behaviour. And could also cause some characters not displaying well. Analysis -------- The root cause of the issue is Postgres will consider the base type of domain type as the result type. In Babelfish, `money` is implemented as a domain type of `fixeddecimal`. Actually, `money` is a base type in T-SQL, thus Babelfish should retain `money` type after UNION. Fix --- After a final type has determined by the optimizer, check if it's a base type in T-SQL. If it is, try to use the domain type as result type if the domain type has higher precision than other types. Task: BABEL-5242 Signed-off-by: Bo Li <[email protected]>
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
Description
When a base type such as
money
is UNIONed with another integer type, the result type will befixeddecimal
instead ofmoney
, which is inconsistent with SQL Server's behaviour. And could also cause some characters not displaying well due to inappropriate result type.Issues Resolved
The root cause of the issue is Postgres will consider the base type of domain type as the result type. In Babelfish,
money
is implemented as a domain type offixeddecimal
. Actually,money
is a base type in T-SQL, thus Babelfish should retainmoney
type after UNION.After a final type has determined by the optimizer, check if it's a base type in T-SQL. If it is, try to use the domain type as result type if the domain type has higher precision than other types.
BABEL-5242
Check List
By submitting this pull request, I confirm that my contribution is under the terms of the PostgreSQL license, and grant any person obtaining a copy of the contribution permission to relicense all or a portion of my contribution to the PostgreSQL License solely to contribute all or a portion of my contribution to the PostgreSQL open source project.
For more information on following Developer Certificate of Origin and signing off your commits, please check here.