Repository: tajo
Updated Branches:
  refs/heads/master 4bfd693ac -> 5d62c409a


http://git-wip-us.apache.org/repos/asf/tajo/blob/5d62c409/tajo-plan/src/main/java/org/apache/tajo/plan/LogicalPlanner.java
----------------------------------------------------------------------
diff --git a/tajo-plan/src/main/java/org/apache/tajo/plan/LogicalPlanner.java 
b/tajo-plan/src/main/java/org/apache/tajo/plan/LogicalPlanner.java
index 85d8d55..a67fdd4 100644
--- a/tajo-plan/src/main/java/org/apache/tajo/plan/LogicalPlanner.java
+++ b/tajo-plan/src/main/java/org/apache/tajo/plan/LogicalPlanner.java
@@ -35,10 +35,12 @@ import org.apache.tajo.SessionVars;
 import org.apache.tajo.algebra.*;
 import org.apache.tajo.algebra.WindowSpec;
 import org.apache.tajo.catalog.*;
+import org.apache.tajo.catalog.exception.UndefinedColumnException;
 import org.apache.tajo.catalog.partition.PartitionMethodDesc;
 import org.apache.tajo.catalog.proto.CatalogProtos;
 import org.apache.tajo.common.TajoDataTypes;
 import org.apache.tajo.datum.NullDatum;
+import org.apache.tajo.exception.ExceptionUtil;
 import org.apache.tajo.plan.LogicalPlan.QueryBlock;
 import org.apache.tajo.plan.algebra.BaseAlgebraVisitor;
 import org.apache.tajo.plan.expr.*;
@@ -634,7 +636,7 @@ public class LogicalPlanner extends 
BaseAlgebraVisitor<LogicalPlanner.PlanContex
           // TODO - Later, we also consider the possibility that a window 
function contains only a window name.
           rawWindowSpecs.add(((WindowFunctionExpr) 
(rawTarget.getExpr())).getWindowSpec());
         }
-      } catch (VerifyException ve) {
+      } catch (UndefinedColumnException uc) {
       }
     }
 
@@ -768,7 +770,7 @@ public class LogicalPlanner extends 
BaseAlgebraVisitor<LogicalPlanner.PlanContex
           aggEvals.add((AggregationFunctionCallEval) evalNode);
           block.namedExprsMgr.markAsEvaluated(rawTarget.getAlias(), evalNode);
         }
-      } catch (VerifyException ve) {
+      } catch (UndefinedColumnException ve) {
       }
     }
 
@@ -1008,7 +1010,7 @@ public class LogicalPlanner extends 
BaseAlgebraVisitor<LogicalPlanner.PlanContex
           aggEvalNames.add(namedExpr.getAlias());
           aggEvalNodes.add((AggregationFunctionCallEval) evalNode);
         }
-      } catch (VerifyException ve) {
+      } catch (UndefinedColumnException ve) {
       }
     }
     // if there is at least one distinct aggregation function
@@ -1182,7 +1184,7 @@ public class LogicalPlanner extends 
BaseAlgebraVisitor<LogicalPlanner.PlanContex
           block.namedExprsMgr.markAsEvaluated(namedExpr.getAlias(), evalNode);
           newlyEvaluatedExprs.add(namedExpr.getAlias());
         }
-      } catch (VerifyException ve) {
+      } catch (UndefinedColumnException ve) {
       } catch (PlanningException e) {
       }
     }
@@ -1253,7 +1255,7 @@ public class LogicalPlanner extends 
BaseAlgebraVisitor<LogicalPlanner.PlanContex
           block.namedExprsMgr.markAsEvaluated(namedExpr.getAlias(), evalNode);
           newlyEvaluatedExprs.add(namedExpr.getAlias());
         }
-      } catch (VerifyException ve) {}
+      } catch (UndefinedColumnException ve) {}
     }
 
     List<Target> targets = TUtil.newList(PlannerUtil.schemaToTargets(merged));
@@ -1306,7 +1308,7 @@ public class LogicalPlanner extends 
BaseAlgebraVisitor<LogicalPlanner.PlanContex
           block.namedExprsMgr.markAsEvaluated(rawTarget.getAlias(), evalNode);
           newlyEvaluatedExprsReferences.add(rawTarget.getAlias()); // newly 
added exr
         }
-      } catch (VerifyException ve) {
+      } catch (UndefinedColumnException ve) {
       }
     }
 
@@ -1397,7 +1399,7 @@ public class LogicalPlanner extends 
BaseAlgebraVisitor<LogicalPlanner.PlanContex
           block.namedExprsMgr.markAsEvaluated(rawTarget.getAlias(), evalNode);
           newlyEvaluatedExprs.add(rawTarget.getAlias()); // newly added exr
         }
-      } catch (VerifyException ve) {
+      } catch (UndefinedColumnException ve) {
       }
     }
 
@@ -1885,8 +1887,8 @@ public class LogicalPlanner extends 
BaseAlgebraVisitor<LogicalPlanner.PlanContex
       if 
(expr.getPartitionMethod().getPartitionType().equals(PartitionType.COLUMN)) {
         createTableNode.setPartitionMethod(getPartitionMethod(context, 
expr.getTableName(), expr.getPartitionMethod()));
       } else {
-        throw new PlanningException(String.format("Not supported PartitonType: 
%s",
-            expr.getPartitionMethod().getPartitionType()));
+        throw ExceptionUtil.makeNotSupported(
+            String.format("PartitonType " + 
expr.getPartitionMethod().getPartitionType()));
       }
     }
 

