You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@drill.apache.org by ja...@apache.org on 2014/05/12 01:08:53 UTC

[6/8] git commit: In Logical rule, use child's trait when convert child to logical. Propagate traits from child to parent, for Project/Filter etc.

In Logical rule, use child's trait when convert child to logical.  Propagate traits from child to parent, for Project/Filter etc.

Clean up in TestJdbcDistQuery test case.


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

Branch: refs/heads/master
Commit: c7fa50fd3db2f93559d893cefdaa415511c18b44
Parents: cf2b888
Author: Jinfeng Ni <jn...@maprtech.com>
Authored: Sat May 10 16:39:58 2014 -0700
Committer: Jacques Nadeau <ja...@apache.org>
Committed: Sun May 11 15:44:26 2014 -0700

----------------------------------------------------------------------
 .../planner/logical/DrillAggregateRule.java     |  4 +--
 .../exec/planner/logical/DrillFilterRule.java   |  6 ++---
 .../exec/planner/logical/DrillJoinRule.java     | 28 ++++++++++----------
 .../exec/planner/logical/DrillLimitRule.java    |  2 +-
 .../exec/planner/logical/DrillProjectRule.java  |  4 +--
 .../exec/planner/logical/DrillUnionRule.java    |  2 +-
 .../drill/jdbc/test/TestJdbcDistQuery.java      |  6 -----
 7 files changed, 23 insertions(+), 29 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/c7fa50fd/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/DrillAggregateRule.java
----------------------------------------------------------------------
diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/DrillAggregateRule.java b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/DrillAggregateRule.java
index 5d65e7a..c966a84 100644
--- a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/DrillAggregateRule.java
+++ b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/DrillAggregateRule.java
@@ -46,9 +46,9 @@ public class DrillAggregateRule extends RelOptRule {
       // currently, don't use this rule if any of the aggregates contains DISTINCT
       return;
     }
-    
+
     final RelTraitSet traits = aggregate.getTraitSet().plus(DrillRel.DRILL_LOGICAL);
