You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@drill.apache.org by jn...@apache.org on 2017/01/04 21:43:51 UTC

drill git commit: DRILL-5159: Drill's ProjectMergeRule should operate on RelNodes with same convention trait.

Repository: drill
Updated Branches:
  refs/heads/master bbcf4b765 -> d375eeb45


DRILL-5159: Drill's ProjectMergeRule should operate on RelNodes with same convention trait.

close apache/drill#705


Project: http://git-wip-us.apache.org/repos/asf/drill/repo
Commit: http://git-wip-us.apache.org/repos/asf/drill/commit/d375eeb4
Tree: http://git-wip-us.apache.org/repos/asf/drill/tree/d375eeb4
Diff: http://git-wip-us.apache.org/repos/asf/drill/diff/d375eeb4

Branch: refs/heads/master
Commit: d375eeb458d21cec246d486b88ddd26ab4b28ada
Parents: bbcf4b7
Author: Jinfeng Ni <jn...@apache.org>
Authored: Wed Dec 21 18:00:46 2016 -0800
Committer: Jinfeng Ni <jn...@apache.org>
Committed: Wed Jan 4 13:41:17 2017 -0800

----------------------------------------------------------------------
 .../drill/exec/planner/logical/DrillMergeProjectRule.java    | 8 ++++++++
 1 file changed, 8 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/drill/blob/d375eeb4/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/DrillMergeProjectRule.java
----------------------------------------------------------------------
diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/DrillMergeProjectRule.java b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/DrillMergeProjectRule.java
index b049277..6c69e28 100644
--- a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/DrillMergeProjectRule.java
+++ b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/DrillMergeProjectRule.java
@@ -18,6 +18,8 @@
 package org.apache.drill.exec.planner.logical;
 
 
+import org.apache.calcite.plan.Convention;
+import org.apache.calcite.plan.ConventionTraitDef;
 import org.apache.calcite.plan.RelOptRuleCall;
 import org.apache.calcite.rel.core.Project;
 import org.apache.calcite.rel.rules.ProjectMergeRule;
@@ -48,6 +50,12 @@ public class DrillMergeProjectRule extends ProjectMergeRule {
     Project topProject = call.rel(0);
     Project bottomProject = call.rel(1);
 
+    // Make sure both projects be LogicalProject.
+    if (topProject.getTraitSet().getTrait(ConventionTraitDef.INSTANCE) != Convention.NONE ||
+        bottomProject.getTraitSet().getTrait(ConventionTraitDef.INSTANCE) != Convention.NONE) {
+      return false;
+    }
+
     // We have a complex output type do not fire the merge project rule
     if (checkComplexOutput(topProject) || checkComplexOutput(bottomProject)) {
       return false;