Repository: tajo Updated Branches: refs/heads/master e296a0d1f -> 65283b541
TAJO-1787: Remove unused and legacy exceptions. Closes #702 Project: http://git-wip-us.apache.org/repos/asf/tajo/repo Commit: http://git-wip-us.apache.org/repos/asf/tajo/commit/65283b54 Tree: http://git-wip-us.apache.org/repos/asf/tajo/tree/65283b54 Diff: http://git-wip-us.apache.org/repos/asf/tajo/diff/65283b54 Branch: refs/heads/master Commit: 65283b541b7bd4779cdf9b32cc794f24c3123adb Parents: e296a0d Author: Hyunsik Choi <[email protected]> Authored: Thu Aug 20 23:15:52 2015 +0900 Committer: Hyunsik Choi <[email protected]> Committed: Thu Aug 20 23:15:52 2015 +0900 ---------------------------------------------------------------------- CHANGES | 2 + .../apache/tajo/engine/eval/ExprTestBase.java | 1 - .../global/builder/DistinctGroupbyBuilder.java | 1 - .../global/rewriter/GlobalPlanRewriteRule.java | 1 - .../rewriter/rules/BroadcastJoinRule.java | 63 +++++++++++++------- .../rewriter/rules/GlobalPlanRewriteUtil.java | 40 +++---------- .../planner/physical/SortIntersectExec.java | 5 +- .../tajo/engine/planner/physical/UnionExec.java | 5 +- .../org/apache/tajo/master/GlobalEngine.java | 4 +- .../exec/ExplainPlanPreprocessorForTest.java | 1 - .../NonForwardQueryResultSystemScanner.java | 4 +- .../apache/tajo/master/exec/QueryExecutor.java | 17 +++--- .../apache/tajo/querymaster/Repartitioner.java | 7 +-- .../tajo/plan/IllegalQueryStatusException.java | 38 ------------ .../apache/tajo/plan/InvalidQueryException.java | 35 ----------- .../org/apache/tajo/plan/PlanningException.java | 30 ---------- .../apache/tajo/plan/expr/AlgebraicUtil.java | 7 +-- .../GreedyHeuristicJoinOrderAlgorithm.java | 3 - .../tajo/plan/joinorder/JoinOrderAlgorithm.java | 6 -- .../tajo/plan/nameresolver/NameResolver.java | 4 -- .../plan/rewrite/rules/FilterPushDownRule.java | 3 +- .../org/apache/tajo/plan/util/PlannerUtil.java | 6 +- .../tajo/plan/verifier/VerifyException.java | 27 --------- 23 files changed, 72 insertions(+), 238 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/tajo/blob/65283b54/CHANGES ---------------------------------------------------------------------- diff --git a/CHANGES b/CHANGES index d7baf63..1f4db9f 100644 --- a/CHANGES +++ b/CHANGES @@ -515,6 +515,8 @@ Release 0.11.0 - unreleased SUB TASKS + TAJO-1787: Remove unused and legacy exceptions. (hyunsik) + TAJO-1758: Some TajoRuntimeException should be restored as TajoException in client side. (hyunsik) http://git-wip-us.apache.org/repos/asf/tajo/blob/65283b54/tajo-core-tests/src/test/java/org/apache/tajo/engine/eval/ExprTestBase.java ---------------------------------------------------------------------- diff --git a/tajo-core-tests/src/test/java/org/apache/tajo/engine/eval/ExprTestBase.java b/tajo-core-tests/src/test/java/org/apache/tajo/engine/eval/ExprTestBase.java index f2b6477..1705d2b 100644 --- a/tajo-core-tests/src/test/java/org/apache/tajo/engine/eval/ExprTestBase.java +++ b/tajo-core-tests/src/test/java/org/apache/tajo/engine/eval/ExprTestBase.java @@ -129,7 +129,6 @@ public class ExprTestBase { * @param query a query for execution * @param condition this parameter means whether it is for success case or is not for failure case. * @return - * @throws PlanningException */ private static Target[] getRawTargets(QueryContext context, String query, boolean condition) throws TajoException, InvalidStatementException { http://git-wip-us.apache.org/repos/asf/tajo/blob/65283b54/tajo-core/src/main/java/org/apache/tajo/engine/planner/global/builder/DistinctGroupbyBuilder.java ---------------------------------------------------------------------- diff --git a/tajo-core/src/main/java/org/apache/tajo/engine/planner/global/builder/DistinctGroupbyBuilder.java b/tajo-core/src/main/java/org/apache/tajo/engine/planner/global/builder/DistinctGroupbyBuilder.java index 2c88fdb..6fbecc1 100644 --- a/tajo-core/src/main/java/org/apache/tajo/engine/planner/global/builder/DistinctGroupbyBuilder.java +++ b/tajo-core/src/main/java/org/apache/tajo/engine/planner/global/builder/DistinctGroupbyBuilder.java @@ -36,7 +36,6 @@ import org.apache.tajo.plan.serder.PlanProto.DistinctGroupbyEnforcer.MultipleAgg import org.apache.tajo.plan.serder.PlanProto.DistinctGroupbyEnforcer.SortSpecArray; import org.apache.tajo.plan.LogicalPlan; import org.apache.tajo.plan.util.PlannerUtil; -import org.apache.tajo.plan.PlanningException; import org.apache.tajo.plan.Target; import org.apache.tajo.plan.expr.AggregationFunctionCallEval; import org.apache.tajo.plan.expr.EvalNode; http://git-wip-us.apache.org/repos/asf/tajo/blob/65283b54/tajo-core/src/main/java/org/apache/tajo/engine/planner/global/rewriter/GlobalPlanRewriteRule.java ---------------------------------------------------------------------- diff --git a/tajo-core/src/main/java/org/apache/tajo/engine/planner/global/rewriter/GlobalPlanRewriteRule.java b/tajo-core/src/main/java/org/apache/tajo/engine/planner/global/rewriter/GlobalPlanRewriteRule.java index 3a76c12..f681d2e 100644 --- a/tajo-core/src/main/java/org/apache/tajo/engine/planner/global/rewriter/GlobalPlanRewriteRule.java +++ b/tajo-core/src/main/java/org/apache/tajo/engine/planner/global/rewriter/GlobalPlanRewriteRule.java @@ -21,7 +21,6 @@ package org.apache.tajo.engine.planner.global.rewriter; import org.apache.tajo.OverridableConf; import org.apache.tajo.engine.planner.global.MasterPlan; import org.apache.tajo.exception.TajoException; -import org.apache.tajo.plan.PlanningException; /** * A rewrite rule for global plans http://git-wip-us.apache.org/repos/asf/tajo/blob/65283b54/tajo-core/src/main/java/org/apache/tajo/engine/planner/global/rewriter/rules/BroadcastJoinRule.java ---------------------------------------------------------------------- diff --git a/tajo-core/src/main/java/org/apache/tajo/engine/planner/global/rewriter/rules/BroadcastJoinRule.java b/tajo-core/src/main/java/org/apache/tajo/engine/planner/global/rewriter/rules/BroadcastJoinRule.java index 12c3e73..6f7b4c9 100644 --- a/tajo-core/src/main/java/org/apache/tajo/engine/planner/global/rewriter/rules/BroadcastJoinRule.java +++ b/tajo-core/src/main/java/org/apache/tajo/engine/planner/global/rewriter/rules/BroadcastJoinRule.java @@ -26,8 +26,8 @@ import org.apache.tajo.engine.planner.global.GlobalPlanner; import org.apache.tajo.engine.planner.global.MasterPlan; import org.apache.tajo.engine.planner.global.rewriter.GlobalPlanRewriteRule; import org.apache.tajo.exception.TajoException; +import org.apache.tajo.exception.TajoInternalError; import org.apache.tajo.plan.LogicalPlan; -import org.apache.tajo.plan.PlanningException; import org.apache.tajo.plan.logical.*; import org.apache.tajo.plan.util.PlannerUtil; import org.apache.tajo.util.TUtil; @@ -181,7 +181,7 @@ public class BroadcastJoinRule implements GlobalPlanRewriteRule { if (fullyBroadcastable && current.getScanNodes().length == 1) { try { updateScanOfParentAsBroadcastable(plan, current); - } catch (PlanningException e) { + } catch (NoScanNodeForChildEbException e) { // This case is when the current has two or more inputs via union, and simply ignored. } } @@ -199,12 +199,8 @@ public class BroadcastJoinRule implements GlobalPlanRewriteRule { if (current.hasBroadcastRelation()) { // The current execution block and its every child are able to be merged. for (ExecutionBlock child : childs) { - try { - addUnionNodeIfNecessary(unionScanMap, plan, child, current); - mergeTwoPhaseJoin(plan, child, current); - } catch (PlanningException e) { - throw new RuntimeException(e); - } + addUnionNodeIfNecessary(unionScanMap, plan, child, current); + mergeTwoPhaseJoin(plan, child, current); } checkTotalSizeOfBroadcastableRelations(current); @@ -212,11 +208,7 @@ public class BroadcastJoinRule implements GlobalPlanRewriteRule { // We assume that if every input of an execution block is broadcastable, // the output of the execution block is also broadcastable. if (!current.isPreservedRow() && isFullyBroadcastable(current)) { - try { - updateScanOfParentAsBroadcastable(plan, current); - } catch (PlanningException e) { - throw new RuntimeException(e); - } + updateScanOfParentAsBroadcastable(plan, current); } } } else { @@ -261,10 +253,10 @@ public class BroadcastJoinRule implements GlobalPlanRewriteRule { } } - private void updateScanOfParentAsBroadcastable(MasterPlan plan, ExecutionBlock current) throws PlanningException { + private void updateScanOfParentAsBroadcastable(MasterPlan plan, ExecutionBlock current) { ExecutionBlock parent = plan.getParent(current); if (parent != null && !plan.isTerminal(parent)) { - ScanNode scanForCurrent = GlobalPlanRewriteUtil.findScanForChildEb(current, parent); + ScanNode scanForCurrent = findScanForChildEb(current, parent); parent.addBroadcastRelation(scanForCurrent); } } @@ -277,9 +269,8 @@ public class BroadcastJoinRule implements GlobalPlanRewriteRule { * @param parent parent block who has join nodes * @return */ - private ExecutionBlock mergeTwoPhaseJoin(MasterPlan plan, ExecutionBlock child, ExecutionBlock parent) - throws PlanningException { - ScanNode scanForChild = GlobalPlanRewriteUtil.findScanForChildEb(child, parent); + private ExecutionBlock mergeTwoPhaseJoin(MasterPlan plan, ExecutionBlock child, ExecutionBlock parent) { + ScanNode scanForChild = findScanForChildEb(child, parent); parentFinder.set(scanForChild); parentFinder.find(parent.getPlan()); @@ -301,8 +292,7 @@ public class BroadcastJoinRule implements GlobalPlanRewriteRule { } private void addUnionNodeIfNecessary(Map<ExecutionBlockId, ExecutionBlockId> unionScanMap, MasterPlan plan, - ExecutionBlock child, ExecutionBlock current) - throws PlanningException { + ExecutionBlock child, ExecutionBlock current) { if (unionScanMap != null) { List<ExecutionBlockId> unionScans = TUtil.newList(); ExecutionBlockId representativeId = null; @@ -326,14 +316,15 @@ public class BroadcastJoinRule implements GlobalPlanRewriteRule { // left must not be null UnionNode unionNode = plan.getLogicalPlan().createNode(UnionNode.class); unionNode.setLeftChild(left); - unionNode.setRightChild(GlobalPlanner.buildInputExecutor(plan.getLogicalPlan(), plan.getChannel(unionScans.get(i), current.getId()))); + unionNode.setRightChild(GlobalPlanner.buildInputExecutor(plan.getLogicalPlan(), + plan.getChannel(unionScans.get(i), current.getId()))); unionNode.setInSchema(left.getOutSchema()); unionNode.setOutSchema(left.getOutSchema()); topUnion = unionNode; left = unionNode; } - ScanNode scanForChild = GlobalPlanRewriteUtil.findScanForChildEb(plan.getExecBlock(representativeId), current); + ScanNode scanForChild = findScanForChildEb(plan.getExecBlock(representativeId), current); PlannerUtil.replaceNode(plan.getLogicalPlan(), current.getPlan(), scanForChild, topUnion); current.getUnionScanMap().clear(); @@ -346,4 +337,32 @@ public class BroadcastJoinRule implements GlobalPlanRewriteRule { private static boolean isFullyBroadcastable(ExecutionBlock block) { return block.getBroadcastRelations().size() == block.getScanNodes().length; } + + /** + * Find a scan node in the plan of the parent EB corresponding to the output of the child EB. + * + * @param child + * @param parent + * @return ScanNode + */ + private static ScanNode findScanForChildEb(ExecutionBlock child, ExecutionBlock parent) { + ScanNode scanForChild = null; + for (ScanNode scanNode : parent.getScanNodes()) { + if (scanNode.getTableName().equals(child.getId().toString())) { + scanForChild = scanNode; + break; + } + } + if (scanForChild == null) { + throw new NoScanNodeForChildEbException( + "cannot find any scan nodes for " + child.getId() + " in " + parent.getId()); + } + return scanForChild; + } + + private static class NoScanNodeForChildEbException extends RuntimeException { + NoScanNodeForChildEbException(String message) { + super(message); + } + } } http://git-wip-us.apache.org/repos/asf/tajo/blob/65283b54/tajo-core/src/main/java/org/apache/tajo/engine/planner/global/rewriter/rules/GlobalPlanRewriteUtil.java ---------------------------------------------------------------------- diff --git a/tajo-core/src/main/java/org/apache/tajo/engine/planner/global/rewriter/rules/GlobalPlanRewriteUtil.java b/tajo-core/src/main/java/org/apache/tajo/engine/planner/global/rewriter/rules/GlobalPlanRewriteUtil.java index cc98300..b14687d 100644 --- a/tajo-core/src/main/java/org/apache/tajo/engine/planner/global/rewriter/rules/GlobalPlanRewriteUtil.java +++ b/tajo-core/src/main/java/org/apache/tajo/engine/planner/global/rewriter/rules/GlobalPlanRewriteUtil.java @@ -21,7 +21,7 @@ package org.apache.tajo.engine.planner.global.rewriter.rules; import org.apache.tajo.engine.planner.global.DataChannel; import org.apache.tajo.engine.planner.global.ExecutionBlock; import org.apache.tajo.engine.planner.global.MasterPlan; -import org.apache.tajo.plan.PlanningException; +import org.apache.tajo.exception.TajoInternalError; import org.apache.tajo.plan.logical.*; import java.util.List; @@ -71,10 +71,8 @@ public class GlobalPlanRewriteUtil { * @param newChild * @param originalChild * @param parent - * @throws PlanningException */ - public static void replaceChild(LogicalNode newChild, ScanNode originalChild, LogicalNode parent) - throws PlanningException { + public static void replaceChild(LogicalNode newChild, ScanNode originalChild, LogicalNode parent) { if (parent instanceof UnaryNode) { ((UnaryNode) parent).setChild(newChild); } else if (parent instanceof BinaryNode) { @@ -84,36 +82,14 @@ public class GlobalPlanRewriteUtil { } else if (binary.getRightChild().equals(originalChild)) { binary.setRightChild(newChild); } else { - throw new PlanningException(originalChild.getPID() + " is not a child of " + parent.getPID()); + throw new TajoInternalError(originalChild.getPID() + " is not a child of " + parent.getPID()); } } else { - throw new PlanningException(parent.getPID() + " seems to not have any children"); + throw new TajoInternalError(parent.getPID() + " seems to not have any children"); } } /** - * Find a scan node in the plan of the parent EB corresponding to the output of the child EB. - * - * @param child - * @param parent - * @return - * @throws PlanningException - */ - public static ScanNode findScanForChildEb(ExecutionBlock child, ExecutionBlock parent) throws PlanningException { - ScanNode scanForChild = null; - for (ScanNode scanNode : parent.getScanNodes()) { - if (scanNode.getTableName().equals(child.getId().toString())) { - scanForChild = scanNode; - break; - } - } - if (scanForChild == null) { - throw new PlanningException("Cannot find any scan nodes for " + child.getId() + " in " + parent.getId()); - } - return scanForChild; - } - - /** * Get a volume of a table of a partitioned table * @param scanNode ScanNode corresponding to a table * @return table volume (bytes) @@ -137,7 +113,7 @@ public class GlobalPlanRewriteUtil { /** * It calculates the total volume of all descendent relation nodes. */ - public static long computeDescendentVolume(LogicalNode node) throws PlanningException { + public static long computeDescendentVolume(LogicalNode node) { if (node instanceof RelationNode) { switch (node.getType()) { @@ -176,7 +152,7 @@ public class GlobalPlanRewriteUtil { return computeDescendentVolume(binaryNode.getLeftChild()) + computeDescendentVolume(binaryNode.getRightChild()); } - throw new PlanningException("Invalid State"); + throw new TajoInternalError("invalid state"); } public static class ParentFinder implements LogicalNodeVisitor { @@ -192,9 +168,9 @@ public class GlobalPlanRewriteUtil { this.visit(root); } - public LogicalNode getFound() throws PlanningException { + public LogicalNode getFound() { if (found == null) { - throw new PlanningException("Cannot find the parent of " + target.getPID()); + throw new TajoInternalError("cannot find the parent of " + target.getPID()); } return this.found; } http://git-wip-us.apache.org/repos/asf/tajo/blob/65283b54/tajo-core/src/main/java/org/apache/tajo/engine/planner/physical/SortIntersectExec.java ---------------------------------------------------------------------- diff --git a/tajo-core/src/main/java/org/apache/tajo/engine/planner/physical/SortIntersectExec.java b/tajo-core/src/main/java/org/apache/tajo/engine/planner/physical/SortIntersectExec.java index db77f85..1d38d45 100644 --- a/tajo-core/src/main/java/org/apache/tajo/engine/planner/physical/SortIntersectExec.java +++ b/tajo-core/src/main/java/org/apache/tajo/engine/planner/physical/SortIntersectExec.java @@ -21,7 +21,7 @@ package org.apache.tajo.engine.planner.physical; import org.apache.tajo.catalog.CatalogUtil; import org.apache.tajo.catalog.SchemaUtil; import org.apache.tajo.common.TajoDataTypes; -import org.apache.tajo.plan.InvalidQueryException; +import org.apache.tajo.exception.TajoInternalError; import org.apache.tajo.storage.Tuple; import org.apache.tajo.worker.TaskAttemptContext; @@ -37,8 +37,7 @@ public class SortIntersectExec extends BinaryPhysicalExec { TajoDataTypes.DataType[] leftTypes = SchemaUtil.toDataTypes(left.getSchema()); TajoDataTypes.DataType[] rightTypes = SchemaUtil.toDataTypes(right.getSchema()); if (!CatalogUtil.isMatchedFunction(Arrays.asList(leftTypes), Arrays.asList(rightTypes))) { - throw new InvalidQueryException( - "The both schemas are not compatible"); + throw new TajoInternalError("the both schemas are not compatible"); } comparator = new SetTupleComparator(left.getSchema(), right.getSchema()); this.isDistinct = isDistinct; http://git-wip-us.apache.org/repos/asf/tajo/blob/65283b54/tajo-core/src/main/java/org/apache/tajo/engine/planner/physical/UnionExec.java ---------------------------------------------------------------------- diff --git a/tajo-core/src/main/java/org/apache/tajo/engine/planner/physical/UnionExec.java b/tajo-core/src/main/java/org/apache/tajo/engine/planner/physical/UnionExec.java index 0383ae7..9adca9a 100644 --- a/tajo-core/src/main/java/org/apache/tajo/engine/planner/physical/UnionExec.java +++ b/tajo-core/src/main/java/org/apache/tajo/engine/planner/physical/UnionExec.java @@ -21,8 +21,8 @@ */ package org.apache.tajo.engine.planner.physical; +import org.apache.tajo.exception.TajoInternalError; import org.apache.tajo.worker.TaskAttemptContext; -import org.apache.tajo.plan.InvalidQueryException; import org.apache.tajo.storage.Tuple; import java.io.IOException; @@ -34,8 +34,7 @@ public class UnionExec extends BinaryPhysicalExec { public UnionExec(TaskAttemptContext context, PhysicalExec outer, PhysicalExec inner) { super(context, outer.getSchema(), inner.getSchema(), outer, inner); if (!outer.getSchema().equals(inner.getSchema())) { - throw new InvalidQueryException( - "The both schemas are not same"); + throw new TajoInternalError("the both schemas are not same"); } } http://git-wip-us.apache.org/repos/asf/tajo/blob/65283b54/tajo-core/src/main/java/org/apache/tajo/master/GlobalEngine.java ---------------------------------------------------------------------- diff --git a/tajo-core/src/main/java/org/apache/tajo/master/GlobalEngine.java b/tajo-core/src/main/java/org/apache/tajo/master/GlobalEngine.java index 11bbe33..b6dc652 100644 --- a/tajo-core/src/main/java/org/apache/tajo/master/GlobalEngine.java +++ b/tajo-core/src/main/java/org/apache/tajo/master/GlobalEngine.java @@ -36,13 +36,12 @@ import org.apache.tajo.catalog.Schema; import org.apache.tajo.catalog.TableDesc; import org.apache.tajo.conf.TajoConf; import org.apache.tajo.engine.parser.SQLAnalyzer; -import org.apache.tajo.exception.*; import org.apache.tajo.engine.query.QueryContext; +import org.apache.tajo.exception.*; import org.apache.tajo.master.TajoMaster.MasterContext; import org.apache.tajo.master.exec.DDLExecutor; import org.apache.tajo.master.exec.QueryExecutor; import org.apache.tajo.metrics.Master; -import org.apache.tajo.plan.IllegalQueryStatusException; import org.apache.tajo.plan.LogicalOptimizer; import org.apache.tajo.plan.LogicalPlan; import org.apache.tajo.plan.LogicalPlanner; @@ -58,7 +57,6 @@ import org.apache.tajo.session.Session; import org.apache.tajo.storage.TablespaceManager; import org.apache.tajo.util.CommonTestingUtil; -import java.io.IOException; import java.sql.SQLException; import java.util.concurrent.ExecutionException; import java.util.concurrent.TimeUnit; http://git-wip-us.apache.org/repos/asf/tajo/blob/65283b54/tajo-core/src/main/java/org/apache/tajo/master/exec/ExplainPlanPreprocessorForTest.java ---------------------------------------------------------------------- diff --git a/tajo-core/src/main/java/org/apache/tajo/master/exec/ExplainPlanPreprocessorForTest.java b/tajo-core/src/main/java/org/apache/tajo/master/exec/ExplainPlanPreprocessorForTest.java index b7b48ba..0c83206 100644 --- a/tajo-core/src/main/java/org/apache/tajo/master/exec/ExplainPlanPreprocessorForTest.java +++ b/tajo-core/src/main/java/org/apache/tajo/master/exec/ExplainPlanPreprocessorForTest.java @@ -23,7 +23,6 @@ import org.apache.tajo.catalog.Column; import org.apache.tajo.catalog.Schema; import org.apache.tajo.exception.TajoException; import org.apache.tajo.plan.LogicalPlan; -import org.apache.tajo.plan.PlanningException; import org.apache.tajo.plan.Target; import org.apache.tajo.plan.expr.AlgebraicUtil; import org.apache.tajo.plan.expr.EvalNode; http://git-wip-us.apache.org/repos/asf/tajo/blob/65283b54/tajo-core/src/main/java/org/apache/tajo/master/exec/NonForwardQueryResultSystemScanner.java ---------------------------------------------------------------------- diff --git a/tajo-core/src/main/java/org/apache/tajo/master/exec/NonForwardQueryResultSystemScanner.java b/tajo-core/src/main/java/org/apache/tajo/master/exec/NonForwardQueryResultSystemScanner.java index b348265..e176818 100644 --- a/tajo-core/src/main/java/org/apache/tajo/master/exec/NonForwardQueryResultSystemScanner.java +++ b/tajo-core/src/main/java/org/apache/tajo/master/exec/NonForwardQueryResultSystemScanner.java @@ -48,9 +48,7 @@ import org.apache.tajo.exception.TajoException; import org.apache.tajo.exception.TajoInternalError; import org.apache.tajo.master.TajoMaster.MasterContext; import org.apache.tajo.master.rm.NodeStatus; -import org.apache.tajo.plan.InvalidQueryException; import org.apache.tajo.plan.LogicalPlan; -import org.apache.tajo.plan.PlanningException; import org.apache.tajo.plan.expr.EvalNode; import org.apache.tajo.plan.logical.IndexScanNode; import org.apache.tajo.plan.logical.LogicalNode; @@ -121,7 +119,7 @@ public class NonForwardQueryResultSystemScanner implements NonForwardQueryResult } if (leafBlock == null) { - throw new InvalidQueryException("Global planner could not find any leaf block."); + throw new TajoInternalError("global planner could not find any leaf block."); } taskContext = new TaskAttemptContext(queryContext, null, http://git-wip-us.apache.org/repos/asf/tajo/blob/65283b54/tajo-core/src/main/java/org/apache/tajo/master/exec/QueryExecutor.java ---------------------------------------------------------------------- diff --git a/tajo-core/src/main/java/org/apache/tajo/master/exec/QueryExecutor.java b/tajo-core/src/main/java/org/apache/tajo/master/exec/QueryExecutor.java index bd5d696..207f91b 100644 --- a/tajo-core/src/main/java/org/apache/tajo/master/exec/QueryExecutor.java +++ b/tajo-core/src/main/java/org/apache/tajo/master/exec/QueryExecutor.java @@ -24,9 +24,11 @@ import org.apache.commons.logging.LogFactory; import org.apache.hadoop.fs.FileStatus; import org.apache.hadoop.fs.FileSystem; import org.apache.hadoop.fs.Path; -import org.apache.tajo.*; +import org.apache.tajo.BuiltinStorages; +import org.apache.tajo.QueryIdFactory; +import org.apache.tajo.SessionVars; +import org.apache.tajo.TajoConstants; import org.apache.tajo.catalog.*; -import org.apache.tajo.exception.DuplicateIndexException; import org.apache.tajo.catalog.proto.CatalogProtos; import org.apache.tajo.catalog.statistics.TableStats; import org.apache.tajo.common.TajoDataTypes; @@ -37,6 +39,9 @@ import org.apache.tajo.engine.planner.global.MasterPlan; import org.apache.tajo.engine.planner.physical.EvalExprExec; import org.apache.tajo.engine.planner.physical.InsertRowsExec; import org.apache.tajo.engine.query.QueryContext; +import org.apache.tajo.exception.DuplicateIndexException; +import org.apache.tajo.exception.TajoInternalError; +import org.apache.tajo.exception.UnsupportedException; import org.apache.tajo.ipc.ClientProtos.SerializedResultSet; import org.apache.tajo.ipc.ClientProtos.SubmitQueryResponse; import org.apache.tajo.ipc.ClientProtos.SubmitQueryResponse.ResultType; @@ -47,7 +52,6 @@ import org.apache.tajo.master.exec.prehook.CreateTableHook; import org.apache.tajo.master.exec.prehook.DistributedQueryHookManager; import org.apache.tajo.master.exec.prehook.InsertIntoHook; import org.apache.tajo.plan.LogicalPlan; -import org.apache.tajo.plan.PlanningException; import org.apache.tajo.plan.Target; import org.apache.tajo.plan.expr.EvalContext; import org.apache.tajo.plan.expr.EvalNode; @@ -56,7 +60,6 @@ import org.apache.tajo.plan.function.python.PythonScriptEngine; import org.apache.tajo.plan.function.python.TajoScriptEngine; import org.apache.tajo.plan.logical.*; import org.apache.tajo.plan.util.PlannerUtil; -import org.apache.tajo.plan.verifier.VerifyException; import org.apache.tajo.session.Session; import org.apache.tajo.storage.*; import org.apache.tajo.util.ProtoUtil; @@ -287,7 +290,7 @@ public class QueryExecutor { EvalContext evalContext = new EvalContext(); Target[] targets = plan.getRootBlock().getRawTargets(); if (targets == null) { - throw new PlanningException("No targets"); + throw new TajoInternalError("no targets"); } try { // start script executor @@ -501,8 +504,8 @@ public class QueryExecutor { FormatProperty formatProperty = space.getFormatProperty(tableDesc.getMeta()); if (!formatProperty.isInsertable()) { - throw new VerifyException( - String.format("%s tablespace does not allow INSERT operation.", tableDesc.getUri().toString())); + throw new UnsupportedException( + String.format("INSERT operation on %s tablespace", tableDesc.getUri().toString())); } space.prepareTable(rootNode.getChild()); http://git-wip-us.apache.org/repos/asf/tajo/blob/65283b54/tajo-core/src/main/java/org/apache/tajo/querymaster/Repartitioner.java ---------------------------------------------------------------------- diff --git a/tajo-core/src/main/java/org/apache/tajo/querymaster/Repartitioner.java b/tajo-core/src/main/java/org/apache/tajo/querymaster/Repartitioner.java index 53f5504..0d5880e 100644 --- a/tajo-core/src/main/java/org/apache/tajo/querymaster/Repartitioner.java +++ b/tajo-core/src/main/java/org/apache/tajo/querymaster/Repartitioner.java @@ -42,7 +42,6 @@ import org.apache.tajo.engine.utils.TupleUtil; import org.apache.tajo.exception.TajoException; import org.apache.tajo.exception.TajoInternalError; import org.apache.tajo.exception.UndefinedTableException; -import org.apache.tajo.plan.PlanningException; import org.apache.tajo.plan.logical.*; import org.apache.tajo.plan.logical.SortNode.SortPurpose; import org.apache.tajo.plan.serder.PlanProto.DistinctGroupbyEnforcer.MultipleAggregationStage; @@ -108,11 +107,7 @@ public class Repartitioner { } else { - try { - stats[i] = GlobalPlanRewriteUtil.computeDescendentVolume(scans[i]); - } catch (PlanningException e) { - throw new IOException(e); - } + stats[i] = GlobalPlanRewriteUtil.computeDescendentVolume(scans[i]); // if table has no data, tablespace will return empty FileFragment. // So, we need to handle FileFragment by its size. http://git-wip-us.apache.org/repos/asf/tajo/blob/65283b54/tajo-plan/src/main/java/org/apache/tajo/plan/IllegalQueryStatusException.java ---------------------------------------------------------------------- diff --git a/tajo-plan/src/main/java/org/apache/tajo/plan/IllegalQueryStatusException.java b/tajo-plan/src/main/java/org/apache/tajo/plan/IllegalQueryStatusException.java deleted file mode 100644 index 31f9186..0000000 --- a/tajo-plan/src/main/java/org/apache/tajo/plan/IllegalQueryStatusException.java +++ /dev/null @@ -1,38 +0,0 @@ -/** - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.apache.tajo.plan; - -public class IllegalQueryStatusException extends Exception { - - public IllegalQueryStatusException() { - - } - - public IllegalQueryStatusException(String msg) { - super(msg); - } - - public IllegalQueryStatusException(Exception e) { - super(e); - } - - public IllegalQueryStatusException(String msg, Exception e) { - super(msg, e); - } -} http://git-wip-us.apache.org/repos/asf/tajo/blob/65283b54/tajo-plan/src/main/java/org/apache/tajo/plan/InvalidQueryException.java ---------------------------------------------------------------------- diff --git a/tajo-plan/src/main/java/org/apache/tajo/plan/InvalidQueryException.java b/tajo-plan/src/main/java/org/apache/tajo/plan/InvalidQueryException.java deleted file mode 100644 index a6b677f..0000000 --- a/tajo-plan/src/main/java/org/apache/tajo/plan/InvalidQueryException.java +++ /dev/null @@ -1,35 +0,0 @@ -/** - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.apache.tajo.plan; - -public class InvalidQueryException extends RuntimeException { - private static final long serialVersionUID = -7085849718839416246L; - - public InvalidQueryException() { - super(); - } - - public InvalidQueryException(String message) { - super(message); - } - - public InvalidQueryException(String message, Throwable t) { - super(message, t); - } -} http://git-wip-us.apache.org/repos/asf/tajo/blob/65283b54/tajo-plan/src/main/java/org/apache/tajo/plan/PlanningException.java ---------------------------------------------------------------------- diff --git a/tajo-plan/src/main/java/org/apache/tajo/plan/PlanningException.java b/tajo-plan/src/main/java/org/apache/tajo/plan/PlanningException.java deleted file mode 100644 index 8f49600..0000000 --- a/tajo-plan/src/main/java/org/apache/tajo/plan/PlanningException.java +++ /dev/null @@ -1,30 +0,0 @@ -/** - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.apache.tajo.plan; - -public class PlanningException extends Exception { - - public PlanningException(String message) { - super(message); - } - - public PlanningException(Throwable e) { - super(e); - } -} http://git-wip-us.apache.org/repos/asf/tajo/blob/65283b54/tajo-plan/src/main/java/org/apache/tajo/plan/expr/AlgebraicUtil.java ---------------------------------------------------------------------- diff --git a/tajo-plan/src/main/java/org/apache/tajo/plan/expr/AlgebraicUtil.java b/tajo-plan/src/main/java/org/apache/tajo/plan/expr/AlgebraicUtil.java index d953da1..d06c1d3 100644 --- a/tajo-plan/src/main/java/org/apache/tajo/plan/expr/AlgebraicUtil.java +++ b/tajo-plan/src/main/java/org/apache/tajo/plan/expr/AlgebraicUtil.java @@ -21,14 +21,9 @@ package org.apache.tajo.plan.expr; import org.apache.tajo.algebra.*; import org.apache.tajo.catalog.Column; import org.apache.tajo.exception.TajoException; -import org.apache.tajo.plan.PlanningException; import org.apache.tajo.plan.visitor.SimpleAlgebraVisitor; -import java.util.ArrayList; -import java.util.Collection; -import java.util.List; -import java.util.Map; -import java.util.Stack; +import java.util.*; public class AlgebraicUtil { http://git-wip-us.apache.org/repos/asf/tajo/blob/65283b54/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/GreedyHeuristicJoinOrderAlgorithm.java ---------------------------------------------------------------------- diff --git a/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/GreedyHeuristicJoinOrderAlgorithm.java b/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/GreedyHeuristicJoinOrderAlgorithm.java index 7984024..3348097 100644 --- a/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/GreedyHeuristicJoinOrderAlgorithm.java +++ b/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/GreedyHeuristicJoinOrderAlgorithm.java @@ -23,7 +23,6 @@ import org.apache.tajo.catalog.SchemaUtil; import org.apache.tajo.exception.TajoException; import org.apache.tajo.exception.TajoInternalError; import org.apache.tajo.plan.LogicalPlan; -import org.apache.tajo.plan.PlanningException; import org.apache.tajo.plan.expr.AlgebraicUtil; import org.apache.tajo.plan.logical.*; import org.apache.tajo.plan.util.PlannerUtil; @@ -168,7 +167,6 @@ public class GreedyHeuristicJoinOrderAlgorithm implements JoinOrderAlgorithm { * each edge is join condition. * @param vertexes candidate operators to be joined. * @return The best join pair among them - * @throws PlanningException */ private JoinEdge getBestPair(JoinEdgeFinderContext context, JoinGraphContext graphContext, Set<JoinVertex> vertexes) throws TajoException { @@ -270,7 +268,6 @@ public class GreedyHeuristicJoinOrderAlgorithm implements JoinOrderAlgorithm { * @param leftTarget left target join vertex * @param rightTarget right target join vertex * @return If there is no join edge between two vertexes, it returns null. - * @throws PlanningException */ private static JoinEdge findJoin(final JoinEdgeFinderContext context, final JoinGraphContext graphContext, JoinVertex begin, final JoinVertex leftTarget, final JoinVertex rightTarget) http://git-wip-us.apache.org/repos/asf/tajo/blob/65283b54/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/JoinOrderAlgorithm.java ---------------------------------------------------------------------- diff --git a/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/JoinOrderAlgorithm.java b/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/JoinOrderAlgorithm.java index 5fbbdbf..4218d6d 100644 --- a/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/JoinOrderAlgorithm.java +++ b/tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/JoinOrderAlgorithm.java @@ -21,11 +21,6 @@ package org.apache.tajo.plan.joinorder; import org.apache.hadoop.classification.InterfaceStability; import org.apache.tajo.exception.TajoException; import org.apache.tajo.plan.LogicalPlan; -import org.apache.tajo.plan.PlanningException; -import org.apache.tajo.plan.joinorder.FoundJoinOrder; -import org.apache.tajo.plan.joinorder.JoinGraph; - -import java.util.Set; /** * An interface for join order algorithms @@ -42,7 +37,6 @@ public interface JoinOrderAlgorithm { * relations. A vertex can be a relation or a group of joined relations. * An edge represents a join relation between two vertexes. * @return found join order - * @throws org.apache.tajo.plan.PlanningException */ FoundJoinOrder findBestOrder(LogicalPlan plan, LogicalPlan.QueryBlock block, JoinGraphContext joinGraphContext) throws TajoException; http://git-wip-us.apache.org/repos/asf/tajo/blob/65283b54/tajo-plan/src/main/java/org/apache/tajo/plan/nameresolver/NameResolver.java ---------------------------------------------------------------------- diff --git a/tajo-plan/src/main/java/org/apache/tajo/plan/nameresolver/NameResolver.java b/tajo-plan/src/main/java/org/apache/tajo/plan/nameresolver/NameResolver.java index 3b39a10..7eb22d7 100644 --- a/tajo-plan/src/main/java/org/apache/tajo/plan/nameresolver/NameResolver.java +++ b/tajo-plan/src/main/java/org/apache/tajo/plan/nameresolver/NameResolver.java @@ -28,7 +28,6 @@ import org.apache.tajo.catalog.NestedPathUtil; import org.apache.tajo.catalog.Schema; import org.apache.tajo.exception.*; import org.apache.tajo.plan.LogicalPlan; -import org.apache.tajo.plan.PlanningException; import org.apache.tajo.plan.logical.RelationNode; import org.apache.tajo.util.Pair; import org.apache.tajo.util.StringUtils; @@ -84,7 +83,6 @@ public abstract class NameResolver { * @param block the current block * @param tableName The table name which can be either qualified or not. * @return A corresponding relation - * @throws PlanningException */ public static RelationNode lookupTable(LogicalPlan.QueryBlock block, String tableName) throws AmbiguousTableException { @@ -143,7 +141,6 @@ public abstract class NameResolver { * @param block The current query block * @param columnRef The column reference to be found * @return The found column - * @throws PlanningException */ static Column resolveFromRelsWithinBlock(LogicalPlan plan, LogicalPlan.QueryBlock block, ColumnReferenceExpr columnRef) @@ -320,7 +317,6 @@ public abstract class NameResolver { * @param block The current block * @param columnRef The column name * @return A pair of normalized qualifier and column name - * @throws PlanningException */ static Pair<String, String> lookupQualifierAndCanonicalName(LogicalPlan.QueryBlock block, ColumnReferenceExpr columnRef) http://git-wip-us.apache.org/repos/asf/tajo/blob/65283b54/tajo-plan/src/main/java/org/apache/tajo/plan/rewrite/rules/FilterPushDownRule.java ---------------------------------------------------------------------- diff --git a/tajo-plan/src/main/java/org/apache/tajo/plan/rewrite/rules/FilterPushDownRule.java b/tajo-plan/src/main/java/org/apache/tajo/plan/rewrite/rules/FilterPushDownRule.java index 524d3ea..419b3e5 100644 --- a/tajo-plan/src/main/java/org/apache/tajo/plan/rewrite/rules/FilterPushDownRule.java +++ b/tajo-plan/src/main/java/org/apache/tajo/plan/rewrite/rules/FilterPushDownRule.java @@ -29,7 +29,6 @@ import org.apache.tajo.catalog.*; import org.apache.tajo.datum.Datum; import org.apache.tajo.exception.TajoException; import org.apache.tajo.exception.TajoInternalError; -import org.apache.tajo.plan.InvalidQueryException; import org.apache.tajo.plan.LogicalPlan; import org.apache.tajo.plan.LogicalPlan.QueryBlock; import org.apache.tajo.plan.LogicalPlanner; @@ -144,7 +143,7 @@ public class FilterPushDownRule extends BasicLogicalPlanVisitor<FilterPushDownCo UnaryNode unary = (UnaryNode) node; unary.setChild(selNode.getChild()); } else { - throw new InvalidQueryException("Unexpected Logical Query Plan"); + throw new TajoInternalError("The node must be an unary node"); } } else { // if there remain search conditions http://git-wip-us.apache.org/repos/asf/tajo/blob/65283b54/tajo-plan/src/main/java/org/apache/tajo/plan/util/PlannerUtil.java ---------------------------------------------------------------------- diff --git a/tajo-plan/src/main/java/org/apache/tajo/plan/util/PlannerUtil.java b/tajo-plan/src/main/java/org/apache/tajo/plan/util/PlannerUtil.java index 99e95be..8e0c421 100644 --- a/tajo-plan/src/main/java/org/apache/tajo/plan/util/PlannerUtil.java +++ b/tajo-plan/src/main/java/org/apache/tajo/plan/util/PlannerUtil.java @@ -28,7 +28,6 @@ import org.apache.tajo.common.TajoDataTypes.DataType; import org.apache.tajo.exception.TajoException; import org.apache.tajo.exception.TajoInternalError; import org.apache.tajo.exception.UndefinedTableException; -import org.apache.tajo.plan.InvalidQueryException; import org.apache.tajo.plan.LogicalPlan; import org.apache.tajo.plan.Target; import org.apache.tajo.plan.expr.*; @@ -41,7 +40,6 @@ import org.apache.tajo.util.KeyValueSet; import org.apache.tajo.util.StringUtils; import org.apache.tajo.util.TUtil; -import java.io.IOException; import java.util.*; public class PlannerUtil { @@ -306,10 +304,10 @@ public class PlannerUtil { } else if (binaryParent.getRightChild().deepEquals(child)) { binaryParent.setRightChild(grandChild); } else { - throw new IllegalStateException("ERROR: both logical node must be parent and child nodes"); + throw new TajoInternalError("both logical node must be parent and child nodes"); } } else { - throw new InvalidQueryException("Unexpected logical plan: " + parent); + throw new TajoInternalError("unexpected logical plan: " + parent); } return child; } http://git-wip-us.apache.org/repos/asf/tajo/blob/65283b54/tajo-plan/src/main/java/org/apache/tajo/plan/verifier/VerifyException.java ---------------------------------------------------------------------- diff --git a/tajo-plan/src/main/java/org/apache/tajo/plan/verifier/VerifyException.java b/tajo-plan/src/main/java/org/apache/tajo/plan/verifier/VerifyException.java deleted file mode 100644 index 2e7a9c2..0000000 --- a/tajo-plan/src/main/java/org/apache/tajo/plan/verifier/VerifyException.java +++ /dev/null @@ -1,27 +0,0 @@ -/** - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.apache.tajo.plan.verifier; - -import org.apache.tajo.plan.PlanningException; - -public class VerifyException extends PlanningException { - public VerifyException(String message) { - super(message); - } -}
