[
https://issues.apache.org/jira/browse/HIVE-29634?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=18084173#comment-18084173
]
Thomas Rebele commented on HIVE-29634:
--------------------------------------
My guess after a round of debugging:
The [line in
org.apache.hadoop.hive.ql.parse.SemanticAnalyzer#parseJoinCondPopulateAlias|https://github.com/apache/hive/blob/098970316c008bc9c41f813374a216af4817d00b/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java#L3077]
{code:java}
if (rightAliases.size() > rhssize) { // the new table is rhs table
{code}
expects that a new alias for the RHS has been added; however, the alias has
already been added when handling the field access to c2. Therefore the right
alias will stay null and addRHSSemijoinColumns will not be called. The column
is then not part of the GBY subplan, and the exception occurs later when the
expressions that represent the parts of the join key are generated.
> SemanticException "Invalid column reference" for query with LEFT OUTER JOIN
> and CONCAT
> --------------------------------------------------------------------------------------
>
> Key: HIVE-29634
> URL: https://issues.apache.org/jira/browse/HIVE-29634
> Project: Hive
> Issue Type: Bug
> Affects Versions: 4.3.0
> Reporter: Thomas Rebele
> Priority: Major
>
> The following query fails with an exception (latest master,
> 098970316c008bc9c41f813374a216af4817d00b):
> {code:java}
> CREATE TABLE tab (c1 STRING, c2 STRING, c3 STRING);
> SELECT t1.* FROM tab t1 LEFT OUTER JOIN tab t2
> ON t1.c1 == t2.c1
> AND CONCAT ( t1.c2 , 'a') = CONCAT ( t2.c2 , t2.c3 )
> WHERE t2.c1 IS NULL;{code}
> The exception:
> {code:java}
> org.apache.hadoop.hive.ql.parse.SemanticException: Line 0:-1 Invalid column
> reference 'c3'
> at
> org.apache.hadoop.hive.ql.parse.SemanticAnalyzer.genAllExprNodeDesc(SemanticAnalyzer.java:13667)
> at
> org.apache.hadoop.hive.ql.parse.SemanticAnalyzer.genExprNodeDesc(SemanticAnalyzer.java:13609)
> at
> org.apache.hadoop.hive.ql.parse.SemanticAnalyzer.genExprNodeDesc(SemanticAnalyzer.java:13577)
> at
> org.apache.hadoop.hive.ql.parse.SemanticAnalyzer.genJoinKeys(SemanticAnalyzer.java:9829)
> at
> org.apache.hadoop.hive.ql.parse.SemanticAnalyzer.genJoinOperator(SemanticAnalyzer.java:10036)
> at
> org.apache.hadoop.hive.ql.parse.SemanticAnalyzer.genJoinOperator(SemanticAnalyzer.java:9980)
> at
> org.apache.hadoop.hive.ql.parse.SemanticAnalyzer.genJoinPlan(SemanticAnalyzer.java:10262)
> at
> org.apache.hadoop.hive.ql.parse.SemanticAnalyzer.genPlan(SemanticAnalyzer.java:12480)
> at
> org.apache.hadoop.hive.ql.parse.SemanticAnalyzer.genPlan(SemanticAnalyzer.java:12356)
> at
> org.apache.hadoop.hive.ql.parse.CalcitePlanner.genOPTree(CalcitePlanner.java:638)
> at
> org.apache.hadoop.hive.ql.parse.SemanticAnalyzer.analyzeInternal(SemanticAnalyzer.java:13225)
> at
> org.apache.hadoop.hive.ql.parse.CalcitePlanner.analyzeInternal(CalcitePlanner.java:476)
> at
> org.apache.hadoop.hive.ql.parse.BaseSemanticAnalyzer.analyze(BaseSemanticAnalyzer.java:359)
> at org.apache.hadoop.hive.ql.Compiler.analyze(Compiler.java:224)
> at org.apache.hadoop.hive.ql.Compiler.compile(Compiler.java:109)
> at org.apache.hadoop.hive.ql.Driver.compile(Driver.java:499)
> at org.apache.hadoop.hive.ql.Driver.compileInternal(Driver.java:451)
> at org.apache.hadoop.hive.ql.Driver.compileAndRespond(Driver.java:415)
> at org.apache.hadoop.hive.ql.Driver.compileAndRespond(Driver.java:409)
> at
> org.apache.hadoop.hive.ql.reexec.ReExecDriver.compileAndRespond(ReExecDriver.java:126)
> at
> org.apache.hadoop.hive.ql.reexec.ReExecDriver.run(ReExecDriver.java:234)
> at
> org.apache.hadoop.hive.cli.CliDriver.processLocalCmd(CliDriver.java:259)
> at org.apache.hadoop.hive.cli.CliDriver.processCmd1(CliDriver.java:203)
> at org.apache.hadoop.hive.cli.CliDriver.processCmd(CliDriver.java:129)
> at org.apache.hadoop.hive.cli.CliDriver.processLine(CliDriver.java:430)
> at org.apache.hadoop.hive.cli.CliDriver.processLine(CliDriver.java:358)
> at
> org.apache.hadoop.hive.ql.QTestUtil.executeClientInternal(QTestUtil.java:790)
> at org.apache.hadoop.hive.ql.QTestUtil.executeClient(QTestUtil.java:760)
> at
> org.apache.hadoop.hive.cli.control.CoreCliDriver.runTest(CoreCliDriver.java:115)
> at
> org.apache.hadoop.hive.cli.control.CliAdapter.runTest(CliAdapter.java:139)
> at
> org.apache.hadoop.hive.cli.TestMiniLlapLocalCliDriver.testCliDriver(TestMiniLlapLocalCliDriver.java:62){code}
--
This message was sent by Atlassian Jira
(v8.20.10#820010)