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 {