http://git-wip-us.apache.org/repos/asf/tajo/blob/5d62c409/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
index 2a52401..8f49600 100644
--- a/tajo-plan/src/main/java/org/apache/tajo/plan/PlanningException.java
+++ b/tajo-plan/src/main/java/org/apache/tajo/plan/PlanningException.java
@@ -19,11 +19,12 @@
 package org.apache.tajo.plan;
 
 public class PlanningException extends Exception {
+
   public PlanningException(String message) {
     super(message);
   }
 
-  public PlanningException(Exception e) {
+  public PlanningException(Throwable e) {
     super(e);
   }
 }

http://git-wip-us.apache.org/repos/asf/tajo/blob/5d62c409/tajo-plan/src/main/java/org/apache/tajo/plan/TypeDeterminant.java
----------------------------------------------------------------------
diff --git a/tajo-plan/src/main/java/org/apache/tajo/plan/TypeDeterminant.java 
b/tajo-plan/src/main/java/org/apache/tajo/plan/TypeDeterminant.java
index 7c468bb..83542ec 100644
--- a/tajo-plan/src/main/java/org/apache/tajo/plan/TypeDeterminant.java
+++ b/tajo-plan/src/main/java/org/apache/tajo/plan/TypeDeterminant.java
@@ -25,7 +25,7 @@ import org.apache.tajo.catalog.CatalogService;
 import org.apache.tajo.catalog.CatalogUtil;
 import org.apache.tajo.catalog.Column;
 import org.apache.tajo.catalog.FunctionDesc;
-import org.apache.tajo.catalog.exception.NoSuchFunctionException;
+import org.apache.tajo.catalog.exception.UndefinedFunctionException;
 import org.apache.tajo.catalog.proto.CatalogProtos;
 import org.apache.tajo.common.TajoDataTypes;
 import org.apache.tajo.plan.visitor.SimpleAlgebraVisitor;
@@ -169,7 +169,7 @@ public class TypeDeterminant extends 
SimpleAlgebraVisitor<LogicalPlanner.PlanCon
     stack.pop(); // <--- Pop
 
     if (!catalog.containFunction(expr.getSignature(), paramTypes)) {
-      throw new NoSuchFunctionException(expr.getSignature(), paramTypes);
+      throw new UndefinedFunctionException(expr.getSignature(), paramTypes);
     }
 
     FunctionDesc funcDesc = catalog.getFunction(expr.getSignature(), 
paramTypes);
@@ -205,7 +205,7 @@ public class TypeDeterminant extends 
SimpleAlgebraVisitor<LogicalPlanner.PlanCon
     stack.pop(); // <-- pop
 
     if (!catalog.containFunction(setFunction.getSignature(), functionType, 
paramTypes)) {
-      throw new NoSuchFunctionException(setFunction.getSignature(), 
paramTypes);
+      throw new UndefinedFunctionException(setFunction.getSignature(), 
paramTypes);
     }
 
     FunctionDesc funcDesc = catalog.getFunction(setFunction.getSignature(), 
functionType, paramTypes);
@@ -246,7 +246,7 @@ public class TypeDeterminant extends 
SimpleAlgebraVisitor<LogicalPlanner.PlanCon
     // the below checking against WINDOW_FUNCTIONS is a workaround code for 
the above problem.
     if (ExprAnnotator.WINDOW_FUNCTIONS.contains(funcName.toLowerCase())) {
       if (distinct) {
-        throw new NoSuchFunctionException("row_number() does not support 
distinct keyword.");
+        throw new UndefinedFunctionException("row_number() does not support 
distinct keyword.");
       }
       functionType = CatalogProtos.FunctionType.WINDOW;
     } else {
@@ -255,7 +255,7 @@ public class TypeDeterminant extends 
SimpleAlgebraVisitor<LogicalPlanner.PlanCon
     }
 
     if (!catalog.containFunction(windowFunc.getSignature(), functionType, 
paramTypes)) {
-      throw new NoSuchFunctionException(funcName, paramTypes);
+      throw new UndefinedFunctionException(funcName, paramTypes);
     }
 
     FunctionDesc funcDesc = catalog.getFunction(funcName, functionType, 
paramTypes);

http://git-wip-us.apache.org/repos/asf/tajo/blob/5d62c409/tajo-plan/src/main/java/org/apache/tajo/plan/expr/GeneralFunctionEval.java
----------------------------------------------------------------------
diff --git 
a/tajo-plan/src/main/java/org/apache/tajo/plan/expr/GeneralFunctionEval.java 
b/tajo-plan/src/main/java/org/apache/tajo/plan/expr/GeneralFunctionEval.java
index 30fbe91..c7b900e 100644
--- a/tajo-plan/src/main/java/org/apache/tajo/plan/expr/GeneralFunctionEval.java
+++ b/tajo-plan/src/main/java/org/apache/tajo/plan/expr/GeneralFunctionEval.java
@@ -33,8 +33,7 @@ public class GeneralFunctionEval extends FunctionEval {
   protected FunctionInvoke funcInvoke;
   @Expose protected FunctionInvokeContext invokeContext;
 
-       public GeneralFunctionEval(OverridableConf queryContext, FunctionDesc 
desc, EvalNode[] givenArgs)
-      throws IOException {
+       public GeneralFunctionEval(OverridableConf queryContext, FunctionDesc 
desc, EvalNode[] givenArgs) {
                super(EvalType.FUNCTION, desc, givenArgs);
     this.invokeContext = new FunctionInvokeContext(queryContext, 
getParamType());
   }
@@ -58,8 +57,7 @@ public class GeneralFunctionEval extends FunctionEval {
   @SuppressWarnings("unchecked")
   public Datum eval(Tuple tuple) {
     super.eval(tuple);
-    Datum res = funcInvoke.eval(evalParams(tuple));
-    return res;
+    return funcInvoke.eval(evalParams(tuple));
   }
 
        @Override

http://git-wip-us.apache.org/repos/asf/tajo/blob/5d62c409/tajo-plan/src/main/java/org/apache/tajo/plan/logical/NoSuchColumnException.java
----------------------------------------------------------------------
diff --git 
a/tajo-plan/src/main/java/org/apache/tajo/plan/logical/NoSuchColumnException.java
 
b/tajo-plan/src/main/java/org/apache/tajo/plan/logical/NoSuchColumnException.java
deleted file mode 100644
index 94cef1e..0000000
--- 
a/tajo-plan/src/main/java/org/apache/tajo/plan/logical/NoSuchColumnException.java
+++ /dev/null
@@ -1,34 +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.logical;
-
-
-import org.apache.tajo.plan.verifier.VerifyException;
-
-public class NoSuchColumnException extends VerifyException {
-  private static final long serialVersionUID = 277182608283894937L;
-
-  public NoSuchColumnException(String databaseName, String relName, String 
columnName) {
-    super(String.format("ERROR: column \" %s.%s \" in %s does not exist", 
relName, columnName, databaseName));
-  }
-
-  public NoSuchColumnException(String columnName) {
-    super("ERROR: column \"" + columnName + "\" does not exist");
-  }
-}

http://git-wip-us.apache.org/repos/asf/tajo/blob/5d62c409/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 633b30e..dfcff9d 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
@@ -22,12 +22,10 @@ import com.google.common.base.Preconditions;
 import com.google.common.collect.Lists;
 import com.google.common.collect.Maps;
 import org.apache.tajo.algebra.ColumnReferenceExpr;
-import org.apache.tajo.algebra.Relation;
 import org.apache.tajo.catalog.CatalogUtil;
 import org.apache.tajo.catalog.Column;
-import org.apache.tajo.catalog.NestedPathUtil;
 import org.apache.tajo.catalog.Schema;
-import org.apache.tajo.catalog.exception.NoSuchColumnException;
+import org.apache.tajo.catalog.exception.UndefinedColumnException;
 import org.apache.tajo.plan.algebra.AmbiguousFieldException;
 import org.apache.tajo.plan.LogicalPlan;
 import org.apache.tajo.plan.PlanningException;
@@ -192,7 +190,7 @@ public abstract class NameResolver {
    * @return The found column
    */
   static Column resolveFromCurrentAndChildNode(LogicalPlan.QueryBlock block, 
ColumnReferenceExpr columnRef)
-      throws NoSuchColumnException {
+      throws UndefinedColumnException {
 
     if (block.getCurrentNode() != null && block.getCurrentNode().getInSchema() 
!= null) {
       Column found = 
block.getCurrentNode().getInSchema().getColumn(columnRef.getCanonicalName());
@@ -355,7 +353,7 @@ public abstract class NameResolver {
 
     // throw exception if no column cannot be founded or two or more than 
columns are founded
     if (guessedRelations.size() == 0) {
-      throw new NoSuchColumnException(columnRef.getQualifier());
+      throw new UndefinedColumnException(columnRef.getQualifier());
     } else if (guessedRelations.size() > 1) {
       throw new AmbiguousFieldException(columnRef.getCanonicalName());
     }

http://git-wip-us.apache.org/repos/asf/tajo/blob/5d62c409/tajo-plan/src/main/java/org/apache/tajo/plan/nameresolver/ResolverByLegacy.java
----------------------------------------------------------------------
diff --git 
a/tajo-plan/src/main/java/org/apache/tajo/plan/nameresolver/ResolverByLegacy.java
 
b/tajo-plan/src/main/java/org/apache/tajo/plan/nameresolver/ResolverByLegacy.java
index 0a665ab..a94c296 100644
--- 
a/tajo-plan/src/main/java/org/apache/tajo/plan/nameresolver/ResolverByLegacy.java
+++ 
b/tajo-plan/src/main/java/org/apache/tajo/plan/nameresolver/ResolverByLegacy.java
@@ -22,10 +22,10 @@ import org.apache.tajo.algebra.ColumnReferenceExpr;
 import org.apache.tajo.catalog.CatalogUtil;
 import org.apache.tajo.catalog.Column;
 import org.apache.tajo.catalog.Schema;
+import org.apache.tajo.catalog.exception.UndefinedColumnException;
 import org.apache.tajo.plan.LogicalPlan;
 import org.apache.tajo.plan.PlanningException;
 import org.apache.tajo.plan.logical.LogicalNode;
-import org.apache.tajo.plan.logical.NoSuchColumnException;
 import org.apache.tajo.plan.logical.NodeType;
 import org.apache.tajo.plan.logical.RelationNode;
 import org.apache.tajo.util.Pair;
@@ -56,7 +56,7 @@ public class ResolverByLegacy extends NameResolver {
 
     Column found = resolveFromRelsWithinBlock(plan, block, columnRef);
     if (found == null) {
-      throw new NoSuchColumnException(columnRef.getCanonicalName());
+      throw new UndefinedColumnException(columnRef.getCanonicalName());
     }
 
     // If code reach here, a column is found.
@@ -119,6 +119,6 @@ public class ResolverByLegacy extends NameResolver {
       return found;
     }
 
-    throw new NoSuchColumnException("ERROR: no such a column name "+ 
columnRef.getCanonicalName());
+    throw new UndefinedColumnException(columnRef.getCanonicalName());
   }
 }

http://git-wip-us.apache.org/repos/asf/tajo/blob/5d62c409/tajo-plan/src/main/java/org/apache/tajo/plan/nameresolver/ResolverByRels.java
----------------------------------------------------------------------
diff --git 
a/tajo-plan/src/main/java/org/apache/tajo/plan/nameresolver/ResolverByRels.java 
b/tajo-plan/src/main/java/org/apache/tajo/plan/nameresolver/ResolverByRels.java
index a67a1ca..1045cce 100644
--- 
a/tajo-plan/src/main/java/org/apache/tajo/plan/nameresolver/ResolverByRels.java
+++ 
b/tajo-plan/src/main/java/org/apache/tajo/plan/nameresolver/ResolverByRels.java
@@ -20,9 +20,9 @@ package org.apache.tajo.plan.nameresolver;
 
 import org.apache.tajo.algebra.ColumnReferenceExpr;
 import org.apache.tajo.catalog.Column;
+import org.apache.tajo.catalog.exception.UndefinedColumnException;
 import org.apache.tajo.plan.LogicalPlan;
 import org.apache.tajo.plan.PlanningException;
-import org.apache.tajo.plan.logical.NoSuchColumnException;
 
 public class ResolverByRels extends NameResolver {
   @Override
@@ -31,7 +31,7 @@ public class ResolverByRels extends NameResolver {
 
     Column column = resolveFromRelsWithinBlock(plan, block, columnRef);
     if (column == null) {
-      throw new NoSuchColumnException(columnRef.getCanonicalName());
+      throw new UndefinedColumnException(columnRef.getCanonicalName());
     }
     return column;
   }

http://git-wip-us.apache.org/repos/asf/tajo/blob/5d62c409/tajo-plan/src/main/java/org/apache/tajo/plan/nameresolver/ResolverByRelsAndSubExprs.java
----------------------------------------------------------------------
diff --git 
a/tajo-plan/src/main/java/org/apache/tajo/plan/nameresolver/ResolverByRelsAndSubExprs.java
 
b/tajo-plan/src/main/java/org/apache/tajo/plan/nameresolver/ResolverByRelsAndSubExprs.java
index f486117..2a8319c 100644
--- 
a/tajo-plan/src/main/java/org/apache/tajo/plan/nameresolver/ResolverByRelsAndSubExprs.java
+++ 
b/tajo-plan/src/main/java/org/apache/tajo/plan/nameresolver/ResolverByRelsAndSubExprs.java
@@ -20,7 +20,7 @@ package org.apache.tajo.plan.nameresolver;
 
 import org.apache.tajo.algebra.ColumnReferenceExpr;
 import org.apache.tajo.catalog.Column;
-import org.apache.tajo.catalog.exception.NoSuchColumnException;
+import org.apache.tajo.catalog.exception.UndefinedColumnException;
 import org.apache.tajo.plan.LogicalPlan;
 import org.apache.tajo.plan.PlanningException;
 
@@ -35,7 +35,7 @@ public class ResolverByRelsAndSubExprs extends NameResolver {
     }
 
     if (column == null) {
-      throw new NoSuchColumnException(columnRef.getCanonicalName());
+      throw new UndefinedColumnException(columnRef.getCanonicalName());
     }
     return column;
   }

http://git-wip-us.apache.org/repos/asf/tajo/blob/5d62c409/tajo-plan/src/main/java/org/apache/tajo/plan/nameresolver/ResolverBySubExprsAndRels.java
----------------------------------------------------------------------
diff --git 
a/tajo-plan/src/main/java/org/apache/tajo/plan/nameresolver/ResolverBySubExprsAndRels.java
 
b/tajo-plan/src/main/java/org/apache/tajo/plan/nameresolver/ResolverBySubExprsAndRels.java
index 3064fde..5de720e 100644
--- 
a/tajo-plan/src/main/java/org/apache/tajo/plan/nameresolver/ResolverBySubExprsAndRels.java
+++ 
b/tajo-plan/src/main/java/org/apache/tajo/plan/nameresolver/ResolverBySubExprsAndRels.java
@@ -20,9 +20,9 @@ package org.apache.tajo.plan.nameresolver;
 
 import org.apache.tajo.algebra.ColumnReferenceExpr;
 import org.apache.tajo.catalog.Column;
+import org.apache.tajo.catalog.exception.UndefinedColumnException;
 import org.apache.tajo.plan.LogicalPlan;
 import org.apache.tajo.plan.PlanningException;
-import org.apache.tajo.plan.logical.NoSuchColumnException;
 
 public class ResolverBySubExprsAndRels extends NameResolver {
   @Override
@@ -35,7 +35,7 @@ public class ResolverBySubExprsAndRels extends NameResolver {
     }
 
     if (column == null) {
-      throw new NoSuchColumnException(columnRef.getCanonicalName());
+      throw new UndefinedColumnException(columnRef.getCanonicalName());
     }
     return column;
   }

http://git-wip-us.apache.org/repos/asf/tajo/blob/5d62c409/tajo-plan/src/main/java/org/apache/tajo/plan/rewrite/rules/PartitionedTableRewriter.java
----------------------------------------------------------------------
diff --git 
a/tajo-plan/src/main/java/org/apache/tajo/plan/rewrite/rules/PartitionedTableRewriter.java
 
b/tajo-plan/src/main/java/org/apache/tajo/plan/rewrite/rules/PartitionedTableRewriter.java
index 3b1f1a8..cd56a51 100644
--- 
a/tajo-plan/src/main/java/org/apache/tajo/plan/rewrite/rules/PartitionedTableRewriter.java
+++ 
b/tajo-plan/src/main/java/org/apache/tajo/plan/rewrite/rules/PartitionedTableRewriter.java
@@ -323,7 +323,7 @@ public class PartitionedTableRewriter implements 
LogicalPlanRewriteRule {
           totalVolume += summary.getFileCount();
         }
         scanNode.getTableDesc().getStats().setNumBytes(totalVolume);
-      } catch (IOException e) {
+      } catch (Throwable e) {
         throw new PlanningException(e);
       }
     }

http://git-wip-us.apache.org/repos/asf/tajo/blob/5d62c409/tajo-plan/src/main/java/org/apache/tajo/plan/serder/EvalNodeDeserializer.java
----------------------------------------------------------------------
diff --git 
a/tajo-plan/src/main/java/org/apache/tajo/plan/serder/EvalNodeDeserializer.java 
b/tajo-plan/src/main/java/org/apache/tajo/plan/serder/EvalNodeDeserializer.java
index 72373cf..05f95df 100644
--- 
a/tajo-plan/src/main/java/org/apache/tajo/plan/serder/EvalNodeDeserializer.java
+++ 
b/tajo-plan/src/main/java/org/apache/tajo/plan/serder/EvalNodeDeserializer.java
@@ -27,7 +27,7 @@ import 
org.apache.tajo.algebra.WindowSpec.WindowFrameStartBoundType;
 import org.apache.tajo.catalog.Column;
 import org.apache.tajo.catalog.FunctionDesc;
 import org.apache.tajo.catalog.SortSpec;
-import org.apache.tajo.catalog.exception.NoSuchFunctionException;
+import org.apache.tajo.catalog.exception.UndefinedFunctionException;
 import org.apache.tajo.catalog.proto.CatalogProtos;
 import org.apache.tajo.catalog.proto.CatalogProtos.FunctionSignatureProto;
 import org.apache.tajo.common.TajoDataTypes.DataType;
@@ -229,19 +229,15 @@ public class EvalNodeDeserializer {
           DataType[] parameterTypes = new DataType[0];
           if (funcProto.getFuncion() != null && 
funcProto.getFuncion().getSignature() != null) {
             FunctionSignatureProto funcSignatureProto = 
funcProto.getFuncion().getSignature();
-            
+
             if (funcSignatureProto.hasName()) {
               functionName = funcSignatureProto.getName();
             }
-            
+
             parameterTypes = 
funcSignatureProto.getParameterTypesList().toArray(
                 new DataType[funcSignatureProto.getParameterTypesCount()]);
           }
-          throw new NoSuchFunctionException(functionName, parameterTypes);
-        } catch (InternalException ie) {
-          throw new NoSuchFunctionException(funcDesc.getFunctionName(), 
funcDesc.getParamTypes());
-        } catch (IOException e) {
-          throw new NoSuchFunctionException(e.getMessage());
+          throw new UndefinedFunctionException(functionName, parameterTypes);
         }
       } else {
         throw new RuntimeException("Unknown EvalType: " + type.name());

http://git-wip-us.apache.org/repos/asf/tajo/blob/5d62c409/tajo-plan/src/main/java/org/apache/tajo/plan/verifier/ExprsVerifier.java
----------------------------------------------------------------------
diff --git 
a/tajo-plan/src/main/java/org/apache/tajo/plan/verifier/ExprsVerifier.java 
b/tajo-plan/src/main/java/org/apache/tajo/plan/verifier/ExprsVerifier.java
index bc6e696..212fa9e 100644
--- a/tajo-plan/src/main/java/org/apache/tajo/plan/verifier/ExprsVerifier.java
+++ b/tajo-plan/src/main/java/org/apache/tajo/plan/verifier/ExprsVerifier.java
@@ -19,6 +19,10 @@
 package org.apache.tajo.plan.verifier;
 
 import org.apache.tajo.catalog.Column;
+import org.apache.tajo.error.Errors;
+import org.apache.tajo.exception.TajoException;
+import org.apache.tajo.exception.TajoInternalError;
+import org.apache.tajo.exception.UndefinedOperatorException;
 import org.apache.tajo.plan.PlanningException;
 import org.apache.tajo.plan.expr.*;
 import org.apache.tajo.plan.logical.LogicalNode;
@@ -49,7 +53,7 @@ public class ExprsVerifier extends 
BasicEvalNodeVisitor<VerificationState, EvalN
     Set<Column> referredColumns = EvalTreeUtil.findUniqueColumns(expression);
     for (Column referredColumn : referredColumns) {
       if (!currentNode.getInSchema().contains(referredColumn)) {
-        throw new PlanningException("Invalid State: " + referredColumn + " 
cannot be accessible at Node ("
+        throw new TajoInternalError("Invalid State: " + referredColumn + " 
cannot be accessible at Node ("
             + currentNode.getPID() + ")");
       }
     }
@@ -86,7 +90,7 @@ public class ExprsVerifier extends 
BasicEvalNodeVisitor<VerificationState, EvalN
     DataType leftType = expr.getLeftExpr().getValueType();
     DataType rightType = expr.getRightExpr().getValueType();
     if (!isCompatibleType(leftType, rightType)) {
-      state.addVerification("No operator matches the given name and argument 
type(s): " + expr.toString());
+      state.addVerification(new UndefinedOperatorException(expr.toString()));
     }
   }
 
@@ -134,7 +138,7 @@ public class ExprsVerifier extends 
BasicEvalNodeVisitor<VerificationState, EvalN
     if (evalNode.getRightExpr().getType() == EvalType.CONST) {
       ConstEval constEval = evalNode.getRightExpr();
       if (constEval.getValue().asFloat8() == 0) {
-        state.addVerification("division by zero");
+        state.addVerification(new 
TajoException(Errors.ResultCode.DIVISION_BY_ZERO, evalNode.toString()));
       }
     }
   }
@@ -173,7 +177,7 @@ public class ExprsVerifier extends 
BasicEvalNodeVisitor<VerificationState, EvalN
     }
 
     if (!(checkNumericType(leftDataType) && checkNumericType(rightDataType))) {
-      state.addVerification("No operator matches the given name and argument 
type(s): " + evalNode.toString());
+      state.addVerification(new 
UndefinedOperatorException(evalNode.toString()));
     }
   }
 

http://git-wip-us.apache.org/repos/asf/tajo/blob/5d62c409/tajo-plan/src/main/java/org/apache/tajo/plan/verifier/LogicalPlanVerifier.java
----------------------------------------------------------------------
diff --git 
a/tajo-plan/src/main/java/org/apache/tajo/plan/verifier/LogicalPlanVerifier.java
 
b/tajo-plan/src/main/java/org/apache/tajo/plan/verifier/LogicalPlanVerifier.java
index c5ef8ef..c6062e9 100644
--- 
a/tajo-plan/src/main/java/org/apache/tajo/plan/verifier/LogicalPlanVerifier.java
+++ 
b/tajo-plan/src/main/java/org/apache/tajo/plan/verifier/LogicalPlanVerifier.java
@@ -23,9 +23,11 @@ import org.apache.tajo.OverridableConf;
 import org.apache.tajo.catalog.CatalogService;
 import org.apache.tajo.catalog.Column;
 import org.apache.tajo.catalog.Schema;
-import org.apache.tajo.common.TajoDataTypes;
 import org.apache.tajo.common.TajoDataTypes.Type;
 import org.apache.tajo.conf.TajoConf;
+import org.apache.tajo.error.Errors;
+import org.apache.tajo.exception.TajoException;
+import org.apache.tajo.exception.UnsupportedException;
 import org.apache.tajo.plan.LogicalPlan;
 import org.apache.tajo.plan.util.PlannerUtil;
 import org.apache.tajo.plan.PlanningException;
@@ -35,6 +37,10 @@ import org.apache.tajo.plan.visitor.BasicLogicalPlanVisitor;
 
 import java.util.Stack;
 
+import static 
org.apache.tajo.plan.verifier.SyntaxErrorUtil.makeDataTypeMisMatch;
+import static 
org.apache.tajo.plan.verifier.SyntaxErrorUtil.makeSetOpDataTypeMisMatch;
+import static org.apache.tajo.plan.verifier.SyntaxErrorUtil.makeSyntaxError;
+
 public class LogicalPlanVerifier extends 
BasicLogicalPlanVisitor<LogicalPlanVerifier.Context, LogicalNode> {
   public LogicalPlanVerifier(TajoConf conf, CatalogService catalog) {
   }
@@ -71,16 +77,13 @@ public class LogicalPlanVerifier extends 
BasicLogicalPlanVisitor<LogicalPlanVeri
       Column outputColumn = outputSchema.getColumn(i);
 
       if (outputColumn.getDataType().getType() == Type.RECORD) {
-        context.state.addVerification("Projecting RECORD fields is not 
supported yet.");
+        context.state.addVerification(new UnsupportedException("RECORD field 
projection"));
       }
 
       if 
(!outputColumn.getDataType().equals(targetSchema.getColumn(i).getDataType())) {
         Column targetColumn = targetSchema.getColumn(i);
         Column insertColumn = outputColumn;
-        throw new PlanningException("ERROR: " +
-            insertColumn.getSimpleName() + " is of type " + 
insertColumn.getDataType().getType().name() +
-            ", but target column '" + targetColumn.getSimpleName() + "' is of 
type " +
-            targetColumn.getDataType().getType().name());
+        throw new 
PlanningException(SyntaxErrorUtil.makeDataTypeMisMatch(insertColumn, 
targetColumn));
       }
     }
   }
@@ -105,7 +108,7 @@ public class LogicalPlanVerifier extends 
BasicLogicalPlanVisitor<LogicalPlanVeri
     super.visitLimit(context, plan, block, node, stack);
 
     if (node.getFetchFirstNum() < 0) {
-      context.state.addVerification("LIMIT must not be negative");
+      context.state.addVerification(makeSyntaxError("LIMIT must not be 
negative"));
     }
 
     return node;
@@ -151,7 +154,7 @@ public class LogicalPlanVerifier extends 
BasicLogicalPlanVisitor<LogicalPlanVeri
     NodeType type = setNode.getType();
 
     if (left.size() != right.size()) {
-      state.addVerification("each " + type.name() + " query must have the same 
number of columns");
+      state.addVerification(new 
TajoException(Errors.ResultCode.AMBIGUOUS_FUNCTION));
       return;
     }
 
@@ -160,8 +163,9 @@ public class LogicalPlanVerifier extends 
BasicLogicalPlanVisitor<LogicalPlanVeri
 
     for (int i = 0; i < leftColumns.length; i++) {
       if (!leftColumns[i].getDataType().equals(rightColumns[i].getDataType())) 
{
-        state.addVerification(type + " types " + 
leftColumns[i].getDataType().getType() + " and "
-            + rightColumns[i].getDataType().getType() + " cannot be matched");
+        state.addVerification(
+            makeSetOpDataTypeMisMatch(type, leftColumns[i].getDataType(), 
rightColumns[i].getDataType())
+        );
       }
     }
   }
@@ -245,10 +249,7 @@ public class LogicalPlanVerifier extends 
BasicLogicalPlanVisitor<LogicalPlanVeri
       if 
(!schema.getColumn(i).getDataType().equals(targetTableScheme.getColumn(i).getDataType()))
 {
         Column targetColumn = targetTableScheme.getColumn(i);
         Column insertColumn = schema.getColumn(i);
-        state.addVerification("ERROR: " +
-            insertColumn.getSimpleName() + " is of type " + 
insertColumn.getDataType().getType().name() +
-            ", but target column '" + targetColumn.getSimpleName() + "' is of 
type " +
-            targetColumn.getDataType().getType().name());
+        state.addVerification(makeDataTypeMisMatch(insertColumn, 
targetColumn));
       }
     }
   }

http://git-wip-us.apache.org/repos/asf/tajo/blob/5d62c409/tajo-plan/src/main/java/org/apache/tajo/plan/verifier/PreLogicalPlanVerifier.java
----------------------------------------------------------------------
diff --git 
a/tajo-plan/src/main/java/org/apache/tajo/plan/verifier/PreLogicalPlanVerifier.java
 
b/tajo-plan/src/main/java/org/apache/tajo/plan/verifier/PreLogicalPlanVerifier.java
index 18ca627..6330268 100644
--- 
a/tajo-plan/src/main/java/org/apache/tajo/plan/verifier/PreLogicalPlanVerifier.java
+++ 
b/tajo-plan/src/main/java/org/apache/tajo/plan/verifier/PreLogicalPlanVerifier.java
@@ -26,7 +26,9 @@ import org.apache.tajo.algebra.*;
 import org.apache.tajo.catalog.CatalogService;
 import org.apache.tajo.catalog.CatalogUtil;
 import org.apache.tajo.catalog.TableDesc;
-import org.apache.tajo.catalog.proto.CatalogProtos;
+import org.apache.tajo.catalog.exception.*;
+import org.apache.tajo.exception.ExceptionUtil;
+import org.apache.tajo.exception.UnimplementedException;
 import org.apache.tajo.plan.util.ExprFinder;
 import org.apache.tajo.plan.PlanningException;
 import org.apache.tajo.plan.algebra.BaseAlgebraVisitor;
@@ -37,6 +39,9 @@ import java.util.Collection;
 import java.util.Set;
 import java.util.Stack;
 
+import static 
org.apache.tajo.catalog.exception.CatalogExceptionUtil.makeUndefinedTable;
+import static org.apache.tajo.plan.verifier.SyntaxErrorUtil.makeSyntaxError;
+
 public class PreLogicalPlanVerifier extends 
BaseAlgebraVisitor<PreLogicalPlanVerifier.Context, Expr> {
   private CatalogService catalog;
 
@@ -71,7 +76,7 @@ public class PreLogicalPlanVerifier extends 
BaseAlgebraVisitor<PreLogicalPlanVer
         Collection<ConstraintViolation> violations = 
var.validator().validate(expr.getValue());
 
         for (ConstraintViolation violation : violations) {
-          ctx.state.addVerification(violation.getMessage());
+          
ctx.state.addVerification(SyntaxErrorUtil.makeInvalidSessionVar(var.keyname(), 
violation.getMessage()));
         }
       }
     }
@@ -88,8 +93,7 @@ public class PreLogicalPlanVerifier extends 
BaseAlgebraVisitor<PreLogicalPlanVer
 
       if (namedExpr.hasAlias()) {
         if (names.contains(namedExpr.getAlias())) {
-          context.state.addVerification(String.format("column name \"%s\" 
specified more than once",
-              namedExpr.getAlias()));
+          
context.state.addVerification(SyntaxErrorUtil.makeDuplicateAlias(namedExpr.getAlias()));
         } else {
           names.add(namedExpr.getAlias());
         }
@@ -103,7 +107,7 @@ public class PreLogicalPlanVerifier extends 
BaseAlgebraVisitor<PreLogicalPlanVer
     stack.push(expr);
 
     if (ExprFinder.finds(expr.getFetchFirstNum(), OpType.Column).size() > 0) {
-      context.state.addVerification("argument of LIMIT must not contain 
variables");
+      context.state.addVerification(SyntaxErrorUtil.makeSyntaxError("argument 
of LIMIT must not contain variables"));
     }
 
     visit(context, stack, expr.getFetchFirstNum());
@@ -119,7 +123,7 @@ public class PreLogicalPlanVerifier extends 
BaseAlgebraVisitor<PreLogicalPlanVer
     // Enforcer only ordinary grouping set.
     for (Aggregation.GroupElement groupingElement : expr.getGroupSet()) {
       if (groupingElement.getType() != Aggregation.GroupType.OrdinaryGroup) {
-        context.state.addVerification(groupingElement.getType() + " is not 
supported yet");
+        
context.state.addVerification(ExceptionUtil.makeNotSupported(groupingElement.getType().name()));
       }
     }
 
@@ -154,7 +158,7 @@ public class PreLogicalPlanVerifier extends 
BaseAlgebraVisitor<PreLogicalPlanVer
     }
 
     if (!catalog.existsTable(qualifiedName)) {
-      context.state.addVerification(String.format("relation \"%s\" does not 
exist", qualifiedName));
+      context.state.addVerification(makeUndefinedTable(qualifiedName));
       return false;
     }
     return true;
@@ -172,7 +176,7 @@ public class PreLogicalPlanVerifier extends 
BaseAlgebraVisitor<PreLogicalPlanVer
       System.out.println("A");
     }
     if (catalog.existsTable(qualifiedName)) {
-      context.state.addVerification(String.format("relation \"%s\" already 
exists", qualifiedName));
+      
context.state.addVerification(CatalogExceptionUtil.makeDuplicateTable(qualifiedName));
       return false;
     }
     return true;
@@ -182,7 +186,7 @@ public class PreLogicalPlanVerifier extends 
BaseAlgebraVisitor<PreLogicalPlanVer
     Preconditions.checkNotNull(name);
 
     if (name.equalsIgnoreCase("RAW")) {
-      state.addVerification(String.format("Store format %s is not supported.", 
name));
+      state.addVerification(SyntaxErrorUtil.makeUnknownDataFormat(name));
       return false;
     }
     return true;
@@ -190,7 +194,7 @@ public class PreLogicalPlanVerifier extends 
BaseAlgebraVisitor<PreLogicalPlanVer
 
   private boolean assertDatabaseExistence(VerificationState state, String 
name) {
     if (!catalog.existDatabase(name)) {
-      state.addVerification(String.format("database \"%s\" does not exist", 
name));
+      state.addVerification(new UndefinedDatabaseException(name));
       return false;
     }
     return true;
@@ -198,7 +202,7 @@ public class PreLogicalPlanVerifier extends 
BaseAlgebraVisitor<PreLogicalPlanVer
 
   private boolean assertDatabaseNoExistence(VerificationState state, String 
name) {
     if (catalog.existDatabase(name)) {
-      state.addVerification(String.format("database \"%s\" already exists", 
name));
+      state.addVerification(new DuplicateDatabaseException(name));
       return false;
     }
     return true;
@@ -283,9 +287,9 @@ public class PreLogicalPlanVerifier extends 
BaseAlgebraVisitor<PreLogicalPlanVer
           int targetColumnNum = expr.getTargetColumns().length;
 
           if (targetColumnNum > projectColumnNum) {
-            context.state.addVerification("INSERT has more target columns than 
expressions");
+            context.state.addVerification(makeSyntaxError("INSERT has more 
target columns than expressions"));
           } else if (targetColumnNum < projectColumnNum) {
-            context.state.addVerification("INSERT has more expressions than 
target columns");
+            context.state.addVerification(makeSyntaxError("INSERT has more 
expressions than target columns"));
           }
         } else {
           if (expr.hasTableName()) {
@@ -297,16 +301,17 @@ public class PreLogicalPlanVerifier extends 
BaseAlgebraVisitor<PreLogicalPlanVer
 
             TableDesc table = catalog.getTableDesc(qualifiedName);
             if (table == null) {
-              context.state.addVerification(String.format("relation \"%s\" 
does not exist", qualifiedName));
+              context.state.addVerification(new 
UndefinedTableException(qualifiedName));
               return null;
             }
             if (table.hasPartition()) {
               int columnSize = table.getSchema().getRootColumns().size();
               columnSize += 
table.getPartitionMethod().getExpressionSchema().getRootColumns().size();
+
               if (projectColumnNum < columnSize) {
-                context.state.addVerification("INSERT has smaller expressions 
than target columns");
+                context.state.addVerification(makeSyntaxError("INSERT has 
smaller expressions than target columns"));
               } else if (projectColumnNum > columnSize) {
-                context.state.addVerification("INSERT has more expressions 
than target columns");
+                context.state.addVerification(makeSyntaxError("INSERT has more 
expressions than target columns"));
               }
             }
           }
@@ -316,10 +321,4 @@ public class PreLogicalPlanVerifier extends 
BaseAlgebraVisitor<PreLogicalPlanVer
 
     return expr;
   }
-
-  @Override
-  public Expr visitAlterTable(Context context, Stack<Expr> stack, AlterTable 
expr) throws PlanningException {
-    super.visitAlterTable(context, stack, expr);
-    return expr;
-  }
 }

http://git-wip-us.apache.org/repos/asf/tajo/blob/5d62c409/tajo-plan/src/main/java/org/apache/tajo/plan/verifier/SyntaxErrorException.java
----------------------------------------------------------------------
diff --git 
a/tajo-plan/src/main/java/org/apache/tajo/plan/verifier/SyntaxErrorException.java
 
b/tajo-plan/src/main/java/org/apache/tajo/plan/verifier/SyntaxErrorException.java
new file mode 100644
index 0000000..ff556c1
--- /dev/null
+++ 
b/tajo-plan/src/main/java/org/apache/tajo/plan/verifier/SyntaxErrorException.java
@@ -0,0 +1,29 @@
+/*
+ * 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.error.Errors;
+import org.apache.tajo.exception.TajoException;
+
+public class SyntaxErrorException extends TajoException {
+
+  public SyntaxErrorException(Errors.ResultCode code, String ... args) {
+    super(code, args);
+  }
+}

http://git-wip-us.apache.org/repos/asf/tajo/blob/5d62c409/tajo-plan/src/main/java/org/apache/tajo/plan/verifier/SyntaxErrorUtil.java
----------------------------------------------------------------------
diff --git 
a/tajo-plan/src/main/java/org/apache/tajo/plan/verifier/SyntaxErrorUtil.java 
b/tajo-plan/src/main/java/org/apache/tajo/plan/verifier/SyntaxErrorUtil.java
new file mode 100644
index 0000000..3c11b8c
--- /dev/null
+++ b/tajo-plan/src/main/java/org/apache/tajo/plan/verifier/SyntaxErrorUtil.java
@@ -0,0 +1,54 @@
+/*
+ * 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.catalog.Column;
+import org.apache.tajo.common.TajoDataTypes.DataType;
+import org.apache.tajo.error.Errors.ResultCode;
+import org.apache.tajo.plan.logical.NodeType;
+
+public class SyntaxErrorUtil {
+
+  public static SyntaxErrorException makeSyntaxError(String message) {
+    return new SyntaxErrorException(ResultCode.SYNTAX_ERROR, message);
+  }
+
+  public static SyntaxErrorException makeDataTypeMisMatch(Column src, Column 
target) {
+    return new SyntaxErrorException(ResultCode.DATATYPE_MISMATCH,
+        src.getSimpleName(), src.getDataType().getType().name(),
+        target.getSimpleName(), target.getDataType().getType().name());
+  }
+
+  public static SyntaxErrorException makeSetOpDataTypeMisMatch(NodeType type, 
DataType src, DataType target) {
+    return new SyntaxErrorException(ResultCode.SET_OPERATION_DATATYPE_MISMATCH,
+        type.name(), src.getType().name(), target.getType().name());
+  }
+
+  public static SyntaxErrorException makeDuplicateAlias(String name) {
+    return new SyntaxErrorException(ResultCode.DUPLICATE_ALIAS, name);
+  }
+
+  public static SyntaxErrorException makeInvalidSessionVar(String varName, 
String message) {
+    return new SyntaxErrorException(ResultCode.INVALID_SESSION_VARIABLE, 
varName, message);
+  }
+
+  public static SyntaxErrorException makeUnknownDataFormat(String dataFormat) {
+    return new SyntaxErrorException(ResultCode.UNKNOWN_DATAFORMAT, dataFormat);
+  }
+}

http://git-wip-us.apache.org/repos/asf/tajo/blob/5d62c409/tajo-plan/src/main/java/org/apache/tajo/plan/verifier/VerificationState.java
----------------------------------------------------------------------
diff --git 
a/tajo-plan/src/main/java/org/apache/tajo/plan/verifier/VerificationState.java 
b/tajo-plan/src/main/java/org/apache/tajo/plan/verifier/VerificationState.java
index a27b200..d20f8f9 100644
--- 
a/tajo-plan/src/main/java/org/apache/tajo/plan/verifier/VerificationState.java
+++ 
b/tajo-plan/src/main/java/org/apache/tajo/plan/verifier/VerificationState.java
@@ -21,16 +21,24 @@ package org.apache.tajo.plan.verifier;
 import com.google.common.collect.Lists;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
+import org.apache.tajo.exception.TajoException;
+import org.apache.tajo.exception.TajoExceptionInterface;
+import org.apache.tajo.exception.TajoRuntimeException;
 import org.apache.tajo.util.TUtil;
 
 import java.util.List;
 
 public class VerificationState {
   private static final Log LOG = LogFactory.getLog(VerificationState.class);
-  List<String> errorMessages = Lists.newArrayList();
+  List<Throwable> errorMessages = Lists.newArrayList();
 
-  public void addVerification(String error) {
-    LOG.warn(TUtil.getCurrentCodePoint(1) + " causes: " + error);
+  public void addVerification(TajoException error) {
+    LOG.warn(TUtil.getCurrentCodePoint(1) + " causes: " + error.getMessage());
+    errorMessages.add(error);
+  }
+
+  public void addVerification(TajoRuntimeException error) {
+    LOG.warn(TUtil.getCurrentCodePoint(1) + " causes: " + error.getMessage());
     errorMessages.add(error);
   }
 
@@ -38,7 +46,7 @@ public class VerificationState {
     return errorMessages.size() == 0;
   }
 
-  public List<String> getErrorMessages() {
+  public List<Throwable> getErrors() {
     return errorMessages;
   }
 }

http://git-wip-us.apache.org/repos/asf/tajo/blob/5d62c409/tajo-storage/tajo-storage-hdfs/src/main/java/org/apache/tajo/storage/json/JsonLineDeserializer.java
----------------------------------------------------------------------
diff --git 
a/tajo-storage/tajo-storage-hdfs/src/main/java/org/apache/tajo/storage/json/JsonLineDeserializer.java
 
b/tajo-storage/tajo-storage-hdfs/src/main/java/org/apache/tajo/storage/json/JsonLineDeserializer.java
index 0d1c94a..73b7592 100644
--- 
a/tajo-storage/tajo-storage-hdfs/src/main/java/org/apache/tajo/storage/json/JsonLineDeserializer.java
+++ 
b/tajo-storage/tajo-storage-hdfs/src/main/java/org/apache/tajo/storage/json/JsonLineDeserializer.java
@@ -26,21 +26,18 @@ import net.minidev.json.parser.ParseException;
 import org.apache.tajo.catalog.*;
 import org.apache.commons.net.util.Base64;
 import org.apache.tajo.catalog.Schema;
-import org.apache.tajo.catalog.SchemaUtil;
 import org.apache.tajo.catalog.TableMeta;
 import org.apache.tajo.common.TajoDataTypes.Type;
-import org.apache.tajo.common.exception.NotImplementedException;
 import org.apache.tajo.datum.DatumFactory;
 import org.apache.tajo.datum.NullDatum;
 import org.apache.tajo.datum.TextDatum;
+import org.apache.tajo.exception.UnimplementedException;
 import org.apache.tajo.storage.Tuple;
 import org.apache.tajo.storage.text.TextLineDeserializer;
 import org.apache.tajo.storage.text.TextLineParsingError;
-import org.apache.tajo.util.StringUtils;
 import org.apache.tajo.util.TUtil;
 
 import java.io.IOException;
-import java.util.Iterator;
 import java.util.Map;
 
 public class JsonLineDeserializer extends TextLineDeserializer {
@@ -238,7 +235,7 @@ public class JsonLineDeserializer extends 
TextLineDeserializer {
       break;
 
     default:
-      throw new NotImplementedException(types.get(fullPath).name() + " is not 
supported.");
+      throw new UnimplementedException(types.get(fullPath).name() + " is not 
supported.");
     }
   }
 

http://git-wip-us.apache.org/repos/asf/tajo/blob/5d62c409/tajo-storage/tajo-storage-hdfs/src/main/java/org/apache/tajo/storage/json/JsonLineSerializer.java
----------------------------------------------------------------------
diff --git 
a/tajo-storage/tajo-storage-hdfs/src/main/java/org/apache/tajo/storage/json/JsonLineSerializer.java
 
b/tajo-storage/tajo-storage-hdfs/src/main/java/org/apache/tajo/storage/json/JsonLineSerializer.java
index 60c32a7..4d5d2e6 100644
--- 
a/tajo-storage/tajo-storage-hdfs/src/main/java/org/apache/tajo/storage/json/JsonLineSerializer.java
+++ 
b/tajo-storage/tajo-storage-hdfs/src/main/java/org/apache/tajo/storage/json/JsonLineSerializer.java
@@ -25,9 +25,8 @@ import org.apache.tajo.catalog.Schema;
 import org.apache.tajo.catalog.SchemaUtil;
 import org.apache.tajo.catalog.TableMeta;
 import org.apache.tajo.common.TajoDataTypes.Type;
-import org.apache.tajo.common.exception.NotImplementedException;
 import org.apache.tajo.datum.TextDatum;
-import org.apache.tajo.datum.protobuf.ProtobufJsonFormat;
+import org.apache.tajo.exception.UnimplementedException;
 import org.apache.tajo.storage.Tuple;
 import org.apache.tajo.storage.text.TextLineSerializer;
 
@@ -112,7 +111,7 @@ public class JsonLineSerializer extends TextLineSerializer {
         break;
 
       default:
-        throw new NotImplementedException(types[i].name() + " is not 
supported.");
+        throw new UnimplementedException(types[i].name() + " is not 
supported.");
       }
     }
 

http://git-wip-us.apache.org/repos/asf/tajo/blob/5d62c409/tajo-storage/tajo-storage-hdfs/src/main/java/org/apache/tajo/storage/text/DelimitedLineReader.java
----------------------------------------------------------------------
diff --git 
a/tajo-storage/tajo-storage-hdfs/src/main/java/org/apache/tajo/storage/text/DelimitedLineReader.java
 
b/tajo-storage/tajo-storage-hdfs/src/main/java/org/apache/tajo/storage/text/DelimitedLineReader.java
index f15861c..b73f96b 100644
--- 
a/tajo-storage/tajo-storage-hdfs/src/main/java/org/apache/tajo/storage/text/DelimitedLineReader.java
+++ 
b/tajo-storage/tajo-storage-hdfs/src/main/java/org/apache/tajo/storage/text/DelimitedLineReader.java
@@ -30,8 +30,8 @@ import org.apache.hadoop.io.compress.CompressionCodec;
 import org.apache.hadoop.io.compress.CompressionCodecFactory;
 import org.apache.hadoop.io.compress.Decompressor;
 import org.apache.hadoop.io.compress.SplittableCompressionCodec;
-import org.apache.tajo.common.exception.NotImplementedException;
 import org.apache.tajo.conf.TajoConf;
+import org.apache.tajo.exception.UnimplementedException;
 import org.apache.tajo.exception.UnsupportedException;
 import org.apache.tajo.storage.*;
 import org.apache.tajo.storage.compress.CodecPool;
@@ -72,7 +72,7 @@ public class DelimitedLineReader implements Closeable {
     this.bufferSize = bufferSize;
     if (this.codec instanceof SplittableCompressionCodec) {
       // bzip2 does not support multi-thread model
-      throw new NotImplementedException(this.getClass() + " does not support " 
+ this.codec.getDefaultExtension());
+      throw new UnimplementedException(this.getClass() + " does not support " 
+ this.codec.getDefaultExtension());
     }
   }
 

Reply via email to