GitHub user DaveBirdsall opened a pull request:
https://github.com/apache/incubator-trafodion/pull/1111
TRAFODION-2634 Change return type of FLOOR/CEIL to an integer type
Before this change, the Trafodion FLOOR/CEIL functions returned a floating-point data type. This is counter-intuitive since FLOOR/CEIL return an integer value. This makes it awkward to nest a FLOOR/CEIL call inside some other function (e.g. LEFT) which requires an integer data type.
Other DBMSs return an integer data type for FLOOR/CEIL.
Most of the work for this change is due to @nonstop-qfchen. I added a missing case in ExFunctionMath::eval.
You can merge this pull request into a Git repository by running:
$ git pull https://github.com/DaveBirdsall/incubator-trafodion Trafodion2634
Alternatively you can review and apply these changes as the patch at:
https://github.com/apache/incubator-trafodion/pull/1111.patch
To close this pull request, make a commit to your master/trunk branch
with (at least) the following in the commit message:
This closes #1111
ANSI SQL defines FLOOR and CEIL as returning integers. Most DBMSs use an integer data type as the return type for FLOOR and CEIL. Trafodion returns a floating point data type.
This can be problematic, as some functions (e.g. LEFT) require an integer argument. Yes, a user could use CAST in Trafodion to make the result of FLOOR and CEIL into an integer argument, but the point is that one doesn't have to do this elsewhere.