You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tajo.apache.org by hy...@apache.org on 2013/08/19 11:23:53 UTC
[2/4] TAJO-123: Clean up the logical plan's json format. (hyunsik)
http://git-wip-us.apache.org/repos/asf/incubator-tajo/blob/49607a54/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/planner/physical/AggregationExec.java
----------------------------------------------------------------------
diff --git a/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/planner/physical/AggregationExec.java b/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/planner/physical/AggregationExec.java
index e7ee5bf..a00fa41 100644
--- a/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/planner/physical/AggregationExec.java
+++ b/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/planner/physical/AggregationExec.java
@@ -25,6 +25,7 @@ import org.apache.tajo.datum.DatumFactory;
import org.apache.tajo.engine.eval.ConstEval;
import org.apache.tajo.engine.eval.EvalContext;
import org.apache.tajo.engine.eval.EvalNode;
+import org.apache.tajo.engine.eval.EvalType;
import org.apache.tajo.engine.planner.Target;
import org.apache.tajo.engine.planner.logical.GroupbyNode;
@@ -78,7 +79,7 @@ public abstract class AggregationExec extends UnaryPhysicalExec {
evalContexts = new EvalContext[plan.getTargets().length];
for (int i = 0; i < plan.getTargets().length; i++) {
Target t = plan.getTargets()[i];
- if (t.getEvalTree().getType() == EvalNode.Type.FIELD && !nonNullGroupingFields.contains(t.getColumnSchema())) {
+ if (t.getEvalTree().getType() == EvalType.FIELD && !nonNullGroupingFields.contains(t.getColumnSchema())) {
evals[i] = new ConstEval(DatumFactory.createNullDatum());
evalContexts[i] = evals[i].newContext();
} else {
http://git-wip-us.apache.org/repos/asf/incubator-tajo/blob/49607a54/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/planner/rewrite/FilterPushDownRule.java
----------------------------------------------------------------------
diff --git a/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/planner/rewrite/FilterPushDownRule.java b/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/planner/rewrite/FilterPushDownRule.java
index d5e427c..1ae4c1c 100644
--- a/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/planner/rewrite/FilterPushDownRule.java
+++ b/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/planner/rewrite/FilterPushDownRule.java
@@ -45,13 +45,13 @@ public class FilterPushDownRule extends BasicLogicalPlanVisitor<List<EvalNode>>
public boolean isEligible(LogicalPlan plan) {
LogicalNode toBeOptimized = plan.getRootBlock().getRoot();
- return PlannerUtil.findTopNode(toBeOptimized, ExprType.SELECTION) != null;
+ return PlannerUtil.findTopNode(toBeOptimized, NodeType.SELECTION) != null;
}
@Override
public LogicalPlan rewrite(LogicalPlan plan) throws PlanningException {
LogicalNode root = plan.getRootBlock().getRoot();
- SelectionNode selNode = (SelectionNode) PlannerUtil.findTopNode(root, ExprType.SELECTION);
+ SelectionNode selNode = (SelectionNode) PlannerUtil.findTopNode(root, NodeType.SELECTION);
Preconditions.checkNotNull(selNode);
Stack<LogicalNode> stack = new Stack<LogicalNode>();
@@ -64,7 +64,7 @@ public class FilterPushDownRule extends BasicLogicalPlanVisitor<List<EvalNode>>
public LogicalNode visitFilter(LogicalPlan plan, SelectionNode selNode, Stack<LogicalNode> stack, List<EvalNode> cnf)
throws PlanningException {
stack.push(selNode);
- visitChild(plan, selNode.getSubNode(), stack, cnf);
+ visitChild(plan, selNode.getChild(), stack, cnf);
stack.pop();
// remove the selection operator if there is no search condition
@@ -73,7 +73,7 @@ public class FilterPushDownRule extends BasicLogicalPlanVisitor<List<EvalNode>>
LogicalNode node = stack.peek();
if (node instanceof UnaryNode) {
UnaryNode unary = (UnaryNode) node;
- unary.setSubNode(selNode.getSubNode());
+ unary.setChild(selNode.getChild());
} else {
throw new InvalidQueryException("Unexpected Logical Query Plan");
}
@@ -84,11 +84,11 @@ public class FilterPushDownRule extends BasicLogicalPlanVisitor<List<EvalNode>>
public LogicalNode visitJoin(LogicalPlan plan, JoinNode joinNode, Stack<LogicalNode> stack, List<EvalNode> cnf)
throws PlanningException {
- LogicalNode outer = joinNode.getOuterNode();
- LogicalNode inner = joinNode.getInnerNode();
+ LogicalNode left = joinNode.getRightChild();
+ LogicalNode right = joinNode.getLeftChild();
- visitChild(plan, outer, stack, cnf);
- visitChild(plan, inner, stack, cnf);
+ visitChild(plan, left, stack, cnf);
+ visitChild(plan, right, stack, cnf);
List<EvalNode> matched = Lists.newArrayList();
for (EvalNode eval : cnf) {
http://git-wip-us.apache.org/repos/asf/incubator-tajo/blob/49607a54/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/planner/rewrite/ProjectionPushDownRule.java
----------------------------------------------------------------------
diff --git a/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/planner/rewrite/ProjectionPushDownRule.java b/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/planner/rewrite/ProjectionPushDownRule.java
index 46740b5..89a935a 100644
--- a/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/planner/rewrite/ProjectionPushDownRule.java
+++ b/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/planner/rewrite/ProjectionPushDownRule.java
@@ -27,6 +27,7 @@ import org.apache.tajo.catalog.Schema;
import org.apache.tajo.catalog.SortSpec;
import org.apache.tajo.engine.eval.EvalNode;
import org.apache.tajo.engine.eval.EvalTreeUtil;
+import org.apache.tajo.engine.eval.EvalType;
import org.apache.tajo.engine.planner.*;
import org.apache.tajo.engine.planner.logical.*;
import org.apache.tajo.engine.utils.SchemaUtil;
@@ -108,10 +109,10 @@ public class ProjectionPushDownRule extends BasicLogicalPlanVisitor<ProjectionPu
}
stack.push(node);
- LogicalNode child = visitChild(plan, node.getSubNode(), stack, context);
+ LogicalNode child = visitChild(plan, node.getChild(), stack, context);
stack.pop();
- LogicalNode childNode = node.getSubNode();
+ LogicalNode childNode = node.getChild();
// If all expressions are evaluated in the child operators and the last operator is projectable,
// ProjectionNode will not be necessary. It eliminates ProjectionNode.
@@ -181,7 +182,7 @@ public class ProjectionPushDownRule extends BasicLogicalPlanVisitor<ProjectionPu
EvalNode expr;
for (Target target : node.getTargets()) {
expr = target.getEvalTree();
- if (expr.getType() != EvalNode.Type.FIELD) {
+ if (expr.getType() != EvalType.FIELD) {
currentRequired.addAll(EvalTreeUtil.findDistinctRefColumns(target.getEvalTree()));
}
}
@@ -197,8 +198,8 @@ public class ProjectionPushDownRule extends BasicLogicalPlanVisitor<ProjectionPu
rightContext.upperRequired = currentRequired;
stack.push(node);
- LogicalNode outer = visitChild(plan, node.getOuterNode(), stack, leftContext);
- LogicalNode inner = visitChild(plan, node.getInnerNode(), stack, rightContext);
+ LogicalNode outer = visitChild(plan, node.getLeftChild(), stack, leftContext);
+ LogicalNode inner = visitChild(plan, node.getRightChild(), stack, rightContext);
stack.pop();
Schema merged = SchemaUtil.merge(outer.getOutSchema(), inner.getOutSchema());
@@ -242,7 +243,7 @@ public class ProjectionPushDownRule extends BasicLogicalPlanVisitor<ProjectionPu
throws PlanningException {
stack.push(node);
- LogicalNode child = visitChild(context.plan, node.getSubNode(), stack, context);
+ LogicalNode child = visitChild(context.plan, node.getChild(), stack, context);
stack.pop();
node.setInSchema(child.getOutSchema());
node.setOutSchema(child.getOutSchema());
@@ -267,7 +268,7 @@ public class ProjectionPushDownRule extends BasicLogicalPlanVisitor<ProjectionPu
if (node instanceof ScanNode) { // For ScanNode
- if (expr.getType() == EvalNode.Type.FIELD && !targetListManager.getTarget(i).hasAlias()) {
+ if (expr.getType() == EvalType.FIELD && !targetListManager.getTarget(i).hasAlias()) {
targetListManager.setEvaluated(i);
} else if (EvalTreeUtil.findDistinctAggFunction(expr).size() == 0) {
targetListManager.setEvaluated(i);
@@ -275,13 +276,13 @@ public class ProjectionPushDownRule extends BasicLogicalPlanVisitor<ProjectionPu
}
} else if (node instanceof GroupbyNode) { // For GroupBy
- if (EvalTreeUtil.findDistinctAggFunction(expr).size() > 0 && expr.getType() != EvalNode.Type.FIELD) {
+ if (EvalTreeUtil.findDistinctAggFunction(expr).size() > 0 && expr.getType() != EvalType.FIELD) {
targetListManager.setEvaluated(i);
newEvaluatedTargetIds.add(i);
}
} else if (node instanceof JoinNode) {
- if (expr.getType() != EvalNode.Type.FIELD && EvalTreeUtil.findDistinctAggFunction(expr).size() == 0) {
+ if (expr.getType() != EvalType.FIELD && EvalTreeUtil.findDistinctAggFunction(expr).size() == 0) {
targetListManager.setEvaluated(i);
newEvaluatedTargetIds.add(i);
}
@@ -338,7 +339,7 @@ public class ProjectionPushDownRule extends BasicLogicalPlanVisitor<ProjectionPu
private static boolean isTopmostProjectable(Stack<LogicalNode> stack) {
for (LogicalNode node : stack) {
- if (node.getType() == ExprType.JOIN || node.getType() == ExprType.GROUP_BY) {
+ if (node.getType() == NodeType.JOIN || node.getType() == NodeType.GROUP_BY) {
return false;
}
}
@@ -349,25 +350,25 @@ public class ProjectionPushDownRule extends BasicLogicalPlanVisitor<ProjectionPu
private BinaryNode pushDownSetNode(LogicalPlan plan, BinaryNode setNode, Stack<LogicalNode> stack,
PushDownContext context) throws PlanningException {
- LogicalPlan.QueryBlock leftBlock = plan.getBlock(setNode.getOuterNode());
+ LogicalPlan.QueryBlock leftBlock = plan.getBlock(setNode.getLeftChild());
PushDownContext leftContext = new PushDownContext(context);
leftContext.targetListManager = new TargetListManager(plan,
leftBlock.getTargetListManager().getUnEvaluatedTargets());
- LogicalPlan.QueryBlock rightBlock = plan.getBlock(setNode.getInnerNode());
+ LogicalPlan.QueryBlock rightBlock = plan.getBlock(setNode.getRightChild());
PushDownContext rightContext = new PushDownContext(context);
rightContext.targetListManager = new TargetListManager(plan,
rightBlock.getTargetListManager().getUnEvaluatedTargets());
stack.push(setNode);
- visitChild(plan, setNode.getOuterNode(), stack, leftContext);
- visitChild(plan, setNode.getInnerNode(), stack, rightContext);
+ visitChild(plan, setNode.getLeftChild(), stack, leftContext);
+ visitChild(plan, setNode.getRightChild(), stack, rightContext);
stack.pop();
// if this is the final union, we assume that all targets are evalauted.
// TODO - is it always correct?
- if (stack.peek().getType() != ExprType.UNION) {
+ if (stack.peek().getType() != NodeType.UNION) {
context.targetListManager.setEvaluatedAll();
}
http://git-wip-us.apache.org/repos/asf/incubator-tajo/blob/49607a54/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/master/ExecutionBlock.java
----------------------------------------------------------------------
diff --git a/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/master/ExecutionBlock.java b/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/master/ExecutionBlock.java
index 69d0804..36327ff 100644
--- a/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/master/ExecutionBlock.java
+++ b/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/master/ExecutionBlock.java
@@ -72,8 +72,7 @@ public class ExecutionBlock {
public void setPlan(LogicalNode plan) {
hasJoinPlan = false;
- Preconditions.checkArgument(plan.getType() == ExprType.STORE
- || plan.getType() == ExprType.CREATE_INDEX);
+ Preconditions.checkArgument(plan.getType() == NodeType.STORE);
this.plan = plan;
store = (StoreTableNode) plan;
@@ -85,16 +84,16 @@ public class ExecutionBlock {
node = s.remove(s.size()-1);
if (node instanceof UnaryNode) {
UnaryNode unary = (UnaryNode) node;
- s.add(s.size(), unary.getSubNode());
+ s.add(s.size(), unary.getChild());
} else if (node instanceof BinaryNode) {
BinaryNode binary = (BinaryNode) node;
- if (binary.getType() == ExprType.JOIN) {
+ if (binary.getType() == NodeType.JOIN) {
hasJoinPlan = true;
- } else if (binary.getType() == ExprType.UNION) {
+ } else if (binary.getType() == NodeType.UNION) {
hasUnionPlan = true;
}
- s.add(s.size(), binary.getOuterNode());
- s.add(s.size(), binary.getInnerNode());
+ s.add(s.size(), binary.getLeftChild());
+ s.add(s.size(), binary.getRightChild());
} else if (node instanceof ScanNode) {
scanlist.add((ScanNode)node);
}
http://git-wip-us.apache.org/repos/asf/incubator-tajo/blob/49607a54/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/master/GlobalEngine.java
----------------------------------------------------------------------
diff --git a/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/master/GlobalEngine.java b/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/master/GlobalEngine.java
index 3d9a364..8c3617e 100644
--- a/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/master/GlobalEngine.java
+++ b/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/master/GlobalEngine.java
@@ -122,7 +122,7 @@ public class GlobalEngine extends AbstractService {
LogicalRootNode plan = (LogicalRootNode) createLogicalPlan(planningContext);
if (PlannerUtil.checkIfDDLPlan(plan)) {
- updateQuery(plan.getSubNode());
+ updateQuery(plan.getChild());
return TajoIdUtils.NullQueryId;
} else {
GetNewApplicationResponse newApp = yarnClient.getNewApplication();
@@ -136,8 +136,8 @@ public class GlobalEngine extends AbstractService {
QueryConf queryConf = new QueryConf(context.getConf());
queryConf.setUser(UserGroupInformation.getCurrentUser().getShortUserName());
// the output table is given by user
- if (plan.getSubNode().getType() == ExprType.CREATE_TABLE) {
- CreateTableNode createTableNode = (CreateTableNode) plan.getSubNode();
+ if (plan.getChild().getType() == NodeType.CREATE_TABLE) {
+ CreateTableNode createTableNode = (CreateTableNode) plan.getChild();
queryConf.setOutputTable(createTableNode.getTableName());
}
QueryMasterManager queryMasterManager = new QueryMasterManager(context, yarnClient, queryId, tql, plan, appId,
@@ -241,7 +241,7 @@ public class GlobalEngine extends AbstractService {
if (!PlannerUtil.checkIfDDLPlan(plan)) {
throw new SQLException("This is not update query:\n" + sql);
} else {
- updateQuery(plan.getSubNode());
+ updateQuery(plan.getChild());
return TajoIdUtils.NullQueryId;
}
}
@@ -338,7 +338,7 @@ public class GlobalEngine extends AbstractService {
StorageUtil.writeTableMeta(context.getConf(), path, meta);
catalog.addTable(desc);
- LOG.info("Table " + desc.getId() + " is created (" + desc.getMeta().getStat().getNumBytes() + ")");
+ LOG.info("Table " + desc.getName() + " is created (" + desc.getMeta().getStat().getNumBytes() + ")");
return desc;
}
http://git-wip-us.apache.org/repos/asf/incubator-tajo/blob/49607a54/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/master/GlobalPlanner.java
----------------------------------------------------------------------
diff --git a/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/master/GlobalPlanner.java b/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/master/GlobalPlanner.java
index 9522086..8b6ba94 100644
--- a/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/master/GlobalPlanner.java
+++ b/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/master/GlobalPlanner.java
@@ -66,15 +66,15 @@ public class GlobalPlanner {
this.queryId = queryId;
String outputTableName = null;
- if (rootNode.getSubNode().getType() == ExprType.STORE) {
+ if (rootNode.getChild().getType() == NodeType.STORE) {
// create table queries are executed by the master
- StoreTableNode storeTableNode = (StoreTableNode) rootNode.getSubNode();
+ StoreTableNode storeTableNode = (StoreTableNode) rootNode.getChild();
outputTableName = storeTableNode.getTableName();
}
// insert store at the subnode of the root
UnaryNode root = rootNode;
- if (root.getSubNode().getType() != ExprType.STORE) {
+ if (root.getChild().getType() != NodeType.STORE) {
SubQueryId subQueryId = QueryIdFactory.newSubQueryId(this.queryId);
outputTableName = subQueryId.toString();
insertStore(subQueryId.toString(),root).setLocal(false);
@@ -106,40 +106,40 @@ public class GlobalPlanner {
public void visit(LogicalNode node) {
String tableId;
StoreTableNode store;
- if (node.getType() == ExprType.GROUP_BY) {
+ if (node.getType() == NodeType.GROUP_BY) {
// transform group by to two-phase plan
GroupbyNode groupby = (GroupbyNode) node;
// insert a store for the child of first group by
- if (groupby.getSubNode().getType() != ExprType.UNION &&
- groupby.getSubNode().getType() != ExprType.STORE &&
- groupby.getSubNode().getType() != ExprType.SCAN) {
+ if (groupby.getChild().getType() != NodeType.UNION &&
+ groupby.getChild().getType() != NodeType.STORE &&
+ groupby.getChild().getType() != NodeType.SCAN) {
tableId = QueryIdFactory.newSubQueryId(queryId).toString();
insertStore(tableId, groupby);
}
tableId = QueryIdFactory.newSubQueryId(queryId).toString();
// insert (a store for the first group by) and (a second group by)
PlannerUtil.transformGroupbyTo2PWithStore((GroupbyNode)node, tableId);
- } else if (node.getType() == ExprType.SORT) {
+ } else if (node.getType() == NodeType.SORT) {
// transform sort to two-phase plan
SortNode sort = (SortNode) node;
// insert a store for the child of first sort
- if (sort.getSubNode().getType() != ExprType.UNION &&
- sort.getSubNode().getType() != ExprType.STORE &&
- sort.getSubNode().getType() != ExprType.SCAN) {
+ if (sort.getChild().getType() != NodeType.UNION &&
+ sort.getChild().getType() != NodeType.STORE &&
+ sort.getChild().getType() != NodeType.SCAN) {
tableId = QueryIdFactory.newSubQueryId(queryId).toString();
insertStore(tableId, sort);
}
tableId = QueryIdFactory.newSubQueryId(queryId).toString();
// insert (a store for the first sort) and (a second sort)
PlannerUtil.transformSortTo2PWithStore((SortNode)node, tableId);
- } else if (node.getType() == ExprType.JOIN) {
+ } else if (node.getType() == NodeType.JOIN) {
// transform join to two-phase plan
// the first phase of two-phase join can be any logical nodes
JoinNode join = (JoinNode) node;
/*
- if (join.getOuterNode().getType() == ExprType.SCAN &&
- join.getInnerNode().getType() == ExprType.SCAN) {
+ if (join.getOuterNode().getType() == NodeType.SCAN &&
+ join.getInnerNode().getType() == NodeType.SCAN) {
ScanNode outerScan = (ScanNode) join.getOuterNode();
ScanNode innerScan = (ScanNode) join.getInnerNode();
@@ -196,29 +196,29 @@ public class GlobalPlanner {
} */
// insert stores for the first phase
- if (join.getOuterNode().getType() != ExprType.UNION &&
- join.getOuterNode().getType() != ExprType.STORE) {
+ if (join.getLeftChild().getType() != NodeType.UNION &&
+ join.getLeftChild().getType() != NodeType.STORE) {
tableId = QueryIdFactory.newSubQueryId(queryId).toString();
store = new StoreTableNode(tableId);
store.setLocal(true);
PlannerUtil.insertOuterNode(node, store);
}
- if (join.getInnerNode().getType() != ExprType.UNION &&
- join.getInnerNode().getType() != ExprType.STORE) {
+ if (join.getRightChild().getType() != NodeType.UNION &&
+ join.getRightChild().getType() != NodeType.STORE) {
tableId = QueryIdFactory.newSubQueryId(queryId).toString();
store = new StoreTableNode(tableId);
store.setLocal(true);
PlannerUtil.insertInnerNode(node, store);
}
- } else if (node.getType() == ExprType.UNION) {
+ } else if (node.getType() == NodeType.UNION) {
// not two-phase transform
UnionNode union = (UnionNode) node;
// insert stores
- if (union.getOuterNode().getType() != ExprType.UNION &&
- union.getOuterNode().getType() != ExprType.STORE) {
+ if (union.getLeftChild().getType() != NodeType.UNION &&
+ union.getLeftChild().getType() != NodeType.STORE) {
tableId = QueryIdFactory.newSubQueryId(queryId).toString();
store = new StoreTableNode(tableId);
- if(union.getOuterNode().getType() == ExprType.GROUP_BY) {
+ if(union.getLeftChild().getType() == NodeType.GROUP_BY) {
/*This case is for cube by operator
* TODO : more complicated conidtion*/
store.setLocal(true);
@@ -228,11 +228,11 @@ public class GlobalPlanner {
}
PlannerUtil.insertOuterNode(node, store);
}
- if (union.getInnerNode().getType() != ExprType.UNION &&
- union.getInnerNode().getType() != ExprType.STORE) {
+ if (union.getRightChild().getType() != NodeType.UNION &&
+ union.getRightChild().getType() != NodeType.STORE) {
tableId = QueryIdFactory.newSubQueryId(queryId).toString();
store = new StoreTableNode(tableId);
- if(union.getInnerNode().getType() == ExprType.GROUP_BY) {
+ if(union.getRightChild().getType() == NodeType.GROUP_BY) {
/*This case is for cube by operator
* TODO : more complicated conidtion*/
store.setLocal(true);
@@ -244,8 +244,8 @@ public class GlobalPlanner {
}
} else if (node instanceof UnaryNode) {
UnaryNode unary = (UnaryNode)node;
- if (unary.getType() != ExprType.STORE &&
- unary.getSubNode().getType() != ExprType.STORE) {
+ if (unary.getType() != NodeType.STORE &&
+ unary.getChild().getType() != NodeType.STORE) {
tableId = QueryIdFactory.newSubQueryId(queryId).toString();
insertStore(tableId, unary);
}
@@ -279,9 +279,9 @@ public class GlobalPlanner {
ExecutionBlock subQuery;
StoreTableNode store;
if (node instanceof UnaryNode) {
- recursiveBuildSubQuery(((UnaryNode) node).getSubNode());
+ recursiveBuildSubQuery(((UnaryNode) node).getChild());
- if (node.getType() == ExprType.STORE) {
+ if (node.getType() == NodeType.STORE) {
store = (StoreTableNode) node;
SubQueryId id;
if (store.getTableName().startsWith(QueryId.PREFIX)) {
@@ -291,7 +291,7 @@ public class GlobalPlanner {
}
subQuery = new ExecutionBlock(id);
- switch (store.getSubNode().getType()) {
+ switch (store.getChild().getType()) {
case BST_INDEX_SCAN:
case SCAN: // store - scan
subQuery = makeScanSubQuery(subQuery);
@@ -327,8 +327,8 @@ public class GlobalPlanner {
convertMap.put(store, subQuery);
}
} else if (node instanceof BinaryNode) {
- recursiveBuildSubQuery(((BinaryNode) node).getOuterNode());
- recursiveBuildSubQuery(((BinaryNode) node).getInnerNode());
+ recursiveBuildSubQuery(((BinaryNode) node).getLeftChild());
+ recursiveBuildSubQuery(((BinaryNode) node).getRightChild());
} else if (node instanceof ScanNode) {
} else {
@@ -355,14 +355,14 @@ public class GlobalPlanner {
ScanNode newScan;
ExecutionBlock prev;
UnaryNode unary = (UnaryNode) plan;
- UnaryNode child = (UnaryNode) unary.getSubNode();
- StoreTableNode prevStore = (StoreTableNode)child.getSubNode();
+ UnaryNode child = (UnaryNode) unary.getChild();
+ StoreTableNode prevStore = (StoreTableNode)child.getChild();
// add scan
newScan = GlobalPlannerUtils.newScanPlan(prevStore.getOutSchema(),
prevStore.getTableName(), sm.getTablePath(prevStore.getTableName()));
newScan.setLocal(true);
- child.setSubNode(newScan);
+ child.setChild(newScan);
prev = convertMap.get(prevStore);
if (prev != null) {
@@ -392,24 +392,24 @@ public class GlobalPlanner {
StoreTableNode prevStore;
ScanNode newScan;
ExecutionBlock prev;
- unaryChild = (UnaryNode) unary.getSubNode(); // groupby
- ExprType curType = unaryChild.getType();
- if (unaryChild.getSubNode().getType() == ExprType.STORE) {
+ unaryChild = (UnaryNode) unary.getChild(); // groupby
+ NodeType curType = unaryChild.getType();
+ if (unaryChild.getChild().getType() == NodeType.STORE) {
// store - groupby - store
- unaryChild = (UnaryNode) unaryChild.getSubNode(); // store
+ unaryChild = (UnaryNode) unaryChild.getChild(); // store
prevStore = (StoreTableNode) unaryChild;
newScan = GlobalPlannerUtils.newScanPlan(prevStore.getOutSchema(),
prevStore.getTableName(),
sm.getTablePath(prevStore.getTableName()));
newScan.setLocal(true);
- ((UnaryNode) unary.getSubNode()).setSubNode(newScan);
+ ((UnaryNode) unary.getChild()).setChild(newScan);
prev = convertMap.get(prevStore);
if (prev != null) {
prev.setParentBlock(unit);
unit.addChildBlock(newScan, prev);
}
- if (unaryChild.getSubNode().getType() == curType) {
+ if (unaryChild.getChild().getType() == curType) {
// the second phase
unit.setPartitionType(PartitionType.LIST);
if (prev != null) {
@@ -422,12 +422,12 @@ public class GlobalPlanner {
prev.setPartitionType(PartitionType.LIST);
}
}
- } else if (unaryChild.getSubNode().getType() == ExprType.SCAN) {
+ } else if (unaryChild.getChild().getType() == NodeType.SCAN) {
// the first phase
// store - groupby - scan
unit.setPartitionType(PartitionType.HASH);
- } else if (unaryChild.getSubNode().getType() == ExprType.UNION) {
- _handleUnionNode(rootStore, (UnionNode)unaryChild.getSubNode(), unit,
+ } else if (unaryChild.getChild().getType() == NodeType.UNION) {
+ _handleUnionNode(rootStore, (UnionNode)unaryChild.getChild(), unit,
null, PartitionType.LIST);
} else {
// error
@@ -449,11 +449,11 @@ public class GlobalPlanner {
UnaryNode unary = (UnaryNode) plan;
StoreTableNode outerStore, innerStore;
ExecutionBlock prev;
- UnionNode union = (UnionNode) unary.getSubNode();
+ UnionNode union = (UnionNode) unary.getChild();
unit.setPartitionType(PartitionType.LIST);
- if (union.getOuterNode().getType() == ExprType.STORE) {
- outerStore = (StoreTableNode) union.getOuterNode();
+ if (union.getLeftChild().getType() == NodeType.STORE) {
+ outerStore = (StoreTableNode) union.getLeftChild();
TableMeta outerMeta = CatalogUtil.newTableMeta(outerStore.getOutSchema(),
StoreType.CSV);
insertOuterScan(union, outerStore.getTableName(), outerMeta);
@@ -462,14 +462,14 @@ public class GlobalPlanner {
prev.getStoreTableNode().setTableName(rootStore.getTableName());
prev.setPartitionType(PartitionType.LIST);
prev.setParentBlock(unit);
- unit.addChildBlock((ScanNode) union.getOuterNode(), prev);
+ unit.addChildBlock((ScanNode) union.getLeftChild(), prev);
}
- } else if (union.getOuterNode().getType() == ExprType.UNION) {
+ } else if (union.getLeftChild().getType() == NodeType.UNION) {
_handleUnionNode(rootStore, union, unit, null, PartitionType.LIST);
}
- if (union.getInnerNode().getType() == ExprType.STORE) {
- innerStore = (StoreTableNode) union.getInnerNode();
+ if (union.getRightChild().getType() == NodeType.STORE) {
+ innerStore = (StoreTableNode) union.getRightChild();
TableMeta innerMeta = CatalogUtil.newTableMeta(innerStore.getOutSchema(),
StoreType.CSV);
insertInnerScan(union, innerStore.getTableName(), innerMeta);
@@ -478,9 +478,9 @@ public class GlobalPlanner {
prev.getStoreTableNode().setTableName(rootStore.getTableName());
prev.setPartitionType(PartitionType.LIST);
prev.setParentBlock(unit);
- unit.addChildBlock((ScanNode) union.getInnerNode(), prev);
+ unit.addChildBlock((ScanNode) union.getRightChild(), prev);
}
- } else if (union.getInnerNode().getType() == ExprType.UNION) {
+ } else if (union.getRightChild().getType() == NodeType.UNION) {
_handleUnionNode(rootStore, union, unit, null, PartitionType.LIST);
}
@@ -495,40 +495,40 @@ public class GlobalPlanner {
StoreTableNode prevStore;
ScanNode newScan;
ExecutionBlock prev;
- unaryChild = (UnaryNode) unary.getSubNode(); // groupby
- ExprType curType = unaryChild.getType();
- if (unaryChild.getSubNode().getType() == ExprType.STORE) {
+ unaryChild = (UnaryNode) unary.getChild(); // groupby
+ NodeType curType = unaryChild.getType();
+ if (unaryChild.getChild().getType() == NodeType.STORE) {
// store - groupby - store
- unaryChild = (UnaryNode) unaryChild.getSubNode(); // store
+ unaryChild = (UnaryNode) unaryChild.getChild(); // store
prevStore = (StoreTableNode) unaryChild;
newScan = GlobalPlannerUtils.newScanPlan(prevStore.getOutSchema(),
prevStore.getTableName(), sm.getTablePath(prevStore.getTableName()));
newScan.setLocal(true);
- ((UnaryNode) unary.getSubNode()).setSubNode(newScan);
+ ((UnaryNode) unary.getChild()).setChild(newScan);
prev = convertMap.get(prevStore);
if (prev != null) {
prev.setParentBlock(unit);
unit.addChildBlock(newScan, prev);
- if (unaryChild.getSubNode().getType() == curType) {
+ if (unaryChild.getChild().getType() == curType) {
// TODO - this is duplicated code
prev.setPartitionType(PartitionType.RANGE);
} else {
prev.setPartitionType(PartitionType.LIST);
}
}
- if (unaryChild.getSubNode().getType() == curType) {
+ if (unaryChild.getChild().getType() == curType) {
// the second phase
unit.setPartitionType(PartitionType.LIST);
} else {
// the first phase
unit.setPartitionType(PartitionType.HASH);
}
- } else if (unaryChild.getSubNode().getType() == ExprType.SCAN) {
+ } else if (unaryChild.getChild().getType() == NodeType.SCAN) {
// the first phase
// store - sort - scan
unit.setPartitionType(PartitionType.RANGE);
- } else if (unaryChild.getSubNode().getType() == ExprType.UNION) {
- _handleUnionNode(rootStore, (UnionNode)unaryChild.getSubNode(), unit,
+ } else if (unaryChild.getChild().getType() == NodeType.UNION) {
+ _handleUnionNode(rootStore, (UnionNode)unaryChild.getChild(), unit,
null, PartitionType.LIST);
} else {
// error
@@ -541,9 +541,9 @@ public class GlobalPlanner {
UnaryNode unary = (UnaryNode)plan;
StoreTableNode outerStore, innerStore;
ExecutionBlock prev;
- JoinNode join = (JoinNode) unary.getSubNode();
- Schema outerSchema = join.getOuterNode().getOutSchema();
- Schema innerSchema = join.getInnerNode().getOutSchema();
+ JoinNode join = (JoinNode) unary.getChild();
+ Schema outerSchema = join.getLeftChild().getOutSchema();
+ Schema innerSchema = join.getRightChild().getOutSchema();
unit.setPartitionType(PartitionType.LIST);
List<Column> outerCollist = new ArrayList<Column>();
@@ -567,8 +567,8 @@ public class GlobalPlanner {
innerCols = innerCollist.toArray(innerCols);
// outer
- if (join.getOuterNode().getType() == ExprType.STORE) {
- outerStore = (StoreTableNode) join.getOuterNode();
+ if (join.getLeftChild().getType() == NodeType.STORE) {
+ outerStore = (StoreTableNode) join.getLeftChild();
TableMeta outerMeta = CatalogUtil.newTableMeta(outerStore.getOutSchema(),
StoreType.CSV);
insertOuterScan(join, outerStore.getTableName(), outerMeta);
@@ -576,19 +576,19 @@ public class GlobalPlanner {
if (prev != null) {
prev.setPartitionType(PartitionType.HASH);
prev.setParentBlock(unit);
- unit.addChildBlock((ScanNode) join.getOuterNode(), prev);
+ unit.addChildBlock((ScanNode) join.getLeftChild(), prev);
}
outerStore.setPartitions(PartitionType.HASH, outerCols, 32);
- } else if (join.getOuterNode().getType() == ExprType.UNION) {
- _handleUnionNode(rootStore, (UnionNode)join.getOuterNode(), unit,
+ } else if (join.getLeftChild().getType() == NodeType.UNION) {
+ _handleUnionNode(rootStore, (UnionNode)join.getLeftChild(), unit,
outerCols, PartitionType.HASH);
} else {
}
// inner
- if (join.getInnerNode().getType() == ExprType.STORE) {
- innerStore = (StoreTableNode) join.getInnerNode();
+ if (join.getRightChild().getType() == NodeType.STORE) {
+ innerStore = (StoreTableNode) join.getRightChild();
TableMeta innerMeta = CatalogUtil.newTableMeta(innerStore.getOutSchema(),
StoreType.CSV);
insertInnerScan(join, innerStore.getTableName(), innerMeta);
@@ -596,11 +596,11 @@ public class GlobalPlanner {
if (prev != null) {
prev.setPartitionType(PartitionType.HASH);
prev.setParentBlock(unit);
- unit.addChildBlock((ScanNode) join.getInnerNode(), prev);
+ unit.addChildBlock((ScanNode) join.getRightChild(), prev);
}
innerStore.setPartitions(PartitionType.HASH, innerCols, 32);
- } else if (join.getInnerNode().getType() == ExprType.UNION) {
- _handleUnionNode(rootStore, (UnionNode)join.getInnerNode(), unit,
+ } else if (join.getRightChild().getType() == NodeType.UNION) {
+ _handleUnionNode(rootStore, (UnionNode)join.getRightChild(), unit,
innerCols, PartitionType.HASH);
}
@@ -624,8 +624,8 @@ public class GlobalPlanner {
TableMeta meta;
ExecutionBlock prev;
- if (union.getOuterNode().getType() == ExprType.STORE) {
- store = (StoreTableNode) union.getOuterNode();
+ if (union.getLeftChild().getType() == NodeType.STORE) {
+ store = (StoreTableNode) union.getLeftChild();
meta = CatalogUtil.newTableMeta(store.getOutSchema(), StoreType.CSV);
insertOuterScan(union, store.getTableName(), meta);
prev = convertMap.get(store);
@@ -633,18 +633,18 @@ public class GlobalPlanner {
prev.getStoreTableNode().setTableName(rootStore.getTableName());
prev.setPartitionType(prevOutputType);
prev.setParentBlock(cur);
- cur.addChildBlock((ScanNode) union.getOuterNode(), prev);
+ cur.addChildBlock((ScanNode) union.getLeftChild(), prev);
}
if (cols != null) {
store.setPartitions(PartitionType.LIST, cols, 32);
}
- } else if (union.getOuterNode().getType() == ExprType.UNION) {
- _handleUnionNode(rootStore, (UnionNode)union.getOuterNode(), cur, cols,
+ } else if (union.getLeftChild().getType() == NodeType.UNION) {
+ _handleUnionNode(rootStore, (UnionNode)union.getLeftChild(), cur, cols,
prevOutputType);
}
- if (union.getInnerNode().getType() == ExprType.STORE) {
- store = (StoreTableNode) union.getInnerNode();
+ if (union.getRightChild().getType() == NodeType.STORE) {
+ store = (StoreTableNode) union.getRightChild();
meta = CatalogUtil.newTableMeta(store.getOutSchema(), StoreType.CSV);
insertInnerScan(union, store.getTableName(), meta);
prev = convertMap.get(store);
@@ -652,13 +652,13 @@ public class GlobalPlanner {
prev.getStoreTableNode().setTableName(rootStore.getTableName());
prev.setPartitionType(prevOutputType);
prev.setParentBlock(cur);
- cur.addChildBlock((ScanNode) union.getInnerNode(), prev);
+ cur.addChildBlock((ScanNode) union.getRightChild(), prev);
}
if (cols != null) {
store.setPartitions(PartitionType.LIST, cols, 32);
}
- } else if (union.getInnerNode().getType() == ExprType.UNION) {
- _handleUnionNode(rootStore, (UnionNode)union.getInnerNode(), cur, cols,
+ } else if (union.getRightChild().getType() == NodeType.UNION) {
+ _handleUnionNode(rootStore, (UnionNode)union.getRightChild(), cur, cols,
prevOutputType);
}
}
@@ -670,7 +670,7 @@ public class GlobalPlanner {
scan.setLocal(true);
scan.setInSchema(meta.getSchema());
scan.setOutSchema(meta.getSchema());
- parent.setOuter(scan);
+ parent.setLeftChild(scan);
return parent;
}
@@ -681,7 +681,7 @@ public class GlobalPlanner {
scan.setLocal(true);
scan.setInSchema(meta.getSchema());
scan.setOutSchema(meta.getSchema());
- parent.setInner(scan);
+ parent.setRightChild(scan);
return parent;
}
@@ -689,7 +689,7 @@ public class GlobalPlanner {
recursiveBuildSubQuery(logicalPlan);
ExecutionBlock root;
- root = convertMap.get(((LogicalRootNode)logicalPlan).getSubNode());
+ root = convertMap.get(((LogicalRootNode)logicalPlan).getChild());
root.getStoreTableNode().setLocal(false);
return new MasterPlan(root);
http://git-wip-us.apache.org/repos/asf/incubator-tajo/blob/49607a54/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/master/TajoMasterClientService.java
----------------------------------------------------------------------
diff --git a/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/master/TajoMasterClientService.java b/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/master/TajoMasterClientService.java
index b433718..ed1376c 100644
--- a/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/master/TajoMasterClientService.java
+++ b/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/master/TajoMasterClientService.java
@@ -376,7 +376,7 @@ public class TajoMasterClientService extends AbstractService {
desc = new TableDescImpl(request.getName(), meta, path);
catalog.addTable(desc);
- LOG.info("Table " + desc.getId() + " is attached ("
+ LOG.info("Table " + desc.getName() + " is attached ("
+ meta.getStat().getNumBytes() + ")");
return TableResponse.newBuilder().
http://git-wip-us.apache.org/repos/asf/incubator-tajo/blob/49607a54/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/master/querymaster/QueryMaster.java
----------------------------------------------------------------------
diff --git a/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/master/querymaster/QueryMaster.java b/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/master/querymaster/QueryMaster.java
index 4b15c61..b66ef68 100644
--- a/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/master/querymaster/QueryMaster.java
+++ b/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/master/querymaster/QueryMaster.java
@@ -53,9 +53,9 @@ import org.apache.tajo.engine.json.CoreGsonHelper;
import org.apache.tajo.engine.planner.PlannerUtil;
import org.apache.tajo.engine.planner.global.GlobalOptimizer;
import org.apache.tajo.engine.planner.global.MasterPlan;
-import org.apache.tajo.engine.planner.logical.ExprType;
import org.apache.tajo.engine.planner.logical.LogicalNode;
import org.apache.tajo.engine.planner.logical.LogicalRootNode;
+import org.apache.tajo.engine.planner.logical.NodeType;
import org.apache.tajo.engine.planner.logical.ScanNode;
import org.apache.tajo.ipc.QueryMasterManagerProtocol;
import org.apache.tajo.ipc.QueryMasterProtocol;
@@ -444,7 +444,7 @@ public class QueryMaster extends CompositeService implements EventHandler {
try {
LogicalRootNode logicalNodeRoot = (LogicalRootNode) CoreGsonHelper.fromJson(planJSON, LogicalNode.class);
- LogicalNode[] scanNodes = PlannerUtil.findAllNodes(logicalNodeRoot, ExprType.SCAN);
+ LogicalNode[] scanNodes = PlannerUtil.findAllNodes(logicalNodeRoot, NodeType.SCAN);
if(scanNodes != null) {
for(LogicalNode eachScanNode: scanNodes) {
ScanNode scanNode = (ScanNode)eachScanNode;
http://git-wip-us.apache.org/repos/asf/incubator-tajo/blob/49607a54/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/master/querymaster/QueryUnit.java
----------------------------------------------------------------------
diff --git a/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/master/querymaster/QueryUnit.java b/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/master/querymaster/QueryUnit.java
index fcb8f3e..cf32e16 100644
--- a/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/master/querymaster/QueryUnit.java
+++ b/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/master/querymaster/QueryUnit.java
@@ -145,8 +145,7 @@ public class QueryUnit implements EventHandler<TaskEvent> {
}
public void setLogicalPlan(LogicalNode plan) {
- Preconditions.checkArgument(plan.getType() == ExprType.STORE ||
- plan.getType() == ExprType.CREATE_INDEX);
+ Preconditions.checkArgument(plan.getType() == NodeType.STORE);
this.plan = plan;
store = (StoreTableNode) plan;
@@ -158,11 +157,11 @@ public class QueryUnit implements EventHandler<TaskEvent> {
node = s.remove(s.size()-1);
if (node instanceof UnaryNode) {
UnaryNode unary = (UnaryNode) node;
- s.add(s.size(), unary.getSubNode());
+ s.add(s.size(), unary.getChild());
} else if (node instanceof BinaryNode) {
BinaryNode binary = (BinaryNode) node;
- s.add(s.size(), binary.getOuterNode());
- s.add(s.size(), binary.getInnerNode());
+ s.add(s.size(), binary.getLeftChild());
+ s.add(s.size(), binary.getRightChild());
} else if (node instanceof ScanNode) {
scan.add((ScanNode)node);
}
@@ -178,7 +177,7 @@ public class QueryUnit implements EventHandler<TaskEvent> {
}
public void setFragment2(Fragment fragment) {
- this.fragMap.put(fragment.getId(), fragment);
+ this.fragMap.put(fragment.getName(), fragment);
if (fragment.hasDataLocations()) {
setDataLocations(fragment.getDataLocations());
}
http://git-wip-us.apache.org/repos/asf/incubator-tajo/blob/49607a54/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/master/querymaster/Repartitioner.java
----------------------------------------------------------------------
diff --git a/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/master/querymaster/Repartitioner.java b/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/master/querymaster/Repartitioner.java
index 3957d57..ff590f3 100644
--- a/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/master/querymaster/Repartitioner.java
+++ b/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/master/querymaster/Repartitioner.java
@@ -265,7 +265,7 @@ public class Repartitioner {
tablePath = subQuery.getContext().getStorageManager().getTablePath(scan.getTableId());
StoreTableNode store = (StoreTableNode) childSubQuery.getBlock().getPlan();
- SortNode sort = (SortNode) store.getSubNode();
+ SortNode sort = (SortNode) store.getChild();
SortSpec[] sortSpecs = sort.getSortKeys();
Schema sortSchema = PlannerUtil.sortSpecsToSchema(sort.getSortKeys());
@@ -414,7 +414,7 @@ public class Repartitioner {
}
GroupbyNode groupby = (GroupbyNode) childSubQuery.getBlock().getStoreTableNode().
- getSubNode();
+ getChild();
// the number of tasks cannot exceed the number of merged fetch uris.
int determinedTaskNum = Math.min(maxNum, finalFetchURI.size());
if (groupby.getGroupingColumns().length == 0) {
@@ -547,7 +547,7 @@ public class Repartitioner {
// TODO: the union handling is required when a join has unions as its child
ExecutionBlock parentBlock = execBlock.getParentBlock();
if (parentBlock != null) {
- if (parentBlock.getStoreTableNode().getSubNode().getType() == ExprType.JOIN) {
+ if (parentBlock.getStoreTableNode().getChild().getType() == NodeType.JOIN) {
execBlock.getStoreTableNode().setPartitions(execBlock.getPartitionType(),
execBlock.getStoreTableNode().getPartitionKeys(), n);
keys = execBlock.getStoreTableNode().getPartitionKeys();
@@ -557,13 +557,13 @@ public class Repartitioner {
StoreTableNode store = execBlock.getStoreTableNode();
// set the partition number for group by and sort
if (execBlock.getPartitionType() == PartitionType.HASH) {
- if (store.getSubNode().getType() == ExprType.GROUP_BY) {
- GroupbyNode groupby = (GroupbyNode)store.getSubNode();
+ if (store.getChild().getType() == NodeType.GROUP_BY) {
+ GroupbyNode groupby = (GroupbyNode)store.getChild();
keys = groupby.getGroupingColumns();
}
} else if (execBlock.getPartitionType() == PartitionType.RANGE) {
- if (store.getSubNode().getType() == ExprType.SORT) {
- SortNode sort = (SortNode)store.getSubNode();
+ if (store.getChild().getType() == NodeType.SORT) {
+ SortNode sort = (SortNode)store.getChild();
keys = new Column[sort.getSortKeys().length];
for (int i = 0; i < keys.length; i++) {
keys[i] = sort.getSortKeys()[i].getSortKey();
http://git-wip-us.apache.org/repos/asf/incubator-tajo/blob/49607a54/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 305ef1b..d5d4dfd 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
@@ -42,8 +42,8 @@ import org.apache.tajo.catalog.statistics.StatisticsUtil;
import org.apache.tajo.catalog.statistics.TableStat;
import org.apache.tajo.conf.TajoConf;
import org.apache.tajo.engine.planner.PlannerUtil;
-import org.apache.tajo.engine.planner.logical.ExprType;
import org.apache.tajo.engine.planner.logical.GroupbyNode;
+import org.apache.tajo.engine.planner.logical.NodeType;
import org.apache.tajo.engine.planner.logical.ScanNode;
import org.apache.tajo.engine.planner.logical.StoreTableNode;
import org.apache.tajo.master.ExecutionBlock;
@@ -497,7 +497,7 @@ public class SubQuery implements EventHandler<SubQueryEvent> {
GroupbyNode grpNode = null;
if (parent != null) {
grpNode = (GroupbyNode) PlannerUtil.findTopNode(
- parent.getPlan(), ExprType.GROUP_BY);
+ parent.getPlan(), NodeType.GROUP_BY);
}
// Is this subquery the first step of join?
http://git-wip-us.apache.org/repos/asf/incubator-tajo/blob/49607a54/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/util/IndexUtil.java
----------------------------------------------------------------------
diff --git a/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/util/IndexUtil.java b/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/util/IndexUtil.java
index 5557b2a..59ba129 100644
--- a/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/util/IndexUtil.java
+++ b/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/util/IndexUtil.java
@@ -23,11 +23,7 @@ import org.apache.tajo.catalog.Column;
import org.apache.tajo.catalog.Schema;
import org.apache.tajo.catalog.SortSpec;
import org.apache.tajo.datum.Datum;
-import org.apache.tajo.engine.eval.ConstEval;
-import org.apache.tajo.engine.eval.EvalNode;
-import org.apache.tajo.engine.eval.EvalNode.Type;
-import org.apache.tajo.engine.eval.EvalNodeVisitor;
-import org.apache.tajo.engine.eval.FieldEval;
+import org.apache.tajo.engine.eval.*;
import org.apache.tajo.engine.json.CoreGsonHelper;
import org.apache.tajo.engine.planner.logical.IndexScanNode;
import org.apache.tajo.engine.planner.logical.ScanNode;
@@ -135,14 +131,14 @@ public class IndexUtil {
case AND:
break;
case EQUAL:
- if( node.getLeftExpr().getType() == Type.FIELD
- && node.getRightExpr().getType() == Type.CONST ) {
+ if( node.getLeftExpr().getType() == EvalType.FIELD
+ && node.getRightExpr().getType() == EvalType.CONST ) {
nodeList.add(node);
}
break;
- case IS:
- if( node.getLeftExpr().getType() == Type.FIELD
- && node.getRightExpr().getType() == Type.CONST) {
+ case IS_NULL:
+ if( node.getLeftExpr().getType() == EvalType.FIELD
+ && node.getRightExpr().getType() == EvalType.CONST) {
nodeList.add(node);
}
}
http://git-wip-us.apache.org/repos/asf/incubator-tajo/blob/49607a54/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 a56841b..559f29b 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
@@ -153,7 +153,7 @@ public class Task {
StoreTableNode store = (StoreTableNode) plan;
this.partitionType = store.getPartitionType();
if (partitionType == PartitionType.RANGE) {
- SortNode sortNode = (SortNode) store.getSubNode();
+ SortNode sortNode = (SortNode) store.getChild();
this.finalSchema = PlannerUtil.sortSpecsToSchema(sortNode.getSortKeys());
this.sortComp = new TupleComparator(finalSchema, sortNode.getSortKeys());
}
@@ -176,7 +176,7 @@ public class Task {
LOG.info("* Fragments (num: " + request.getFragments().size() + ")");
for (Fragment f: request.getFragments()) {
- LOG.info("==> Table Id:" + f.getId() + ", path:" + f.getPath() + "(" + f.getMeta().getStoreType() + "), " +
+ LOG.info("==> Table Id:" + f.getName() + ", path:" + f.getPath() + "(" + f.getMeta().getStoreType() + "), " +
"(start:" + f.getStartOffset() + ", length: " + f.getLength() + ")");
}
LOG.info("* Fetches (total:" + request.getFetches().size() + ") :");
http://git-wip-us.apache.org/repos/asf/incubator-tajo/blob/49607a54/tajo-core/tajo-core-backend/src/test/java/org/apache/tajo/client/TestTajoClient.java
----------------------------------------------------------------------
diff --git a/tajo-core/tajo-core-backend/src/test/java/org/apache/tajo/client/TestTajoClient.java b/tajo-core/tajo-core-backend/src/test/java/org/apache/tajo/client/TestTajoClient.java
index 9f50fe3..fd492be 100644
--- a/tajo-core/tajo-core-backend/src/test/java/org/apache/tajo/client/TestTajoClient.java
+++ b/tajo-core/tajo-core-backend/src/test/java/org/apache/tajo/client/TestTajoClient.java
@@ -197,7 +197,7 @@ public class TestTajoClient {
assertTrue(tajo.existTable(tableName1));
TableDesc desc = tajo.getTableDesc(tableName1);
assertNotNull(desc);
- assertEquals(tableName1, desc.getId());
+ assertEquals(tableName1, desc.getName());
assertTrue(desc.getMeta().getStat().getNumBytes() > 0);
}
}
http://git-wip-us.apache.org/repos/asf/incubator-tajo/blob/49607a54/tajo-core/tajo-core-backend/src/test/java/org/apache/tajo/engine/eval/TestEvalTree.java
----------------------------------------------------------------------
diff --git a/tajo-core/tajo-core-backend/src/test/java/org/apache/tajo/engine/eval/TestEvalTree.java b/tajo-core/tajo-core-backend/src/test/java/org/apache/tajo/engine/eval/TestEvalTree.java
index 7aa60d5..20dea3d 100644
--- a/tajo-core/tajo-core-backend/src/test/java/org/apache/tajo/engine/eval/TestEvalTree.java
+++ b/tajo-core/tajo-core-backend/src/test/java/org/apache/tajo/engine/eval/TestEvalTree.java
@@ -28,7 +28,6 @@ import org.apache.tajo.catalog.proto.CatalogProtos.StoreType;
import org.apache.tajo.common.TajoDataTypes.DataType;
import org.apache.tajo.datum.Datum;
import org.apache.tajo.datum.DatumFactory;
-import org.apache.tajo.engine.eval.EvalNode.Type;
import org.apache.tajo.engine.json.CoreGsonHelper;
import org.apache.tajo.engine.parser.SQLAnalyzer;
import org.apache.tajo.engine.planner.LogicalPlan;
@@ -128,13 +127,19 @@ public class TestEvalTree {
public static Target[] getRawTargets(String query) {
Expr expr = analyzer.parse(query);
LogicalPlan plan = planner.createPlan(expr);
- return plan.getRootBlock().getTargetListManager().getUnEvaluatedTargets();
+ Target [] targets = plan.getRootBlock().getTargetListManager().getUnEvaluatedTargets();
+ for (Target t : targets) {
+ assertJsonSerDer(t.getEvalTree());
+ }
+ return targets;
}
public static EvalNode getRootSelection(String query) {
Expr block = analyzer.parse(query);
LogicalPlan plan = planner.createPlan(block);
- return plan.getRootBlock().getSelectionNode().getQual();
+ EvalNode qual = plan.getRootBlock().getSelectionNode().getQual();
+ assertJsonSerDer(qual);
+ return qual;
}
@Test
@@ -200,7 +205,7 @@ public class TestEvalTree {
schema1.addColumn("table1.id", INT4);
schema1.addColumn("table1.score", INT4);
- BinaryEval expr = new BinaryEval(Type.PLUS, e1, e2);
+ BinaryEval expr = new BinaryEval(EvalType.PLUS, e1, e2);
EvalContext evalCtx = expr.newContext();
assertCloneEqual(expr);
VTuple tuple = new VTuple(2);
@@ -215,7 +220,7 @@ public class TestEvalTree {
public static class MockTrueEval extends EvalNode {
public MockTrueEval() {
- super(Type.CONST);
+ super(EvalType.CONST);
}
@Override
@@ -248,7 +253,7 @@ public class TestEvalTree {
public static class MockFalseExpr extends EvalNode {
public MockFalseExpr() {
- super(Type.CONST);
+ super(EvalType.CONST);
}
@Override
@@ -282,22 +287,22 @@ public class TestEvalTree {
MockTrueEval trueExpr = new MockTrueEval();
MockFalseExpr falseExpr = new MockFalseExpr();
- BinaryEval andExpr = new BinaryEval(Type.AND, trueExpr, trueExpr);
+ BinaryEval andExpr = new BinaryEval(EvalType.AND, trueExpr, trueExpr);
EvalContext evalCtx = andExpr.newContext();
andExpr.eval(evalCtx, null, null);
assertTrue(andExpr.terminate(evalCtx).asBool());
- andExpr = new BinaryEval(Type.AND, falseExpr, trueExpr);
+ andExpr = new BinaryEval(EvalType.AND, falseExpr, trueExpr);
evalCtx = andExpr.newContext();
andExpr.eval(evalCtx, null, null);
assertFalse(andExpr.terminate(evalCtx).asBool());
- andExpr = new BinaryEval(Type.AND, trueExpr, falseExpr);
+ andExpr = new BinaryEval(EvalType.AND, trueExpr, falseExpr);
evalCtx= andExpr.newContext();
andExpr.eval(evalCtx, null, null);
assertFalse(andExpr.terminate(evalCtx).asBool());
- andExpr = new BinaryEval(Type.AND, falseExpr, falseExpr);
+ andExpr = new BinaryEval(EvalType.AND, falseExpr, falseExpr);
evalCtx= andExpr.newContext();
andExpr.eval(evalCtx, null, null);
assertFalse(andExpr.terminate(evalCtx).asBool());
@@ -308,22 +313,22 @@ public class TestEvalTree {
MockTrueEval trueExpr = new MockTrueEval();
MockFalseExpr falseExpr = new MockFalseExpr();
- BinaryEval orExpr = new BinaryEval(Type.OR, trueExpr, trueExpr);
+ BinaryEval orExpr = new BinaryEval(EvalType.OR, trueExpr, trueExpr);
EvalContext evalCtx= orExpr.newContext();
orExpr.eval(evalCtx, null, null);
assertTrue(orExpr.terminate(evalCtx).asBool());
- orExpr = new BinaryEval(Type.OR, falseExpr, trueExpr);
+ orExpr = new BinaryEval(EvalType.OR, falseExpr, trueExpr);
evalCtx= orExpr.newContext();
orExpr.eval(evalCtx, null, null);
assertTrue(orExpr.terminate(evalCtx).asBool());
- orExpr = new BinaryEval(Type.OR, trueExpr, falseExpr);
+ orExpr = new BinaryEval(EvalType.OR, trueExpr, falseExpr);
evalCtx= orExpr.newContext();
orExpr.eval(evalCtx, null, null);
assertTrue(orExpr.terminate(evalCtx).asBool());
- orExpr = new BinaryEval(Type.OR, falseExpr, falseExpr);
+ orExpr = new BinaryEval(EvalType.OR, falseExpr, falseExpr);
evalCtx = orExpr.newContext();
orExpr.eval(evalCtx, null, null);
assertFalse(orExpr.terminate(evalCtx).asBool());
@@ -338,71 +343,71 @@ public class TestEvalTree {
// Constant
e1 = new ConstEval(DatumFactory.createInt4(9));
e2 = new ConstEval(DatumFactory.createInt4(34));
- expr = new BinaryEval(Type.LTH, e1, e2);
+ expr = new BinaryEval(EvalType.LTH, e1, e2);
EvalContext evalCtx = expr.newContext();
expr.eval(evalCtx, null, null);
assertTrue(expr.terminate(evalCtx).asBool());
- expr = new BinaryEval(Type.LEQ, e1, e2);
+ expr = new BinaryEval(EvalType.LEQ, e1, e2);
evalCtx = expr.newContext();
expr.eval(evalCtx, null, null);
assertTrue(expr.terminate(evalCtx).asBool());
- expr = new BinaryEval(Type.LTH, e2, e1);
+ expr = new BinaryEval(EvalType.LTH, e2, e1);
evalCtx = expr.newContext();
expr.eval(evalCtx, null, null);
assertFalse(expr.terminate(evalCtx).asBool());
- expr = new BinaryEval(Type.LEQ, e2, e1);
+ expr = new BinaryEval(EvalType.LEQ, e2, e1);
evalCtx = expr.newContext();
expr.eval(evalCtx, null, null);
assertFalse(expr.terminate(evalCtx).asBool());
- expr = new BinaryEval(Type.GTH, e2, e1);
+ expr = new BinaryEval(EvalType.GTH, e2, e1);
evalCtx = expr.newContext();
expr.eval(evalCtx, null, null);
assertTrue(expr.terminate(evalCtx).asBool());
- expr = new BinaryEval(Type.GEQ, e2, e1);
+ expr = new BinaryEval(EvalType.GEQ, e2, e1);
evalCtx = expr.newContext();
expr.eval(evalCtx, null, null);
assertTrue(expr.terminate(evalCtx).asBool());
- expr = new BinaryEval(Type.GTH, e1, e2);
+ expr = new BinaryEval(EvalType.GTH, e1, e2);
evalCtx = expr.newContext();
expr.eval(evalCtx, null, null);
assertFalse(expr.terminate(evalCtx).asBool());
- expr = new BinaryEval(Type.GEQ, e1, e2);
+ expr = new BinaryEval(EvalType.GEQ, e1, e2);
evalCtx = expr.newContext();
expr.eval(evalCtx, null, null);
assertFalse(expr.terminate(evalCtx).asBool());
- BinaryEval plus = new BinaryEval(Type.PLUS, e1, e2);
- expr = new BinaryEval(Type.LTH, e1, plus);
+ BinaryEval plus = new BinaryEval(EvalType.PLUS, e1, e2);
+ expr = new BinaryEval(EvalType.LTH, e1, plus);
evalCtx = expr.newContext();
expr.eval(evalCtx, null, null);
assertTrue(expr.terminate(evalCtx).asBool());
- expr = new BinaryEval(Type.LEQ, e1, plus);
+ expr = new BinaryEval(EvalType.LEQ, e1, plus);
evalCtx = expr.newContext();
expr.eval(evalCtx, null, null);
assertTrue(expr.terminate(evalCtx).asBool());
- expr = new BinaryEval(Type.LTH, plus, e1);
+ expr = new BinaryEval(EvalType.LTH, plus, e1);
evalCtx = expr.newContext();
expr.eval(evalCtx, null, null);
assertFalse(expr.terminate(evalCtx).asBool());
- expr = new BinaryEval(Type.LEQ, plus, e1);
+ expr = new BinaryEval(EvalType.LEQ, plus, e1);
evalCtx = expr.newContext();
expr.eval(evalCtx, null, null);
assertFalse(expr.terminate(evalCtx).asBool());
- expr = new BinaryEval(Type.GTH, plus, e1);
+ expr = new BinaryEval(EvalType.GTH, plus, e1);
evalCtx = expr.newContext();
expr.eval(evalCtx, null, null);
assertTrue(expr.terminate(evalCtx).asBool());
- expr = new BinaryEval(Type.GEQ, plus, e1);
+ expr = new BinaryEval(EvalType.GEQ, plus, e1);
evalCtx = expr.newContext();
expr.eval(evalCtx, null, null);
assertTrue(expr.terminate(evalCtx).asBool());
- expr = new BinaryEval(Type.GTH, e1, plus);
+ expr = new BinaryEval(EvalType.GTH, e1, plus);
evalCtx = expr.newContext();
expr.eval(evalCtx, null, null);
assertFalse(expr.terminate(evalCtx).asBool());
- expr = new BinaryEval(Type.GEQ, e1, plus);
+ expr = new BinaryEval(EvalType.GEQ, e1, plus);
evalCtx = expr.newContext();
expr.eval(evalCtx, null, null);
assertFalse(expr.terminate(evalCtx).asBool());
@@ -417,7 +422,7 @@ public class TestEvalTree {
// PLUS
e1 = new ConstEval(DatumFactory.createInt4(9));
e2 = new ConstEval(DatumFactory.createInt4(34));
- BinaryEval expr = new BinaryEval(Type.PLUS, e1, e2);
+ BinaryEval expr = new BinaryEval(EvalType.PLUS, e1, e2);
EvalContext evalCtx = expr.newContext();
expr.eval(evalCtx, null, null);
assertEquals(expr.terminate(evalCtx).asInt4(), 43);
@@ -426,7 +431,7 @@ public class TestEvalTree {
// MINUS
e1 = new ConstEval(DatumFactory.createInt4(5));
e2 = new ConstEval(DatumFactory.createInt4(2));
- expr = new BinaryEval(Type.MINUS, e1, e2);
+ expr = new BinaryEval(EvalType.MINUS, e1, e2);
evalCtx = expr.newContext();
expr.eval(evalCtx, null, null);
assertEquals(expr.terminate(evalCtx).asInt4(), 3);
@@ -435,7 +440,7 @@ public class TestEvalTree {
// MULTIPLY
e1 = new ConstEval(DatumFactory.createInt4(5));
e2 = new ConstEval(DatumFactory.createInt4(2));
- expr = new BinaryEval(Type.MULTIPLY, e1, e2);
+ expr = new BinaryEval(EvalType.MULTIPLY, e1, e2);
evalCtx = expr.newContext();
expr.eval(evalCtx, null, null);
assertEquals(expr.terminate(evalCtx).asInt4(), 10);
@@ -444,7 +449,7 @@ public class TestEvalTree {
// DIVIDE
e1 = new ConstEval(DatumFactory.createInt4(10));
e2 = new ConstEval(DatumFactory.createInt4(5));
- expr = new BinaryEval(Type.DIVIDE, e1, e2);
+ expr = new BinaryEval(EvalType.DIVIDE, e1, e2);
evalCtx = expr.newContext();
expr.eval(evalCtx, null, null);
assertEquals(expr.terminate(evalCtx).asInt4(), 2);
@@ -459,10 +464,10 @@ public class TestEvalTree {
// PLUS
e1 = new ConstEval(DatumFactory.createInt4(9));
e2 = new ConstEval(DatumFactory.createInt4(34));
- BinaryEval expr = new BinaryEval(Type.PLUS, e1, e2);
+ BinaryEval expr = new BinaryEval(EvalType.PLUS, e1, e2);
assertEquals(CatalogUtil.newDataTypeWithoutLen(INT4), expr.getValueType()[0]);
- expr = new BinaryEval(Type.LTH, e1, e2);
+ expr = new BinaryEval(EvalType.LTH, e1, e2);
EvalContext evalCtx = expr.newContext();
expr.eval(evalCtx, null, null);
assertTrue(expr.terminate(evalCtx).asBool());
@@ -470,7 +475,7 @@ public class TestEvalTree {
e1 = new ConstEval(DatumFactory.createFloat8(9.3));
e2 = new ConstEval(DatumFactory.createFloat8(34.2));
- expr = new BinaryEval(Type.PLUS, e1, e2);
+ expr = new BinaryEval(EvalType.PLUS, e1, e2);
assertEquals(CatalogUtil.newDataTypeWithoutLen(FLOAT8), expr.getValueType()[0]);
}
@@ -484,23 +489,23 @@ public class TestEvalTree {
e2 = new ConstEval(DatumFactory.createInt4(34));
assertEquals(e1, e2);
- BinaryEval plus1 = new BinaryEval(Type.PLUS, e1, e2);
- BinaryEval plus2 = new BinaryEval(Type.PLUS, e2, e1);
+ BinaryEval plus1 = new BinaryEval(EvalType.PLUS, e1, e2);
+ BinaryEval plus2 = new BinaryEval(EvalType.PLUS, e2, e1);
assertEquals(plus1, plus2);
ConstEval e3 = new ConstEval(DatumFactory.createInt4(29));
- BinaryEval plus3 = new BinaryEval(Type.PLUS, e1, e3);
+ BinaryEval plus3 = new BinaryEval(EvalType.PLUS, e1, e3);
assertFalse(plus1.equals(plus3));
// LTH
ConstEval e4 = new ConstEval(DatumFactory.createInt4(9));
ConstEval e5 = new ConstEval(DatumFactory.createInt4(34));
- BinaryEval compExpr1 = new BinaryEval(Type.LTH, e4, e5);
+ BinaryEval compExpr1 = new BinaryEval(EvalType.LTH, e4, e5);
assertCloneEqual(compExpr1);
ConstEval e6 = new ConstEval(DatumFactory.createInt4(9));
ConstEval e7 = new ConstEval(DatumFactory.createInt4(34));
- BinaryEval compExpr2 = new BinaryEval(Type.LTH, e6, e7);
+ BinaryEval compExpr2 = new BinaryEval(EvalType.LTH, e6, e7);
assertCloneEqual(compExpr2);
assertTrue(compExpr1.equals(compExpr2));
@@ -516,15 +521,15 @@ public class TestEvalTree {
e2 = new ConstEval(DatumFactory.createInt4(5));
assertCloneEqual(e1);
- BinaryEval plus1 = new BinaryEval(Type.PLUS, e1, e2);
+ BinaryEval plus1 = new BinaryEval(EvalType.PLUS, e1, e2);
assertCloneEqual(plus1);
- BinaryEval plus2 = new BinaryEval(Type.PLUS, e2, e1);
+ BinaryEval plus2 = new BinaryEval(EvalType.PLUS, e2, e1);
assertCloneEqual(plus2);
- BinaryEval plus3 = new BinaryEval(Type.PLUS, plus2, plus1);
+ BinaryEval plus3 = new BinaryEval(EvalType.PLUS, plus2, plus1);
assertCloneEqual(plus3);
ConstEval e3 = new ConstEval(DatumFactory.createInt4(29));
- BinaryEval gth = new BinaryEval(Type.GTH, e3, plus3);
+ BinaryEval gth = new BinaryEval(EvalType.GTH, e3, plus3);
assertCloneEqual(gth);
String json = gth.toJson();
@@ -561,7 +566,7 @@ public class TestEvalTree {
// Constant
e1 = new ConstEval(DatumFactory.createInt4(9));
e2 = new ConstEval(DatumFactory.createInt4(34));
- expr = new BinaryEval(Type.LTH, e1, e2);
+ expr = new BinaryEval(EvalType.LTH, e1, e2);
EvalContext evalCtx = expr.newContext();
expr.eval(evalCtx, null, null);
assertTrue(expr.terminate(evalCtx).asBool());
@@ -570,7 +575,7 @@ public class TestEvalTree {
not.eval(evalCtx, null, null);
assertFalse(not.terminate(evalCtx).asBool());
- expr = new BinaryEval(Type.LEQ, e1, e2);
+ expr = new BinaryEval(EvalType.LEQ, e1, e2);
evalCtx = expr.newContext();
expr.eval(evalCtx, null, null);
assertTrue(expr.terminate(evalCtx).asBool());
@@ -579,7 +584,7 @@ public class TestEvalTree {
not.eval(evalCtx, null, null);
assertFalse(not.terminate(evalCtx).asBool());
- expr = new BinaryEval(Type.LTH, e2, e1);
+ expr = new BinaryEval(EvalType.LTH, e2, e1);
evalCtx = expr.newContext();
expr.eval(evalCtx, null, null);
assertFalse(expr.terminate(evalCtx).asBool());
@@ -588,7 +593,7 @@ public class TestEvalTree {
not.eval(evalCtx, null, null);
assertTrue(not.terminate(evalCtx).asBool());
- expr = new BinaryEval(Type.LEQ, e2, e1);
+ expr = new BinaryEval(EvalType.LEQ, e2, e1);
evalCtx = expr.newContext();
expr.eval(evalCtx, null, null);
assertFalse(expr.terminate(evalCtx).asBool());
@@ -671,12 +676,16 @@ public class TestEvalTree {
}
private void assertIsNull(EvalNode isNullEval) {
- assertEquals(Type.IS, isNullEval.getType());
- assertEquals(Type.FIELD, isNullEval.getLeftExpr().getType());
+ assertEquals(EvalType.IS_NULL, isNullEval.getType());
+ assertEquals(EvalType.FIELD, isNullEval.getLeftExpr().getType());
FieldEval left = (FieldEval) isNullEval.getLeftExpr();
assertEquals("name", left.getColumnName());
- assertEquals(Type.CONST, isNullEval.getRightExpr().getType());
- ConstEval constEval = (ConstEval) isNullEval.getRightExpr();
- assertEquals(DatumFactory.createNullDatum(), constEval.getValue());
+ assertEquals(EvalType.CONST, isNullEval.getRightExpr().getType());
+ }
+
+ private static void assertJsonSerDer(EvalNode expr) {
+ String json = expr.toJson();
+ EvalNode fromJson = CoreGsonHelper.fromJson(json, EvalNode.class);
+ assertEquals(expr, fromJson);
}
}
http://git-wip-us.apache.org/repos/asf/incubator-tajo/blob/49607a54/tajo-core/tajo-core-backend/src/test/java/org/apache/tajo/engine/eval/TestEvalTreeUtil.java
----------------------------------------------------------------------
diff --git a/tajo-core/tajo-core-backend/src/test/java/org/apache/tajo/engine/eval/TestEvalTreeUtil.java b/tajo-core/tajo-core-backend/src/test/java/org/apache/tajo/engine/eval/TestEvalTreeUtil.java
index 3638352..1a24ec8 100644
--- a/tajo-core/tajo-core-backend/src/test/java/org/apache/tajo/engine/eval/TestEvalTreeUtil.java
+++ b/tajo-core/tajo-core-backend/src/test/java/org/apache/tajo/engine/eval/TestEvalTreeUtil.java
@@ -27,14 +27,13 @@ import org.apache.tajo.catalog.proto.CatalogProtos.FunctionType;
import org.apache.tajo.catalog.proto.CatalogProtos.StoreType;
import org.apache.tajo.common.TajoDataTypes;
import org.apache.tajo.datum.DatumFactory;
-import org.apache.tajo.engine.eval.EvalNode.Type;
import org.apache.tajo.engine.eval.TestEvalTree.TestSum;
-import org.apache.tajo.engine.planner.LogicalPlanner;
-import org.apache.tajo.engine.planner.Target;
import org.apache.tajo.engine.parser.SQLAnalyzer;
import org.apache.tajo.engine.planner.LogicalPlan;
+import org.apache.tajo.engine.planner.LogicalPlanner;
+import org.apache.tajo.engine.planner.Target;
import org.apache.tajo.engine.planner.logical.EvalExprNode;
-import org.apache.tajo.engine.planner.logical.ExprType;
+import org.apache.tajo.engine.planner.logical.NodeType;
import org.apache.tajo.exception.InternalException;
import org.apache.tajo.master.TajoMaster;
import org.junit.AfterClass;
@@ -98,7 +97,7 @@ public class TestEvalTreeUtil {
public static Target [] getRawTargets(String query) {
Expr expr = analyzer.parse(query);
LogicalPlan plan = planner.createPlan(expr);
- if (plan.getRootBlock().getRoot().getType() == ExprType.EXPRS) {
+ if (plan.getRootBlock().getRoot().getType() == NodeType.EXPRS) {
return ((EvalExprNode)plan.getRootBlock().getRoot()).getExprs();
} else {
return plan.getRootBlock().getTargetListManager().getUnEvaluatedTargets();
@@ -182,14 +181,14 @@ public class TestEvalTreeUtil {
Collection<EvalNode> exprs =
EvalTreeUtil.getContainExpr(targets[0].getEvalTree(), col1);
EvalNode node = exprs.iterator().next();
- assertEquals(Type.LTH, node.getType());
- assertEquals(Type.PLUS, node.getLeftExpr().getType());
+ assertEquals(EvalType.LTH, node.getType());
+ assertEquals(EvalType.PLUS, node.getLeftExpr().getType());
assertEquals(new ConstEval(DatumFactory.createInt4(4)), node.getRightExpr());
Column col2 = new Column("people.age", TajoDataTypes.Type.INT4);
exprs = EvalTreeUtil.getContainExpr(targets[1].getEvalTree(), col2);
node = exprs.iterator().next();
- assertEquals(Type.GTH, node.getType());
+ assertEquals(EvalType.GTH, node.getType());
assertEquals("people.age", node.getLeftExpr().getName());
assertEquals(new ConstEval(DatumFactory.createInt4(5)), node.getRightExpr());
}
@@ -208,14 +207,14 @@ public class TestEvalTreeUtil {
FieldEval field = (FieldEval) first.getLeftExpr();
assertEquals(col1, field.getColumnRef());
- assertEquals(Type.LTH, first.getType());
+ assertEquals(EvalType.LTH, first.getType());
EvalContext firstRCtx = first.getRightExpr().newContext();
first.getRightExpr().eval(firstRCtx, null, null);
assertEquals(10, first.getRightExpr().terminate(firstRCtx).asInt4());
field = (FieldEval) second.getRightExpr();
assertEquals(col1, field.getColumnRef());
- assertEquals(Type.LTH, second.getType());
+ assertEquals(EvalType.LTH, second.getType());
EvalContext secondLCtx = second.getLeftExpr().newContext();
second.getLeftExpr().eval(secondLCtx, null, null);
assertEquals(4, second.getLeftExpr().terminate(secondLCtx).asInt4());
@@ -241,11 +240,11 @@ public class TestEvalTreeUtil {
Target [] targets = getRawTargets(QUERIES[0]);
EvalNode node = AlgebraicUtil.simplify(targets[0].getEvalTree());
EvalContext nodeCtx = node.newContext();
- assertEquals(Type.CONST, node.getType());
+ assertEquals(EvalType.CONST, node.getType());
node.eval(nodeCtx, null, null);
assertEquals(7, node.terminate(nodeCtx).asInt4());
node = AlgebraicUtil.simplify(targets[1].getEvalTree());
- assertEquals(Type.CONST, node.getType());
+ assertEquals(EvalType.CONST, node.getType());
nodeCtx = node.newContext();
node.eval(nodeCtx, null, null);
assertTrue(7.0d == node.terminate(nodeCtx).asFloat8());
@@ -276,7 +275,7 @@ public class TestEvalTreeUtil {
EvalNode node = getRootSelection(QUERIES[3]);
// we expect that score < 3
EvalNode transposed = AlgebraicUtil.transpose(node, col1);
- assertEquals(Type.GTH, transposed.getType());
+ assertEquals(EvalType.GTH, transposed.getType());
FieldEval field = (FieldEval) transposed.getLeftExpr();
assertEquals(col1, field.getColumnRef());
EvalContext evalCtx = transposed.getRightExpr().newContext();
@@ -286,7 +285,7 @@ public class TestEvalTreeUtil {
node = getRootSelection(QUERIES[4]);
// we expect that score < 3
transposed = AlgebraicUtil.transpose(node, col1);
- assertEquals(Type.LTH, transposed.getType());
+ assertEquals(EvalType.LTH, transposed.getType());
field = (FieldEval) transposed.getLeftExpr();
assertEquals(col1, field.getColumnRef());
evalCtx = transposed.getRightExpr().newContext();
http://git-wip-us.apache.org/repos/asf/incubator-tajo/blob/49607a54/tajo-core/tajo-core-backend/src/test/java/org/apache/tajo/engine/plan/global/TestGlobalQueryPlanner.java
----------------------------------------------------------------------
diff --git a/tajo-core/tajo-core-backend/src/test/java/org/apache/tajo/engine/plan/global/TestGlobalQueryPlanner.java b/tajo-core/tajo-core-backend/src/test/java/org/apache/tajo/engine/plan/global/TestGlobalQueryPlanner.java
index cf0d70a..cc75726 100644
--- a/tajo-core/tajo-core-backend/src/test/java/org/apache/tajo/engine/plan/global/TestGlobalQueryPlanner.java
+++ b/tajo-core/tajo-core-backend/src/test/java/org/apache/tajo/engine/plan/global/TestGlobalQueryPlanner.java
@@ -163,8 +163,8 @@ public class TestGlobalQueryPlanner {
assertEquals(PartitionType.LIST, unit.getPartitionType());
LogicalNode plan2 = unit.getPlan();
- assertEquals(ExprType.STORE, plan2.getType());
- assertEquals(ExprType.SCAN, ((StoreTableNode)plan2).getSubNode().getType());
+ assertEquals(NodeType.STORE, plan2.getType());
+ assertEquals(NodeType.SCAN, ((StoreTableNode)plan2).getChild().getType());
}
@Test
@@ -218,15 +218,15 @@ public class TestGlobalQueryPlanner {
ExecutionBlock next, prev;
next = globalPlan.getRoot();
- assertEquals(ExprType.PROJECTION,
- next.getStoreTableNode().getSubNode().getType());
+ assertEquals(NodeType.PROJECTION,
+ next.getStoreTableNode().getChild().getType());
assertTrue(next.hasChildBlock());
assertEquals(PartitionType.LIST, next.getPartitionType());
Iterator<ExecutionBlock> it= next.getChildBlocks().iterator();
prev = it.next();
- assertEquals(ExprType.SORT,
- prev.getStoreTableNode().getSubNode().getType());
+ assertEquals(NodeType.SORT,
+ prev.getStoreTableNode().getChild().getType());
assertTrue(prev.hasChildBlock());
assertEquals(PartitionType.LIST, prev.getPartitionType());
it= prev.getChildBlocks().iterator();
@@ -265,13 +265,13 @@ public class TestGlobalQueryPlanner {
next = globalPlan.getRoot();
assertTrue(next.hasChildBlock());
assertEquals(PartitionType.LIST, next.getPartitionType());
- assertEquals(ExprType.PROJECTION, next.getStoreTableNode().getSubNode().getType());
+ assertEquals(NodeType.PROJECTION, next.getStoreTableNode().getChild().getType());
ScanNode []scans = next.getScanNodes();
assertEquals(1, scans.length);
Iterator<ExecutionBlock> it= next.getChildBlocks().iterator();
prev = it.next();
- assertEquals(ExprType.SORT, prev.getStoreTableNode().getSubNode().getType());
+ assertEquals(NodeType.SORT, prev.getStoreTableNode().getChild().getType());
assertEquals(PartitionType.LIST, prev.getPartitionType());
scans = prev.getScanNodes();
assertEquals(1, scans.length);
@@ -279,7 +279,7 @@ public class TestGlobalQueryPlanner {
// the first phase of the sort
prev = it.next();
- assertEquals(ExprType.SORT, prev.getStoreTableNode().getSubNode().getType());
+ assertEquals(NodeType.SORT, prev.getStoreTableNode().getChild().getType());
assertEquals(scans[0].getInSchema(), prev.getOutputSchema());
assertTrue(prev.hasChildBlock());
assertEquals(PartitionType.RANGE, prev.getPartitionType());
@@ -291,7 +291,7 @@ public class TestGlobalQueryPlanner {
// the second phase of the join
prev = it.next();
- assertEquals(ExprType.JOIN, prev.getStoreTableNode().getSubNode().getType());
+ assertEquals(NodeType.JOIN, prev.getStoreTableNode().getChild().getType());
assertEquals(scans[0].getInSchema(), prev.getOutputSchema());
assertTrue(prev.hasChildBlock());
assertEquals(PartitionType.LIST, prev.getPartitionType());
@@ -303,13 +303,13 @@ public class TestGlobalQueryPlanner {
// the first phase of the join
prev = it.next();
- assertEquals(ExprType.SCAN, prev.getStoreTableNode().getSubNode().getType());
+ assertEquals(NodeType.SCAN, prev.getStoreTableNode().getChild().getType());
assertFalse(prev.hasChildBlock());
assertEquals(PartitionType.HASH, prev.getPartitionType());
assertEquals(1, prev.getScanNodes().length);
prev = it.next();
- assertEquals(ExprType.SCAN, prev.getStoreTableNode().getSubNode().getType());
+ assertEquals(NodeType.SCAN, prev.getStoreTableNode().getChild().getType());
assertFalse(prev.hasChildBlock());
assertEquals(PartitionType.HASH, prev.getPartitionType());
assertEquals(1, prev.getScanNodes().length);
@@ -327,7 +327,7 @@ public class TestGlobalQueryPlanner {
ExecutionBlock unit = globalPlan.getRoot();
StoreTableNode store = unit.getStoreTableNode();
- assertEquals(ExprType.JOIN, store.getSubNode().getType());
+ assertEquals(NodeType.JOIN, store.getChild().getType());
assertTrue(unit.hasChildBlock());
ScanNode [] scans = unit.getScanNodes();
assertEquals(2, scans.length);
@@ -335,7 +335,7 @@ public class TestGlobalQueryPlanner {
for (ScanNode scan : scans) {
prev = unit.getChildBlock(scan);
store = prev.getStoreTableNode();
- assertEquals(ExprType.SCAN, store.getSubNode().getType());
+ assertEquals(NodeType.SCAN, store.getChild().getType());
}
}
@@ -350,32 +350,32 @@ public class TestGlobalQueryPlanner {
ExecutionBlock unit = globalPlan.getRoot();
StoreTableNode store = unit.getStoreTableNode();
- assertEquals(ExprType.PROJECTION, store.getSubNode().getType());
+ assertEquals(NodeType.PROJECTION, store.getChild().getType());
ScanNode[] scans = unit.getScanNodes();
assertEquals(1, scans.length);
unit = unit.getChildBlock(scans[0]);
store = unit.getStoreTableNode();
- assertEquals(ExprType.UNION, store.getSubNode().getType());
- UnionNode union = (UnionNode) store.getSubNode();
- assertEquals(ExprType.SCAN, union.getOuterNode().getType());
- assertEquals(ExprType.UNION, union.getInnerNode().getType());
- union = (UnionNode) union.getInnerNode();
- assertEquals(ExprType.SCAN, union.getOuterNode().getType());
- assertEquals(ExprType.UNION, union.getInnerNode().getType());
- union = (UnionNode) union.getInnerNode();
- assertEquals(ExprType.SCAN, union.getOuterNode().getType());
- assertEquals(ExprType.SCAN, union.getInnerNode().getType());
+ assertEquals(NodeType.UNION, store.getChild().getType());
+ UnionNode union = (UnionNode) store.getChild();
+ assertEquals(NodeType.SCAN, union.getLeftChild().getType());
+ assertEquals(NodeType.UNION, union.getRightChild().getType());
+ union = (UnionNode) union.getRightChild();
+ assertEquals(NodeType.SCAN, union.getLeftChild().getType());
+ assertEquals(NodeType.UNION, union.getRightChild().getType());
+ union = (UnionNode) union.getRightChild();
+ assertEquals(NodeType.SCAN, union.getLeftChild().getType());
+ assertEquals(NodeType.SCAN, union.getRightChild().getType());
assertTrue(unit.hasChildBlock());
String tableId = "";
for (ScanNode scan : unit.getScanNodes()) {
ExecutionBlock prev = unit.getChildBlock(scan);
store = prev.getStoreTableNode();
- assertEquals(ExprType.GROUP_BY, store.getSubNode().getType());
- GroupbyNode groupby = (GroupbyNode) store.getSubNode();
- assertEquals(ExprType.SCAN, groupby.getSubNode().getType());
+ assertEquals(NodeType.GROUP_BY, store.getChild().getType());
+ GroupbyNode groupby = (GroupbyNode) store.getChild();
+ assertEquals(NodeType.SCAN, groupby.getChild().getType());
if (tableId.equals("")) {
tableId = store.getTableName();
} else {
@@ -384,9 +384,9 @@ public class TestGlobalQueryPlanner {
assertEquals(1, prev.getScanNodes().length);
prev = prev.getChildBlock(prev.getScanNodes()[0]);
store = prev.getStoreTableNode();
- assertEquals(ExprType.GROUP_BY, store.getSubNode().getType());
- groupby = (GroupbyNode) store.getSubNode();
- assertEquals(ExprType.SCAN, groupby.getSubNode().getType());
+ assertEquals(NodeType.GROUP_BY, store.getChild().getType());
+ groupby = (GroupbyNode) store.getChild();
+ assertEquals(NodeType.SCAN, groupby.getChild().getType());
}
}
}