[ 
https://issues.apache.org/jira/browse/HIVE-29570?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Work on HIVE-29570 started by Kokila N.
---------------------------------------
> Fix Hive MERGE query parse failure when using backtick-quoted keyword column 
> names
> ----------------------------------------------------------------------------------
>
>                 Key: HIVE-29570
>                 URL: https://issues.apache.org/jira/browse/HIVE-29570
>             Project: Hive
>          Issue Type: Bug
>            Reporter: Kokila N
>            Assignee: Kokila N
>            Priority: Major
>
> Merge query fails with parse error when column name is of function name 
> (date) 
> *Query:*
> {code:java}
> create table acidTbl_kw(a int, `date` int) clustered by (a) into 2 buckets 
> stored as orc
>   TBLPROPERTIES ('transactional'='true');
> create table nonAcidOrcTbl_kw(a int, `date` int) clustered by (a) into 2 
> buckets stored as orc
>   TBLPROPERTIES ('transactional'='false');
> explain merge into acidTbl_kw as t using nonAcidOrcTbl_kw s ON t.`a` = s.`a`
> WHEN MATCHED THEN UPDATE SET `date` = s.`date`
> WHEN NOT MATCHED THEN INSERT VALUES(s.`a`, s.`date`);{code}
> *Error:*
> {code:java}
>  org.apache.hadoop.hive.ql.parse.SemanticException: Encountered parse error 
> while parsing rewritten merge/update or delete query                          
>                                                          
>         at 
> org.apache.hadoop.hive.ql.parse.ParseUtils.parseRewrittenQuery(ParseUtils.java:747)
>                                                                               
>                                        
>         at 
> org.apache.hadoop.hive.ql.parse.rewrite.MergeRewriter.rewrite(MergeRewriter.java:86)
>                                                                               
>                                       
>         at 
> org.apache.hadoop.hive.ql.parse.rewrite.MergeRewriter.rewrite(MergeRewriter.java:54)
>                                                                               
>                                       
>         at 
> org.apache.hadoop.hive.ql.parse.RewriteSemanticAnalyzer.rewriteAndAnalyze(RewriteSemanticAnalyzer.java:94)
>                                                                               
>                 
>         at 
> org.apache.hadoop.hive.ql.parse.MergeSemanticAnalyzer.analyze(MergeSemanticAnalyzer.java:207)
>                                                                               
>                              
>         at 
> org.apache.hadoop.hive.ql.parse.RewriteSemanticAnalyzer.analyze(RewriteSemanticAnalyzer.java:85)
>                                                                               
>                           
>         at 
> org.apache.hadoop.hive.ql.parse.RewriteSemanticAnalyzer.analyzeInternal(RewriteSemanticAnalyzer.java:73)
>                                                                               
>                   
>         at 
> org.apache.hadoop.hive.ql.parse.BaseSemanticAnalyzer.analyze(BaseSemanticAnalyzer.java:358)
>                                                                               
>                                
>         at 
> org.apache.hadoop.hive.ql.parse.ExplainSemanticAnalyzer.analyzeInternal(ExplainSemanticAnalyzer.java:187)
>                                                                               
>                  
>         at 
> org.apache.hadoop.hive.ql.parse.BaseSemanticAnalyzer.analyze(BaseSemanticAnalyzer.java:358)
>                                                                               
>                                
> ....
>                                                                               
>                                                
> Caused by: org.apache.hadoop.hive.ql.parse.ParseException: line 11:22 cannot 
> recognize input near 's' '.' 'date' in selection target                       
>                                                         
>         at 
> org.apache.hadoop.hive.ql.parse.ParseDriver.parse(ParseDriver.java:125)       
>                                                                               
>                                             
>         at 
> org.apache.hadoop.hive.ql.parse.ParseUtils.parse(ParseUtils.java:101)         
>                                                                               
>                                             
>         at 
> org.apache.hadoop.hive.ql.parse.ParseUtils.parse(ParseUtils.java:93)          
>                                                                               
>                                             
>         at 
> org.apache.hadoop.hive.ql.parse.ParseUtils.parseRewrittenQuery(ParseUtils.java:745)
>                                                                               
>                                        
>         ... 64 more                                                           
>                                                                               
>                                                        
> Caused by: NoViableAltException(99@[80:1: selectItem : ( ( tableAllColumns 
> )=> tableAllColumns -> ^( TOK_SELEXPR tableAllColumns ) | ( expression ( ( ( 
> KW_AS )? identifier ) | ( KW_AS LPAREN identifier ( COMMA identifier )* 
> RPAREN ) )? ) -> ^( TOK_SELEXPR expression ( identifier )* ) );])             
>                                                                               
>                                           
>         at 
> org.apache.hadoop.hive.ql.parse.HiveParser_SelectClauseParser$DFA13.specialStateTransition(HiveParser_SelectClauseParser.java:5211)
>                                                                      
>         at org.antlr.runtime.DFA.predict(DFA.java:80)                         
>                                                                               
>                                                        
>         at 
> org.apache.hadoop.hive.ql.parse.HiveParser_SelectClauseParser.selectItem(HiveParser_SelectClauseParser.java:1835)
>                                                                               
>          
>         at 
> org.apache.hadoop.hive.ql.parse.HiveParser_SelectClauseParser.selectList(HiveParser_SelectClauseParser.java:1396)
>                                                                               
>          
>         at 
> org.apache.hadoop.hive.ql.parse.HiveParser_SelectClauseParser.selectClause(HiveParser_SelectClauseParser.java:1166)
>                                                                               
>        
>         at 
> org.apache.hadoop.hive.ql.parse.HiveParser.selectClause(HiveParser.java:43926)
>                                                                               
>                                             
>         at 
> org.apache.hadoop.hive.ql.parse.HiveParser.body(HiveParser.java:38957)        
>                                                                               
>                                             
>         at 
> org.apache.hadoop.hive.ql.parse.HiveParser.singleFromStatement(HiveParser.java:37559)
>                                                                               
>                                      
>         at 
> org.apache.hadoop.hive.ql.parse.HiveParser.fromStatement(HiveParser.java:37317)
>                                                                               
>                                            
>         at 
> org.apache.hadoop.hive.ql.parse.HiveParser.queryStatementExpressionBody(HiveParser.java:36974)
>                                                                               
>                             
>         at 
> org.apache.hadoop.hive.ql.parse.HiveParser.queryStatementExpression(HiveParser.java:36876)
>                                                                               
>                                 
>         at 
> org.apache.hadoop.hive.ql.parse.HiveParser.execStatement(HiveParser.java:2787)
>                                                                               
>                                             
>         at 
> org.apache.hadoop.hive.ql.parse.HiveParser.statement(HiveParser.java:1666)    
>                                                                               
>                                             
>         at 
> org.apache.hadoop.hive.ql.parse.ParseDriver.parse(ParseDriver.java:123)       
>                                                                               
>                                             
>         ... 67 more   {code}



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to