Fix sqlancer#1209: UNARY_PLUS operator now converts values to DOUBLE PRECISION #1220
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
This PR addresses an issue where the UNARY_PLUS operator (+) wasn't properly handling type promotion. In SQL (including Materialize/PostgreSQL), applying the unary + operator on a numeric value should promote it to DOUBLE PRECISION. The previous implementation simply returned the input value without performing any conversion, which could lead to mismatches in expected vs. actual results during testing.
Changes
Changed UNARY_PLUS operator's return type from INT to FLOAT (double precision). Implemented proper conversion of values to double precision. Added handling for different input types (int, boolean, string, float). Added missing asDouble() method to FloatConstant class. Added comprehensive test cases to verify the proper behavior
Testing
Added a tests file
TestMaterializeUnaryPlus.java
to verify the changes made.Closes #1209