You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hive.apache.org by ha...@apache.org on 2014/09/06 22:11:33 UTC
svn commit: r1622924 - in /hive/branches/cbo/ql/src:
java/org/apache/hadoop/hive/ql/optimizer/optiq/translator/
test/results/clientpositive/
Author: hashutosh
Date: Sat Sep 6 20:11:33 2014
New Revision: 1622924
URL: http://svn.apache.org/r1622924
Log:
HIVE-8010 : [CBO] Handle nested types (Ashutosh Chauhan)
Modified:
hive/branches/cbo/ql/src/java/org/apache/hadoop/hive/ql/optimizer/optiq/translator/ASTConverter.java
hive/branches/cbo/ql/src/java/org/apache/hadoop/hive/ql/optimizer/optiq/translator/RexNodeConverter.java
hive/branches/cbo/ql/src/test/results/clientpositive/cbo_correctness.q.out
Modified: hive/branches/cbo/ql/src/java/org/apache/hadoop/hive/ql/optimizer/optiq/translator/ASTConverter.java
URL: http://svn.apache.org/viewvc/hive/branches/cbo/ql/src/java/org/apache/hadoop/hive/ql/optimizer/optiq/translator/ASTConverter.java?rev=1622924&r1=1622923&r2=1622924&view=diff
==============================================================================
--- hive/branches/cbo/ql/src/java/org/apache/hadoop/hive/ql/optimizer/optiq/translator/ASTConverter.java (original)
+++ hive/branches/cbo/ql/src/java/org/apache/hadoop/hive/ql/optimizer/optiq/translator/ASTConverter.java Sat Sep 6 20:11:33 2014
@@ -27,6 +27,7 @@ import org.eigenbase.rel.UnionRelBase;
import org.eigenbase.rel.rules.SemiJoinRel;
import org.eigenbase.reltype.RelDataTypeField;
import org.eigenbase.rex.RexCall;
+import org.eigenbase.rex.RexFieldAccess;
import org.eigenbase.rex.RexFieldCollation;
import org.eigenbase.rex.RexInputRef;
import org.eigenbase.rex.RexLiteral;
@@ -272,6 +273,13 @@ public class ASTConverter {
}
@Override
+ public ASTNode visitFieldAccess(RexFieldAccess fieldAccess) {
+ return ASTBuilder
+ .construct(HiveParser.DOT, ".")
+ .add(super.visitFieldAccess(fieldAccess)).add(HiveParser.Identifier, fieldAccess.getField().getName()).node();
+ }
+
+ @Override
public ASTNode visitInputRef(RexInputRef inputRef) {
ColumnInfo cI = schema.get(inputRef.getIndex());
if (cI.agg != null) {
@@ -495,7 +503,7 @@ public class ASTConverter {
* 1. ProjectRel will always be child of SortRel.<br>
* 2. In Optiq every projection in ProjectRelBase is uniquely named
* (unambigous) without using table qualifier (table name).<br>
- *
+ *
* @param order
* Hive Sort Rel Node
* @return Schema
Modified: hive/branches/cbo/ql/src/java/org/apache/hadoop/hive/ql/optimizer/optiq/translator/RexNodeConverter.java
URL: http://svn.apache.org/viewvc/hive/branches/cbo/ql/src/java/org/apache/hadoop/hive/ql/optimizer/optiq/translator/RexNodeConverter.java?rev=1622924&r1=1622923&r2=1622924&view=diff
==============================================================================
--- hive/branches/cbo/ql/src/java/org/apache/hadoop/hive/ql/optimizer/optiq/translator/RexNodeConverter.java (original)
+++ hive/branches/cbo/ql/src/java/org/apache/hadoop/hive/ql/optimizer/optiq/translator/RexNodeConverter.java Sat Sep 6 20:11:33 2014
@@ -21,6 +21,7 @@ import org.apache.hadoop.hive.ql.parse.S
import org.apache.hadoop.hive.ql.plan.ExprNodeColumnDesc;
import org.apache.hadoop.hive.ql.plan.ExprNodeConstantDesc;
import org.apache.hadoop.hive.ql.plan.ExprNodeDesc;
+import org.apache.hadoop.hive.ql.plan.ExprNodeFieldDesc;
import org.apache.hadoop.hive.ql.plan.ExprNodeGenericFuncDesc;
import org.apache.hadoop.hive.ql.plan.ExprNodeNullDesc;
import org.apache.hadoop.hive.ql.udf.generic.GenericUDF;
@@ -101,10 +102,17 @@ public class RexNodeConverter {
return convert((ExprNodeConstantDesc) expr);
} else if (expr instanceof ExprNodeColumnDesc) {
return convert((ExprNodeColumnDesc) expr);
+ } else if (expr instanceof ExprNodeFieldDesc) {
+ return convert((ExprNodeFieldDesc) expr);
} else {
throw new RuntimeException("Unsupported Expression");
}
- // TODO: handle a) ExprNodeFieldDesc b) ExprNodeColumnListDesc
+ // TODO: handle ExprNodeColumnListDesc
+ }
+
+ private RexNode convert(final ExprNodeFieldDesc fieldDesc) throws SemanticException {
+ return m_cluster.getRexBuilder().makeFieldAccess(convert(fieldDesc.getDesc()),
+ fieldDesc.getFieldName(), true);
}
private RexNode convert(final ExprNodeGenericFuncDesc func) throws SemanticException {
Modified: hive/branches/cbo/ql/src/test/results/clientpositive/cbo_correctness.q.out
URL: http://svn.apache.org/viewvc/hive/branches/cbo/ql/src/test/results/clientpositive/cbo_correctness.q.out?rev=1622924&r1=1622923&r2=1622924&view=diff
==============================================================================
--- hive/branches/cbo/ql/src/test/results/clientpositive/cbo_correctness.q.out (original)
+++ hive/branches/cbo/ql/src/test/results/clientpositive/cbo_correctness.q.out Sat Sep 6 20:11:33 2014
@@ -18494,8 +18494,8 @@ having b.p_mfgr not in
POSTHOOK: type: QUERY
POSTHOOK: Input: default@part
#### A masked pattern was here ####
-Manufacturer#1 1173.15
Manufacturer#2 1690.68
+Manufacturer#1 1173.15
PREHOOK: query: -- 17. SubQueries In
-- non agg, non corr
select *