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 *