[ https://issues.apache.org/jira/browse/HIVE-24223?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Ashish Sharma reassigned HIVE-24223: ------------------------------------ Assignee: Ashish Sharma > Insert into Hive tables doesn't work for decimal numbers with no preceding > digit before the decimal > --------------------------------------------------------------------------------------------------- > > Key: HIVE-24223 > URL: https://issues.apache.org/jira/browse/HIVE-24223 > Project: Hive > Issue Type: Bug > Affects Versions: All Versions > Reporter: Kriti Jha > Assignee: Ashish Sharma > Priority: Minor > > Any insert operation to a table in Hive with decimal integers without a digit > before the DOT ('.') fails with an exception as shown below: > ------------------------------------------------------------------ > hive> create table test_dec(id decimal(10,8)); > hive> insert into test_dec values (-.00005); > NoViableAltException(16@[412:1: atomExpression : ( constant | ( > intervalExpression )=> intervalExpression | castExpression | > extractExpression | floorExpression | caseExpression | whenExpression | ( > subQueryExpression )=> ( subQueryExpression ) -> ^( TOK_SUBQUERY_EXPR > TOK_SUBQUERY_OP subQueryExpression ) | ( functionName LPAREN )=> function | > tableOrColumn | expressionsInParenthesis[true] > );])NoViableAltException(16@[412:1: atomExpression : ( constant | ( > intervalExpression )=> intervalExpression | castExpression | > extractExpression | floorExpression | caseExpression | whenExpression | ( > subQueryExpression )=> ( subQueryExpression ) -> ^( TOK_SUBQUERY_EXPR > TOK_SUBQUERY_OP subQueryExpression ) | ( functionName LPAREN )=> function | > tableOrColumn | expressionsInParenthesis[true] );]) at > org.apache.hadoop.hive.ql.parse.HiveParser_IdentifiersParser$DFA36.specialStateTransition(HiveParser_IdentifiersParser.java:31810) > at org.antlr.runtime.DFA.predict(DFA.java:80) at > org.apache.hadoop.hive.ql.parse.HiveParser_IdentifiersParser.atomExpression(HiveParser_IdentifiersParser.java:6746) > at > org.apache.hadoop.hive.ql.parse.HiveParser_IdentifiersParser.precedenceFieldExpression(HiveParser_IdentifiersParser.java:6988) > at > org.apache.hadoop.hive.ql.parse.HiveParser_IdentifiersParser.precedenceUnaryPrefixExpression(HiveParser_IdentifiersParser.java:7324) > at > org.apache.hadoop.hive.ql.parse.HiveParser_IdentifiersParser.precedenceUnarySuffixExpression(HiveParser_IdentifiersParser.java:7380) > at > ... > > org.apache.hadoop.hive.ql.parse.HiveParser_IdentifiersParser.expression(HiveParser_IdentifiersParser.java:6686) > at > org.apache.hadoop.hive.ql.parse.HiveParser_IdentifiersParser.expressionsNotInParenthesis(HiveParser_IdentifiersParser.java:2287) > at > org.apache.hadoop.hive.ql.parse.HiveParser_IdentifiersParser.expressionsInParenthesis(HiveParser_IdentifiersParser.java:2233) > at > org.apache.hadoop.hive.ql.parse.HiveParser.expressionsInParenthesis(HiveParser.java:42106) > at > org.apache.hadoop.hive.ql.parse.HiveParser_FromClauseParser.valueRowConstructor(HiveParser_FromClauseParser.java:6499) > at > org.apache.hadoop.hive.ql.parse.HiveParser_FromClauseParser.valuesTableConstructor(HiveParser_FromClauseParser.java:6583) > at > org.apache.hadoop.hive.ql.parse.HiveParser_FromClauseParser.valuesClause(HiveParser_FromClauseParser.java:6704) > at > org.apache.hadoop.hive.ql.parse.HiveParser.valuesClause(HiveParser.java:41954) > at > org.apache.hadoop.hive.ql.parse.HiveParser.regularBody(HiveParser.java:36536) > at > org.apache.hadoop.hive.ql.parse.HiveParser.queryStatementExpressionBody(HiveParser.java:35822) > at > ... > org.apache.hadoop.util.RunJar.main(RunJar.java:153)FAILED: ParseException > line 1:30 cannot recognize input near '.' '00005' ')' in expression > specification > ------------------------------------------------------------------ > It seems to be coming from the Lexer where the types are defined and the > definition of 'Number' should be coming into play: > ---------------------- > Number : (Digit)+ ( DOT (Digit)* (Exponent)? | Exponent)? ; > ---------------------- > > >[https://github.com/apache/hive/blob/2006e52713508a92fb4d1d28262fd7175eade8b7/parser/src/java/org/apache/hadoop/hive/ql/parse/HiveLexerParent.g#L469] > However, the below works: > > insert into test_dec values ('-.00005'); > > insert into test_dec values (-0.00005); -- This message was sent by Atlassian Jira (v8.3.4#803005)