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/04 02:00:52 UTC

svn commit: r1622380 - in /hive/branches/cbo/ql/src/java/org/apache/hadoop/hive/ql: optimizer/optiq/ optimizer/optiq/reloperators/ optimizer/optiq/rules/ parse/

Author: hashutosh
Date: Thu Sep  4 00:00:51 2014
New Revision: 1622380

URL: http://svn.apache.org/r1622380
Log:
HIVE-7969 : Use Optiq's native FieldTrimmer instead of HiveRelFieldTrimmer (Ashutosh Chauhan via John Pullokkaran)

Removed:
    hive/branches/cbo/ql/src/java/org/apache/hadoop/hive/ql/optimizer/optiq/rules/HiveRelFieldTrimmer.java
Modified:
    hive/branches/cbo/ql/src/java/org/apache/hadoop/hive/ql/optimizer/optiq/HiveOptiqUtil.java
    hive/branches/cbo/ql/src/java/org/apache/hadoop/hive/ql/optimizer/optiq/TraitsUtil.java
    hive/branches/cbo/ql/src/java/org/apache/hadoop/hive/ql/optimizer/optiq/reloperators/HiveAggregateRel.java
    hive/branches/cbo/ql/src/java/org/apache/hadoop/hive/ql/optimizer/optiq/reloperators/HiveJoinRel.java
    hive/branches/cbo/ql/src/java/org/apache/hadoop/hive/ql/optimizer/optiq/reloperators/HiveProjectRel.java
    hive/branches/cbo/ql/src/java/org/apache/hadoop/hive/ql/optimizer/optiq/reloperators/HiveSortRel.java
    hive/branches/cbo/ql/src/java/org/apache/hadoop/hive/ql/optimizer/optiq/reloperators/HiveUnionRel.java
    hive/branches/cbo/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java

Modified: hive/branches/cbo/ql/src/java/org/apache/hadoop/hive/ql/optimizer/optiq/HiveOptiqUtil.java
URL: http://svn.apache.org/viewvc/hive/branches/cbo/ql/src/java/org/apache/hadoop/hive/ql/optimizer/optiq/HiveOptiqUtil.java?rev=1622380&r1=1622379&r2=1622380&view=diff
==============================================================================
--- hive/branches/cbo/ql/src/java/org/apache/hadoop/hive/ql/optimizer/optiq/HiveOptiqUtil.java (original)
+++ hive/branches/cbo/ql/src/java/org/apache/hadoop/hive/ql/optimizer/optiq/HiveOptiqUtil.java Thu Sep  4 00:00:51 2014
@@ -6,7 +6,6 @@ import java.util.List;
 
 import org.eigenbase.rel.RelFactories.ProjectFactory;
 import org.eigenbase.rel.RelNode;
-import org.eigenbase.reltype.RelDataType;
 import org.eigenbase.reltype.RelDataTypeField;
 import org.eigenbase.rex.RexBuilder;
 import org.eigenbase.rex.RexInputRef;
