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

Xuefu Zhang commented on HIVE-15331:
------------------------------------

There are more than a couple of JIRAs on this topic. I think it can be argued 
both ways regarding which (int part vs dec part) to favor. As pointed by the 
blog post, user needs to quality the type matching the actually data. When not 
possible, use double/float instead.

What is missing in Hive is a mode in which error is thrown instead of null, but 
that's not decimal type specific.

> Decimal multiplication with high precision/scale often returns NULL
> -------------------------------------------------------------------
>
>                 Key: HIVE-15331
>                 URL: https://issues.apache.org/jira/browse/HIVE-15331
>             Project: Hive
>          Issue Type: Bug
>          Components: Types
>            Reporter: Jason Dere
>            Assignee: Jason Dere
>
> {noformat}
> create temporary table dec (a decimal(38,18));
> insert into dec values(100.0);
> hive> select a*a from dec;
> OK
> NULL
> Time taken: 0.165 seconds, Fetched: 1 row(s)
> {noformat}
> Looks like the reason is because the result of decimal(38,18) * 
> decimal(38,18) only has 2 digits of precision for integers:
> {noformat}
> hive> set hive.explain.user=false;
> hive> explain select a*a from dec;
> OK
> STAGE DEPENDENCIES:
>   Stage-0 is a root stage
> STAGE PLANS:
>   Stage: Stage-0
>     Fetch Operator
>       limit: -1
>       Processor Tree:
>         TableScan
>           alias: dec
>           Select Operator
>             expressions: (a * a) (type: decimal(38,36))
>             outputColumnNames: _col0
>             ListSink
> Time taken: 0.039 seconds, Fetched: 15 row(s)
> {noformat}



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to