You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tajo.apache.org by ji...@apache.org on 2013/12/28 07:36:46 UTC

[49/50] [abbrv] git commit: DAG-execplan

DAG-execplan


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

Branch: refs/heads/DAG-execplan
Commit: 8f3b8718c65c5a0b07fd54e496347efae3196134
Parents: ded3409
Author: Jihoon Son <ji...@apache.org>
Authored: Sat Dec 28 01:51:48 2013 +0900
Committer: Jihoon Son <ji...@apache.org>
Committed: Sat Dec 28 01:51:48 2013 +0900

----------------------------------------------------------------------
 .../org/apache/tajo/engine/planner/PhysicalPlannerImpl.java   | 1 +
 .../org/apache/tajo/engine/planner/global/GlobalPlanner.java  | 7 +++++--
 .../java/org/apache/tajo/master/querymaster/SubQuery.java     | 2 ++
 .../src/main/java/org/apache/tajo/worker/Task.java            | 1 +
 4 files changed, 9 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-tajo/blob/8f3b8718/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/planner/PhysicalPlannerImpl.java
----------------------------------------------------------------------
diff --git a/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/planner/PhysicalPlannerImpl.java b/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/planner/PhysicalPlannerImpl.java
index d1f34c8..b0b9025 100644
--- a/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/planner/PhysicalPlannerImpl.java
+++ b/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/planner/PhysicalPlannerImpl.java
@@ -143,6 +143,7 @@ public class PhysicalPlannerImpl implements PhysicalPlanner {
         LogicalNode topNode = plan.getFirstPlanGroup().toLinkedLogicalNode();
         storeTableNode.setChild(topNode);
         plan.setPlan(storeTableNode);
+        plan.build();
 
         channel.updateSrcPID(storeTableNode.getPID());
       }

http://git-wip-us.apache.org/repos/asf/incubator-tajo/blob/8f3b8718/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/planner/global/GlobalPlanner.java
----------------------------------------------------------------------
diff --git a/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/planner/global/GlobalPlanner.java b/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/planner/global/GlobalPlanner.java
index 2dbd1ed..0cceb80 100644
--- a/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/planner/global/GlobalPlanner.java
+++ b/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/planner/global/GlobalPlanner.java
@@ -111,11 +111,13 @@ public class GlobalPlanner {
     ExecutionBlock childBlock = leftTable ? leftBlock : rightBlock;
 
     DataChannel channel = new DataChannel(childBlock, parent, HASH_PARTITION, 32);
+    channel.setSchema(childBlock.getPlan().getFirstPlanGroup().getRootNode().getOutSchema());
     channel.setStoreType(storeType);
     if (join.getJoinType() != JoinType.CROSS) {
       // Each block should have the only one output schema
       Column [][] joinColumns = PlannerUtil.joinJoinKeyForEachTable(join.getJoinQual(),
-          leftBlock.getPlan().getOutSchema(0), rightBlock.getPlan().getOutSchema(0));
+          leftBlock.getPlan().getFirstPlanGroup().getRootNode().getOutSchema(),
+          rightBlock.getPlan().getFirstPlanGroup().getRootNode().getOutSchema());
       if (leftTable) {
         channel.setPartitionKey(joinColumns[0]);
       } else {
@@ -350,7 +352,7 @@ public class GlobalPlanner {
     // if result table is not a partitioned table, directly store it
     if(partitionDesc == null) {
       currentNode.setChild(childBlock.getPlan().getFirstPlanGroup().toLinkedLogicalNode());
-      currentNode.setInSchema(childBlock.getPlan().getOutSchema(0));
+      currentNode.setInSchema(childBlock.getPlan().getFirstPlanGroup().getRootNode().getOutSchema());
       childBlock.setPlan(currentNode);
       return childBlock;
     }
@@ -563,6 +565,7 @@ public class GlobalPlanner {
 
       for (ExecutionBlock childBlocks : queryBlockBlocks) {
         DataChannel channel = new DataChannel(childBlocks, execBlock, NONE_PARTITION, 1);
+        channel.setSchema(childBlocks.getPlan().getFirstPlanGroup().getRootNode().getOutSchema());
         channel.setStoreType(storeType);
         if (childBlocks.getPlan().hasPlanGroup()) {
           DataChannel.linkChannelAndPlanGroups(childBlocks.getPlan().getFirstPlanGroup(),

http://git-wip-us.apache.org/repos/asf/incubator-tajo/blob/8f3b8718/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/master/querymaster/SubQuery.java
----------------------------------------------------------------------
diff --git a/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/master/querymaster/SubQuery.java b/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/master/querymaster/SubQuery.java
index 147c6cf..e2cbd7b 100644
--- a/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/master/querymaster/SubQuery.java
+++ b/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/master/querymaster/SubQuery.java
@@ -595,10 +595,12 @@ public class SubQuery implements EventHandler<SubQueryEvent> {
 
         // for inner
         ExecutionBlock outer = childs.get(0);
+        outer.getPlan().build();
         long outerVolume = getInputVolume(subQuery.masterPlan, subQuery.context, outer);
 
         // for inner
         ExecutionBlock inner = childs.get(1);
+        inner.getPlan().build();
         long innerVolume = getInputVolume(subQuery.masterPlan, subQuery.context, inner);
         LOG.info("Outer volume: " + Math.ceil((double) outerVolume / 1048576) + "MB, "
             + "Inner volume: " + Math.ceil((double) innerVolume / 1048576) + "MB");

http://git-wip-us.apache.org/repos/asf/incubator-tajo/blob/8f3b8718/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/worker/Task.java
----------------------------------------------------------------------
diff --git a/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/worker/Task.java b/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/worker/Task.java
index 2b25bbb..de3edf3 100644
--- a/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/worker/Task.java
+++ b/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/worker/Task.java
@@ -159,6 +159,7 @@ public class Task {
     this.context.setEnforcer(request.getEnforcer());
 
     plan = CoreGsonHelper.fromJson(request.getSerializedData(), ExecutionPlan.class);
+    plan.build();
     // TODO: add meta information to regenerate a table desc
     InputContext srcContext = plan.getInputContext();