Repository: hive Updated Branches: refs/heads/branch-2.1 ccf667559 -> 98952eb15
HIVE-14957: HiveSortLimitPullUpConstantsRule misses branches when parent operator is Union (Pengcheng Xiong, reviewed by Jesus Camacho Rodriguez) Project: http://git-wip-us.apache.org/repos/asf/hive/repo Commit: http://git-wip-us.apache.org/repos/asf/hive/commit/98952eb1 Tree: http://git-wip-us.apache.org/repos/asf/hive/tree/98952eb1 Diff: http://git-wip-us.apache.org/repos/asf/hive/diff/98952eb1 Branch: refs/heads/branch-2.1 Commit: 98952eb15c720e3bfb4b715a3b78c20535aa16d3 Parents: ccf6675 Author: Pengcheng Xiong <pxi...@apache.org> Authored: Mon Oct 17 11:12:16 2016 -0700 Committer: Pengcheng Xiong <pxi...@apache.org> Committed: Mon Oct 17 11:15:55 2016 -0700 ---------------------------------------------------------------------- .../calcite/rules/HiveSortLimitPullUpConstantsRule.java | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/hive/blob/98952eb1/ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/rules/HiveSortLimitPullUpConstantsRule.java ---------------------------------------------------------------------- diff --git a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/rules/HiveSortLimitPullUpConstantsRule.java b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/rules/HiveSortLimitPullUpConstantsRule.java index cc318db..3ec9dac 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/rules/HiveSortLimitPullUpConstantsRule.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/rules/HiveSortLimitPullUpConstantsRule.java @@ -26,6 +26,7 @@ import org.apache.calcite.plan.RelOptPredicateList; import org.apache.calcite.plan.RelOptRule; import org.apache.calcite.plan.RelOptRuleCall; import org.apache.calcite.plan.RelOptUtil; +import org.apache.calcite.plan.hep.HepRelVertex; import org.apache.calcite.rel.RelCollations; import org.apache.calcite.rel.RelFieldCollation; import org.apache.calcite.rel.RelNode; @@ -158,7 +159,15 @@ public class HiveSortLimitPullUpConstantsRule extends RelOptRule { relBuilder.project(topChildExprs, topChildExprsFields); relBuilder.convert(sort.getRowType(), false); - call.transformTo(parent.copy(parent.getTraitSet(), ImmutableList.of(relBuilder.build()))); + List<RelNode> inputs = new ArrayList<>(); + for (RelNode child : parent.getInputs()) { + if (!((HepRelVertex) child).getCurrentRel().equals(sort)) { + inputs.add(child); + } else { + inputs.add(relBuilder.build()); + } + } + call.transformTo(parent.copy(parent.getTraitSet(), inputs)); } }