[ 
https://issues.apache.org/jira/browse/CALCITE-5766?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17730308#comment-17730308
 ] 

Julian Hyde commented on CALCITE-5766:
--------------------------------------

I think there are a lot of scenarios where multiply can overflow, especially 
when we are dealing with floating point numbers. We have several data types 
(TINYINT, INTEGER, SMALLINT, BIGINT, REAL, DOUBLE, DECIMAL) and the floating 
point types have special values like -inf, inf, NaN, -0. Therefore I would 
expect there to be dozens of tests for this.

I'm not convinced that your simple check for overflow works. As I said in an 
earlier PR comment, I would be inclined to use special functions in 
{{java.math.Math}}. I could be convinced of your approach if there are lots of 
tests.

Maybe you can search for a set of corner cases that test overflow for integers 
and FP types?

> Implement SAFE_NEGATE function (enabled for BigQuery)
> -----------------------------------------------------
>
>                 Key: CALCITE-5766
>                 URL: https://issues.apache.org/jira/browse/CALCITE-5766
>             Project: Calcite
>          Issue Type: Sub-task
>            Reporter: Tanner Clary
>            Assignee: Tanner Clary
>            Priority: Major
>              Labels: pull-request-available
>
> Add support for SAFE_NEGATE in BigQuery.
> SAFE_NEGATE: Equivalent to the unary minus operator (-), but returns NULL if 
> overflow occurs.
> Example #1: {{SELECT SAFE_NEGATE(3)}} would return {{-3}}.
> Example #2: {{SELECT SAFE_NEGATE(-9223372036854775808)}} would return 
> {{NULL}} because of overflow.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to