[ 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)