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 2015/08/20 16:17:56 UTC

tajo git commit: TAJO-1787: Remove unused and legacy exceptions.

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 <hy...@apache.org>
Authored: Thu Aug 20 23:15:52 2015 +0900
Committer: Hyunsik Choi <hy...@apache.org>
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);
-  }
-}