You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@hive.apache.org by "xialu (Jira)" <ji...@apache.org> on 2019/10/14 08:59:00 UTC

[jira] [Created] (HIVE-22335) CBO throws Invalid column reference exception

xialu created HIVE-22335:
----------------------------

             Summary: CBO throws Invalid column reference exception
                 Key: HIVE-22335
                 URL: https://issues.apache.org/jira/browse/HIVE-22335
             Project: Hive
          Issue Type: Bug
    Affects Versions: 2.1.1
            Reporter: xialu
            Assignee: Pengcheng Xiong


issues:

create table temp_test_bug as
select X.d_current_month from
(
select d_current_month, count(distinct d_date_sk) as num
from date_dim group by d_current_month
) X
where X.num > 0;

 

thows:

Caused by: org.apache.hadoop.hive.ql.parse.SemanticException: Line 0:-1 Invalid column reference 'd_date_sk'
 at org.apache.hadoop.hive.ql.parse.SemanticAnalyzer.genGroupByPlanGroupByOperator1(SemanticAnalyzer.java:4867) ~[hive-exec-2.1.1.jar:2.1.1]
 at org.apache.hadoop.hive.ql.parse.SemanticAnalyzer.genGroupByPlanMapAggrNoSkew(SemanticAnalyzer.java:6158) ~[hive-exec-2.1.1.jar:2.1.1]
 at org.apache.hadoop.hive.ql.parse.SemanticAnalyzer.genBodyPlan(SemanticAnalyzer.java:9388) ~[hive-exec-2.1.1.jar:2.1.1]
 at org.apache.hadoop.hive.ql.parse.SemanticAnalyzer.genPlan(SemanticAnalyzer.java:10287) ~[hive-exec-2.1.1.jar:2.1.1]
 at org.apache.hadoop.hive.ql.parse.SemanticAnalyzer.genPlan(SemanticAnalyzer.java:10165) ~[hive-exec-2.1.1.jar:2.1.1]
 at org.apache.hadoop.hive.ql.parse.SemanticAnalyzer.genOPTree(SemanticAnalyzer.java:10838) ~[hive-exec-2.1.1.jar:2.1.1]
 at org.apache.hadoop.hive.ql.parse.CalcitePlanner.genOPTree(CalcitePlanner.java:369) ~[hive-exec-2.1.1.jar:2.1.1]
 at org.apache.hadoop.hive.ql.parse.SemanticAnalyzer.analyzeInternal(SemanticAnalyzer.java:10849) ~[hive-exec-2.1.1.jar:2.1.1]
 at org.apache.hadoop.hive.ql.parse.CalcitePlanner.analyzeInternal(CalcitePlanner.java:244) ~[hive-exec-2.1.1.jar:2.1.1]
 at org.apache.hadoop.hive.ql.parse.BaseSemanticAnalyzer.analyze(BaseSemanticAnalyzer.java:250) ~[hive-exec-2.1.1.jar:2.1.1]

 

analyze:

for (int i = 1; i < value.getChildCount(); i++) {
 ASTNode paraExpr = (ASTNode) value.getChild(i);
 ColumnInfo paraExprInfo =
 *{color:#FF0000}groupByInputRowResolver.getExpression(paraExpr);{color}*
 if (paraExprInfo == null) {
 throw new SemanticException(ErrorMsg.INVALID_COLUMN
 .getMsg(paraExpr));
 }

 

but when we put elements to groupByInputRowResolver, we put parent of paraExpr, code below

for (Map.Entry<String, ASTNode> entry : aggregationTrees.entrySet()) {
 ASTNode value = entry.getValue();
 String aggName = unescapeIdentifier(value.getChild(0).getText());
 ArrayList<ExprNodeDesc> aggParameters = new ArrayList<ExprNodeDesc>();
 // 0 is the function name
 for (int i = 1; i < value.getChildCount(); i++) {
 ASTNode paraExpr = (ASTNode) value.getChild(i);
 ExprNodeDesc paraExprNode = genExprNodeDesc(paraExpr,
 groupByInputRowResolver);

aggParameters.add(paraExprNode);
 }

boolean isDistinct = value.getType() == HiveParser.TOK_FUNCTIONDI;
 containsDistinctAggr = containsDistinctAggr || isDistinct;
 boolean isAllColumns = value.getType() == HiveParser.TOK_FUNCTIONSTAR;
 Mode amode = groupByDescModeToUDAFMode(mode, isDistinct);

GenericUDAFEvaluator genericUDAFEvaluator = getGenericUDAFEvaluator(
 aggName, aggParameters, value, isDistinct, isAllColumns);
 assert (genericUDAFEvaluator != null);
 GenericUDAFInfo udaf = getGenericUDAFInfo(genericUDAFEvaluator, amode,
 aggParameters);
 aggregations.add(new AggregationDesc(aggName.toLowerCase(),
 udaf.genericUDAFEvaluator, udaf.convertedParameters, isDistinct,
 amode));
 String field = getColumnInternalName(groupByKeys.size()
 + aggregations.size() - 1);
 outputColumnNames.add(field);
 if (groupByOutputRowResolver.getExpression(value) == null) {
 *{color:#FF0000}groupByOutputRowResolver.putExpression{color}*(value, new ColumnInfo(
 field, udaf.returnType, "", false));
 }



--
This message was sent by Atlassian Jira
(v8.3.4#803005)