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

Vuk Ercegovac commented on IMPALA-7793:
---------------------------------------

Is the issue here specific to decimal v1 or does the same issue come up with 
decimal v2 as well? Just clarifying the "set decimal_v2=false;" in the original 
setup.

> CASE statement does not handle NULL from UDF overflow
> -----------------------------------------------------
>
>                 Key: IMPALA-7793
>                 URL: https://issues.apache.org/jira/browse/IMPALA-7793
>             Project: IMPALA
>          Issue Type: Bug
>          Components: Backend
>    Affects Versions: Impala 3.0
>            Reporter: Paul Rogers
>            Priority: Major
>
> The test suite {{QueryTest/decimal-exprs}} contains the following test:
> {code:sql}
> set decimal_v2=false;
> set ENABLE_EXPR_REWRITES=false;
> select coalesce(1.8, cast(0 as decimal(38,38)))
> {code}
> Which produces this result:
> {noformat}
> +------------------------------------------+
> | coalesce(1.8, cast(0 as decimal(38,38))) |
> +------------------------------------------+
> | 0.00000000000000000000000000000000000000 |
> +------------------------------------------+
> WARNINGS: UDF WARNING: Decimal expression overflowed, returning NULL
> {noformat}
> Notice that the "1.8" overflowed when being put into a {{DECIMAL(38,38)}} 
> type. (The precision and range are both 38, meaning all digits are after the 
> decimal point.)
> The {{coalesce()}} function caught the overflow, treated it as a {{NULL}}, 
> and selected the second value from the list, which is 0.
> Very good. Now, try the equivalent CASE form (from MPALA-7655):
> {noformat}
> select CASE WHEN 1.8 IS NOT NULL THEN 1.8 ELSE cast(0 as decimal(38,38)) END;
> +-----------------------------------------------------------------------+
> | case when 1.8 is not null then 1.8 else cast(0 as decimal(38,38)) end |
> +-----------------------------------------------------------------------+
> | NULL                                                                  |
> +-----------------------------------------------------------------------+
> WARNINGS: UDF WARNING: Decimal expression overflowed, returning NULL
> {noformat}
> Apparently, the overflow somehow caused the {{ELSE}} clause to not fire.
> This one is likely a bug in the BE code generation. Though, tried the 
> {{CASE}} query with a variety of options:
> {noformat}
> set disable_codegen=true;
> and
> set disable_codegen=false;
> set disable_codegen_rows_threshold=0;
> and
> set disable_codegen_rows_threshold=10;
> {noformat}
> In all cases, the {{CASE}} produced the wrong result. Also tried wrapping the 
> expression {{1.8 IS NOT NULL}} in a variety of forms: {{IS TRUE}}, {{IS NOT 
> FALSE}}. None of this worked correctly.
> The result of this bug is the the above-mentioned test case fails in a build 
> that contains MPALA-7655.



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

---------------------------------------------------------------------
To unsubscribe, e-mail: issues-all-unsubscr...@impala.apache.org
For additional commands, e-mail: issues-all-h...@impala.apache.org

Reply via email to