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

Chaoyu Tang commented on HIVE-14281:
------------------------------------

Thanks [~sershe] for chiming in. I think the issue here might be sightly 
different from that in HIVE-13098. For the example in HIVE-13098, select 999999 
as decimal(5,0) should ideally throw out an exception since 999999 exceeds the 
decimal(5,0) data range. For the decimal multiplication, I think its result 
should be implicitly rounded up (or via a configuration?) as long as it is 
within the range supported by the specified decimal. Otherwise, the decimal use 
with multiplication will be dramatically limited because of the supported 
range. For the example in 
https://issues.apache.org/jira/browse/HIVE-14281?focusedCommentId=15384793&page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-15384793,
 the result data range is reduced to (-100, 100). Actually Hive cast also 
supports the round up in decimal, select cast(999.999 as decimal(5.0)) returns 
1000.

> Issue in decimal multiplication
> -------------------------------
>
>                 Key: HIVE-14281
>                 URL: https://issues.apache.org/jira/browse/HIVE-14281
>             Project: Hive
>          Issue Type: Bug
>          Components: Types
>            Reporter: Chaoyu Tang
>            Assignee: Chaoyu Tang
>
> {code}
> CREATE TABLE test (a DECIMAL(38,18), b DECIMAL(38,18));
> INSERT OVERWRITE TABLE test VALUES (20, 20);
> SELECT a*b from test
> {code}
> The returned result is NULL (instead of 400)
> It is because Hive adds the scales from operands and the type for a*b is set 
> to decimal (38, 36). Hive could not handle this case properly (e.g. by 
> rounding)



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

Reply via email to