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 "