You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tajo.apache.org by hy...@apache.org on 2013/05/09 07:38:43 UTC

[11/11] git commit: TAJO-57: Recognize Parser and Catalog Standard SQL data types. (hyunsik)

TAJO-57: Recognize Parser and Catalog Standard SQL data types. (hyunsik)


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

Branch: refs/heads/master
Commit: c1c6f83eafdea80d931094285f8da1186f062cf5
Parents: fc47436
Author: Hyunsik Choi <hy...@apache.org>
Authored: Thu May 9 14:37:35 2013 +0900
Committer: Hyunsik Choi <hy...@apache.org>
Committed: Thu May 9 14:37:35 2013 +0900

----------------------------------------------------------------------
 .../java/tajo/catalog/AbstractCatalogClient.java   |   18 +-
 .../catalog/AlreadyRegisteredURIException.java     |   40 --
 .../src/main/java/tajo/catalog/AttributeType.java  |   25 -
 .../src/main/java/tajo/catalog/CatalogReader.java  |   31 --
 .../src/main/java/tajo/catalog/CatalogService.java |    2 +-
 .../java/tajo/catalog/CatalogServiceProtocol.java  |  105 ----
 .../src/main/proto/CatalogProtos.proto             |   23 +-
 .../src/main/java/tajo/catalog/CatalogUtil.java    |  138 ++++---
 .../src/main/java/tajo/catalog/Column.java         |   16 +-
 .../src/main/java/tajo/catalog/FunctionDesc.java   |    6 +-
 .../src/main/java/tajo/catalog/Schema.java         |    9 +-
 .../src/main/java/tajo/catalog/TCatUtil.java       |  130 -----
 .../java/tajo/catalog/function/AggFunction.java    |    4 +-
 .../main/java/tajo/catalog/json/GsonCreator.java   |    3 +
 .../java/tajo/catalog/statistics/TupleUtil.java    |   45 +-
 .../src/main/proto/CatalogProtos.proto             |  183 ++++----
 .../test/java/tajo/catalog/TestCatalogUtil.java    |    8 +-
 .../src/test/java/tajo/catalog/TestColumn.java     |   22 +-
 .../test/java/tajo/catalog/TestFunctionDesc.java   |   37 +-
 .../src/test/java/tajo/catalog/TestIndexDesc.java  |   12 +-
 .../src/test/java/tajo/catalog/TestSchema.java     |   26 +-
 .../src/test/java/tajo/catalog/TestTableDesc.java  |   14 +-
 .../src/test/java/tajo/catalog/TestTableInfo.java  |   48 +-
 .../src/test/java/tajo/catalog/TestTableMeta.java  |   48 +-
 .../tajo/catalog/statistics/TestColumnStat.java    |   16 +-
 .../tajo/catalog/statistics/TestTableStat.java     |    4 +-
 .../catalog/AlreadyRegisteredURIException.java     |   43 --
 .../src/main/java/tajo/catalog/CatalogServer.java  |   11 +-
 .../src/main/java/tajo/catalog/store/DBStore.java  |   46 +--
 .../src/test/java/tajo/catalog/TestCatalog.java    |   60 ++--
 .../src/test/java/tajo/catalog/TestDBStore.java    |   42 +-
 .../tajo/catalog/statistics/TestColumnStat.java    |   16 +-
 .../tajo/catalog/statistics/TestTableStat.java     |    4 +-
 tajo-common/pom.xml                                |    1 +
 .../src/main/java/tajo/datum/ArrayDatum.java       |    6 +-
 .../src/main/java/tajo/datum/BoolDatum.java        |  172 -------
 .../src/main/java/tajo/datum/ByteDatum.java        |  134 ------
 .../src/main/java/tajo/datum/BytesDatum.java       |  161 -------
 .../src/main/java/tajo/datum/CharDatum.java        |   17 +-
 tajo-common/src/main/java/tajo/datum/Datum.java    |   42 +-
 .../src/main/java/tajo/datum/DatumFactory.java     |   90 ++--
 .../src/main/java/tajo/datum/DatumType.java        |   42 --
 .../src/main/java/tajo/datum/DoubleDatum.java      |  270 -----------
 .../src/main/java/tajo/datum/FloatDatum.java       |  278 -----------
 .../src/main/java/tajo/datum/IPv4Datum.java        |  136 ------
 tajo-common/src/main/java/tajo/datum/IntDatum.java |  274 -----------
 .../src/main/java/tajo/datum/LongDatum.java        |  279 -----------
 .../src/main/java/tajo/datum/NullDatum.java        |   20 +-
 .../src/main/java/tajo/datum/NumericDatum.java     |    4 +-
 .../src/main/java/tajo/datum/ShortDatum.java       |  268 -----------
 .../src/main/java/tajo/datum/StringDatum.java      |  157 ------
 .../src/main/java/tajo/datum/StringDatum2.java     |  140 ------
 .../datum/exception/InvalidOperationException.java |    4 +-
 tajo-common/src/main/java/tajo/storage/Tuple.java  |   91 ++--
 .../src/test/java/tajo/datum/TestBoolDatum.java    |    9 +-
 .../src/test/java/tajo/datum/TestByteDatum.java    |   75 ---
 .../src/test/java/tajo/datum/TestBytesDatum.java   |   11 +-
 .../src/test/java/tajo/datum/TestCharDatum.java    |   13 +-
 .../src/test/java/tajo/datum/TestDatum.java        |  251 +++++-----
 .../src/test/java/tajo/datum/TestDatumFactory.java |   43 +-
 .../src/test/java/tajo/datum/TestDoubleDatum.java  |   69 ---
 .../src/test/java/tajo/datum/TestFloatDatum.java   |   25 +-
 .../src/test/java/tajo/datum/TestIPv4Datum.java    |   75 ---
 .../src/test/java/tajo/datum/TestIntDatum.java     |   69 ---
 .../src/test/java/tajo/datum/TestLongDatum.java    |   69 ---
 .../src/test/java/tajo/datum/TestShortDatum.java   |   69 ---
 .../src/test/java/tajo/datum/TestStringDatum.java  |   69 ---
 .../src/main/antlr3/tajo/engine/parser/NQL.g       |  342 ++++++++++----
 .../src/main/java/tajo/benchmark/TPCH.java         |  144 +++---
 .../src/main/java/tajo/client/TajoClient.java      |   10 +-
 .../java/tajo/engine/eval/AggFuncCallEval.java     |    4 +-
 .../src/main/java/tajo/engine/eval/BinaryEval.java |   66 ++--
 .../main/java/tajo/engine/eval/CaseWhenEval.java   |   10 +-
 .../src/main/java/tajo/engine/eval/ConstEval.java  |   29 +-
 .../src/main/java/tajo/engine/eval/EvalNode.java   |    2 +-
 .../main/java/tajo/engine/eval/EvalTreeUtil.java   |    4 +-
 .../src/main/java/tajo/engine/eval/FieldEval.java  |    4 +-
 .../src/main/java/tajo/engine/eval/FuncEval.java   |    2 +-
 .../src/main/java/tajo/engine/eval/IsNullEval.java |   19 +-
 .../src/main/java/tajo/engine/eval/LikeEval.java   |   16 +-
 .../src/main/java/tajo/engine/eval/NotEval.java    |    9 +-
 .../java/tajo/engine/eval/PartialBinaryExpr.java   |    4 +-
 .../main/java/tajo/engine/function/Country.java    |   11 +-
 .../main/java/tajo/engine/function/InCountry.java  |   12 +-
 .../tajo/engine/function/builtin/AvgDouble.java    |   23 +-
 .../tajo/engine/function/builtin/AvgFloat.java     |   26 +-
 .../java/tajo/engine/function/builtin/AvgInt.java  |   28 +-
 .../java/tajo/engine/function/builtin/AvgLong.java |   27 +-
 .../tajo/engine/function/builtin/CountRows.java    |   16 +-
 .../tajo/engine/function/builtin/CountValue.java   |    8 +-
 .../java/tajo/engine/function/builtin/Date.java    |   11 +-
 .../tajo/engine/function/builtin/MaxDouble.java    |   21 +-
 .../tajo/engine/function/builtin/MaxFloat.java     |   15 +-
 .../java/tajo/engine/function/builtin/MaxInt.java  |   17 +-
 .../java/tajo/engine/function/builtin/MaxLong.java |   23 +-
 .../tajo/engine/function/builtin/MinDouble.java    |   17 +-
 .../tajo/engine/function/builtin/MinFloat.java     |   22 +-
 .../java/tajo/engine/function/builtin/MinInt.java  |   15 +-
 .../java/tajo/engine/function/builtin/MinLong.java |   19 +-
 .../tajo/engine/function/builtin/MinString.java    |   19 +-
 .../tajo/engine/function/builtin/RandomInt.java    |    7 +-
 .../tajo/engine/function/builtin/SumDouble.java    |   21 +-
 .../tajo/engine/function/builtin/SumFloat.java     |   17 +-
 .../java/tajo/engine/function/builtin/SumInt.java  |   17 +-
 .../java/tajo/engine/function/builtin/SumLong.java |   21 +-
 .../java/tajo/engine/function/builtin/Today.java   |    6 +-
 .../main/java/tajo/engine/json/GsonCreator.java    |    2 +
 .../main/java/tajo/engine/parser/EvalTreeBin.java  |   31 --
 .../main/java/tajo/engine/parser/ParseUtil.java    |   44 --
 .../java/tajo/engine/parser/QueryAnalyzer.java     |  112 +++--
 .../main/java/tajo/engine/parser/QueryBlock.java   |    3 +-
 .../java/tajo/engine/planner/LogicalPlanner.java   |    2 +-
 .../main/java/tajo/engine/planner/PlannerUtil.java |   10 +-
 .../engine/planner/RangePartitionAlgorithm.java    |   30 +-
 .../tajo/engine/planner/UniformRangePartition.java |  138 +++---
 .../engine/planner/physical/ExternalSortExec.java  |    6 +-
 .../engine/planner/physical/IndexedStoreExec.java  |    2 +-
 .../planner/physical/JoinTupleComparator.java      |    8 +-
 .../planner/physical/PartitionedStoreExec.java     |    4 +-
 .../engine/planner/physical/StoreTableExec.java    |    6 +-
 .../main/java/tajo/engine/query/ResultSetImpl.java |   24 +-
 .../tajo/engine/query/ResultSetMetaDataImpl.java   |   60 ++--
 .../query/exception/InvalidCastException.java      |   35 --
 .../query/exception/InvalidEvalException.java      |   30 --
 .../main/java/tajo/engine/utils/SchemaUtil.java    |    4 +-
 .../src/main/java/tajo/engine/utils/TupleUtil.java |  215 +++------
 .../src/main/java/tajo/master/GlobalEngine.java    |    8 +-
 .../src/main/java/tajo/master/GlobalPlanner.java   |   16 +-
 .../main/java/tajo/master/GlobalPlannerUtils.java  |    4 +-
 .../src/main/java/tajo/master/Query.java           |    7 +-
 .../src/main/java/tajo/master/Repartitioner.java   |    6 +-
 .../src/main/java/tajo/master/SubQuery.java        |    8 +-
 .../src/main/java/tajo/master/TajoMaster.java      |  103 ++--
 .../src/main/proto/CatalogProtos.proto             |  183 ++++----
 .../src/test/java/tajo/BackendTestingUtil.java     |   12 +-
 .../test/java/tajo/LocalTajoTestingUtility.java    |    7 +-
 .../src/test/java/tajo/TajoTestingCluster.java     |    6 +-
 .../src/test/java/tajo/client/TestTajoClient.java  |    4 +-
 .../test/java/tajo/engine/eval/TestEvalTree.java   |  147 +++---
 .../java/tajo/engine/eval/TestEvalTreeUtil.java    |   64 ++--
 .../java/tajo/engine/function/TestAggFunction.java |   10 +-
 .../tajo/engine/function/TestGeneralFunction.java  |   10 +-
 .../java/tajo/engine/parser/TestNQLParser.java     |   92 ++++-
 .../java/tajo/engine/parser/TestQueryAnalyzer.java |  116 +++---
 .../engine/plan/global/TestGlobalQueryPlanner.java |   28 +-
 .../tajo/engine/planner/TestLogicalOptimizer.java  |   24 +-
 .../tajo/engine/planner/TestLogicalPlanner.java    |   74 ++--
 .../java/tajo/engine/planner/TestPlannerUtil.java  |   85 ++--
 .../engine/planner/TestUniformRangePartition.java  |  148 +++---
 .../planner/global/TestGlobalQueryOptimizer.java   |   23 +-
 .../engine/planner/physical/TestBNLJoinExec.java   |   54 +-
 .../engine/planner/physical/TestBSTIndexExec.java  |   24 +-
 .../planner/physical/TestExternalSortExec.java     |   16 +-
 .../engine/planner/physical/TestHashJoinExec.java  |   50 +-
 .../planner/physical/TestHashPartitioner.java      |   30 +-
 .../engine/planner/physical/TestMergeJoinExec.java |   60 ++--
 .../engine/planner/physical/TestNLJoinExec.java    |   56 ++--
 .../planner/physical/TestPhysicalPlanner.java      |  128 +++---
 .../tajo/engine/planner/physical/TestSortExec.java |   22 +-
 .../java/tajo/engine/query/TestNullValues.java     |   30 +-
 .../java/tajo/engine/query/TestResultSetImpl.java  |   14 +-
 .../test/java/tajo/engine/util/TestTupleUtil.java  |  118 +++---
 .../java/tajo/master/TestExecutionBlockCursor.java |    9 +-
 .../src/test/java/tajo/storage/TestFragment.java   |   10 +-
 .../src/test/java/tajo/storage/TestHCFile.java     |  268 -----------
 .../test/java/tajo/storage/TestHColumnReader.java  |  145 ------
 .../src/test/java/tajo/storage/TestRowFile.java    |   22 +-
 .../src/test/java/tajo/worker/SlowFunc.java        |   65 ---
 .../tajo/worker/TestRangeRetrieverHandler.java     |   30 +-
 .../src/main/java/tajo/storage/CSVFile.java        |   82 ++--
 .../src/main/java/tajo/storage/Fragment.java       |    2 +-
 .../src/main/java/tajo/storage/FrameTuple.java     |   46 +-
 .../src/main/java/tajo/storage/RawFile.java        |  108 ++--
 .../src/main/java/tajo/storage/RowFile.java        |  114 +++---
 .../src/main/java/tajo/storage/RowStoreUtil.java   |   94 ++--
 .../src/main/java/tajo/storage/StorageUtil.java    |   21 +-
 .../main/java/tajo/storage/TableStatistics.java    |   14 +-
 .../src/main/java/tajo/storage/Tuple.java          |   22 +-
 .../main/java/tajo/storage/TupleComparator.java    |    8 +-
 .../src/main/java/tajo/storage/VTuple.java         |   46 +-
 .../main/java/tajo/storage/hcfile/BasicBlock.java  |  140 ------
 .../src/main/java/tajo/storage/hcfile/Block.java   |   71 ---
 .../main/java/tajo/storage/hcfile/BlockMeta.java   |   50 --
 .../main/java/tajo/storage/hcfile/BlockReader.java |   57 ---
 .../main/java/tajo/storage/hcfile/BlockWriter.java |   57 ---
 .../java/tajo/storage/hcfile/ColumnAppender.java   |   35 --
 .../tajo/storage/hcfile/ColumnFileAppender.java    |   41 --
 .../tajo/storage/hcfile/ColumnFileScanner.java     |   33 --
 .../main/java/tajo/storage/hcfile/ColumnMeta.java  |   48 --
 .../java/tajo/storage/hcfile/ColumnReader.java     |   42 --
 .../java/tajo/storage/hcfile/ColumnScanner.java    |  107 ----
 .../java/tajo/storage/hcfile/ColumnStoreUtil.java  |   36 --
 .../java/tajo/storage/hcfile/CompressedBlock.java  |   26 -
 .../tajo/storage/hcfile/CompressedBlockReader.java |   53 --
 .../tajo/storage/hcfile/CompressedBlockWriter.java |   62 ---
 .../java/tajo/storage/hcfile/HBlockMetaImpl.java   |   94 ----
 .../src/main/java/tajo/storage/hcfile/HCFile.java  |  373 ---------------
 .../java/tajo/storage/hcfile/HCFileMetaImpl.java   |  301 ------------
 .../java/tajo/storage/hcfile/HCTupleAppender.java  |  194 --------
 .../tajo/storage/hcfile/HColumnMetaWritable.java   |  164 -------
 .../java/tajo/storage/hcfile/HColumnReader.java    |  259 ----------
 .../src/main/java/tajo/storage/hcfile/Index.java   |  170 -------
 .../main/java/tajo/storage/hcfile/IndexItem.java   |   62 ---
 .../main/java/tajo/storage/hcfile/Seekable.java    |   30 --
 .../java/tajo/storage/hcfile/TupleAppender.java    |   31 --
 .../main/java/tajo/storage/hcfile/Updatable.java   |   36 --
 .../java/tajo/storage/hcfile/UpdatableBlock.java   |   22 -
 .../storage/hcfile/UpdatableSeekableBlock.java     |   23 -
 .../tajo/storage/hcfile/compress/BitVector.java    |   44 --
 .../java/tajo/storage/hcfile/compress/Codec.java   |   55 ---
 .../tajo/storage/hcfile/compress/Dictionary.java   |   44 --
 .../main/java/tajo/storage/hcfile/compress/LZ.java |   44 --
 .../tajo/storage/hcfile/compress/NullSuppress.java |   44 --
 .../tajo/storage/hcfile/compress/RunLength.java    |   44 --
 .../java/tajo/storage/hcfile/compress/Snappy.java  |   44 --
 .../tajo/storage/hcfile/reader/ArrayReader.java    |   44 --
 .../tajo/storage/hcfile/reader/ByteReader.java     |   37 --
 .../tajo/storage/hcfile/reader/BytesReader.java    |   40 --
 .../tajo/storage/hcfile/reader/CharReader.java     |   37 --
 .../tajo/storage/hcfile/reader/DoubleReader.java   |   37 --
 .../tajo/storage/hcfile/reader/FloatReader.java    |   37 --
 .../tajo/storage/hcfile/reader/IPv4Reader.java     |   40 --
 .../java/tajo/storage/hcfile/reader/IntReader.java |   37 --
 .../tajo/storage/hcfile/reader/LongReader.java     |   37 --
 .../java/tajo/storage/hcfile/reader/Reader.java    |   32 --
 .../tajo/storage/hcfile/reader/ShortReader.java    |   37 --
 .../tajo/storage/hcfile/reader/String2Reader.java  |   39 --
 .../tajo/storage/hcfile/reader/StringReader.java   |   40 --
 .../tajo/storage/hcfile/reader/TypeReader.java     |   69 ---
 .../tajo/storage/hcfile/writer/ArrayWriter.java    |   41 --
 .../tajo/storage/hcfile/writer/ByteWriter.java     |   36 --
 .../tajo/storage/hcfile/writer/BytesWriter.java    |   38 --
 .../tajo/storage/hcfile/writer/CharWriter.java     |   36 --
 .../tajo/storage/hcfile/writer/DoubleWriter.java   |   36 --
 .../tajo/storage/hcfile/writer/FloatWriter.java    |   36 --
 .../java/tajo/storage/hcfile/writer/IntWriter.java |   36 --
 .../tajo/storage/hcfile/writer/LongWriter.java     |   36 --
 .../tajo/storage/hcfile/writer/ShortWriter.java    |   36 --
 .../tajo/storage/hcfile/writer/TypeWriter.java     |   90 ----
 .../java/tajo/storage/hcfile/writer/Writer.java    |   31 --
 .../java/tajo/storage/rcfile/RCFileWrapper.java    |   73 ++--
 .../java/tajo/storage/trevni/TrevniAppender.java   |   61 ++--
 .../java/tajo/storage/trevni/TrevniScanner.java    |   48 +-
 .../src/main/proto/CatalogProtos.proto             |  185 ++++----
 .../src/test/java/tajo/storage/TestFrameTuple.java |   44 +-
 .../test/java/tajo/storage/TestMergeScanner.java   |   30 +-
 .../test/java/tajo/storage/TestStorageManager.java |   18 +-
 .../src/test/java/tajo/storage/TestStorages.java   |   83 ++--
 .../java/tajo/storage/TestTupleComparator.java     |   32 +-
 .../src/test/java/tajo/storage/TestVTuple.java     |   75 ++--
 .../test/java/tajo/storage/hcfile/IndexTest.java   |   66 ---
 .../test/java/tajo/storage/index/TestBSTIndex.java |  276 ++++++------
 .../storage/index/TestSingleCSVFileBSTIndex.java   |   68 ++--
 .../test/java/tajo/storage/rcfile/TestRCFile.java  |   40 +-
 254 files changed, 3404 insertions(+), 11057 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-tajo/blob/c1c6f83e/tajo-catalog/tajo-catalog-client/src/main/java/tajo/catalog/AbstractCatalogClient.java
