Repository: hive Updated Branches: refs/heads/master e9c217fe6 -> e0e10a932
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/e0e10a93 Tree: http://git-wip-us.apache.org/repos/asf/hive/tree/e0e10a93 Diff: http://git-wip-us.apache.org/repos/asf/hive/diff/e0e10a93 Branch: refs/heads/master Commit: e0e10a9324cfccc8bef7bccb33d9f1509832eba1 Parents: e9c217f 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:12:16 2016 -0700 ---------------------------------------------------------------------- .../calcite/rules/HiveSortLimitPullUpConstantsRule.java | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/hive/blob/e0e10a93/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)); } }