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

Xuefu Zhang commented on HIVE-13963:
------------------------------------

Got it. Thanks for the explanation. Yeah, casting based on the input's max 
precision/scale is problematic as decimal(38, 38) applies practically no 
values. Using target type is one option. The other option is to use default 
decimal precision/scale which is (38, 18). Such default is assumed as the type 
for any decimal value that doesn't have precision/scale.

> vectorization - string arguments may be converted to decimal null
> -----------------------------------------------------------------
>
>                 Key: HIVE-13963
>                 URL: https://issues.apache.org/jira/browse/HIVE-13963
>             Project: Hive
>          Issue Type: Bug
>            Reporter: Sergey Shelukhin
>            Assignee: Matt McCline
>            Priority: Critical
>
> See HIVE-13957.
> The default precision and scale for the implicit decimal cast are max,max, ie 
> 38,38. Those don't do what the code may assume they do. All the values >=1 
> become invalid and precision-scale enforcement automatically converts them to 
> null.
> We need to 
> 1) Validate when this happens in/after the conversion code and bail;
> 2) Or, derive precision and scale from the constants themselves so they all 
> fit, instead;
> 3) Or, derive it from the type of whatever caused the conversion in the first 
> place (e.g. IN column decimal); however, this could be function-specific 
> (e.g. IN just needs equality, BETWEEN would need at least one extra digit, 
> arithmetic, if this ever happens, would need everything, etc.);
> 4) Something else? :)



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

Reply via email to