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 2015/09/12 02:13:15 UTC
hive git commit: HIVE-11781 : Remove HiveLimit operator (Jesus
Camacho Rodriguez via Ashutosh Chauhan)
Repository: hive
Updated Branches:
refs/heads/master 753fed62d -> b1fffd5a8
HIVE-11781 : Remove HiveLimit operator (Jesus Camacho Rodriguez via Ashutosh Chauhan)
Project: http://git-wip-us.apache.org/repos/asf/hive/repo
Commit: http://git-wip-us.apache.org/repos/asf/hive/commit/b1fffd5a
Tree: http://git-wip-us.apache.org/repos/asf/hive/tree/b1fffd5a
Diff: http://git-wip-us.apache.org/repos/asf/hive/diff/b1fffd5a
Branch: refs/heads/master
Commit: b1fffd5a8a8aa10f19c03f79cf02d8147222ccc8
Parents: 753fed6
Author: Jesus Camacho Rodriguez <jc...@apache.org>
Authored: Thu Sep 10 02:46:00 2015 -0800
Committer: Ashutosh Chauhan <ha...@apache.org>
Committed: Fri Sep 11 17:12:21 2015 -0700
----------------------------------------------------------------------
.../calcite/reloperators/HiveLimit.java | 57 ----------
.../calcite/reloperators/HiveSort.java | 110 -------------------
.../calcite/reloperators/HiveSortLimit.java | 110 +++++++++++++++++++
.../calcite/stats/HiveRelMdMemory.java | 9 +-
.../calcite/stats/HiveRelMdParallelism.java | 4 +-
.../calcite/translator/ASTConverter.java | 24 ++--
.../calcite/translator/HiveOpConverter.java | 8 +-
.../translator/PlanModifierForASTConv.java | 10 +-
.../calcite/translator/PlanModifierUtil.java | 4 +-
.../hadoop/hive/ql/parse/CalcitePlanner.java | 10 +-
10 files changed, 142 insertions(+), 204 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/hive/blob/b1fffd5a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/reloperators/HiveLimit.java
----------------------------------------------------------------------
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/reloperators/HiveLimit.java b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/reloperators/HiveLimit.java
deleted file mode 100644
index 74991d6..0000000
--- a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/reloperators/HiveLimit.java
+++ /dev/null
@@ -1,57 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.hadoop.hive.ql.optimizer.calcite.reloperators;
-
-import java.util.List;
-
-import org.apache.calcite.plan.RelOptCluster;
-import org.apache.calcite.plan.RelOptCost;
-import org.apache.calcite.plan.RelOptPlanner;
-import org.apache.calcite.plan.RelTraitSet;
-import org.apache.calcite.rel.RelNode;
-import org.apache.calcite.rel.SingleRel;
-import org.apache.calcite.rel.metadata.RelMetadataQuery;
-import org.apache.calcite.rex.RexNode;
-import org.apache.hadoop.hive.ql.optimizer.calcite.TraitsUtil;
-
-public class HiveLimit extends SingleRel implements HiveRelNode {
- private final RexNode offset;
- private final RexNode fetch;
-
- HiveLimit(RelOptCluster cluster, RelTraitSet traitSet, RelNode child, RexNode offset,
- RexNode fetch) {
- super(cluster, TraitsUtil.getDefaultTraitSet(cluster), child);
- this.offset = offset;
- this.fetch = fetch;
- assert getConvention() instanceof HiveRelNode;
- assert getConvention() == child.getConvention();
- }
-
- @Override
- public HiveLimit copy(RelTraitSet traitSet, List<RelNode> newInputs) {
- return new HiveLimit(getCluster(), traitSet, sole(newInputs), offset, fetch);
- }
-
- public void implement(Implementor implementor) {
- }
-
- @Override
- public RelOptCost computeSelfCost(RelOptPlanner planner) {
- return RelMetadataQuery.getNonCumulativeCost(this);
- }
-}
http://git-wip-us.apache.org/repos/asf/hive/blob/b1fffd5a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/reloperators/HiveSort.java
----------------------------------------------------------------------
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/reloperators/HiveSort.java b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/reloperators/HiveSort.java
deleted file mode 100644
index 1df6542..0000000
--- a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/reloperators/HiveSort.java
+++ /dev/null
@@ -1,110 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.hadoop.hive.ql.optimizer.calcite.reloperators;
-
-import java.util.Map;
-
-import org.apache.calcite.plan.RelOptCluster;
-import org.apache.calcite.plan.RelTraitSet;
-import org.apache.calcite.rel.RelCollation;
-import org.apache.calcite.rel.RelCollationTraitDef;
-import org.apache.calcite.rel.RelNode;
-import org.apache.calcite.rel.core.RelFactories;
-import org.apache.calcite.rel.core.Sort;
-import org.apache.calcite.rex.RexNode;
-import org.apache.hadoop.hive.ql.optimizer.calcite.TraitsUtil;
-
-import com.google.common.collect.ImmutableMap;
-
-public class HiveSort extends Sort implements HiveRelNode {
-
- public static final HiveSortRelFactory HIVE_SORT_REL_FACTORY = new HiveSortRelFactory();
-
- // NOTE: this is to work around Hive Calcite Limitations w.r.t OB.
- // 1. Calcite can not accept expressions in OB; instead it needs to be expressed
- // as VC in input Select.
- // 2. Hive can not preserve ordering through select boundaries.
- // 3. This map is used for outermost OB to migrate the VC corresponding OB
- // expressions from input select.
- // 4. This is used by ASTConverter after we are done with Calcite Planning
- private ImmutableMap<Integer, RexNode> mapOfInputRefToRexCall;
-
- public HiveSort(RelOptCluster cluster, RelTraitSet traitSet, RelNode child,
- RelCollation collation, RexNode offset, RexNode fetch) {
- super(cluster, TraitsUtil.getSortTraitSet(cluster, traitSet, collation), child, collation,
- offset, fetch);
- }
-
- /**
- * Creates a HiveSort.
- *
- * @param input Input relational expression
- * @param collation array of sort specifications
- * @param offset Expression for number of rows to discard before returning
- * first row
- * @param fetch Expression for number of rows to fetch
- */
- public static HiveSort create(RelNode input, RelCollation collation,
- RexNode offset, RexNode fetch) {
- RelOptCluster cluster = input.getCluster();
- collation = RelCollationTraitDef.INSTANCE.canonize(collation);
- RelTraitSet traitSet =
- TraitsUtil.getSortTraitSet(cluster, input.getTraitSet(), collation);
- return new HiveSort(cluster, traitSet, input, collation, offset, fetch);
- }
-
- @Override
- public HiveSort copy(RelTraitSet traitSet, RelNode newInput, RelCollation newCollation,
- RexNode offset, RexNode fetch) {
- // TODO: can we blindly copy sort trait? What if inputs changed and we
- // are now sorting by different cols
- RelCollation canonizedCollation = traitSet.canonize(newCollation);
- return new HiveSort(getCluster(), traitSet, newInput, canonizedCollation, offset, fetch);
- }
-
- public RexNode getFetchExpr() {
- return fetch;
- }
-
- public void setInputRefToCallMap(ImmutableMap<Integer, RexNode> refToCall) {
- this.mapOfInputRefToRexCall = refToCall;
- }
-
- public Map<Integer, RexNode> getInputRefToCallMap() {
- return this.mapOfInputRefToRexCall;
- }
-
- @Override
- public void implement(Implementor implementor) {
- }
-
- private static class HiveSortRelFactory implements RelFactories.SortFactory {
-
- @Override
- public RelNode createSort(RelTraitSet traits, RelNode input, RelCollation collation,
- RexNode offset, RexNode fetch) {
- return createSort(input, collation, offset, fetch);
- }
-
- @Override
- public RelNode createSort(RelNode input, RelCollation collation, RexNode offset,
- RexNode fetch) {
- return create(input, collation, offset, fetch);
- }
- }
-}
http://git-wip-us.apache.org/repos/asf/hive/blob/b1fffd5a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/reloperators/HiveSortLimit.java
----------------------------------------------------------------------
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/reloperators/HiveSortLimit.java b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/reloperators/HiveSortLimit.java
new file mode 100644
index 0000000..82fdc0e
--- /dev/null
+++ b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/reloperators/HiveSortLimit.java
@@ -0,0 +1,110 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.hadoop.hive.ql.optimizer.calcite.reloperators;
+
+import java.util.Map;
+
+import org.apache.calcite.plan.RelOptCluster;
+import org.apache.calcite.plan.RelTraitSet;
+import org.apache.calcite.rel.RelCollation;
+import org.apache.calcite.rel.RelCollationTraitDef;
+import org.apache.calcite.rel.RelNode;
+import org.apache.calcite.rel.core.RelFactories;
+import org.apache.calcite.rel.core.Sort;
+import org.apache.calcite.rex.RexNode;
+import org.apache.hadoop.hive.ql.optimizer.calcite.TraitsUtil;
+
+import com.google.common.collect.ImmutableMap;
+
+public class HiveSortLimit extends Sort implements HiveRelNode {
+
+ public static final HiveSortRelFactory HIVE_SORT_REL_FACTORY = new HiveSortRelFactory();
+
+ // NOTE: this is to work around Hive Calcite Limitations w.r.t OB.
+ // 1. Calcite can not accept expressions in OB; instead it needs to be expressed
+ // as VC in input Select.
+ // 2. Hive can not preserve ordering through select boundaries.
+ // 3. This map is used for outermost OB to migrate the VC corresponding OB
+ // expressions from input select.
+ // 4. This is used by ASTConverter after we are done with Calcite Planning
+ private ImmutableMap<Integer, RexNode> mapOfInputRefToRexCall;
+
+ public HiveSortLimit(RelOptCluster cluster, RelTraitSet traitSet, RelNode child,
+ RelCollation collation, RexNode offset, RexNode fetch) {
+ super(cluster, TraitsUtil.getSortTraitSet(cluster, traitSet, collation), child, collation,
+ offset, fetch);
+ }
+
+ /**
+ * Creates a HiveSortLimit.
+ *
+ * @param input Input relational expression
+ * @param collation array of sort specifications
+ * @param offset Expression for number of rows to discard before returning
+ * first row
+ * @param fetch Expression for number of rows to fetch
+ */
+ public static HiveSortLimit create(RelNode input, RelCollation collation,
+ RexNode offset, RexNode fetch) {
+ RelOptCluster cluster = input.getCluster();
+ collation = RelCollationTraitDef.INSTANCE.canonize(collation);
+ RelTraitSet traitSet =
+ TraitsUtil.getSortTraitSet(cluster, input.getTraitSet(), collation);
+ return new HiveSortLimit(cluster, traitSet, input, collation, offset, fetch);
+ }
+
+ @Override
+ public HiveSortLimit copy(RelTraitSet traitSet, RelNode newInput, RelCollation newCollation,
+ RexNode offset, RexNode fetch) {
+ // TODO: can we blindly copy sort trait? What if inputs changed and we
+ // are now sorting by different cols
+ RelCollation canonizedCollation = traitSet.canonize(newCollation);
+ return new HiveSortLimit(getCluster(), traitSet, newInput, canonizedCollation, offset, fetch);
+ }
+
+ public RexNode getFetchExpr() {
+ return fetch;
+ }
+
+ public void setInputRefToCallMap(ImmutableMap<Integer, RexNode> refToCall) {
+ this.mapOfInputRefToRexCall = refToCall;
+ }
+
+ public Map<Integer, RexNode> getInputRefToCallMap() {
+ return this.mapOfInputRefToRexCall;
+ }
+
+ @Override
+ public void implement(Implementor implementor) {
+ }
+
+ private static class HiveSortRelFactory implements RelFactories.SortFactory {
+
+ @Override
+ public RelNode createSort(RelTraitSet traits, RelNode input, RelCollation collation,
+ RexNode offset, RexNode fetch) {
+ return createSort(input, collation, offset, fetch);
+ }
+
+ @Override
+ public RelNode createSort(RelNode input, RelCollation collation, RexNode offset,
+ RexNode fetch) {
+ return create(input, collation, offset, fetch);
+ }
+ }
+}
http://git-wip-us.apache.org/repos/asf/hive/blob/b1fffd5a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/stats/HiveRelMdMemory.java
----------------------------------------------------------------------
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/stats/HiveRelMdMemory.java b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/stats/HiveRelMdMemory.java
index 1a2e6d1..bea5943 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/stats/HiveRelMdMemory.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/stats/HiveRelMdMemory.java
@@ -26,9 +26,8 @@ import org.apache.calcite.util.BuiltInMethod;
import org.apache.hadoop.hive.ql.optimizer.calcite.reloperators.HiveAggregate;
import org.apache.hadoop.hive.ql.optimizer.calcite.reloperators.HiveFilter;
import org.apache.hadoop.hive.ql.optimizer.calcite.reloperators.HiveJoin;
-import org.apache.hadoop.hive.ql.optimizer.calcite.reloperators.HiveLimit;
import org.apache.hadoop.hive.ql.optimizer.calcite.reloperators.HiveProject;
-import org.apache.hadoop.hive.ql.optimizer.calcite.reloperators.HiveSort;
+import org.apache.hadoop.hive.ql.optimizer.calcite.reloperators.HiveSortLimit;
import org.apache.hadoop.hive.ql.optimizer.calcite.reloperators.HiveTableScan;
import org.apache.hadoop.hive.ql.optimizer.calcite.reloperators.HiveUnion;
@@ -73,15 +72,11 @@ public class HiveRelMdMemory extends RelMdMemory {
return join.getCumulativeMemoryWithinPhaseSplit();
}
- public Double memory(HiveLimit limit) {
- return 0.0;
- }
-
public Double memory(HiveProject project) {
return 0.0;
}
- public Double memory(HiveSort sort) {
+ public Double memory(HiveSortLimit sort) {
if (sort.getCollation() != RelCollations.EMPTY) {
// It sorts
final Double avgRowSize = RelMetadataQuery.getAverageRowSize(sort.getInput());
http://git-wip-us.apache.org/repos/asf/hive/blob/b1fffd5a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/stats/HiveRelMdParallelism.java
----------------------------------------------------------------------
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/stats/HiveRelMdParallelism.java b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/stats/HiveRelMdParallelism.java
index c7afea9..2f51d3b 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/stats/HiveRelMdParallelism.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/stats/HiveRelMdParallelism.java
@@ -27,7 +27,7 @@ import org.apache.calcite.rel.metadata.RelMetadataQuery;
import org.apache.calcite.util.BuiltInMethod;
import org.apache.hadoop.hive.ql.optimizer.calcite.RelOptHiveTable;
import org.apache.hadoop.hive.ql.optimizer.calcite.reloperators.HiveJoin;
-import org.apache.hadoop.hive.ql.optimizer.calcite.reloperators.HiveSort;
+import org.apache.hadoop.hive.ql.optimizer.calcite.reloperators.HiveSortLimit;
import org.apache.hadoop.hive.ql.optimizer.calcite.reloperators.HiveTableScan;
public class HiveRelMdParallelism extends RelMdParallelism {
@@ -52,7 +52,7 @@ public class HiveRelMdParallelism extends RelMdParallelism {
return join.isPhaseTransition();
}
- public Boolean isPhaseTransition(HiveSort sort) {
+ public Boolean isPhaseTransition(HiveSortLimit sort) {
// As Exchange operator is introduced later on, we make a
// sort operator create a new stage for the moment
return true;
http://git-wip-us.apache.org/repos/asf/hive/blob/b1fffd5a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/translator/ASTConverter.java
----------------------------------------------------------------------
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/translator/ASTConverter.java b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/translator/ASTConverter.java
index b6995c9..14946b3 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/translator/ASTConverter.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/translator/ASTConverter.java
@@ -58,7 +58,7 @@ import org.apache.hadoop.hive.metastore.api.FieldSchema;
import org.apache.hadoop.hive.ql.metadata.VirtualColumn;
import org.apache.hadoop.hive.ql.optimizer.calcite.CalciteSemanticException;
import org.apache.hadoop.hive.ql.optimizer.calcite.reloperators.HiveGroupingID;
-import org.apache.hadoop.hive.ql.optimizer.calcite.reloperators.HiveSort;
+import org.apache.hadoop.hive.ql.optimizer.calcite.reloperators.HiveSortLimit;
import org.apache.hadoop.hive.ql.optimizer.calcite.reloperators.HiveTableScan;
import org.apache.hadoop.hive.ql.optimizer.calcite.translator.SqlFunctionConverter.HiveToken;
import org.apache.hadoop.hive.ql.parse.ASTNode;
@@ -204,17 +204,17 @@ public class ASTConverter {
* to its src/from. Hence the need to pass in sort for each block from
* its parent.
*/
- convertOBToASTNode((HiveSort) order);
+ convertOBToASTNode((HiveSortLimit) order);
// 8. Limit
- convertLimitToASTNode((HiveSort) limit);
+ convertLimitToASTNode((HiveSortLimit) limit);
return hiveAST.getAST();
}
- private void convertLimitToASTNode(HiveSort limit) {
+ private void convertLimitToASTNode(HiveSortLimit limit) {
if (limit != null) {
- HiveSort hiveLimit = limit;
+ HiveSortLimit hiveLimit = limit;
RexNode limitExpr = hiveLimit.getFetchExpr();
if (limitExpr != null) {
Object val = ((RexLiteral) limitExpr).getValue2();
@@ -223,18 +223,18 @@ public class ASTConverter {
}
}
- private void convertOBToASTNode(HiveSort order) {
+ private void convertOBToASTNode(HiveSortLimit order) {
if (order != null) {
- HiveSort hiveSort = order;
- if (!hiveSort.getCollation().getFieldCollations().isEmpty()) {
+ HiveSortLimit hiveSortLimit = order;
+ if (!hiveSortLimit.getCollation().getFieldCollations().isEmpty()) {
// 1 Add order by token
ASTNode orderAst = ASTBuilder.createAST(HiveParser.TOK_ORDERBY, "TOK_ORDERBY");
- schema = new Schema(hiveSort);
- Map<Integer, RexNode> obRefToCallMap = hiveSort.getInputRefToCallMap();
+ schema = new Schema(hiveSortLimit);
+ Map<Integer, RexNode> obRefToCallMap = hiveSortLimit.getInputRefToCallMap();
RexNode obExpr;
ASTNode astCol;
- for (RelFieldCollation c : hiveSort.getCollation().getFieldCollations()) {
+ for (RelFieldCollation c : hiveSortLimit.getCollation().getFieldCollations()) {
// 2 Add Direction token
ASTNode directionAST = c.getDirection() == RelFieldCollation.Direction.ASCENDING ? ASTBuilder
@@ -651,7 +651,7 @@ public class ASTConverter {
* Hive Sort Node
* @return Schema
*/
- public Schema(HiveSort order) {
+ public Schema(HiveSortLimit order) {
Project select = (Project) order.getInput();
for (String projName : select.getRowType().getFieldNames()) {
add(new ColumnInfo(null, projName));
http://git-wip-us.apache.org/repos/asf/hive/blob/b1fffd5a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/translator/HiveOpConverter.java
----------------------------------------------------------------------
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/translator/HiveOpConverter.java b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/translator/HiveOpConverter.java
index 3f66893..f6c0114 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/translator/HiveOpConverter.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/translator/HiveOpConverter.java
@@ -64,7 +64,7 @@ import org.apache.hadoop.hive.ql.optimizer.calcite.reloperators.HiveJoin;
import org.apache.hadoop.hive.ql.optimizer.calcite.reloperators.HiveMultiJoin;
import org.apache.hadoop.hive.ql.optimizer.calcite.reloperators.HiveProject;
import org.apache.hadoop.hive.ql.optimizer.calcite.reloperators.HiveSemiJoin;
-import org.apache.hadoop.hive.ql.optimizer.calcite.reloperators.HiveSort;
+import org.apache.hadoop.hive.ql.optimizer.calcite.reloperators.HiveSortLimit;
import org.apache.hadoop.hive.ql.optimizer.calcite.reloperators.HiveSortExchange;
import org.apache.hadoop.hive.ql.optimizer.calcite.reloperators.HiveTableScan;
import org.apache.hadoop.hive.ql.optimizer.calcite.reloperators.HiveUnion;
@@ -171,8 +171,8 @@ public class HiveOpConverter {
return visit(hj);
} else if (rn instanceof HiveFilter) {
return visit((HiveFilter) rn);
- } else if (rn instanceof HiveSort) {
- return visit((HiveSort) rn);
+ } else if (rn instanceof HiveSortLimit) {
+ return visit((HiveSortLimit) rn);
} else if (rn instanceof HiveUnion) {
return visit((HiveUnion) rn);
} else if (rn instanceof HiveSortExchange) {
@@ -398,7 +398,7 @@ public class HiveOpConverter {
return HiveGBOpConvUtil.translateGB(inputOpAf, aggRel, hiveConf);
}
- OpAttr visit(HiveSort sortRel) throws SemanticException {
+ OpAttr visit(HiveSortLimit sortRel) throws SemanticException {
OpAttr inputOpAf = dispatch(sortRel.getInput());
if (LOG.isDebugEnabled()) {
http://git-wip-us.apache.org/repos/asf/hive/blob/b1fffd5a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/translator/PlanModifierForASTConv.java
----------------------------------------------------------------------
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/translator/PlanModifierForASTConv.java b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/translator/PlanModifierForASTConv.java
index 5cd3a06..67f17c2 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/translator/PlanModifierForASTConv.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/translator/PlanModifierForASTConv.java
@@ -45,7 +45,7 @@ import org.apache.hadoop.hive.ql.optimizer.calcite.CalciteSemanticException;
import org.apache.hadoop.hive.ql.optimizer.calcite.HiveCalciteUtil;
import org.apache.hadoop.hive.ql.optimizer.calcite.reloperators.HiveAggregate;
import org.apache.hadoop.hive.ql.optimizer.calcite.reloperators.HiveProject;
-import org.apache.hadoop.hive.ql.optimizer.calcite.reloperators.HiveSort;
+import org.apache.hadoop.hive.ql.optimizer.calcite.reloperators.HiveSortLimit;
import org.apache.hadoop.hive.ql.optimizer.calcite.reloperators.HiveTableScan;
import org.apache.hadoop.hive.serde2.typeinfo.TypeInfoFactory;
@@ -141,12 +141,12 @@ public class PlanModifierForASTConv {
if (!validFilterParent(rel, parent)) {
introduceDerivedTable(rel, parent);
}
- } else if (rel instanceof HiveSort) {
+ } else if (rel instanceof HiveSortLimit) {
if (!validSortParent(rel, parent)) {
introduceDerivedTable(rel, parent);
}
- if (!validSortChild((HiveSort) rel)) {
- introduceDerivedTable(((HiveSort) rel).getInput(), rel);
+ if (!validSortChild((HiveSortLimit) rel)) {
+ introduceDerivedTable(((HiveSortLimit) rel).getInput(), rel);
}
} else if (rel instanceof HiveAggregate) {
RelNode newParent = parent;
@@ -297,7 +297,7 @@ public class PlanModifierForASTConv {
return validParent;
}
- private static boolean validSortChild(HiveSort sortNode) {
+ private static boolean validSortChild(HiveSortLimit sortNode) {
boolean validChild = true;
RelNode child = sortNode.getInput();
http://git-wip-us.apache.org/repos/asf/hive/blob/b1fffd5a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/translator/PlanModifierUtil.java
----------------------------------------------------------------------
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/translator/PlanModifierUtil.java b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/translator/PlanModifierUtil.java
index 3e2fae9..988d6d3 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/translator/PlanModifierUtil.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/translator/PlanModifierUtil.java
@@ -37,7 +37,7 @@ import org.apache.hadoop.hive.metastore.api.FieldSchema;
import org.apache.hadoop.hive.ql.optimizer.calcite.CalciteSemanticException;
import org.apache.hadoop.hive.ql.optimizer.calcite.HiveCalciteUtil;
import org.apache.hadoop.hive.ql.optimizer.calcite.reloperators.HiveProject;
-import org.apache.hadoop.hive.ql.optimizer.calcite.reloperators.HiveSort;
+import org.apache.hadoop.hive.ql.optimizer.calcite.reloperators.HiveSortLimit;
import com.google.common.collect.ImmutableMap;
@@ -53,7 +53,7 @@ public class PlanModifierUtil {
|| !HiveCalciteUtil.orderRelNode(topSelparentPair.getKey())) {
return;
}
- HiveSort obRel = (HiveSort) topSelparentPair.getKey();
+ HiveSortLimit obRel = (HiveSortLimit) topSelparentPair.getKey();
Project obChild = (Project) topSelparentPair.getValue();
if (obChild.getRowType().getFieldCount() <= resultSchema.size()) {
return;
http://git-wip-us.apache.org/repos/asf/hive/blob/b1fffd5a/ql/src/java/org/apache/hadoop/hive/ql/parse/CalcitePlanner.java
----------------------------------------------------------------------
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/parse/CalcitePlanner.java b/ql/src/java/org/apache/hadoop/hive/ql/parse/CalcitePlanner.java
index 73ae7c4..86bdf7e 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/parse/CalcitePlanner.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/parse/CalcitePlanner.java
@@ -131,7 +131,7 @@ import org.apache.hadoop.hive.ql.optimizer.calcite.reloperators.HiveJoin;
import org.apache.hadoop.hive.ql.optimizer.calcite.reloperators.HiveProject;
import org.apache.hadoop.hive.ql.optimizer.calcite.reloperators.HiveRelNode;
import org.apache.hadoop.hive.ql.optimizer.calcite.reloperators.HiveSemiJoin;
-import org.apache.hadoop.hive.ql.optimizer.calcite.reloperators.HiveSort;
+import org.apache.hadoop.hive.ql.optimizer.calcite.reloperators.HiveSortLimit;
import org.apache.hadoop.hive.ql.optimizer.calcite.reloperators.HiveTableScan;
import org.apache.hadoop.hive.ql.optimizer.calcite.reloperators.HiveUnion;
import org.apache.hadoop.hive.ql.optimizer.calcite.rules.HiveExpandDistinctAggregatesRule;
@@ -922,7 +922,7 @@ public class CalcitePlanner extends SemanticAnalyzer {
// thus we run the field trimmer again to push them back down
HiveRelFieldTrimmer fieldTrimmer = new HiveRelFieldTrimmer(null, HiveProject.DEFAULT_PROJECT_FACTORY,
HiveFilter.DEFAULT_FILTER_FACTORY, HiveJoin.HIVE_JOIN_FACTORY,
- HiveSemiJoin.HIVE_SEMIJOIN_FACTORY, HiveSort.HIVE_SORT_REL_FACTORY,
+ HiveSemiJoin.HIVE_SEMIJOIN_FACTORY, HiveSortLimit.HIVE_SORT_REL_FACTORY,
HiveAggregate.HIVE_AGGR_REL_FACTORY, HiveUnion.UNION_REL_FACTORY);
calciteOptimizedPlan = fieldTrimmer.trim(calciteOptimizedPlan);
calciteOptimizedPlan = hepPlan(calciteOptimizedPlan, false, mdProvider.getMetadataProvider(),
@@ -1003,7 +1003,7 @@ public class CalcitePlanner extends SemanticAnalyzer {
// 5. Projection Pruning
HiveRelFieldTrimmer fieldTrimmer = new HiveRelFieldTrimmer(null, HiveProject.DEFAULT_PROJECT_FACTORY,
HiveFilter.DEFAULT_FILTER_FACTORY, HiveJoin.HIVE_JOIN_FACTORY,
- HiveSemiJoin.HIVE_SEMIJOIN_FACTORY, HiveSort.HIVE_SORT_REL_FACTORY,
+ HiveSemiJoin.HIVE_SEMIJOIN_FACTORY, HiveSortLimit.HIVE_SORT_REL_FACTORY,
HiveAggregate.HIVE_AGGR_REL_FACTORY, HiveUnion.UNION_REL_FACTORY);
basePlan = fieldTrimmer.trim(basePlan);
@@ -2266,7 +2266,7 @@ public class CalcitePlanner extends SemanticAnalyzer {
// 4. Construct SortRel
RelTraitSet traitSet = cluster.traitSetOf(HiveRelNode.CONVENTION);
RelCollation canonizedCollation = traitSet.canonize(RelCollationImpl.of(fieldCollations));
- sortRel = new HiveSort(cluster, traitSet, obInputRel, canonizedCollation, null, null);
+ sortRel = new HiveSortLimit(cluster, traitSet, obInputRel, canonizedCollation, null, null);
// 5. Update the maps
// NOTE: Output RR for SortRel is considered same as its input; we may
@@ -2292,7 +2292,7 @@ public class CalcitePlanner extends SemanticAnalyzer {
RexNode fetch = cluster.getRexBuilder().makeExactLiteral(BigDecimal.valueOf(limit));
RelTraitSet traitSet = cluster.traitSetOf(HiveRelNode.CONVENTION);
RelCollation canonizedCollation = traitSet.canonize(RelCollations.EMPTY);
- sortRel = new HiveSort(cluster, traitSet, srcRel, canonizedCollation, null, fetch);
+ sortRel = new HiveSortLimit(cluster, traitSet, srcRel, canonizedCollation, null, fetch);
RowResolver outputRR = new RowResolver();
if (!RowResolver.add(outputRR, relToHiveRR.get(srcRel))) {