[ 
https://issues.apache.org/jira/browse/IMPALA-7888?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Paul Rogers resolved IMPALA-7888.
---------------------------------
    Resolution: Fixed

> Incorrect NumericLiteral overflow checks for FLOAT, DOUBLE
> ----------------------------------------------------------
>
>                 Key: IMPALA-7888
>                 URL: https://issues.apache.org/jira/browse/IMPALA-7888
>             Project: IMPALA
>          Issue Type: Bug
>          Components: Frontend
>    Affects Versions: Impala 3.0
>            Reporter: Paul Rogers
>            Assignee: Paul Rogers
>            Priority: Minor
>
> Consider the following (new) unit test:
> {code:java}
>     assertFalse(NumericLiteral.isOverflow(BigDecimal.ZERO, Type.FLOAT));
> {code}
> This test fails (that is, the value zero, so the method claims, overflows a 
> FLOAT.)
> The reason is a misunderstanding of the meaning of {{MIN_VALUE}} for Float:
> {code:java}
>       case FLOAT:
>         return (value.compareTo(BigDecimal.valueOf(Float.MAX_VALUE)) > 0 ||
>             value.compareTo(BigDecimal.valueOf(Float.MIN_VALUE)) < 0);
> {code}
> For Float, {{MIN_VALUE}} is the smallest positive number that Float can 
> represent:
> {code:java}
>     public static final float MIN_VALUE = 0x0.000002P-126f; // 1.4e-45f
> {code}
> The value that the Impala code wants to check it {{- Float.MAX_VALUE}}.
> The only reason that this is not marked as more serious is that the method 
> appears to be used in only one place, and that place does not use {{FLOAT}} 
> values.



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to