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