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

Kokila N updated HIVE-29570:
----------------------------
    Description: 
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}

> 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