-    final RelNode convertedInput = convert(input, traits);
+    final RelNode convertedInput = convert(input, input.getTraitSet().plus(DrillRel.DRILL_LOGICAL));
     try {
       call.transformTo(new DrillAggregateRel(aggregate.getCluster(), traits, convertedInput, aggregate.getGroupSet(),
           aggregate.getAggCallList()));

http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/c7fa50fd/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/DrillFilterRule.java
----------------------------------------------------------------------
diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/DrillFilterRule.java b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/DrillFilterRule.java
index 64559a2..8f18838 100644
--- a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/DrillFilterRule.java
+++ b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/DrillFilterRule.java
@@ -38,8 +38,8 @@ public class DrillFilterRule extends RelOptRule {
   public void onMatch(RelOptRuleCall call) {
     final FilterRel filter = (FilterRel) call.rel(0);
     final RelNode input = filter.getChild();
-    final RelTraitSet traits = filter.getTraitSet().plus(DrillRel.DRILL_LOGICAL);
-    final RelNode convertedInput = convert(input, traits);
-    call.transformTo(new DrillFilterRel(filter.getCluster(), traits, convertedInput, filter.getCondition()));
+    //final RelTraitSet traits = filter.getTraitSet().plus(DrillRel.DRILL_LOGICAL);
+    final RelNode convertedInput = convert(input, input.getTraitSet().plus(DrillRel.DRILL_LOGICAL));
+    call.transformTo(new DrillFilterRel(filter.getCluster(), convertedInput.getTraitSet(), convertedInput, filter.getCondition()));
   }
 }

http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/c7fa50fd/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/DrillJoinRule.java
----------------------------------------------------------------------
diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/DrillJoinRule.java b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/DrillJoinRule.java
index c23bb29..96854a7 100644
--- a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/DrillJoinRule.java
+++ b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/DrillJoinRule.java
@@ -54,8 +54,8 @@ public class DrillJoinRule extends RelOptRule {
     final RelNode right = join.getRight();
     final RelTraitSet traits = join.getTraitSet().plus(DrillRel.DRILL_LOGICAL);
 
-    final RelNode convertedLeft = convert(left, traits);
-    final RelNode convertedRight = convert(right, traits);
+    final RelNode convertedLeft = convert(left, left.getTraitSet().plus(DrillRel.DRILL_LOGICAL));
+    final RelNode convertedRight = convert(right, right.getTraitSet().plus(DrillRel.DRILL_LOGICAL));
 
     List<Integer> leftKeys = Lists.newArrayList();
     List<Integer> rightKeys = Lists.newArrayList();
@@ -64,11 +64,11 @@ public class DrillJoinRule extends RelOptRule {
     boolean addFilter = false;
     RexNode origJoinCondition = join.getCondition();
     RexNode newJoinCondition = origJoinCondition;
-    
+
     RexNode remaining = RelOptUtil.splitJoinCondition(convertedLeft, convertedRight, origJoinCondition, leftKeys, rightKeys);
     boolean hasEquijoins = (leftKeys.size() == rightKeys.size() && leftKeys.size() > 0) ? true : false;
 
-    // If the join involves equijoins and non-equijoins, then we can process the non-equijoins through  
+    // If the join involves equijoins and non-equijoins, then we can process the non-equijoins through
     // a filter right after the join
     if (! remaining.isAlwaysTrue()) {
       if (hasEquijoins) {
@@ -77,38 +77,38 @@ public class DrillJoinRule extends RelOptRule {
         List<RelDataTypeField> leftTypes = convertedLeft.getRowType().getFieldList();
         List<RelDataTypeField> rightTypes = convertedRight.getRowType().getFieldList();
         RexBuilder builder = join.getCluster().getRexBuilder();
-      
+
         for (int i=0; i < leftKeys.size(); i++) {
           int leftKeyOrdinal = leftKeys.get(i).intValue();
           int rightKeyOrdinal = rightKeys.get(i).intValue();
-   
-          equijoinList.add(builder.makeCall( 
+
+          equijoinList.add(builder.makeCall(
               SqlStdOperatorTable.EQUALS,
-              builder.makeInputRef(leftTypes.get(leftKeyOrdinal).getType(), leftKeyOrdinal), 
+              builder.makeInputRef(leftTypes.get(leftKeyOrdinal).getType(), leftKeyOrdinal),
               builder.makeInputRef(rightTypes.get(rightKeyOrdinal).getType(), rightKeyOrdinal + numLeftFields)
-             ) );            
+             ) );
         }
-        newJoinCondition = RexUtil.composeConjunction(builder, equijoinList, false);    
+        newJoinCondition = RexUtil.composeConjunction(builder, equijoinList, false);
       } else {
         tracer.warning("Non-equijoins are only supported in the presence of an equijoin.");
         return;
       }
     }
     //else {
-    //  
+    //
     //  return;
     // }
 
     try {
       if (!addFilter) {
-       RelNode joinRel = new DrillJoinRel(join.getCluster(), traits, convertedLeft, convertedRight, origJoinCondition, 
+       RelNode joinRel = new DrillJoinRel(join.getCluster(), traits, convertedLeft, convertedRight, origJoinCondition,
                                          join.getJoinType(), leftKeys, rightKeys, false);
        call.transformTo(joinRel);
       } else {
-        RelNode joinRel = new DrillJoinRel(join.getCluster(), traits, convertedLeft, convertedRight, newJoinCondition, 
+        RelNode joinRel = new DrillJoinRel(join.getCluster(), traits, convertedLeft, convertedRight, newJoinCondition,
                                            join.getJoinType(), leftKeys, rightKeys, false);
         call.transformTo(new DrillFilterRel(join.getCluster(), traits, joinRel, remaining));
-      } 
+      }
     } catch (InvalidRelException e) {
       tracer.warning(e.toString());
     }

http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/c7fa50fd/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/DrillLimitRule.java
----------------------------------------------------------------------
diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/DrillLimitRule.java b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/DrillLimitRule.java
index a11dc30..c3b0d00 100644
--- a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/DrillLimitRule.java
+++ b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/DrillLimitRule.java
@@ -53,7 +53,7 @@ public class DrillLimitRule extends RelOptRule {
     }
 
     RelNode convertedInput = convert(input, input.getTraitSet().plus(DrillRel.DRILL_LOGICAL));
-    call.transformTo(new DrillLimitRel(incomingSort.getCluster(), incomingTraits.plus(DrillRel.DRILL_LOGICAL), convertedInput, incomingSort.offset, incomingSort.fetch));
+    call.transformTo(new DrillLimitRel(incomingSort.getCluster(), convertedInput.getTraitSet().plus(DrillRel.DRILL_LOGICAL), convertedInput, incomingSort.offset, incomingSort.fetch));
   }
 
 }

http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/c7fa50fd/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/DrillProjectRule.java
----------------------------------------------------------------------
diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/DrillProjectRule.java b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/DrillProjectRule.java
index 7cef038..109588c 100644
--- a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/DrillProjectRule.java
+++ b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/DrillProjectRule.java
@@ -38,9 +38,9 @@ public class DrillProjectRule extends RelOptRule {
   public void onMatch(RelOptRuleCall call) {
     final ProjectRel project = (ProjectRel) call.rel(0);
     final RelNode input = project.getChild();
-    final RelTraitSet traits = project.getTraitSet().plus(DrillRel.DRILL_LOGICAL);
+    //final RelTraitSet traits = project.getTraitSet().plus(DrillRel.DRILL_LOGICAL);
     final RelNode convertedInput = convert(input, input.getTraitSet().plus(DrillRel.DRILL_LOGICAL));
-    call.transformTo(new DrillProjectRel(project.getCluster(), traits, convertedInput, project.getProjects(), project
+    call.transformTo(new DrillProjectRel(project.getCluster(), convertedInput.getTraitSet(), convertedInput, project.getProjects(), project
         .getRowType()));
   }
 }

http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/c7fa50fd/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/DrillUnionRule.java
----------------------------------------------------------------------
diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/DrillUnionRule.java b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/DrillUnionRule.java
index 25515c0..b607605 100644
--- a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/DrillUnionRule.java
+++ b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/DrillUnionRule.java
@@ -41,7 +41,7 @@ public class DrillUnionRule extends RelOptRule {
     final RelTraitSet traits = union.getTraitSet().plus(DrillRel.DRILL_LOGICAL);
     final List<RelNode> convertedInputs = new ArrayList<>();
     for (RelNode input : union.getInputs()) {
-      final RelNode convertedInput = convert(input, traits);
+      final RelNode convertedInput = convert(input, input.getTraitSet().plus(DrillRel.DRILL_LOGICAL));
       convertedInputs.add(convertedInput);
     }
     call.transformTo(new DrillUnionRel(union.getCluster(), traits, convertedInputs, union.all));

http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/c7fa50fd/exec/jdbc/src/test/java/org/apache/drill/jdbc/test/TestJdbcDistQuery.java
----------------------------------------------------------------------
diff --git a/exec/jdbc/src/test/java/org/apache/drill/jdbc/test/TestJdbcDistQuery.java b/exec/jdbc/src/test/java/org/apache/drill/jdbc/test/TestJdbcDistQuery.java
index 2e279e7..30a7144 100644
--- a/exec/jdbc/src/test/java/org/apache/drill/jdbc/test/TestJdbcDistQuery.java
+++ b/exec/jdbc/src/test/java/org/apache/drill/jdbc/test/TestJdbcDistQuery.java
@@ -50,12 +50,6 @@ public class TestJdbcDistQuery extends JdbcTest{
 
   }
 
-  @BeforeClass
-  public static void generateHive() throws Exception{
-    new HiveTestDataGenerator().generateTestData();
-  }
-
-
   @Test
   public void testSimpleQuerySingleFile() throws Exception{
     testQuery(String.format("select R_REGIONKEY, R_NAME "