----------------------------------------------------------------------
diff --git a/tajo-catalog/tajo-catalog-client/src/main/java/tajo/catalog/AbstractCatalogClient.java b/tajo-catalog/tajo-catalog-client/src/main/java/tajo/catalog/AbstractCatalogClient.java
index ce0efcb..f9dd78c 100644
--- a/tajo-catalog/tajo-catalog-client/src/main/java/tajo/catalog/AbstractCatalogClient.java
+++ b/tajo-catalog/tajo-catalog-client/src/main/java/tajo/catalog/AbstractCatalogClient.java
@@ -23,6 +23,7 @@ import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import tajo.catalog.CatalogProtocol.CatalogProtocolService;
 import tajo.catalog.proto.CatalogProtos.*;
+import tajo.common.TajoDataTypes.DataType;
 import tajo.rpc.protocolrecords.PrimitiveProtos.NullProto;
 import tajo.rpc.protocolrecords.PrimitiveProtos.StringProto;
 
@@ -48,7 +49,7 @@ public abstract class AbstractCatalogClient implements CatalogService {
   @Override
   public final TableDesc getTableDesc(final String name) {
     try {
-      return TCatUtil.newTableDesc(stub.getTableDesc(null, StringProto.newBuilder()
+      return CatalogUtil.newTableDesc(stub.getTableDesc(null, StringProto.newBuilder()
           .setValue(name).build()));
     } catch (ServiceException e) {
       LOG.error(e);
@@ -210,9 +211,8 @@ public abstract class AbstractCatalogClient implements CatalogService {
     UnregisterFunctionRequest.Builder builder =
         UnregisterFunctionRequest.newBuilder();
     builder.setSignature(signature);
-    int size = paramTypes.length;
-    for (int i = 0; i < size; i++) {
-      builder.addParameterTypes(paramTypes[i]);
+    for (DataType type : paramTypes) {
+      builder.addParameterTypes(type);
     }
     try {
       return stub.unregisterFunction(null, builder.build()).getValue();
@@ -228,9 +228,8 @@ public abstract class AbstractCatalogClient implements CatalogService {
     GetFunctionMetaRequest.Builder builder =
         GetFunctionMetaRequest.newBuilder();
     builder.setSignature(signature);
-    int size = paramTypes.length;
-    for (int i = 0; i < size; i++) {
-      builder.addParameterTypes(paramTypes[i]);
+    for (DataType type : paramTypes) {
+      builder.addParameterTypes(type);
     }
 
     FunctionDescProto descProto;
@@ -249,9 +248,8 @@ public abstract class AbstractCatalogClient implements CatalogService {
     ContainFunctionRequest.Builder builder =
         ContainFunctionRequest.newBuilder();
     builder.setSignature(signature);
-    int size = paramTypes.length;
-    for (int i = 0; i < size; i++) {
-      builder.addParameterTypes(paramTypes[i]);
+    for (DataType type : paramTypes) {
+      builder.addParameterTypes(type);
     }
     try {
       return stub.containFunction(null, builder.build()).getValue();

http://git-wip-us.apache.org/repos/asf/incubator-tajo/blob/c1c6f83e/tajo-catalog/tajo-catalog-client/src/main/java/tajo/catalog/AlreadyRegisteredURIException.java
----------------------------------------------------------------------
diff --git a/tajo-catalog/tajo-catalog-client/src/main/java/tajo/catalog/AlreadyRegisteredURIException.java b/tajo-catalog/tajo-catalog-client/src/main/java/tajo/catalog/AlreadyRegisteredURIException.java
deleted file mode 100644
index 69df366..0000000
--- a/tajo-catalog/tajo-catalog-client/src/main/java/tajo/catalog/AlreadyRegisteredURIException.java
+++ /dev/null
@@ -1,40 +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 tajo.catalog;
-
-import java.net.URI;
-
-public class AlreadyRegisteredURIException extends RuntimeException {
-
-	private static final long serialVersionUID = 747390434221048348L;
-
-	public AlreadyRegisteredURIException() {
-	}
-
-	/**
-	 * @param uri
-	 */
-	public AlreadyRegisteredURIException(String uri) {
-		super("Already registered TRID: "+uri);
-	}
-	
-	public AlreadyRegisteredURIException(URI uri) {
-		this("Already registered TRID: "+uri);
-	}
-}

http://git-wip-us.apache.org/repos/asf/incubator-tajo/blob/c1c6f83e/tajo-catalog/tajo-catalog-client/src/main/java/tajo/catalog/AttributeType.java
----------------------------------------------------------------------
diff --git a/tajo-catalog/tajo-catalog-client/src/main/java/tajo/catalog/AttributeType.java b/tajo-catalog/tajo-catalog-client/src/main/java/tajo/catalog/AttributeType.java
deleted file mode 100644
index 49e757b..0000000
--- a/tajo-catalog/tajo-catalog-client/src/main/java/tajo/catalog/AttributeType.java
+++ /dev/null
@@ -1,25 +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 tajo.catalog;
-
-public enum AttributeType {
-	GROUPBY,
-	AGGREGATION,
-	NORMAL
-}

http://git-wip-us.apache.org/repos/asf/incubator-tajo/blob/c1c6f83e/tajo-catalog/tajo-catalog-client/src/main/java/tajo/catalog/CatalogReader.java
----------------------------------------------------------------------
diff --git a/tajo-catalog/tajo-catalog-client/src/main/java/tajo/catalog/CatalogReader.java b/tajo-catalog/tajo-catalog-client/src/main/java/tajo/catalog/CatalogReader.java
deleted file mode 100644
index 3c61772..0000000
--- a/tajo-catalog/tajo-catalog-client/src/main/java/tajo/catalog/CatalogReader.java
+++ /dev/null
@@ -1,31 +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 tajo.catalog;
-
-import tajo.catalog.proto.CatalogProtos.DataType;
-
-public interface CatalogReader {
-  boolean existsTable(String tableId);
-  
-  TableDesc getTableDesc(String tableId);
-  
-  FunctionDesc getFunctionMeta(String signature, DataType... paramTypes);
-  
-  boolean containFunction(String signature, DataType... paramTypes);
-}

http://git-wip-us.apache.org/repos/asf/incubator-tajo/blob/c1c6f83e/tajo-catalog/tajo-catalog-client/src/main/java/tajo/catalog/CatalogService.java
----------------------------------------------------------------------
diff --git a/tajo-catalog/tajo-catalog-client/src/main/java/tajo/catalog/CatalogService.java b/tajo-catalog/tajo-catalog-client/src/main/java/tajo/catalog/CatalogService.java
index 290daa0..823ade1 100644
--- a/tajo-catalog/tajo-catalog-client/src/main/java/tajo/catalog/CatalogService.java
+++ b/tajo-catalog/tajo-catalog-client/src/main/java/tajo/catalog/CatalogService.java
@@ -18,7 +18,7 @@
 
 package tajo.catalog;
 
-import tajo.catalog.proto.CatalogProtos.DataType;
+import tajo.common.TajoDataTypes.DataType;
 
 import java.util.Collection;
 

http://git-wip-us.apache.org/repos/asf/incubator-tajo/blob/c1c6f83e/tajo-catalog/tajo-catalog-client/src/main/java/tajo/catalog/CatalogServiceProtocol.java
----------------------------------------------------------------------
diff --git a/tajo-catalog/tajo-catalog-client/src/main/java/tajo/catalog/CatalogServiceProtocol.java b/tajo-catalog/tajo-catalog-client/src/main/java/tajo/catalog/CatalogServiceProtocol.java
deleted file mode 100644
index bdc7e1a..0000000
--- a/tajo-catalog/tajo-catalog-client/src/main/java/tajo/catalog/CatalogServiceProtocol.java
+++ /dev/null
@@ -1,105 +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 tajo.catalog;
-
-import tajo.catalog.proto.CatalogProtos.*;
-import tajo.rpc.protocolrecords.PrimitiveProtos.BoolProto;
-import tajo.rpc.protocolrecords.PrimitiveProtos.NullProto;
-import tajo.rpc.protocolrecords.PrimitiveProtos.StringProto;
-
-public interface CatalogServiceProtocol {
-  
-  /**
-   * Get a table description by name
-   * @param name table name
-   * @return a table description
-   * @see TableDescImpl
-   * @throws Throwable
-   */
-  TableDescProto getTableDesc(StringProto name);
-  
-  /**
-   * 
-   * @return
-   * @throws tajo.catalog.exception.CatalogException
-   */
-  GetAllTableNamesResponse getAllTableNames(NullProto request);
-  
-  /**
-   * 
-   * @return
-   * @throws tajo.catalog.exception.CatalogException
-   */
-  GetFunctionsResponse getFunctions(NullProto request);
-  
-  /**
-   * Add a table via table description
-   * @param meta table meta
-   * @see TableDescImpl
-   * @throws Throwable
-   */
-  void addTable(TableDescProto desc);
-  
-  /**
-   * Drop a table by name
-   * @param name table name
-   * @throws Throwable
-   */
-  void deleteTable(StringProto name);
-  
-  BoolProto existsTable(StringProto tableId);
-  
-  void addIndex(IndexDescProto proto);
-  
-  BoolProto existIndex(StringProto indexName);
-  
-  BoolProto existIndex(GetIndexRequest req);
-  
-  IndexDescProto getIndex(StringProto indexName);
-  
-  IndexDescProto getIndex(GetIndexRequest req);
-  
-  void delIndex(StringProto indexName);
-  
-  /**
-   * 
-   * @param funcDesc
-   */
-  void registerFunction(FunctionDescProto funcDesc);
-  
-  /**
-   * 
-   * @param signature
-   */
-  void unregisterFunction(UnregisterFunctionRequest request);
-  
-  /**
-   * 
-   * @param signature
-   * @return
-   */
-  FunctionDescProto getFunctionMeta(GetFunctionMetaRequest request);
-  
-  /**
-   * 
-   * @param signature
-   * @return
-   */
-  BoolProto containFunction(ContainFunctionRequest request);
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-tajo/blob/c1c6f83e/tajo-catalog/tajo-catalog-client/src/main/proto/CatalogProtos.proto
----------------------------------------------------------------------
diff --git a/tajo-catalog/tajo-catalog-client/src/main/proto/CatalogProtos.proto b/tajo-catalog/tajo-catalog-client/src/main/proto/CatalogProtos.proto
index dd1bf69..acb89fe 100644
--- a/tajo-catalog/tajo-catalog-client/src/main/proto/CatalogProtos.proto
+++ b/tajo-catalog/tajo-catalog-client/src/main/proto/CatalogProtos.proto
@@ -22,28 +22,7 @@ option optimize_for = SPEED;
 option java_generic_services = false;
 option java_generate_equals_and_hash = true;
 
-enum DataType {
-    BOOLEAN = 0;
-    BYTE = 1;
-    CHAR = 2;
-    BYTES = 3;
-    SHORT = 4;
-    INT = 5;
-    BIGINT = 6;
-    LONG = 7;
-    FLOAT = 8;
-    DOUBLE = 9;
-    BIGDECIMAL = 10;
-    STRING = 11;
-    DATE = 12;
-    IPv4 = 13;
-    IPv6 = 14;
-    NULL = 15;
-    ANY = 16;
-    ALL = 17;
-    ARRAY = 18;
-    STRING2 = 19;
-}
+import "DataTypes.proto";
 
 enum StoreType {
 	MEM = 0;

http://git-wip-us.apache.org/repos/asf/incubator-tajo/blob/c1c6f83e/tajo-catalog/tajo-catalog-common/src/main/java/tajo/catalog/CatalogUtil.java
----------------------------------------------------------------------
diff --git a/tajo-catalog/tajo-catalog-common/src/main/java/tajo/catalog/CatalogUtil.java b/tajo-catalog/tajo-catalog-common/src/main/java/tajo/catalog/CatalogUtil.java
index de193f3..41a72de 100644
--- a/tajo-catalog/tajo-catalog-common/src/main/java/tajo/catalog/CatalogUtil.java
+++ b/tajo-catalog/tajo-catalog-common/src/main/java/tajo/catalog/CatalogUtil.java
@@ -18,10 +18,13 @@
 
 package tajo.catalog;
 
+import org.apache.hadoop.fs.Path;
 import tajo.catalog.proto.CatalogProtos;
 import tajo.catalog.proto.CatalogProtos.ColumnProto;
-import tajo.catalog.proto.CatalogProtos.DataType;
 import tajo.catalog.proto.CatalogProtos.SchemaProto;
+import tajo.catalog.proto.CatalogProtos.TableDescProto;
+import tajo.catalog.statistics.TableStat;
+import tajo.common.TajoDataTypes.DataType;
 import tajo.util.FileUtil;
 
 import java.io.File;
@@ -29,12 +32,12 @@ import java.io.IOException;
 import java.util.Collection;
 
 import static tajo.catalog.proto.CatalogProtos.StoreType;
+import static tajo.common.TajoDataTypes.Type;
 
 public class CatalogUtil {
   public static String getCanonicalName(String signature,
       Collection<DataType> paramTypes) {
-    DataType [] types = paramTypes.toArray(
-        new DataType[paramTypes.size()]);
+    DataType [] types = paramTypes.toArray(new DataType[paramTypes.size()]);
     return getCanonicalName(signature, types);
   }
   public static String getCanonicalName(String signature,
@@ -43,7 +46,7 @@ public class CatalogUtil {
     sb.append("(");
     int i = 0;
     for (DataType type : paramTypes) {
-      sb.append(type);
+      sb.append(type.getType());
       if(i < paramTypes.length - 1) {
         sb.append(",");
       }
@@ -53,58 +56,6 @@ public class CatalogUtil {
     sb.append(")");
     return sb.toString();
   }
-  
-  public static char getTypeCode(DataType type) {
-    switch(type) {
-    case BOOLEAN: return 'Z';
-    case BYTE: return 'B';
-    case SHORT: return 'S';
-    case INT: return 'I';
-    case LONG: return 'J';
-    case FLOAT: return 'F';
-    case DOUBLE: return 'D';
-    case BYTES: return 'N';
-    case IPv4: return '4';
-    case IPv6: return '6';
-    default: throw new InternalError("Unsupported type exception");
-    }
-  }
-
-    /**
-   * This method transforms the unqualified names of a given schema into
-   * the qualified names.
-   * 
-   * @param tableName a table name to be prefixed
-   * @param schema a schema to be transformed
-   * 
-   * @return
-   */
-
-  public static SchemaProto getQualfiedSchema(String tableName,
-      SchemaProto schema) {
-    SchemaProto.Builder revisedSchema = SchemaProto.newBuilder(schema);
-    revisedSchema.clearFields();
-    String[] split;
-    for (ColumnProto col : schema.getFieldsList()) {
-      split = col.getColumnName().split("\\.");
-      if (split.length == 1) { // if not qualified name
-        // rewrite the column
-        ColumnProto.Builder builder = ColumnProto.newBuilder(col);
-        builder.setColumnName(tableName + "." + col.getColumnName());
-        col = builder.build();
-      } else if (split.length == 2) {
-        ColumnProto.Builder builder = ColumnProto.newBuilder(col);
-        builder.setColumnName(tableName + "." + split[1]);
-        col = builder.build();
-      } else {
-        throw new InternalError("Unaccetable field name "
-            + col.getColumnName());
-      }
-      revisedSchema.addFields(col);
-    }
-
-    return revisedSchema.build();
-  }
 
   public static String prettyPrint(TableMeta meta) {
     StringBuilder sb = new StringBuilder();
@@ -152,4 +103,79 @@ public class CatalogUtil {
       return null;
     }
   }
+
+  public static TableMeta newTableMeta(Schema schema, StoreType type) {
+    return new TableMetaImpl(schema, type, new Options());
+  }
+
+  public static TableMeta newTableMeta(Schema schema, StoreType type,
+      Options options) {
+    return new TableMetaImpl(schema, type, options);
+  }
+
+  public static TableMeta newTableMeta(Schema schema, StoreType type, Options options,
+      TableStat stat) {
+    return new TableMetaImpl(schema, type, options, stat);
+  }
+
+  public static TableDesc newTableDesc(String tableName, TableMeta meta,
+      Path path) {
+    return new TableDescImpl(tableName, meta, path);
+  }
+
+  public static TableDesc newTableDesc(TableDescProto proto) {
+    return new TableDescImpl(proto);
+  }
+
+  public static TableDesc newTableDesc(String tableName,
+      Schema schema, StoreType type, Options options, Path path) {
+    return new TableDescImpl(tableName, schema, type, options, path);
+  }
+
+  /**
+  * This method transforms the unqualified names of a given schema into
+  * the qualified names.
+  *
+  * @param tableName a table name to be prefixed
+  * @param schema a schema to be transformed
+  *
+  * @return
+  */
+  public static SchemaProto getQualfiedSchema(String tableName,
+      SchemaProto schema) {
+    SchemaProto.Builder revisedSchema = SchemaProto.newBuilder(schema);
+    revisedSchema.clearFields();
+    String[] split;
+    for (ColumnProto col : schema.getFieldsList()) {
+      split = col.getColumnName().split("\\.");
+      if (split.length == 1) { // if not qualified name
+        // rewrite the column
+        ColumnProto.Builder builder = ColumnProto.newBuilder(col);
+        builder.setColumnName(tableName + "." + col.getColumnName());
+        col = builder.build();
+      } else if (split.length == 2) {
+        ColumnProto.Builder builder = ColumnProto.newBuilder(col);
+        builder.setColumnName(tableName + "." + split[1]);
+        col = builder.build();
+      } else {
+        throw new InternalError("Unaccetable field name "
+            + col.getColumnName());
+      }
+      revisedSchema.addFields(col);
+    }
+
+    return revisedSchema.build();
+  }
+
+  public static DataType newDataTypeWithoutLen(Type type) {
+    return DataType.newBuilder().setType(type).build();
+  }
+
+  public static DataType [] newDataTypesWithoutLen(Type... types) {
+    DataType [] dataTypes = new DataType[types.length];
+    for (int i = 0; i < types.length; i++) {
+      dataTypes[i] = DataType.newBuilder().setType(types[i]).build();
+    }
+    return dataTypes;
+  }
 }

http://git-wip-us.apache.org/repos/asf/incubator-tajo/blob/c1c6f83e/tajo-catalog/tajo-catalog-common/src/main/java/tajo/catalog/Column.java
----------------------------------------------------------------------
diff --git a/tajo-catalog/tajo-catalog-common/src/main/java/tajo/catalog/Column.java b/tajo-catalog/tajo-catalog-common/src/main/java/tajo/catalog/Column.java
index 0deff1f..ecdc4c3 100644
--- a/tajo-catalog/tajo-catalog-common/src/main/java/tajo/catalog/Column.java
+++ b/tajo-catalog/tajo-catalog-common/src/main/java/tajo/catalog/Column.java
@@ -22,8 +22,9 @@ import com.google.gson.annotations.Expose;
 import tajo.catalog.json.GsonCreator;
 import tajo.catalog.proto.CatalogProtos.ColumnProto;
 import tajo.catalog.proto.CatalogProtos.ColumnProtoOrBuilder;
-import tajo.catalog.proto.CatalogProtos.DataType;
 import tajo.common.ProtoObject;
+import tajo.common.TajoDataTypes;
+import tajo.common.TajoDataTypes.DataType;
 
 public class Column implements ProtoObject<ColumnProto>, Cloneable {
 	private ColumnProto proto = ColumnProto.getDefaultInstance();
@@ -42,6 +43,10 @@ public class Column implements ProtoObject<ColumnProto>, Cloneable {
 		this.name = columnName.toLowerCase();
 		this.dataType = dataType;
 	}
+
+  public Column(String columnName, TajoDataTypes.Type type) {
+    this(columnName, CatalogUtil.newDataTypeWithoutLen(type));
+  }
 	
 	public Column(ColumnProto proto) {
 		this.proto = proto;
@@ -108,11 +113,8 @@ public class Column implements ProtoObject<ColumnProto>, Cloneable {
 	public boolean equals(Object o) {
 		if (o instanceof Column) {
 			Column cd = (Column)o;
-			if (this.getQualifiedName().equals(cd.getQualifiedName()) &&
-					this.getDataType() == cd.getDataType()
-					) {
-				return true;
-			}
+			return this.getQualifiedName().equals(cd.getQualifiedName()) &&
+					this.getDataType().equals(cd.getDataType());
 		}
 		return false;
 	}
@@ -164,7 +166,7 @@ public class Column implements ProtoObject<ColumnProto>, Cloneable {
 	}
 	
 	public String toString() {
-	  return getQualifiedName() +" (" + getDataType()+")";
+	  return getQualifiedName() +" (" + getDataType().getType() +")";
 	}
 	
 	public String toJSON() {

http://git-wip-us.apache.org/repos/asf/incubator-tajo/blob/c1c6f83e/tajo-catalog/tajo-catalog-common/src/main/java/tajo/catalog/FunctionDesc.java
----------------------------------------------------------------------
diff --git a/tajo-catalog/tajo-catalog-common/src/main/java/tajo/catalog/FunctionDesc.java b/tajo-catalog/tajo-catalog-common/src/main/java/tajo/catalog/FunctionDesc.java
index f11da36..7fdf336 100644
--- a/tajo-catalog/tajo-catalog-common/src/main/java/tajo/catalog/FunctionDesc.java
+++ b/tajo-catalog/tajo-catalog-common/src/main/java/tajo/catalog/FunctionDesc.java
@@ -23,11 +23,11 @@ import com.google.gson.annotations.Expose;
 import tajo.catalog.function.Function;
 import tajo.catalog.function.GeneralFunction;
 import tajo.catalog.json.GsonCreator;
-import tajo.catalog.proto.CatalogProtos.DataType;
 import tajo.catalog.proto.CatalogProtos.FunctionDescProto;
 import tajo.catalog.proto.CatalogProtos.FunctionDescProtoOrBuilder;
 import tajo.catalog.proto.CatalogProtos.FunctionType;
 import tajo.common.ProtoObject;
+import tajo.common.TajoDataTypes.DataType;
 import tajo.exception.InternalException;
 
 import java.lang.reflect.Constructor;
@@ -65,7 +65,7 @@ public class FunctionDesc implements ProtoObject<FunctionDescProto>, Cloneable {
 
   @SuppressWarnings("unchecked")
   public FunctionDesc(String signature, String className, FunctionType type,
-      DataType [] retType, DataType... argTypes) throws ClassNotFoundException {
+                      DataType [] retType, DataType... argTypes) throws ClassNotFoundException {
     this(signature, (Class<? extends Function>) Class.forName(className), type,
         retType, argTypes);
   }
@@ -151,7 +151,7 @@ public class FunctionDesc implements ProtoObject<FunctionDescProto>, Cloneable {
     
   }
 
-  public static DataType[] newNoNameSchema(DataType... types) {
+  public static DataType [] newNoNameSchema(DataType ... types) {
     DataType [] dataTypes = types.clone();
     return dataTypes;
   }

http://git-wip-us.apache.org/repos/asf/incubator-tajo/blob/c1c6f83e/tajo-catalog/tajo-catalog-common/src/main/java/tajo/catalog/Schema.java
----------------------------------------------------------------------
diff --git a/tajo-catalog/tajo-catalog-common/src/main/java/tajo/catalog/Schema.java b/tajo-catalog/tajo-catalog-common/src/main/java/tajo/catalog/Schema.java
index 846bb36..d11170d 100644
--- a/tajo-catalog/tajo-catalog-common/src/main/java/tajo/catalog/Schema.java
+++ b/tajo-catalog/tajo-catalog-common/src/main/java/tajo/catalog/Schema.java
@@ -25,10 +25,11 @@ import org.apache.commons.logging.LogFactory;
 import tajo.catalog.exception.AlreadyExistsFieldException;
 import tajo.catalog.json.GsonCreator;
 import tajo.catalog.proto.CatalogProtos.ColumnProto;
-import tajo.catalog.proto.CatalogProtos.DataType;
 import tajo.catalog.proto.CatalogProtos.SchemaProto;
 import tajo.catalog.proto.CatalogProtos.SchemaProtoOrBuilder;
 import tajo.common.ProtoObject;
+import tajo.common.TajoDataTypes.DataType;
+import tajo.common.TajoDataTypes.Type;
 
 import java.util.*;
 
@@ -142,7 +143,11 @@ public class Schema implements ProtoObject<SchemaProto>, Cloneable {
 		}
 	}
 
-	public synchronized Schema addColumn(String name, DataType dataType) {
+  public synchronized Schema addColumn(String name, Type type) {
+    return addColumn(name, CatalogUtil.newDataTypeWithoutLen(type));
+  }
+
+  public synchronized Schema addColumn(String name, DataType dataType) {
 		initColumns();
 		setModified();
 		String lowcased = name.toLowerCase();

http://git-wip-us.apache.org/repos/asf/incubator-tajo/blob/c1c6f83e/tajo-catalog/tajo-catalog-common/src/main/java/tajo/catalog/TCatUtil.java
----------------------------------------------------------------------
diff --git a/tajo-catalog/tajo-catalog-common/src/main/java/tajo/catalog/TCatUtil.java b/tajo-catalog/tajo-catalog-common/src/main/java/tajo/catalog/TCatUtil.java
deleted file mode 100644
index 5ce0e50..0000000
--- a/tajo-catalog/tajo-catalog-common/src/main/java/tajo/catalog/TCatUtil.java
+++ /dev/null
@@ -1,130 +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 tajo.catalog;
-
-import org.apache.hadoop.fs.Path;
-import tajo.catalog.proto.CatalogProtos.*;
-import tajo.catalog.statistics.TableStat;
-
-import java.util.Collection;
-
-public class TCatUtil {
-  public static String getCanonicalName(String signature,
-      Collection<DataType> paramTypes) {
-    DataType [] types = paramTypes.toArray(
-        new DataType[paramTypes.size()]);
-    return getCanonicalName(signature, types);
-  }
-  public static String getCanonicalName(String signature,
-      DataType...paramTypes) {
-    StringBuilder sb = new StringBuilder(signature);
-    sb.append("(");
-    int i = 0;
-    for (DataType type : paramTypes) {
-      sb.append(type);
-      if(i < paramTypes.length - 1) {
-        sb.append(",");
-      }
-      
-      i++;
-    }
-    sb.append(")");
-    return sb.toString();
-  }
-  
-  public static char getTypeCode(DataType type) {
-    switch(type) {
-    case BOOLEAN: return 'Z';
-    case BYTE: return 'B';
-    case SHORT: return 'S';
-    case INT: return 'I';
-    case LONG: return 'J';
-    case FLOAT: return 'F';
-    case DOUBLE: return 'D';
-    case BYTES: return 'N';
-    case IPv4: return '4';
-    case IPv6: return '6';
-    default: throw new InternalError("Unsupported type exception");
-    }
-  }
-
-    /**
-   * This method transforms the unqualified names of a given schema into
-   * the qualified names.
-   * 
-   * @param tableName a table name to be prefixed
-   * @param schema a schema to be transformed
-   * 
-   * @return
-   */
-
-  public static SchemaProto getQualfiedSchema(String tableName,
-      SchemaProto schema) {
-    SchemaProto.Builder revisedSchema = SchemaProto.newBuilder(schema);
-    revisedSchema.clearFields();
-    String[] split;
-    for (ColumnProto col : schema.getFieldsList()) {
-      split = col.getColumnName().split("\\.");
-      if (split.length == 1) { // if not qualified name
-        // rewrite the column
-        ColumnProto.Builder builder = ColumnProto.newBuilder(col);
-        builder.setColumnName(tableName + "." + col.getColumnName());
-        col = builder.build();
-      } else if (split.length == 2) {
-        ColumnProto.Builder builder = ColumnProto.newBuilder(col);
-        builder.setColumnName(tableName + "." + split[1]);
-        col = builder.build();
-      } else {
-        throw new InternalError("Unaccetable field name "
-            + col.getColumnName());
-      }
-      revisedSchema.addFields(col);
-    }
-
-    return revisedSchema.build();
-  }
-  
-  public static TableMeta newTableMeta(Schema schema, StoreType type) {
-    return new TableMetaImpl(schema, type, new Options());
-  }
-  
-  public static TableMeta newTableMeta(Schema schema, StoreType type, 
-      Options options) {
-    return new TableMetaImpl(schema, type, options);
-  }
-  
-  public static TableMeta newTableMeta(Schema schema, StoreType type, Options options, 
-      TableStat stat) {
-    return new TableMetaImpl(schema, type, options, stat);
-  }
-  
-  public static TableDesc newTableDesc(String tableName, TableMeta meta, 
-      Path path) {
-    return new TableDescImpl(tableName, meta, path);
-  }
-  
-  public static TableDesc newTableDesc(TableDescProto proto) {
-    return new TableDescImpl(proto);
-  }
-  
-  public static TableDesc newTableDesc(String tableName, 
-      Schema schema, StoreType type, Options options, Path path) {
-    return new TableDescImpl(tableName, schema, type, options, path);
-  }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-tajo/blob/c1c6f83e/tajo-catalog/tajo-catalog-common/src/main/java/tajo/catalog/function/AggFunction.java
----------------------------------------------------------------------
diff --git a/tajo-catalog/tajo-catalog-common/src/main/java/tajo/catalog/function/AggFunction.java b/tajo-catalog/tajo-catalog-common/src/main/java/tajo/catalog/function/AggFunction.java
index a337afb..38d1060 100644
--- a/tajo-catalog/tajo-catalog-common/src/main/java/tajo/catalog/function/AggFunction.java
+++ b/tajo-catalog/tajo-catalog-common/src/main/java/tajo/catalog/function/AggFunction.java
@@ -21,7 +21,7 @@ package tajo.catalog.function;
 import com.google.gson.Gson;
 import tajo.catalog.Column;
 import tajo.catalog.json.GsonCreator;
-import tajo.catalog.proto.CatalogProtos;
+import tajo.common.TajoDataTypes.DataType;
 import tajo.datum.Datum;
 import tajo.storage.Tuple;
 
@@ -41,7 +41,7 @@ public abstract class AggFunction<T extends Datum> extends Function<T> {
 
   public abstract Datum getPartialResult(FunctionContext ctx);
 
-  public abstract CatalogProtos.DataType [] getPartialResultType();
+  public abstract DataType [] getPartialResultType();
 
   public abstract T terminate(FunctionContext ctx);
 

http://git-wip-us.apache.org/repos/asf/incubator-tajo/blob/c1c6f83e/tajo-catalog/tajo-catalog-common/src/main/java/tajo/catalog/json/GsonCreator.java
----------------------------------------------------------------------
diff --git a/tajo-catalog/tajo-catalog-common/src/main/java/tajo/catalog/json/GsonCreator.java b/tajo-catalog/tajo-catalog-common/src/main/java/tajo/catalog/json/GsonCreator.java
index 24a817f..ee515ff 100644
--- a/tajo-catalog/tajo-catalog-common/src/main/java/tajo/catalog/json/GsonCreator.java
+++ b/tajo-catalog/tajo-catalog-common/src/main/java/tajo/catalog/json/GsonCreator.java
@@ -26,10 +26,12 @@ import tajo.catalog.TableMeta;
 import tajo.catalog.function.AggFunction;
 import tajo.catalog.function.Function;
 import tajo.catalog.function.GeneralFunction;
+import tajo.common.TajoDataTypes.DataType;
 import tajo.datum.Datum;
 import tajo.datum.json.DatumAdapter;
 import tajo.gson.ClassNameDeserializer;
 import tajo.gson.ClassNameSerializer;
+import tajo.gson.DataTypeAdapter;
 
 public class GsonCreator {
 	private static GsonBuilder builder;
@@ -48,6 +50,7 @@ public class GsonCreator {
       builder.registerTypeAdapter(GeneralFunction.class, new FunctionAdapter());
       builder.registerTypeAdapter(AggFunction.class, new FunctionAdapter());
 			builder.registerTypeAdapter(Datum.class, new DatumAdapter());
+      builder.registerTypeAdapter(DataType.class, new DataTypeAdapter());
 		}
 	}
 

http://git-wip-us.apache.org/repos/asf/incubator-tajo/blob/c1c6f83e/tajo-catalog/tajo-catalog-common/src/main/java/tajo/catalog/statistics/TupleUtil.java
----------------------------------------------------------------------
diff --git a/tajo-catalog/tajo-catalog-common/src/main/java/tajo/catalog/statistics/TupleUtil.java b/tajo-catalog/tajo-catalog-common/src/main/java/tajo/catalog/statistics/TupleUtil.java
index ab3038c..5663005 100644
--- a/tajo-catalog/tajo-catalog-common/src/main/java/tajo/catalog/statistics/TupleUtil.java
+++ b/tajo-catalog/tajo-catalog-common/src/main/java/tajo/catalog/statistics/TupleUtil.java
@@ -18,37 +18,32 @@
 
 package tajo.catalog.statistics;
 
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import tajo.catalog.proto.CatalogProtos;
+import tajo.common.TajoDataTypes.DataType;
 import tajo.datum.*;
 
 public class TupleUtil {
-  /** class logger **/
-  private static final Log LOG = LogFactory.getLog(TupleUtil.class);
-
-  public static Datum createFromBytes(CatalogProtos.DataType type, byte [] bytes) {
-    switch (type) {
+  public static Datum createFromBytes(DataType type, byte [] bytes) {
+    switch (type.getType()) {
       case BOOLEAN:
-        return new BoolDatum(bytes);
-      case BYTE:
-        return new ByteDatum(bytes);
+        return new BooleanDatum(bytes);
+      case BLOB:
+        return new BlobDatum(bytes);
       case CHAR:
         return new CharDatum(bytes);
-      case SHORT:
-        return new ShortDatum(bytes);
-      case INT:
-        return new IntDatum(bytes);
-      case LONG:
-        return new LongDatum(bytes);
-      case FLOAT:
-        return new FloatDatum(bytes);
-      case DOUBLE:
-        return new DoubleDatum(bytes);
-      case STRING:
-        return new StringDatum(bytes);
-      case IPv4:
-        return new IPv4Datum(bytes);
+      case INT2:
+        return new Int2Datum(bytes);
+      case INT4:
+        return new Int4Datum(bytes);
+      case INT8:
+        return new Int8Datum(bytes);
+      case FLOAT4:
+        return new Float4Datum(bytes);
+      case FLOAT8:
+        return new Float8Datum(bytes);
+      case TEXT:
+        return new TextDatum(bytes);
+      case INET4:
+        return new Inet4Datum(bytes);
       default: throw new UnsupportedOperationException(type + " is not supported yet");
     }
   }

http://git-wip-us.apache.org/repos/asf/incubator-tajo/blob/c1c6f83e/tajo-catalog/tajo-catalog-common/src/main/proto/CatalogProtos.proto
----------------------------------------------------------------------
diff --git a/tajo-catalog/tajo-catalog-common/src/main/proto/CatalogProtos.proto b/tajo-catalog/tajo-catalog-common/src/main/proto/CatalogProtos.proto
index dd1bf69..36b33c1 100644
--- a/tajo-catalog/tajo-catalog-common/src/main/proto/CatalogProtos.proto
+++ b/tajo-catalog/tajo-catalog-common/src/main/proto/CatalogProtos.proto
@@ -22,33 +22,12 @@ option optimize_for = SPEED;
 option java_generic_services = false;
 option java_generate_equals_and_hash = true;
 
-enum DataType {
-    BOOLEAN = 0;
-    BYTE = 1;
-    CHAR = 2;
-    BYTES = 3;
-    SHORT = 4;
-    INT = 5;
-    BIGINT = 6;
-    LONG = 7;
-    FLOAT = 8;
-    DOUBLE = 9;
-    BIGDECIMAL = 10;
-    STRING = 11;
-    DATE = 12;
-    IPv4 = 13;
-    IPv6 = 14;
-    NULL = 15;
-    ANY = 16;
-    ALL = 17;
-    ARRAY = 18;
-    STRING2 = 19;
-}
+import "DataTypes.proto";
 
 enum StoreType {
-	MEM = 0;
-	CSV = 1;
-	RAW = 2;
+  MEM = 0;
+  CSV = 1;
+  RAW = 2;
   RCFILE = 3;
   ROWFILE = 4;
   HCFILE = 5;
@@ -56,147 +35,147 @@ enum StoreType {
 }
 
 enum OrderType {
-    ORDER_NONE = 0;
-    ASC = 1;
-    DSC = 2;
+  ORDER_NONE = 0;
+  ASC = 1;
+  DSC = 2;
 }
 
 enum CompressType {
-    COMP_NONE = 0;
-    NULL_SUPPRESS = 1;
-    RUN_LENGTH = 2;
-    BIT_VECTOR = 3;
-    DICTIONARY = 4;
-    SNAPPY = 5;
-    LZ = 6;
+  COMP_NONE = 0;
+  NULL_SUPPRESS = 1;
+  RUN_LENGTH = 2;
+  BIT_VECTOR = 3;
+  DICTIONARY = 4;
+  SNAPPY = 5;
+  LZ = 6;
 }
 
 message ColumnMetaProto {
-    required DataType dataType = 1;
-    required bool compressed = 2;
-    required bool sorted = 3;
-    required bool contiguous = 4;
-    required StoreType storeType = 5;
-    required CompressType compType = 6;
-    required int64 startRid = 7;
-    required int32 recordNum = 8;
-    required int32 offsetToIndex = 9;
+  required DataType dataType = 1;
+  required bool compressed = 2;
+  required bool sorted = 3;
+  required bool contiguous = 4;
+  required StoreType storeType = 5;
+  required CompressType compType = 6;
+  required int64 startRid = 7;
+  required int32 recordNum = 8;
+  required int32 offsetToIndex = 9;
 }
 
 message ColumnProto {
-	required string columnName = 1;
-	required DataType dataType = 2;
+  required string columnName = 1;
+  required DataType dataType = 2;
 }
 
 message SchemaProto {
-	repeated ColumnProto fields = 1;
+  repeated ColumnProto fields = 1;
 }
 
 message KeyValueProto {
-	required string key = 1;
-	required string value = 2;
+  required string key = 1;
+  required string value = 2;
 }
 
 message KeyValueSetProto {
-	repeated KeyValueProto keyval = 1;
+  repeated KeyValueProto keyval = 1;
 }
 
 message TabletProto {
-	required string id = 1;
-	required string path = 2;
-	required int64 startOffset = 3;
-	required int64 length = 4;
-	required TableProto meta = 5;
-	optional TableStatProto stat = 6;
+  required string id = 1;
+  required string path = 2;
+  required int64 startOffset = 3;
+  required int64 length = 4;
+  required TableProto meta = 5;
+  optional TableStatProto stat = 6;
   optional bool distCached = 7 [default = false];
 }
 
 message TableProto {
-    required SchemaProto schema = 1;
-    required StoreType storeType = 2;
-    required KeyValueSetProto params = 3;
-    optional TableStatProto stat = 4;
+  required SchemaProto schema = 1;
+  required StoreType storeType = 2;
+  required KeyValueSetProto params = 3;
+  optional TableStatProto stat = 4;
 }
 
 message TableDescProto {
-	required string id = 1;
-	required string path = 2;
-	required TableProto meta = 3;
+  required string id = 1;
+  required string path = 2;
+  required TableProto meta = 3;
 }
 
 enum FunctionType {
-	GENERAL = 0;
-	AGGREGATION = 1;
+  GENERAL = 0;
+  AGGREGATION = 1;
 }
 
 message FunctionDescProto {
-	required string signature = 1;
-	required string className = 2;
-	required FunctionType type = 3;
-	repeated DataType parameterTypes = 4;
-	required DataType returnType = 5;
+  required string signature = 1;
+  required string className = 2;
+  required FunctionType type = 3;
+  repeated DataType parameterTypes = 4;
+  required DataType returnType = 5;
 }
 
 message IndexDescProto {
-    required string name = 1;
-    required string tableId = 2;
-    required ColumnProto column = 3;
-    required IndexMethod indexMethod = 4;
-    optional bool isUnique = 5 [default = false];
-    optional bool isClustered = 6 [default = false];
-    optional bool isAscending = 7 [default = false];
+  required string name = 1;
+  required string tableId = 2;
+  required ColumnProto column = 3;
+  required IndexMethod indexMethod = 4;
+  optional bool isUnique = 5 [default = false];
+  optional bool isClustered = 6 [default = false];
+  optional bool isAscending = 7 [default = false];
 }
 
 enum IndexMethod {
-    TWO_LEVEL_BIN_TREE = 0;
-    BTREE = 1;
-    HASH = 2;
-    BITMAP = 3;
+  TWO_LEVEL_BIN_TREE = 0;
+  BTREE = 1;
+  HASH = 2;
+  BITMAP = 3;
 }
 
 message GetAllTableNamesResponse {
-    repeated string tableName = 1;
+  repeated string tableName = 1;
 }
 
 message GetIndexRequest {
-    required string tableName = 1;
-    required string columnName = 2;
+  required string tableName = 1;
+  required string columnName = 2;
 }
 
 message GetFunctionsResponse {
-	repeated FunctionDescProto functionDesc = 1;
+  repeated FunctionDescProto functionDesc = 1;
 }
 
 message UnregisterFunctionRequest {
-	required string signature = 1;
-	repeated DataType parameterTypes = 2;
+  required string signature = 1;
+  repeated DataType parameterTypes = 2;
 }
 
 message GetFunctionMetaRequest {
-	required string signature = 1;
-	repeated DataType parameterTypes = 2;
+  required string signature = 1;
+  repeated DataType parameterTypes = 2;
 }
 
 message ContainFunctionRequest {
-	required string signature = 1;
-	repeated DataType parameterTypes = 2;
+  required string signature = 1;
+  repeated DataType parameterTypes = 2;
 }
 
 message TableStatProto {
-	required int64 numRows = 1;
-	required int64 numBytes = 2;
-	optional int32 numBlocks = 3;
-	optional int32 numPartitions = 4;
-	optional int64 avgRows = 5;
-	repeated ColumnStatProto colStat = 6;
+  required int64 numRows = 1;
+  required int64 numBytes = 2;
+  optional int32 numBlocks = 3;
+  optional int32 numPartitions = 4;
+  optional int64 avgRows = 5;
+  repeated ColumnStatProto colStat = 6;
 }
 
 message ColumnStatProto {
-    required ColumnProto column = 1;
-    optional int64 numDistVal = 2;
-    optional int64 numNulls = 3;
-    optional bytes minValue = 4;
-    optional bytes maxValue = 5;
+  required ColumnProto column = 1;
+  optional int64 numDistVal = 2;
+  optional int64 numNulls = 3;
+  optional bytes minValue = 4;
+  optional bytes maxValue = 5;
 }
 
 enum StatType {

http://git-wip-us.apache.org/repos/asf/incubator-tajo/blob/c1c6f83e/tajo-catalog/tajo-catalog-common/src/test/java/tajo/catalog/TestCatalogUtil.java
----------------------------------------------------------------------
diff --git a/tajo-catalog/tajo-catalog-common/src/test/java/tajo/catalog/TestCatalogUtil.java b/tajo-catalog/tajo-catalog-common/src/test/java/tajo/catalog/TestCatalogUtil.java
index 5d85461..a5a2279 100644
--- a/tajo-catalog/tajo-catalog-common/src/test/java/tajo/catalog/TestCatalogUtil.java
+++ b/tajo-catalog/tajo-catalog-common/src/test/java/tajo/catalog/TestCatalogUtil.java
@@ -19,15 +19,15 @@
 package tajo.catalog;
 
 import org.junit.Test;
-import tajo.catalog.proto.CatalogProtos.DataType;
+import tajo.common.TajoDataTypes.Type;
 
 import static org.junit.Assert.assertEquals;
 
 public class TestCatalogUtil {
   @Test
   public final void testGetCanonicalName() {
-    String canonical = TCatUtil.getCanonicalName("sum",
-        new DataType[]{DataType.INT, DataType.LONG});
-    assertEquals("sum(INT,LONG)", canonical);
+    String canonical = CatalogUtil.getCanonicalName("sum",
+        CatalogUtil.newDataTypesWithoutLen(Type.INT4,  Type.INT8));
+    assertEquals("sum(INT4,INT8)", canonical);
   }
 }

http://git-wip-us.apache.org/repos/asf/incubator-tajo/blob/c1c6f83e/tajo-catalog/tajo-catalog-common/src/test/java/tajo/catalog/TestColumn.java
----------------------------------------------------------------------
diff --git a/tajo-catalog/tajo-catalog-common/src/test/java/tajo/catalog/TestColumn.java b/tajo-catalog/tajo-catalog-common/src/test/java/tajo/catalog/TestColumn.java
index 2502b82..f434573 100644
--- a/tajo-catalog/tajo-catalog-common/src/test/java/tajo/catalog/TestColumn.java
+++ b/tajo-catalog/tajo-catalog-common/src/test/java/tajo/catalog/TestColumn.java
@@ -22,7 +22,8 @@ import com.google.gson.Gson;
 import org.junit.Before;
 import org.junit.Test;
 import tajo.catalog.json.GsonCreator;
-import tajo.catalog.proto.CatalogProtos.DataType;
+import tajo.common.TajoDataTypes.DataType;
+import tajo.common.TajoDataTypes.Type;
 
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertTrue;
@@ -32,12 +33,9 @@ public class TestColumn {
 	static final String FieldName2="f2";
 	static final String FieldName3="f3";	
 	
-	static final DataType Type1 = DataType.BYTE;
-	static final DataType Type2 = DataType.INT;
-	static final DataType Type3 = DataType.LONG;
-	
-	static final int Len2 = 10;
-	static final int Len3 = 12;
+	static final DataType Type1 = CatalogUtil.newDataTypeWithoutLen(Type.BLOB);
+	static final DataType Type2 = CatalogUtil.newDataTypeWithoutLen(Type.INT4);
+	static final DataType Type3 = CatalogUtil.newDataTypeWithoutLen(Type.INT8);
 	
 	Column field1;
 	Column field2;
@@ -45,9 +43,9 @@ public class TestColumn {
 	
 	@Before
 	public void setUp() {
-		field1 = new Column(FieldName1, DataType.BYTE);
-		field2 = new Column(FieldName2, DataType.INT );
-		field3 = new Column(FieldName3, DataType.LONG);
+		field1 = new Column(FieldName1, Type.BLOB);
+		field2 = new Column(FieldName2, Type.INT4);
+		field3 = new Column(FieldName3, Type.INT8);
 	}
 	
 	@Test
@@ -77,7 +75,7 @@ public class TestColumn {
 	
 	@Test
 	public final void testQualifiedName() {
-	  Column col = new Column("table_1.id", DataType.INT);
+	  Column col = new Column("table_1.id", Type.INT4);
 	  
 	  assertTrue(col.isQualified());
 	  assertEquals("id", col.getColumnName());
@@ -86,7 +84,7 @@ public class TestColumn {
 	}
 
 	@Test
-	public final void testToSon() {
+	public final void testToJson() {
 		Column col = new Column(field1.getProto());
 		String json = col.toJSON();
 		System.out.println(json);

http://git-wip-us.apache.org/repos/asf/incubator-tajo/blob/c1c6f83e/tajo-catalog/tajo-catalog-common/src/test/java/tajo/catalog/TestFunctionDesc.java
----------------------------------------------------------------------
diff --git a/tajo-catalog/tajo-catalog-common/src/test/java/tajo/catalog/TestFunctionDesc.java b/tajo-catalog/tajo-catalog-common/src/test/java/tajo/catalog/TestFunctionDesc.java
index 49fc09f..33b1de1 100644
--- a/tajo-catalog/tajo-catalog-common/src/test/java/tajo/catalog/TestFunctionDesc.java
+++ b/tajo-catalog/tajo-catalog-common/src/test/java/tajo/catalog/TestFunctionDesc.java
@@ -22,9 +22,10 @@ import com.google.gson.Gson;
 import org.junit.Test;
 import tajo.catalog.function.GeneralFunction;
 import tajo.catalog.json.GsonCreator;
-import tajo.catalog.proto.CatalogProtos.DataType;
 import tajo.catalog.proto.CatalogProtos.FunctionDescProto;
 import tajo.catalog.proto.CatalogProtos.FunctionType;
+import tajo.common.TajoDataTypes;
+import tajo.common.TajoDataTypes.Type;
 import tajo.datum.Datum;
 import tajo.datum.DatumFactory;
 import tajo.exception.InternalException;
@@ -45,15 +46,15 @@ public class TestFunctionDesc {
     private Integer y;
 
     public TestSum() {
-      super(new Column[] { new Column("arg1", DataType.INT),
-          new Column("arg2", DataType.INT) });
+      super(new Column[] { new Column("arg1", TajoDataTypes.Type.INT4),
+          new Column("arg2", TajoDataTypes.Type.INT4) });
     }
 
     @Override
     public Datum eval(Tuple params) {
-      x =  params.get(0).asInt();
-      y =  params.get(1).asInt();
-      return DatumFactory.createInt(x + y);
+      x =  params.get(0).asInt4();
+      y =  params.get(1).asInt4();
+      return DatumFactory.createInt4(x + y);
     }
 
     public String toJSON() {
@@ -65,13 +66,13 @@ public class TestFunctionDesc {
   @Test
   public void testGetSignature() throws IOException {
     FunctionDesc desc = new FunctionDesc("sum", TestSum.class, FunctionType.GENERAL,
-        new DataType [] {DataType.INT},
-        new DataType [] {DataType.INT,DataType.LONG});
+        CatalogUtil.newDataTypesWithoutLen(Type.INT4),
+        CatalogUtil.newDataTypesWithoutLen(Type.INT4, Type.INT8));
     assertEquals("sum", desc.getSignature());
     assertEquals(TestSum.class, desc.getFuncClass());
     assertEquals(FunctionType.GENERAL, desc.getFuncType());
-    assertEquals(DataType.INT, desc.getReturnType()[0]);
-    assertArrayEquals(new DataType[] { DataType.INT, DataType.LONG },
+    assertEquals(Type.INT4, desc.getReturnType()[0].getType());
+    assertArrayEquals(CatalogUtil.newDataTypesWithoutLen(Type.INT4, Type.INT8),
         desc.getParamTypes());
 
     CommonTestingUtil.getTestDir(TEST_PATH);
@@ -85,8 +86,8 @@ public class TestFunctionDesc {
     assertEquals("sum", newDesc.getSignature());
     assertEquals(TestSum.class, newDesc.getFuncClass());
     assertEquals(FunctionType.GENERAL, newDesc.getFuncType());
-    assertEquals(DataType.INT, newDesc.getReturnType()[0]);
-    assertArrayEquals(new DataType[] { DataType.INT, DataType.LONG },
+    assertEquals(Type.INT4, newDesc.getReturnType()[0].getType());
+    assertArrayEquals(CatalogUtil.newDataTypesWithoutLen(Type.INT4, Type.INT8),
         newDesc.getParamTypes());
 
     assertEquals(desc.getProto(), newDesc.getProto());
@@ -95,8 +96,8 @@ public class TestFunctionDesc {
   @Test
   public void testJson() throws InternalException {
 	  FunctionDesc desc = new FunctionDesc("sum", TestSum.class, FunctionType.GENERAL,
-        new DataType [] {DataType.INT},
-        new DataType [] {DataType.INT,DataType.LONG});
+        CatalogUtil.newDataTypesWithoutLen(Type.INT4),
+        CatalogUtil.newDataTypesWithoutLen(Type.INT4, Type.INT8));
 	  String json = desc.toJSON();
 	  System.out.println(json);
 	  Gson gson = GsonCreator.getInstance();
@@ -105,8 +106,8 @@ public class TestFunctionDesc {
 	  assertEquals("sum", fromJson.getSignature());
 	    assertEquals(TestSum.class, fromJson.getFuncClass());
 	    assertEquals(FunctionType.GENERAL, fromJson.getFuncType());
-	    assertEquals(DataType.INT, fromJson.getReturnType()[0]);
-	    assertArrayEquals(new DataType[] { DataType.INT, DataType.LONG },
+	    assertEquals(Type.INT4, fromJson.getReturnType()[0].getType());
+	    assertArrayEquals(CatalogUtil.newDataTypesWithoutLen(Type.INT4, Type.INT8),
 	    		fromJson.getParamTypes());
 
 	    assertEquals(desc.getProto(), fromJson.getProto());
@@ -115,8 +116,8 @@ public class TestFunctionDesc {
   @Test
   public void testClone() throws CloneNotSupportedException {
     FunctionDesc desc = new FunctionDesc("sum", TestSum.class, FunctionType.GENERAL,
-        new DataType [] {DataType.INT},
-        new DataType [] {DataType.INT,DataType.LONG});
+        CatalogUtil.newDataTypesWithoutLen(Type.INT4),
+        CatalogUtil.newDataTypesWithoutLen(Type.INT4, Type.INT8));
     FunctionDesc cloned = (FunctionDesc)desc.clone();
     assertTrue("reference chk" , !(desc == cloned));
     assertTrue("getClass() chk", desc.getClass() == cloned.getClass());

http://git-wip-us.apache.org/repos/asf/incubator-tajo/blob/c1c6f83e/tajo-catalog/tajo-catalog-common/src/test/java/tajo/catalog/TestIndexDesc.java
----------------------------------------------------------------------
diff --git a/tajo-catalog/tajo-catalog-common/src/test/java/tajo/catalog/TestIndexDesc.java b/tajo-catalog/tajo-catalog-common/src/test/java/tajo/catalog/TestIndexDesc.java
index afbfe5a..c8eb166 100644
--- a/tajo-catalog/tajo-catalog-common/src/test/java/tajo/catalog/TestIndexDesc.java
+++ b/tajo-catalog/tajo-catalog-common/src/test/java/tajo/catalog/TestIndexDesc.java
@@ -21,9 +21,9 @@ package tajo.catalog;
 import org.junit.AfterClass;
 import org.junit.BeforeClass;
 import org.junit.Test;
-import tajo.catalog.proto.CatalogProtos.DataType;
 import tajo.catalog.proto.CatalogProtos.IndexDescProto;
 import tajo.catalog.proto.CatalogProtos.IndexMethod;
+import tajo.common.TajoDataTypes.Type;
 
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertNotSame;
@@ -35,15 +35,15 @@ public class TestIndexDesc {
   
   static {
     desc1 = new IndexDesc(
-        "idx_test", "indexed", new Column("id", DataType.INT),
+        "idx_test", "indexed", new Column("id", Type.INT4),
         IndexMethod.TWO_LEVEL_BIN_TREE, true, true, true);
     
     desc2 = new IndexDesc(
-        "idx_test2", "indexed", new Column("score", DataType.DOUBLE), 
+        "idx_test2", "indexed", new Column("score", Type.FLOAT8),
         IndexMethod.TWO_LEVEL_BIN_TREE, false, false, false);
     
     desc3 = new IndexDesc(
-        "idx_test", "indexed", new Column("id", DataType.INT), 
+        "idx_test", "indexed", new Column("id", Type.INT4),
         IndexMethod.TWO_LEVEL_BIN_TREE, true, true, true);
   }
 
@@ -66,7 +66,7 @@ public class TestIndexDesc {
   public void testGetFields() {
     assertEquals("idx_test", desc1.getName());
     assertEquals("indexed", desc1.getTableId());
-    assertEquals(new Column("id", DataType.INT), desc1.getColumn());
+    assertEquals(new Column("id", Type.INT4), desc1.getColumn());
     assertEquals(IndexMethod.TWO_LEVEL_BIN_TREE, desc1.getIndexMethod());
     assertEquals(true, desc1.isUnique());
     assertEquals(true, desc1.isClustered());
@@ -74,7 +74,7 @@ public class TestIndexDesc {
     
     assertEquals("idx_test2", desc2.getName());
     assertEquals("indexed", desc2.getTableId());
-    assertEquals(new Column("score", DataType.DOUBLE), desc2.getColumn());
+    assertEquals(new Column("score", Type.FLOAT8), desc2.getColumn());
     assertEquals(IndexMethod.TWO_LEVEL_BIN_TREE, desc2.getIndexMethod());
     assertEquals(false, desc2.isUnique());
     assertEquals(false, desc2.isClustered());

http://git-wip-us.apache.org/repos/asf/incubator-tajo/blob/c1c6f83e/tajo-catalog/tajo-catalog-common/src/test/java/tajo/catalog/TestSchema.java
----------------------------------------------------------------------
diff --git a/tajo-catalog/tajo-catalog-common/src/test/java/tajo/catalog/TestSchema.java b/tajo-catalog/tajo-catalog-common/src/test/java/tajo/catalog/TestSchema.java
index 8b5bee3..e23790b 100644
--- a/tajo-catalog/tajo-catalog-common/src/test/java/tajo/catalog/TestSchema.java
+++ b/tajo-catalog/tajo-catalog-common/src/test/java/tajo/catalog/TestSchema.java
@@ -23,8 +23,8 @@ import org.junit.Before;
 import org.junit.Test;
 import tajo.catalog.exception.AlreadyExistsFieldException;
 import tajo.catalog.json.GsonCreator;
-import tajo.catalog.proto.CatalogProtos.DataType;
 import tajo.catalog.proto.CatalogProtos.SchemaProto;
+import tajo.common.TajoDataTypes.Type;
 
 import static org.junit.Assert.*;
 
@@ -38,11 +38,11 @@ public class TestSchema {
 	@Before
 	public void setUp() throws Exception {
 		schema = new Schema();
-		col1 = new Column("name", DataType.STRING);
+		col1 = new Column("name", Type.TEXT);
 		schema.addColumn(col1);
-		col2 = new Column("age", DataType.INT);
+		col2 = new Column("age", Type.INT4);
 		schema.addColumn(col2);
-		col3 = new Column("addr", DataType.STRING);
+		col3 = new Column("addr", Type.TEXT);
 		schema.addColumn(col3);
 	}
 
@@ -71,16 +71,16 @@ public class TestSchema {
 	public final void testAddField() {
 		Schema schema = new Schema();
 		assertFalse(schema.contains("studentId"));
-		schema.addColumn("studentId", DataType.INT);
+		schema.addColumn("studentId", Type.INT4);
 		assertTrue(schema.contains("studentId"));
 	}
 
 	@Test
 	public final void testEqualsObject() {
 		Schema schema2 = new Schema();
-		schema2.addColumn("name", DataType.STRING);
-		schema2.addColumn("age", DataType.INT);
-		schema2.addColumn("addr", DataType.STRING);
+		schema2.addColumn("name", Type.TEXT);
+		schema2.addColumn("age", Type.INT4);
+		schema2.addColumn("addr", Type.TEXT);
 		
 		assertEquals(schema, schema2);
 	}
@@ -97,8 +97,8 @@ public class TestSchema {
 	@Test
 	public final void testClone() throws CloneNotSupportedException {
 	  Schema schema = new Schema();
-	  schema.addColumn("abc", DataType.DOUBLE);
-	  schema.addColumn("bbc", DataType.DOUBLE);
+	  schema.addColumn("abc", Type.FLOAT8);
+	  schema.addColumn("bbc", Type.FLOAT8);
 	  
 	  Schema schema2 = new Schema(schema.getProto());
 	  assertEquals(schema.getProto(), schema2.getProto());
@@ -114,9 +114,9 @@ public class TestSchema {
 	@Test(expected = AlreadyExistsFieldException.class)
 	public final void testAddExistColumn() {
     Schema schema = new Schema();
-    schema.addColumn("abc", DataType.DOUBLE);
-    schema.addColumn("bbc", DataType.DOUBLE);
-    schema.addColumn("abc", DataType.INT);
+    schema.addColumn("abc", Type.FLOAT8);
+    schema.addColumn("bbc", Type.FLOAT8);
+    schema.addColumn("abc", Type.INT4);
 	}
 
 	@Test

http://git-wip-us.apache.org/repos/asf/incubator-tajo/blob/c1c6f83e/tajo-catalog/tajo-catalog-common/src/test/java/tajo/catalog/TestTableDesc.java
----------------------------------------------------------------------
diff --git a/tajo-catalog/tajo-catalog-common/src/test/java/tajo/catalog/TestTableDesc.java b/tajo-catalog/tajo-catalog-common/src/test/java/tajo/catalog/TestTableDesc.java
index f3c60cf..23e6dbc 100644
--- a/tajo-catalog/tajo-catalog-common/src/test/java/tajo/catalog/TestTableDesc.java
+++ b/tajo-catalog/tajo-catalog-common/src/test/java/tajo/catalog/TestTableDesc.java
@@ -23,8 +23,8 @@ import org.apache.hadoop.fs.Path;
 import org.junit.Before;
 import org.junit.Test;
 import tajo.catalog.json.GsonCreator;
-import tajo.catalog.proto.CatalogProtos.DataType;
 import tajo.catalog.proto.CatalogProtos.StoreType;
+import tajo.common.TajoDataTypes.Type;
 
 import static org.junit.Assert.assertEquals;
 
@@ -35,9 +35,9 @@ public class TestTableDesc {
 	@Before
 	public void setup() {
 	  Schema schema = new Schema();
-    schema.addColumn("name", DataType.BYTE);
-    schema.addColumn("addr", DataType.STRING);
-    info = TCatUtil.newTableMeta(schema, StoreType.CSV);
+    schema.addColumn("name", Type.BLOB);
+    schema.addColumn("addr", Type.TEXT);
+    info = CatalogUtil.newTableMeta(schema, StoreType.CSV);
 
     desc = new TableDescImpl("table1", info, new Path("/nta/data"));
 	}
@@ -45,9 +45,9 @@ public class TestTableDesc {
   @Test
   public void test() throws CloneNotSupportedException {
     Schema schema = new Schema();
-    schema.addColumn("name", DataType.BYTE);
-    schema.addColumn("addr", DataType.STRING);
-    TableMeta info = TCatUtil.newTableMeta(schema, StoreType.CSV);
+    schema.addColumn("name", Type.BLOB);
+    schema.addColumn("addr", Type.TEXT);
+    TableMeta info = CatalogUtil.newTableMeta(schema, StoreType.CSV);
     testClone(info);
 
     TableDesc desc = new TableDescImpl("table1", info, new Path("/nta/data"));

http://git-wip-us.apache.org/repos/asf/incubator-tajo/blob/c1c6f83e/tajo-catalog/tajo-catalog-common/src/test/java/tajo/catalog/TestTableInfo.java
----------------------------------------------------------------------
diff --git a/tajo-catalog/tajo-catalog-common/src/test/java/tajo/catalog/TestTableInfo.java b/tajo-catalog/tajo-catalog-common/src/test/java/tajo/catalog/TestTableInfo.java
index 052bbfe..6b0e1e5 100644
--- a/tajo-catalog/tajo-catalog-common/src/test/java/tajo/catalog/TestTableInfo.java
+++ b/tajo-catalog/tajo-catalog-common/src/test/java/tajo/catalog/TestTableInfo.java
@@ -20,9 +20,9 @@ package tajo.catalog;
 
 import org.junit.Before;
 import org.junit.Test;
-import tajo.catalog.proto.CatalogProtos.DataType;
 import tajo.catalog.proto.CatalogProtos.StoreType;
 import tajo.catalog.proto.CatalogProtos.TableProto;
+import tajo.common.TajoDataTypes.Type;
 
 import static org.junit.Assert.*;
 
@@ -33,17 +33,17 @@ public class TestTableInfo {
   @Before
   public void setUp() {
     schema = new Schema();
-    schema.addColumn("name", DataType.BYTE);
-    schema.addColumn("addr", DataType.STRING);
-    meta = TCatUtil.newTableMeta(schema, StoreType.CSV);
+    schema.addColumn("name", Type.BLOB);
+    schema.addColumn("addr", Type.TEXT);
+    meta = CatalogUtil.newTableMeta(schema, StoreType.CSV);
   }
   
   @Test
   public void testTableMetaTableProto() {    
     Schema schema1 = new Schema();
-    schema1.addColumn("name", DataType.BYTE);
-    schema1.addColumn("addr", DataType.STRING);    
-    TableMeta meta1 = TCatUtil.newTableMeta(schema1, StoreType.CSV);
+    schema1.addColumn("name", Type.BLOB);
+    schema1.addColumn("addr", Type.TEXT);
+    TableMeta meta1 = CatalogUtil.newTableMeta(schema1, StoreType.CSV);
     
     TableMeta meta2 = new TableMetaImpl(meta1.getProto());
     assertEquals(meta1, meta2);
@@ -52,9 +52,9 @@ public class TestTableInfo {
   @Test
   public final void testClone() throws CloneNotSupportedException {    
     Schema schema1 = new Schema();
-    schema1.addColumn("name", DataType.BYTE);
-    schema1.addColumn("addr", DataType.STRING);
-    TableMeta meta1 = TCatUtil.newTableMeta(schema1, StoreType.CSV);
+    schema1.addColumn("name", Type.BLOB);
+    schema1.addColumn("addr", Type.TEXT);
+    TableMeta meta1 = CatalogUtil.newTableMeta(schema1, StoreType.CSV);
     
     TableMetaImpl info = (TableMetaImpl) meta1;
     
@@ -67,9 +67,9 @@ public class TestTableInfo {
   @Test
   public void testSchema() throws CloneNotSupportedException {    
     Schema schema1 = new Schema();
-    schema1.addColumn("name", DataType.BYTE);
-    schema1.addColumn("addr", DataType.STRING);
-    TableMeta meta1 = TCatUtil.newTableMeta(schema1,  StoreType.CSV);
+    schema1.addColumn("name", Type.BLOB);
+    schema1.addColumn("addr", Type.TEXT);
+    TableMeta meta1 = CatalogUtil.newTableMeta(schema1, StoreType.CSV);
     
     TableMeta meta2 = (TableMeta) meta1.clone();
     
@@ -84,8 +84,8 @@ public class TestTableInfo {
   @Test
   public void testGetSchema() {
     Schema schema2 = new Schema();
-    schema2.addColumn("name", DataType.BYTE);
-    schema2.addColumn("addr", DataType.STRING);
+    schema2.addColumn("name", Type.BLOB);
+    schema2.addColumn("addr", Type.TEXT);
     
     assertEquals(schema, schema2);
   }
@@ -93,9 +93,9 @@ public class TestTableInfo {
   @Test
   public void testSetSchema() {
     Schema schema2 = new Schema();
-    schema2.addColumn("name", DataType.BYTE);
-    schema2.addColumn("addr", DataType.STRING);
-    schema2.addColumn("age", DataType.INT);
+    schema2.addColumn("name", Type.BLOB);
+    schema2.addColumn("addr", Type.TEXT);
+    schema2.addColumn("age", Type.INT4);
     
     assertNotSame(meta.getSchema(), schema2);
     meta.setSchema(schema2);
@@ -105,9 +105,9 @@ public class TestTableInfo {
   @Test
   public void testEqualsObject() {    
     Schema schema2 = new Schema();
-    schema2.addColumn("name", DataType.BYTE);
-    schema2.addColumn("addr", DataType.STRING);
-    TableMeta meta2 = TCatUtil.newTableMeta(schema2, StoreType.CSV);
+    schema2.addColumn("name", Type.BLOB);
+    schema2.addColumn("addr", Type.TEXT);
+    TableMeta meta2 = CatalogUtil.newTableMeta(schema2, StoreType.CSV);
     
     assertTrue(meta.equals(meta2));
     
@@ -117,9 +117,9 @@ public class TestTableInfo {
   @Test
   public void testGetProto() {
     Schema schema1 = new Schema();
-    schema1.addColumn("name", DataType.BYTE);
-    schema1.addColumn("addr", DataType.STRING);
-    TableMeta meta1 = TCatUtil.newTableMeta(schema1, StoreType.CSV);
+    schema1.addColumn("name", Type.BLOB);
+    schema1.addColumn("addr", Type.TEXT);
+    TableMeta meta1 = CatalogUtil.newTableMeta(schema1, StoreType.CSV);
     
     TableProto proto = meta1.getProto();
     TableMeta newMeta = new TableMetaImpl(proto);

http://git-wip-us.apache.org/repos/asf/incubator-tajo/blob/c1c6f83e/tajo-catalog/tajo-catalog-common/src/test/java/tajo/catalog/TestTableMeta.java
----------------------------------------------------------------------
diff --git a/tajo-catalog/tajo-catalog-common/src/test/java/tajo/catalog/TestTableMeta.java b/tajo-catalog/tajo-catalog-common/src/test/java/tajo/catalog/TestTableMeta.java
index e388375..d393f32 100644
--- a/tajo-catalog/tajo-catalog-common/src/test/java/tajo/catalog/TestTableMeta.java
+++ b/tajo-catalog/tajo-catalog-common/src/test/java/tajo/catalog/TestTableMeta.java
@@ -20,9 +20,9 @@ package tajo.catalog;
 
 import org.junit.Before;
 import org.junit.Test;
-import tajo.catalog.proto.CatalogProtos.DataType;
 import tajo.catalog.proto.CatalogProtos.StoreType;
 import tajo.catalog.proto.CatalogProtos.TableProto;
+import tajo.common.TajoDataTypes.Type;
 
 import static org.junit.Assert.*;
 
@@ -33,17 +33,17 @@ public class TestTableMeta {
   @Before
   public void setUp() {    
     schema = new Schema();
-    schema.addColumn("name", DataType.BYTE);
-    schema.addColumn("addr", DataType.STRING);
-    meta = TCatUtil.newTableMeta(schema, StoreType.CSV);
+    schema.addColumn("name", Type.BLOB);
+    schema.addColumn("addr", Type.TEXT);
+    meta = CatalogUtil.newTableMeta(schema, StoreType.CSV);
   }
   
   @Test
   public void testTableMetaTableProto() {    
     Schema schema1 = new Schema();
-    schema1.addColumn("name", DataType.BYTE);
-    schema1.addColumn("addr", DataType.STRING);
-    TableMeta meta1 = TCatUtil.newTableMeta(schema1, StoreType.CSV);
+    schema1.addColumn("name", Type.BLOB);
+    schema1.addColumn("addr", Type.TEXT);
+    TableMeta meta1 = CatalogUtil.newTableMeta(schema1, StoreType.CSV);
     
     TableMeta meta2 = new TableMetaImpl(meta1.getProto());
     assertEquals(meta1, meta2);
@@ -52,9 +52,9 @@ public class TestTableMeta {
   @Test
   public final void testClone() throws CloneNotSupportedException {
     Schema schema1 = new Schema();
-    schema1.addColumn("name", DataType.BYTE);
-    schema1.addColumn("addr", DataType.STRING);
-    TableMeta meta1 = TCatUtil.newTableMeta(schema1, StoreType.CSV);
+    schema1.addColumn("name", Type.BLOB);
+    schema1.addColumn("addr", Type.TEXT);
+    TableMeta meta1 = CatalogUtil.newTableMeta(schema1, StoreType.CSV);
     
     TableMetaImpl meta2 = (TableMetaImpl) meta1.clone();
     assertEquals(meta1.getSchema(), meta2.getSchema());
@@ -65,9 +65,9 @@ public class TestTableMeta {
   @Test
   public void testSchema() throws CloneNotSupportedException {
     Schema schema1 = new Schema();
-    schema1.addColumn("name", DataType.BYTE);
-    schema1.addColumn("addr", DataType.STRING);
-    TableMeta meta1 = TCatUtil.newTableMeta(schema1, StoreType.CSV);
+    schema1.addColumn("name", Type.BLOB);
+    schema1.addColumn("addr", Type.TEXT);
+    TableMeta meta1 = CatalogUtil.newTableMeta(schema1, StoreType.CSV);
     
     TableMeta meta2 = (TableMeta) meta1.clone();
     
@@ -82,8 +82,8 @@ public class TestTableMeta {
   @Test
   public void testGetSchema() {
     Schema schema2 = new Schema();
-    schema2.addColumn("name", DataType.BYTE);
-    schema2.addColumn("addr", DataType.STRING);
+    schema2.addColumn("name", Type.BLOB);
+    schema2.addColumn("addr", Type.TEXT);
     
     assertEquals(schema, schema2);
   }
@@ -91,9 +91,9 @@ public class TestTableMeta {
   @Test
   public void testSetSchema() {
     Schema schema2 = new Schema();
-    schema2.addColumn("name", DataType.BYTE);
-    schema2.addColumn("addr", DataType.STRING);
-    schema2.addColumn("age", DataType.INT);
+    schema2.addColumn("name", Type.BLOB);
+    schema2.addColumn("addr", Type.TEXT);
+    schema2.addColumn("age", Type.INT4);
     
     assertNotSame(meta.getSchema(), schema2);
     meta.setSchema(schema2);
@@ -103,9 +103,9 @@ public class TestTableMeta {
   @Test
   public void testEqualsObject() {   
     Schema schema2 = new Schema();
-    schema2.addColumn("name", DataType.BYTE);
-    schema2.addColumn("addr", DataType.STRING);
-    TableMeta meta2 = TCatUtil.newTableMeta(schema2, StoreType.CSV);
+    schema2.addColumn("name", Type.BLOB);
+    schema2.addColumn("addr", Type.TEXT);
+    TableMeta meta2 = CatalogUtil.newTableMeta(schema2, StoreType.CSV);
     
     assertTrue(meta.equals(meta2));
     
@@ -115,9 +115,9 @@ public class TestTableMeta {
   @Test
   public void testGetProto() {    
     Schema schema1 = new Schema();
-    schema1.addColumn("name", DataType.BYTE);
-    schema1.addColumn("addr", DataType.STRING);
-    TableMeta meta1 = TCatUtil.newTableMeta(schema1, StoreType.CSV);
+    schema1.addColumn("name", Type.BLOB);
+    schema1.addColumn("addr", Type.TEXT);
+    TableMeta meta1 = CatalogUtil.newTableMeta(schema1, StoreType.CSV);
     
     TableProto proto = meta1.getProto();
     TableMeta newMeta = new TableMetaImpl(proto);

http://git-wip-us.apache.org/repos/asf/incubator-tajo/blob/c1c6f83e/tajo-catalog/tajo-catalog-common/src/test/java/tajo/catalog/statistics/TestColumnStat.java
----------------------------------------------------------------------
diff --git a/tajo-catalog/tajo-catalog-common/src/test/java/tajo/catalog/statistics/TestColumnStat.java b/tajo-catalog/tajo-catalog-common/src/test/java/tajo/catalog/statistics/TestColumnStat.java
index 9af4453..cffd42f 100644
--- a/tajo-catalog/tajo-catalog-common/src/test/java/tajo/catalog/statistics/TestColumnStat.java
+++ b/tajo-catalog/tajo-catalog-common/src/test/java/tajo/catalog/statistics/TestColumnStat.java
@@ -20,7 +20,7 @@ package tajo.catalog.statistics;
 
 import org.junit.Test;
 import tajo.catalog.Column;
-import tajo.catalog.proto.CatalogProtos;
+import tajo.common.TajoDataTypes.Type;
 import tajo.datum.DatumFactory;
 
 import static org.junit.Assert.assertEquals;
@@ -30,7 +30,7 @@ public class TestColumnStat {
 
   @Test
   public final void testColumnStat() {
-    ColumnStat stat = new ColumnStat(new Column("test", CatalogProtos.DataType.LONG));
+    ColumnStat stat = new ColumnStat(new Column("test", Type.INT8));
     stat.setNumDistVals(1000);
     stat.setNumNulls(999);
     
@@ -44,11 +44,11 @@ public class TestColumnStat {
 
   @Test
   public final void testEqualsObject() {
-    ColumnStat stat = new ColumnStat(new Column("test", CatalogProtos.DataType.LONG));
+    ColumnStat stat = new ColumnStat(new Column("test", Type.INT8));
     stat.setNumDistVals(1000);
     stat.setNumNulls(999);
-    stat.setMinValue(DatumFactory.createLong(5));
-    stat.setMaxValue(DatumFactory.createLong(10));
+    stat.setMinValue(DatumFactory.createInt8(5));
+    stat.setMaxValue(DatumFactory.createInt8(10));
     
     ColumnStat stat2 = new ColumnStat(stat.getProto());
     assertEquals(stat, stat2);
@@ -56,11 +56,11 @@ public class TestColumnStat {
 
   @Test
   public final void testClone() throws CloneNotSupportedException {
-    ColumnStat stat = new ColumnStat(new Column("test", CatalogProtos.DataType.LONG));
+    ColumnStat stat = new ColumnStat(new Column("test", Type.INT8));
     stat.setNumDistVals(1000);
     stat.setNumNulls(999);
-    stat.setMinValue(DatumFactory.createLong(5));
-    stat.setMaxValue(DatumFactory.createLong(10));
+    stat.setMinValue(DatumFactory.createInt8(5));
+    stat.setMaxValue(DatumFactory.createInt8(10));
     
     ColumnStat stat2 = (ColumnStat) stat.clone();
     assertEquals(stat, stat2);

http://git-wip-us.apache.org/repos/asf/incubator-tajo/blob/c1c6f83e/tajo-catalog/tajo-catalog-common/src/test/java/tajo/catalog/statistics/TestTableStat.java
----------------------------------------------------------------------
diff --git a/tajo-catalog/tajo-catalog-common/src/test/java/tajo/catalog/statistics/TestTableStat.java b/tajo-catalog/tajo-catalog-common/src/test/java/tajo/catalog/statistics/TestTableStat.java
index 3237d25..d679c69 100644
--- a/tajo-catalog/tajo-catalog-common/src/test/java/tajo/catalog/statistics/TestTableStat.java
+++ b/tajo-catalog/tajo-catalog-common/src/test/java/tajo/catalog/statistics/TestTableStat.java
@@ -20,7 +20,7 @@ package tajo.catalog.statistics;
 
 import org.junit.Test;
 import tajo.catalog.Column;
-import tajo.catalog.proto.CatalogProtos;
+import tajo.common.TajoDataTypes.Type;
 
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertTrue;
@@ -38,7 +38,7 @@ public class TestTableStat {
     int numCols = 3;
     ColumnStat[] cols = new ColumnStat[numCols];
     for (int i = 0; i < numCols; i++) {
-      cols[i] = new ColumnStat(new Column("col_" + i, CatalogProtos.DataType.LONG));
+      cols[i] = new ColumnStat(new Column("col_" + i, Type.INT8));
       cols[i].setNumDistVals(1024 * i);
       cols[i].setNumNulls(100 * i);
       stat.addColumnStat(cols[i]);