@@ -27,12 +26,12 @@ public class HiveOptiqUtil {
   /**
    * Get list of virtual columns from the given list of projections.
    * <p>
-   * 
+   *
    * @param exps
    *          list of rex nodes representing projections
    * @return List of Virtual Columns, will not be null.
    */
-  public static List<Integer> getVirtualCols(List<RexNode> exps) {
+  public static List<Integer> getVirtualCols(List<? extends RexNode> exps) {
     List<Integer> vCols = new ArrayList<Integer>();
 
     for (int i = 0; i < exps.size(); i++) {
@@ -47,6 +46,7 @@ public class HiveOptiqUtil {
   public static List<RexNode> getProjsFromBelowAsInputRef(final RelNode rel) {
     List<RexNode> projectList = Lists.transform(rel.getRowType().getFieldList(),
         new Function<RelDataTypeField, RexNode>() {
+          @Override
           public RexNode apply(RelDataTypeField field) {
             return rel.getCluster().getRexBuilder().makeInputRef(field.getType(), field.getIndex());
           }
@@ -73,7 +73,7 @@ public class HiveOptiqUtil {
   /**
    * Push any equi join conditions that are not column references as Projections
    * on top of the children.
-   * 
+   *
    * @param factory
    *          Project factory to use.
    * @param inputRels

Modified: hive/branches/cbo/ql/src/java/org/apache/hadoop/hive/ql/optimizer/optiq/TraitsUtil.java
URL: http://svn.apache.org/viewvc/hive/branches/cbo/ql/src/java/org/apache/hadoop/hive/ql/optimizer/optiq/TraitsUtil.java?rev=1622380&r1=1622379&r2=1622380&view=diff
==============================================================================
--- hive/branches/cbo/ql/src/java/org/apache/hadoop/hive/ql/optimizer/optiq/TraitsUtil.java (original)
+++ hive/branches/cbo/ql/src/java/org/apache/hadoop/hive/ql/optimizer/optiq/TraitsUtil.java Thu Sep  4 00:00:51 2014
@@ -10,12 +10,10 @@ import org.eigenbase.rel.RelNode;
 import org.eigenbase.relopt.RelOptCluster;
 import org.eigenbase.relopt.RelTraitSet;
 import org.eigenbase.reltype.RelDataType;
-import org.eigenbase.rex.RexNode;
 
 public class TraitsUtil {
 
-  public static RelTraitSet getSelectTraitSet(RelOptCluster cluster, List<RexNode> exps,
-      RelNode child) {
+  public static RelTraitSet getSelectTraitSet(RelOptCluster cluster, RelNode child) {
     return cluster.traitSetOf(HiveRel.CONVENTION, RelCollationImpl.EMPTY);
   }
 

Modified: hive/branches/cbo/ql/src/java/org/apache/hadoop/hive/ql/optimizer/optiq/reloperators/HiveAggregateRel.java
URL: http://svn.apache.org/viewvc/hive/branches/cbo/ql/src/java/org/apache/hadoop/hive/ql/optimizer/optiq/reloperators/HiveAggregateRel.java?rev=1622380&r1=1622379&r2=1622380&view=diff
==============================================================================
--- hive/branches/cbo/ql/src/java/org/apache/hadoop/hive/ql/optimizer/optiq/reloperators/HiveAggregateRel.java (original)
+++ hive/branches/cbo/ql/src/java/org/apache/hadoop/hive/ql/optimizer/optiq/reloperators/HiveAggregateRel.java Thu Sep  4 00:00:51 2014
@@ -10,6 +10,7 @@ import org.apache.hadoop.hive.ql.optimiz
 import org.eigenbase.rel.AggregateCall;
 import org.eigenbase.rel.AggregateRelBase;
 import org.eigenbase.rel.InvalidRelException;
+import org.eigenbase.rel.RelFactories.AggregateFactory;
 import org.eigenbase.rel.RelNode;
 import org.eigenbase.rel.metadata.RelMetadataQuery;
 import org.eigenbase.relopt.RelOptCluster;
@@ -19,12 +20,15 @@ import org.eigenbase.relopt.RelTraitSet;
 
 public class HiveAggregateRel extends AggregateRelBase implements HiveRel {
 
+  public static final HiveAggRelFactory HIVE_AGGR_REL_FACTORY = new HiveAggRelFactory();
+
   public HiveAggregateRel(RelOptCluster cluster, RelTraitSet traitSet, RelNode child,
       BitSet groupSet, List<AggregateCall> aggCalls) throws InvalidRelException {
     super(cluster, TraitsUtil.getAggregateTraitSet(cluster, traitSet, BitSets.toList(groupSet),
         aggCalls, child), child, groupSet, aggCalls);
   }
 
+  @Override
   public AggregateRelBase copy(RelTraitSet traitSet, RelNode input, BitSet groupSet,
       List<AggregateCall> aggCalls) {
     try {
@@ -36,6 +40,7 @@ public class HiveAggregateRel extends Ag
     }
   }
 
+  @Override
   public void implement(Implementor implementor) {
   }
 
@@ -49,4 +54,17 @@ public class HiveAggregateRel extends Ag
     return RelMetadataQuery.getDistinctRowCount(this, groupSet, getCluster().getRexBuilder()
         .makeLiteral(true));
   }
+
+  private static class HiveAggRelFactory implements AggregateFactory {
+
+    @Override
+    public RelNode createAggregate(RelNode child, BitSet groupSet,
+        List<AggregateCall> aggCalls) {
+      try {
+        return new HiveAggregateRel(child.getCluster(), child.getTraitSet(), child, groupSet, aggCalls);
+      } catch (InvalidRelException e) {
+          throw new RuntimeException(e);
+      }
+    }
+  }
 }

Modified: hive/branches/cbo/ql/src/java/org/apache/hadoop/hive/ql/optimizer/optiq/reloperators/HiveJoinRel.java
URL: http://svn.apache.org/viewvc/hive/branches/cbo/ql/src/java/org/apache/hadoop/hive/ql/optimizer/optiq/reloperators/HiveJoinRel.java?rev=1622380&r1=1622379&r2=1622380&view=diff
==============================================================================
--- hive/branches/cbo/ql/src/java/org/apache/hadoop/hive/ql/optimizer/optiq/reloperators/HiveJoinRel.java (original)
+++ hive/branches/cbo/ql/src/java/org/apache/hadoop/hive/ql/optimizer/optiq/reloperators/HiveJoinRel.java Thu Sep  4 00:00:51 2014
@@ -1,9 +1,6 @@
 package org.apache.hadoop.hive.ql.optimizer.optiq.reloperators;
 
-import java.util.ArrayList;
 import java.util.Collections;
-import java.util.LinkedList;
-import java.util.List;
 import java.util.Set;
 
 import org.apache.hadoop.hive.ql.optimizer.optiq.TraitsUtil;
@@ -17,7 +14,6 @@ import org.eigenbase.rel.metadata.RelMet
 import org.eigenbase.relopt.RelOptCluster;
 import org.eigenbase.relopt.RelOptCost;
 import org.eigenbase.relopt.RelOptPlanner;
-import org.eigenbase.relopt.RelOptUtil;
 import org.eigenbase.relopt.RelTraitSet;
 import org.eigenbase.reltype.RelDataType;
 import org.eigenbase.reltype.RelDataTypeField;
@@ -37,12 +33,12 @@ public class HiveJoinRel extends JoinRel
   public enum MapJoinStreamingRelation {
     NONE, LEFT_RELATION, RIGHT_RELATION
   }
-  
+
   public static final JoinFactory HIVE_JOIN_FACTORY = new HiveJoinFactoryImpl();
 
   private final boolean m_leftSemiJoin;
   private final JoinAlgorithm      m_joinAlgorithm;
-  private MapJoinStreamingRelation m_mapJoinStreamingSide = MapJoinStreamingRelation.NONE;
+  private final MapJoinStreamingRelation m_mapJoinStreamingSide = MapJoinStreamingRelation.NONE;
 
   public static HiveJoinRel getJoin(RelOptCluster cluster, RelNode left, RelNode right,
       RexNode condition, JoinRelType joinType, boolean leftSemiJoin) {
@@ -99,11 +95,12 @@ public class HiveJoinRel extends JoinRel
     double leftRCount = RelMetadataQuery.getRowCount(getLeft());
     double rightRCount = RelMetadataQuery.getRowCount(getRight());
     return HiveCost.FACTORY.makeCost(leftRCount + rightRCount, 0.0, 0.0);
-  }  
+  }
 
   /**
    * @return returns rowtype representing only the left join input
    */
+  @Override
   public RelDataType deriveRowType() {
     if (m_leftSemiJoin) {
       return deriveJoinRowType(left.getRowType(), null, JoinRelType.INNER,
@@ -116,7 +113,7 @@ public class HiveJoinRel extends JoinRel
   private static class HiveJoinFactoryImpl implements JoinFactory {
     /**
      * Creates a join.
-     * 
+     *
      * @param left
      *          Left input
      * @param right

Modified: hive/branches/cbo/ql/src/java/org/apache/hadoop/hive/ql/optimizer/optiq/reloperators/HiveProjectRel.java
URL: http://svn.apache.org/viewvc/hive/branches/cbo/ql/src/java/org/apache/hadoop/hive/ql/optimizer/optiq/reloperators/HiveProjectRel.java?rev=1622380&r1=1622379&r2=1622380&view=diff
==============================================================================
--- hive/branches/cbo/ql/src/java/org/apache/hadoop/hive/ql/optimizer/optiq/reloperators/HiveProjectRel.java (original)
+++ hive/branches/cbo/ql/src/java/org/apache/hadoop/hive/ql/optimizer/optiq/reloperators/HiveProjectRel.java Thu Sep  4 00:00:51 2014
@@ -34,7 +34,7 @@ public class HiveProjectRel extends Proj
 
   /**
    * Creates a HiveProjectRel.
-   * 
+   *
    * @param cluster
    *          Cluster this relational expression belongs to
    * @param child
@@ -47,14 +47,14 @@ public class HiveProjectRel extends Proj
    *          values as in {@link ProjectRelBase.Flags}
    */
   public HiveProjectRel(RelOptCluster cluster, RelTraitSet traitSet, RelNode child,
-      List<RexNode> exps, RelDataType rowType, int flags) {
+      List<? extends RexNode> exps, RelDataType rowType, int flags) {
     super(cluster, traitSet, child, exps, rowType, flags);
     m_virtualCols = ImmutableList.copyOf(HiveOptiqUtil.getVirtualCols(exps));
   }
 
   /**
    * Creates a HiveProjectRel with no sort keys.
-   * 
+   *
    * @param child
    *          input relational expression
    * @param exps
@@ -62,7 +62,7 @@ public class HiveProjectRel extends Proj
    * @param fieldNames
    *          aliases of the expressions
    */
-  public static HiveProjectRel create(RelNode child, List<RexNode> exps, List<String> fieldNames) {
+  public static HiveProjectRel create(RelNode child, List<? extends RexNode> exps, List<String> fieldNames) {
     RelOptCluster cluster = child.getCluster();
     RelDataType rowType = RexUtil.createStructType(cluster.getTypeFactory(), exps, fieldNames);
     return create(cluster, child, exps, rowType, Collections.<RelCollation> emptyList());
@@ -71,9 +71,9 @@ public class HiveProjectRel extends Proj
   /**
    * Creates a HiveProjectRel.
    */
-  public static HiveProjectRel create(RelOptCluster cluster, RelNode child, List<RexNode> exps,
+  public static HiveProjectRel create(RelOptCluster cluster, RelNode child, List<? extends RexNode> exps,
       RelDataType rowType, final List<RelCollation> collationList) {
-    RelTraitSet traitSet = TraitsUtil.getSelectTraitSet(cluster, exps, child);
+    RelTraitSet traitSet = TraitsUtil.getSelectTraitSet(cluster, child);
     return new HiveProjectRel(cluster, traitSet, child, exps, rowType, Flags.BOXED);
   }
 
@@ -125,9 +125,10 @@ public class HiveProjectRel extends Proj
       outputProjList.add(rexBuilder.makeInputRef(rel, source));
     }
 
-    return create(rel, (List<RexNode>) outputProjList, outputNameList);
+    return create(rel, outputProjList, outputNameList);
   }
 
+  @Override
   public ProjectRelBase copy(RelTraitSet traitSet, RelNode input, List<RexNode> exps,
       RelDataType rowType) {
     assert traitSet.containsIfApplicable(HiveRel.CONVENTION);
@@ -139,6 +140,7 @@ public class HiveProjectRel extends Proj
     return HiveCost.FACTORY.makeZeroCost();
   }
 
+  @Override
   public void implement(Implementor implementor) {
   }
 
@@ -152,12 +154,14 @@ public class HiveProjectRel extends Proj
    * .
    */
   private static class HiveProjectFactoryImpl implements ProjectFactory {
+
     @Override
-    public RelNode createProject(RelNode input, List<RexNode> exps, List<String> fieldNames) {
-      RelNode project = HiveProjectRel.create(input, exps, fieldNames);
+    public RelNode createProject(RelNode child,
+        List<? extends RexNode> childExprs, List<String> fieldNames) {
+      RelNode project = HiveProjectRel.create(child, childExprs, fieldNames);
 
       // Make sure extra traits are carried over from the original rel
-      project = RelOptRule.convert(project, input.getTraitSet());
+      project = RelOptRule.convert(project, child.getTraitSet());
       return project;
     }
   }

Modified: hive/branches/cbo/ql/src/java/org/apache/hadoop/hive/ql/optimizer/optiq/reloperators/HiveSortRel.java
URL: http://svn.apache.org/viewvc/hive/branches/cbo/ql/src/java/org/apache/hadoop/hive/ql/optimizer/optiq/reloperators/HiveSortRel.java?rev=1622380&r1=1622379&r2=1622380&view=diff
==============================================================================
--- hive/branches/cbo/ql/src/java/org/apache/hadoop/hive/ql/optimizer/optiq/reloperators/HiveSortRel.java (original)
+++ hive/branches/cbo/ql/src/java/org/apache/hadoop/hive/ql/optimizer/optiq/reloperators/HiveSortRel.java Thu Sep  4 00:00:51 2014
@@ -2,6 +2,7 @@ package org.apache.hadoop.hive.ql.optimi
 
 import org.apache.hadoop.hive.ql.optimizer.optiq.TraitsUtil;
 import org.eigenbase.rel.RelCollation;
+import org.eigenbase.rel.RelFactories;
 import org.eigenbase.rel.RelNode;
 import org.eigenbase.rel.SortRel;
 import org.eigenbase.relopt.RelOptCluster;
@@ -9,12 +10,14 @@ import org.eigenbase.relopt.RelTraitSet;
 import org.eigenbase.rex.RexNode;
 
 public class HiveSortRel extends SortRel implements HiveRel {
-  
+
+  public static final HiveSortRelFactory HIVE_SORT_REL_FACTORY = new HiveSortRelFactory();
+
   public HiveSortRel(RelOptCluster cluster, RelTraitSet traitSet, RelNode child,
       RelCollation collation, RexNode offset, RexNode fetch) {
     super(cluster, TraitsUtil.getSortTraitSet(cluster, traitSet, collation), child, collation,
         offset, fetch);
-    
+
     assert getConvention() == child.getConvention();
   }
 
@@ -31,6 +34,16 @@ public class HiveSortRel extends SortRel
     return fetch;
   }
 
+  @Override
   public void implement(Implementor implementor) {
   }
+
+  private static class HiveSortRelFactory implements RelFactories.SortFactory {
+
+    @Override
+    public RelNode createSort(RelTraitSet traits, RelNode child,
+        RelCollation collation, RexNode offset, RexNode fetch) {
+      return new HiveSortRel(child.getCluster(), traits, child, collation, offset, fetch);
+    }
+  }
 }

Modified: hive/branches/cbo/ql/src/java/org/apache/hadoop/hive/ql/optimizer/optiq/reloperators/HiveUnionRel.java
URL: http://svn.apache.org/viewvc/hive/branches/cbo/ql/src/java/org/apache/hadoop/hive/ql/optimizer/optiq/reloperators/HiveUnionRel.java?rev=1622380&r1=1622379&r2=1622380&view=diff
==============================================================================
--- hive/branches/cbo/ql/src/java/org/apache/hadoop/hive/ql/optimizer/optiq/reloperators/HiveUnionRel.java (original)
+++ hive/branches/cbo/ql/src/java/org/apache/hadoop/hive/ql/optimizer/optiq/reloperators/HiveUnionRel.java Thu Sep  4 00:00:51 2014
@@ -3,14 +3,18 @@ package org.apache.hadoop.hive.ql.optimi
 import java.util.List;
 
 import org.apache.hadoop.hive.ql.optimizer.optiq.reloperators.HiveRel.Implementor;
+import org.eigenbase.rel.RelFactories;
 import org.eigenbase.rel.RelNode;
 import org.eigenbase.rel.SetOpRel;
 import org.eigenbase.rel.UnionRelBase;
 import org.eigenbase.relopt.RelOptCluster;
 import org.eigenbase.relopt.RelTraitSet;
+import org.eigenbase.sql.SqlKind;
 
 public class HiveUnionRel extends UnionRelBase {
 
+  public static final HiveUnionRelFactory UNION_REL_FACTORY = new HiveUnionRelFactory();
+
   public HiveUnionRel(RelOptCluster cluster, RelTraitSet traits, List<RelNode> inputs) {
     super(cluster, traits, inputs, true);
   }
@@ -22,4 +26,15 @@ public class HiveUnionRel extends UnionR
 
   public void implement(Implementor implementor) {
   }
+
+  private static class HiveUnionRelFactory implements RelFactories.SetOpFactory {
+
+    @Override
+    public RelNode createSetOp(SqlKind kind, List<RelNode> inputs, boolean all) {
+      if (kind != SqlKind.UNION) {
+        throw new IllegalStateException("Expected to get Set operator of type Union. Found : " + kind);
+      }
+      return new HiveUnionRel(inputs.get(0).getCluster(), inputs.get(0).getTraitSet(), inputs);
+    }
+  }
 }

Modified: hive/branches/cbo/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java
URL: http://svn.apache.org/viewvc/hive/branches/cbo/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java?rev=1622380&r1=1622379&r2=1622380&view=diff
==============================================================================
--- hive/branches/cbo/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java (original)
+++ hive/branches/cbo/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java Thu Sep  4 00:00:51 2014
@@ -127,7 +127,6 @@ import org.apache.hadoop.hive.ql.optimiz
 import org.apache.hadoop.hive.ql.optimizer.optiq.reloperators.HiveUnionRel;
 import org.apache.hadoop.hive.ql.optimizer.optiq.rules.HivePartitionPrunerRule;
 import org.apache.hadoop.hive.ql.optimizer.optiq.rules.HivePushFilterPastJoinRule;
-import org.apache.hadoop.hive.ql.optimizer.optiq.rules.HiveRelFieldTrimmer;
 import org.apache.hadoop.hive.ql.optimizer.optiq.translator.ASTConverter;
 import org.apache.hadoop.hive.ql.optimizer.optiq.translator.RexNodeConverter;
 import org.apache.hadoop.hive.ql.optimizer.optiq.translator.SqlFunctionConverter;
@@ -231,6 +230,7 @@ import org.eigenbase.rel.JoinRelBase;
 import org.eigenbase.rel.JoinRelType;
 import org.eigenbase.rel.RelCollation;
 import org.eigenbase.rel.RelCollationImpl;
+import org.eigenbase.rel.RelFactories;
 import org.eigenbase.rel.RelFieldCollation;
 import org.eigenbase.rel.RelNode;
 import org.eigenbase.rel.metadata.CachingRelMetadataProvider;
@@ -267,6 +267,7 @@ import org.eigenbase.sql.SqlAggFunction;
 import org.eigenbase.sql.SqlWindow;
 import org.eigenbase.sql.parser.SqlParserPos;
 import org.eigenbase.sql.type.SqlTypeName;
+import org.eigenbase.sql2rel.RelFieldTrimmer;
 import org.eigenbase.sql.SqlCall;
 import org.eigenbase.sql.SqlExplainLevel;
 import org.eigenbase.sql.SqlKind;
@@ -11945,7 +11946,9 @@ public class SemanticAnalyzer extends Ba
           RemoveTrivialProjectRule.INSTANCE,
           new HivePartitionPrunerRule(SemanticAnalyzer.this.conf));
 
-      HiveRelFieldTrimmer fieldTrimmer = new HiveRelFieldTrimmer(null);
+      RelFieldTrimmer fieldTrimmer = new RelFieldTrimmer(null, HiveProjectRel.DEFAULT_PROJECT_FACTORY,
+          HiveFilterRel.DEFAULT_FILTER_FACTORY, HiveJoinRel.HIVE_JOIN_FACTORY, RelFactories.DEFAULT_SEMI_JOIN_FACTORY,
+          HiveSortRel.HIVE_SORT_REL_FACTORY, HiveAggregateRel.HIVE_AGGR_REL_FACTORY, HiveUnionRel.UNION_REL_FACTORY);
       basePlan = fieldTrimmer.trim(basePlan);
 
       return basePlan;
@@ -12210,7 +12213,7 @@ public class SemanticAnalyzer extends Ba
 
     /**
      * Generate Join Logical Plan Relnode by walking through the join AST.
-     * 
+     *
      * @param qb
      * @param aliasToRel
      *          Alias(Table/Relation alias) to RelNode; only read and not
@@ -12394,7 +12397,7 @@ public class SemanticAnalyzer extends Ba
         Map<String, RelNode> aliasToRel, boolean forHavingClause) throws SemanticException {
       /*
        * Handle Subquery predicates.
-       * 
+       *
        * Notes (8/22/14 hb): Why is this a copy of the code from {@link
        * #genFilterPlan} - for now we will support the same behavior as non CBO
        * route. - but plan to allow nested SubQueries(Restriction.9.m) and
@@ -12778,7 +12781,7 @@ public class SemanticAnalyzer extends Ba
 
     /**
      * Generate GB plan.
-     * 
+     *
      * @param qb
      * @param srcRel
      * @return TODO: 1. Grouping Sets (roll up..)
@@ -13118,7 +13121,7 @@ public class SemanticAnalyzer extends Ba
         WindowFunctionSpec wFnSpec = (WindowFunctionSpec) wExpSpec;
         ASTNode windowProjAst = wFnSpec.getExpression();
         // TODO: do we need to get to child?
-        int wndSpecASTIndx = getWindowSpecIndx((ASTNode) windowProjAst);
+        int wndSpecASTIndx = getWindowSpecIndx(windowProjAst);
         // 2. Get Hive Aggregate Info
         AggInfo hiveAggInfo = getHiveAggInfo(windowProjAst, wndSpecASTIndx - 1,
             this.m_relToHiveRR.get(srcRel));
@@ -13251,7 +13254,7 @@ public class SemanticAnalyzer extends Ba
     /**
      * NOTE: there can only be one select caluse since we don't handle multi
      * destination insert.
-     * 
+     *
      * @throws SemanticException
      */
     private RelNode genSelectLogicalPlan(QB qb, RelNode srcRel) throws SemanticException {