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 2016/03/28 06:07:27 UTC

[4/5] tajo git commit: TAJO-2099: Implement an Adapter for legacy Schema.

http://git-wip-us.apache.org/repos/asf/tajo/blob/8dad551e/tajo-catalog/tajo-catalog-server/src/test/java/org/apache/tajo/catalog/TestCatalog.java
----------------------------------------------------------------------
diff --git a/tajo-catalog/tajo-catalog-server/src/test/java/org/apache/tajo/catalog/TestCatalog.java b/tajo-catalog/tajo-catalog-server/src/test/java/org/apache/tajo/catalog/TestCatalog.java
index fe4b4a7..c64fe43 100644
--- a/tajo-catalog/tajo-catalog-server/src/test/java/org/apache/tajo/catalog/TestCatalog.java
+++ b/tajo-catalog/tajo-catalog-server/src/test/java/org/apache/tajo/catalog/TestCatalog.java
@@ -181,7 +181,7 @@ public class TestCatalog {
   }
 
   private TableDesc createMockupTable(String databaseName, String tableName) throws IOException {
-    schema1 = new Schema();
+    schema1 = SchemaFactory.newV1();
     schema1.addColumn(FieldName1, Type.BLOB);
     schema1.addColumn(FieldName2, Type.INT4);
     schema1.addColumn(FieldName3, Type.INT8);
@@ -299,7 +299,7 @@ public class TestCatalog {
 	
 	@Test
 	public void testGetTable() throws Exception {
-		schema1 = new Schema();
+		schema1 = SchemaFactory.newV1();
 		schema1.addColumn(FieldName1, Type.BLOB);
 		schema1.addColumn(FieldName2, Type.INT4);
 		schema1.addColumn(FieldName3, Type.INT8);
@@ -361,18 +361,18 @@ public class TestCatalog {
     //      |- s8
     //  |- s9
 
-    Schema nestedSchema = new Schema();
+    Schema nestedSchema = SchemaFactory.newV1();
     nestedSchema.addColumn("s1", Type.INT8);
 
     nestedSchema.addColumn("s2", Type.INT8);
 
-    Schema s5 = new Schema();
+    Schema s5 = SchemaFactory.newV1();
     s5.addColumn("s6", Type.INT8);
 
-    Schema s7 = new Schema();
+    Schema s7 = SchemaFactory.newV1();
     s7.addColumn("s5", new TypeDesc(s5));
 
-    Schema s3 = new Schema();
+    Schema s3 = SchemaFactory.newV1();
     s3.addColumn("s4", Type.INT8);
     s3.addColumn("s7", new TypeDesc(s7));
     s3.addColumn("s8", Type.INT8);
@@ -398,18 +398,18 @@ public class TestCatalog {
     //      |- s3
     //  |- s4
 
-    Schema nestedSchema = new Schema();
+    Schema nestedSchema = SchemaFactory.newV1();
     nestedSchema.addColumn("s1", Type.INT8);
 
     nestedSchema.addColumn("s2", Type.INT8);
 
-    Schema s5 = new Schema();
+    Schema s5 = SchemaFactory.newV1();
     s5.addColumn("s6", Type.INT8);
 
-    Schema s7 = new Schema();
+    Schema s7 = SchemaFactory.newV1();
     s7.addColumn("s5", new TypeDesc(s5));
 
-    Schema s3 = new Schema();
+    Schema s3 = SchemaFactory.newV1();
     s3.addColumn("s4", Type.INT8);
     s3.addColumn("s7", new TypeDesc(s7));
     s3.addColumn("s8", Type.INT8);
@@ -426,7 +426,7 @@ public class TestCatalog {
   static Schema relationSchema;
 
   public static TableDesc prepareTable() throws IOException {
-    relationSchema = new Schema();
+    relationSchema = SchemaFactory.newV1();
     relationSchema.addColumn(DEFAULT_DATABASE_NAME + ".indexed.id", Type.INT4)
         .addColumn(DEFAULT_DATABASE_NAME + ".indexed.name", Type.TEXT)
         .addColumn(DEFAULT_DATABASE_NAME + ".indexed.age", Type.INT4)
@@ -625,7 +625,7 @@ public class TestCatalog {
 
   @Test
   public final void testAddAndDeleteTablePartitionByHash1() throws Exception {
-    Schema schema = new Schema();
+    Schema schema = SchemaFactory.newV1();
     schema.addColumn("id", Type.INT4)
         .addColumn("name", Type.TEXT)
         .addColumn("age", Type.INT4)
@@ -637,7 +637,7 @@ public class TestCatalog {
     TableMeta meta = CatalogUtil.newTableMeta("TEXT", opts);
 
 
-    Schema partSchema = new Schema();
+    Schema partSchema = SchemaFactory.newV1();
     partSchema.addColumn("id", Type.INT4);
 
     PartitionMethodDesc partitionDesc =
@@ -665,7 +665,7 @@ public class TestCatalog {
 
   @Test
   public final void testAddAndDeleteTablePartitionByHash2() throws Exception {
-    Schema schema = new Schema();
+    Schema schema = SchemaFactory.newV1();
     schema.addColumn("id", Type.INT4)
         .addColumn("name", Type.TEXT)
         .addColumn("age", Type.INT4)
@@ -676,7 +676,7 @@ public class TestCatalog {
     opts.set("file.delimiter", ",");
     TableMeta meta = CatalogUtil.newTableMeta("TEXT", opts);
 
-    Schema partSchema = new Schema();
+    Schema partSchema = SchemaFactory.newV1();
     partSchema.addColumn("id", Type.INT4);
     PartitionMethodDesc partitionDesc =
         new PartitionMethodDesc(DEFAULT_DATABASE_NAME, tableName,
@@ -703,7 +703,7 @@ public class TestCatalog {
 
   @Test
   public final void testAddAndDeleteTablePartitionByList() throws Exception {
-    Schema schema = new Schema();
+    Schema schema = SchemaFactory.newV1();
     schema.addColumn("id", Type.INT4)
         .addColumn("name", Type.TEXT)
         .addColumn("age", Type.INT4)
@@ -714,7 +714,7 @@ public class TestCatalog {
     opts.set("file.delimiter", ",");
     TableMeta meta = CatalogUtil.newTableMeta("TEXT", opts);
 
-    Schema partSchema = new Schema();
+    Schema partSchema = SchemaFactory.newV1();
     partSchema.addColumn("id", Type.INT4);
     PartitionMethodDesc partitionDesc =
         new PartitionMethodDesc(DEFAULT_DATABASE_NAME, tableName,
@@ -740,7 +740,7 @@ public class TestCatalog {
 
   @Test
   public final void testAddAndDeleteTablePartitionByRange() throws Exception {
-    Schema schema = new Schema();
+    Schema schema = SchemaFactory.newV1();
     schema.addColumn("id", Type.INT4)
         .addColumn("name", Type.TEXT)
         .addColumn("age", Type.INT4)
@@ -751,7 +751,7 @@ public class TestCatalog {
     opts.set("file.delimiter", ",");
     TableMeta meta = CatalogUtil.newTableMeta("TEXT", opts);
 
-    Schema partSchema = new Schema();
+    Schema partSchema = SchemaFactory.newV1();
     partSchema.addColumn("id", Type.INT4);
     PartitionMethodDesc partitionDesc =
         new PartitionMethodDesc(DEFAULT_DATABASE_NAME, tableName, CatalogProtos.PartitionType.RANGE,
@@ -777,7 +777,7 @@ public class TestCatalog {
 
   // TODO: This should be added at TAJO-1891
   public final void testAddAndDeleteTablePartitionByColumn() throws Exception {
-    Schema schema = new Schema();
+    Schema schema = SchemaFactory.newV1();
     schema.addColumn("id", Type.INT4)
         .addColumn("name", Type.TEXT)
         .addColumn("age", Type.INT4)
@@ -789,7 +789,7 @@ public class TestCatalog {
     opts.set("file.delimiter", ",");
     TableMeta meta = CatalogUtil.newTableMeta("TEXT", opts);
 
-    Schema partSchema = new Schema();
+    Schema partSchema = SchemaFactory.newV1();
     partSchema.addColumn("id", Type.INT4);
     partSchema.addColumn("name", Type.TEXT);
 

http://git-wip-us.apache.org/repos/asf/tajo/blob/8dad551e/tajo-catalog/tajo-catalog-server/src/test/java/org/apache/tajo/catalog/TestCatalogAgainstCaseSensitivity.java
----------------------------------------------------------------------
diff --git a/tajo-catalog/tajo-catalog-server/src/test/java/org/apache/tajo/catalog/TestCatalogAgainstCaseSensitivity.java b/tajo-catalog/tajo-catalog-server/src/test/java/org/apache/tajo/catalog/TestCatalogAgainstCaseSensitivity.java
index 314dd8c..f3933ff 100644
--- a/tajo-catalog/tajo-catalog-server/src/test/java/org/apache/tajo/catalog/TestCatalogAgainstCaseSensitivity.java
+++ b/tajo-catalog/tajo-catalog-server/src/test/java/org/apache/tajo/catalog/TestCatalogAgainstCaseSensitivity.java
@@ -334,20 +334,20 @@ public class TestCatalogAgainstCaseSensitivity {
     String databaseName = "TestDatabase1";
     String tableName = "nested_Table";
 
-    Schema schema = new Schema(
+    Schema schema = SchemaFactory.newV1(
         new Column[]{
             new Column("CoL1", CatalogUtil.newSimpleDataType(Type.INT4)),
             new Column("CoL2", CatalogUtil.newSimpleDataType(Type.FLOAT4)),
             new Column("CoL3", CatalogUtil.newSimpleDataType(Type.TEXT)),
     });
 
-    Schema tableSchema = new Schema();
+    Schema tableSchema = SchemaFactory.newV1();
     tableSchema.addColumn("RecoRd1", new TypeDesc(schema));
     tableSchema.addColumn("CoL1", CatalogUtil.newSimpleDataType(Type.INT4));
     tableSchema.addColumn("CoL3", CatalogUtil.newSimpleDataType(Type.TEXT));
     tableSchema.addColumn("RecoRd2", new TypeDesc(schema));
     tableSchema.addColumn("RecoRd3", new TypeDesc(
-        new Schema(new Column[]{
+        SchemaFactory.newV1(new Column[]{
             new Column("CoL1", CatalogUtil.newSimpleDataType(Type.INT4)),
             new Column("RecoRd1", new TypeDesc(schema)),
         })

http://git-wip-us.apache.org/repos/asf/tajo/blob/8dad551e/tajo-catalog/tajo-catalog-server/src/test/java/org/apache/tajo/catalog/TestCatalogExceptions.java
----------------------------------------------------------------------
diff --git a/tajo-catalog/tajo-catalog-server/src/test/java/org/apache/tajo/catalog/TestCatalogExceptions.java b/tajo-catalog/tajo-catalog-server/src/test/java/org/apache/tajo/catalog/TestCatalogExceptions.java
index 5d40656..c151e3b 100644
--- a/tajo-catalog/tajo-catalog-server/src/test/java/org/apache/tajo/catalog/TestCatalogExceptions.java
+++ b/tajo-catalog/tajo-catalog-server/src/test/java/org/apache/tajo/catalog/TestCatalogExceptions.java
@@ -115,7 +115,7 @@ public class TestCatalogExceptions {
   public void testCreateTableWithWrongUri() throws Exception {
     // TODO: currently, wrong uri does not occur any exception.
     String tableName = "wrongUri";
-    Schema schema = new Schema();
+    Schema schema = SchemaFactory.newV1();
     schema.addColumn(CatalogUtil.buildFQName(tableName, "Column"), Type.BLOB);
     schema.addColumn(CatalogUtil.buildFQName(tableName, "column"), Type.INT4);
     schema.addColumn(CatalogUtil.buildFQName(tableName, "cOlumn"), Type.INT8);

http://git-wip-us.apache.org/repos/asf/tajo/blob/8dad551e/tajo-catalog/tajo-catalog-server/src/test/java/org/apache/tajo/catalog/TestLinkedMetadataManager.java
----------------------------------------------------------------------
diff --git a/tajo-catalog/tajo-catalog-server/src/test/java/org/apache/tajo/catalog/TestLinkedMetadataManager.java b/tajo-catalog/tajo-catalog-server/src/test/java/org/apache/tajo/catalog/TestLinkedMetadataManager.java
index a065fa8..d381ebd 100644
--- a/tajo-catalog/tajo-catalog-server/src/test/java/org/apache/tajo/catalog/TestLinkedMetadataManager.java
+++ b/tajo-catalog/tajo-catalog-server/src/test/java/org/apache/tajo/catalog/TestLinkedMetadataManager.java
@@ -42,25 +42,25 @@ public class TestLinkedMetadataManager {
 
   static TableDesc TABLE1 = new TableDesc(
       "table1",
-      new Schema(new Column[]{new Column("c1", Type.INT8)}),
+      SchemaFactory.newV1(new Column[]{new Column("c1", Type.INT8)}),
       "TEXT", new KeyValueSet(), URI.create("http://space1/x/table1")
   );
 
   static TableDesc TABLE2 = new TableDesc(
       "table2",
-          new Schema(new Column[]{new Column("c1", Type.INT8)}),
+          SchemaFactory.newV1(new Column[]{new Column("c1", Type.INT8)}),
       "TEXT", new KeyValueSet(), URI.create("http://space1/x/table2")
   );
 
   static TableDesc TABLE3 = new TableDesc(
       "table3",
-      new Schema(new Column[]{new Column("c1", Type.INT8)}),
+      SchemaFactory.newV1(new Column[]{new Column("c1", Type.INT8)}),
       "TEXT", new KeyValueSet(), URI.create("http://space1/x/table3")
   );
 
   static TableDesc TABLE4 = new TableDesc(
       "table4",
-          new Schema(new Column[]{new Column("c1", Type.INT8)}),
+          SchemaFactory.newV1(new Column[]{new Column("c1", Type.INT8)}),
       "TEXT", new KeyValueSet(), URI.create("http://space1/x/table4")
   );
 
@@ -211,7 +211,7 @@ public class TestLinkedMetadataManager {
   public void testCreateTable() throws Exception {
     TableDesc tb = new TableDesc(
         "space1.errortable",
-        new Schema(),
+        SchemaFactory.newV1(),
         new TableMeta("x", new KeyValueSet()),
         URI.create("file:///"));
 

http://git-wip-us.apache.org/repos/asf/tajo/blob/8dad551e/tajo-client/src/main/java/org/apache/tajo/client/QueryClientImpl.java
----------------------------------------------------------------------
diff --git a/tajo-client/src/main/java/org/apache/tajo/client/QueryClientImpl.java b/tajo-client/src/main/java/org/apache/tajo/client/QueryClientImpl.java
index 18640ed..3618f1f 100644
--- a/tajo-client/src/main/java/org/apache/tajo/client/QueryClientImpl.java
+++ b/tajo-client/src/main/java/org/apache/tajo/client/QueryClientImpl.java
@@ -30,6 +30,7 @@ import org.apache.tajo.TajoProtos.QueryState;
 import org.apache.tajo.auth.UserRoleInfo;
 import org.apache.tajo.catalog.CatalogUtil;
 import org.apache.tajo.catalog.Schema;
+import org.apache.tajo.catalog.SchemaFactory;
 import org.apache.tajo.catalog.TableDesc;
 import org.apache.tajo.client.v2.exception.ClientUnableToConnectException;
 import org.apache.tajo.TajoProtos.CodecType;
@@ -374,7 +375,7 @@ public class QueryClientImpl implements QueryClient {
     if(response.hasResultSet()) {
       SerializedResultSet resultSet = response.getResultSet();
       return new TajoMemoryResultSet(queryId,
-          new Schema(resultSet.getSchema()),
+          SchemaFactory.newV1(resultSet.getSchema()),
           resultSet, getClientSideSessionVars());
     } else {
       return TajoClientUtil.createNullResultSet(queryId);

http://git-wip-us.apache.org/repos/asf/tajo/blob/8dad551e/tajo-client/src/main/java/org/apache/tajo/client/TajoClientUtil.java
----------------------------------------------------------------------
diff --git a/tajo-client/src/main/java/org/apache/tajo/client/TajoClientUtil.java b/tajo-client/src/main/java/org/apache/tajo/client/TajoClientUtil.java
index baafbe8..733bcec 100644
--- a/tajo-client/src/main/java/org/apache/tajo/client/TajoClientUtil.java
+++ b/tajo-client/src/main/java/org/apache/tajo/client/TajoClientUtil.java
@@ -24,6 +24,7 @@ import org.apache.tajo.SessionVars;
 import org.apache.tajo.TajoProtos;
 import org.apache.tajo.catalog.CatalogUtil;
 import org.apache.tajo.catalog.Schema;
+import org.apache.tajo.catalog.SchemaFactory;
 import org.apache.tajo.catalog.TableDesc;
 import org.apache.tajo.exception.QueryNotFoundException;
 import org.apache.tajo.ipc.ClientProtos;
@@ -99,16 +100,16 @@ public class TajoClientUtil {
       // select substr('abc', 1, 2)
       ClientProtos.SerializedResultSet serializedResultSet = response.getResultSet();
       return new TajoMemoryResultSet(new QueryId(response.getQueryId()),
-          new Schema(serializedResultSet.getSchema()),
+          SchemaFactory.newV1(serializedResultSet.getSchema()),
           serializedResultSet,
           client.getClientSideSessionVars());
     }
   }
 
   public static final ResultSet NULL_RESULT_SET =
-      new TajoMemoryResultSet(QueryIdFactory.NULL_QUERY_ID, new Schema(), null, null);
+      new TajoMemoryResultSet(QueryIdFactory.NULL_QUERY_ID, SchemaFactory.newV1(), null, null);
 
   public static TajoMemoryResultSet createNullResultSet(QueryId queryId) {
-    return new TajoMemoryResultSet(queryId, new Schema(), null, null);
+    return new TajoMemoryResultSet(queryId, SchemaFactory.newV1(), null, null);
   }
 }

http://git-wip-us.apache.org/repos/asf/tajo/blob/8dad551e/tajo-client/src/main/java/org/apache/tajo/jdbc/TajoMetaDataResultSet.java
----------------------------------------------------------------------
diff --git a/tajo-client/src/main/java/org/apache/tajo/jdbc/TajoMetaDataResultSet.java b/tajo-client/src/main/java/org/apache/tajo/jdbc/TajoMetaDataResultSet.java
index 9fba40a..6e7092b 100644
--- a/tajo-client/src/main/java/org/apache/tajo/jdbc/TajoMetaDataResultSet.java
+++ b/tajo-client/src/main/java/org/apache/tajo/jdbc/TajoMetaDataResultSet.java
@@ -19,6 +19,7 @@
 package org.apache.tajo.jdbc;
 
 import org.apache.tajo.catalog.Schema;
+import org.apache.tajo.catalog.SchemaFactory;
 import org.apache.tajo.common.TajoDataTypes.Type;
 import org.apache.tajo.storage.Tuple;
 
@@ -35,7 +36,7 @@ public class TajoMetaDataResultSet extends TajoResultSetBase {
   }
 
   public TajoMetaDataResultSet(List<String> columns, List<Type> types, List<MetaDataTuple> values) {
-    super(null, new Schema(), null);
+    super(null, SchemaFactory.newV1(), null);
     int index = 0;
     if(columns != null) {
       for(String columnName: columns) {

http://git-wip-us.apache.org/repos/asf/tajo/blob/8dad551e/tajo-cluster-tests/src/test/java/org/apache/tajo/BackendTestingUtil.java
----------------------------------------------------------------------
diff --git a/tajo-cluster-tests/src/test/java/org/apache/tajo/BackendTestingUtil.java b/tajo-cluster-tests/src/test/java/org/apache/tajo/BackendTestingUtil.java
index 3bfd34d..062db47 100644
--- a/tajo-cluster-tests/src/test/java/org/apache/tajo/BackendTestingUtil.java
+++ b/tajo-cluster-tests/src/test/java/org/apache/tajo/BackendTestingUtil.java
@@ -22,6 +22,7 @@ import org.apache.hadoop.fs.FileSystem;
 import org.apache.hadoop.fs.Path;
 import org.apache.tajo.catalog.CatalogUtil;
 import org.apache.tajo.catalog.Schema;
+import org.apache.tajo.catalog.SchemaFactory;
 import org.apache.tajo.catalog.TableMeta;
 import org.apache.tajo.common.TajoDataTypes.Type;
 import org.apache.tajo.conf.TajoConf;
@@ -35,7 +36,7 @@ public class BackendTestingUtil {
   public final static TableMeta mockupMeta;
 
   static {
-    mockupSchema = new Schema();
+    mockupSchema = SchemaFactory.newV1();
     mockupSchema.addColumn("deptname", Type.TEXT);
     mockupSchema.addColumn("score", Type.INT4);
     mockupMeta = CatalogUtil.newTableMeta("TEXT");

http://git-wip-us.apache.org/repos/asf/tajo/blob/8dad551e/tajo-common/src/main/java/org/apache/tajo/json/CommonGsonHelper.java
----------------------------------------------------------------------
diff --git a/tajo-common/src/main/java/org/apache/tajo/json/CommonGsonHelper.java b/tajo-common/src/main/java/org/apache/tajo/json/CommonGsonHelper.java
index 1dd1459..d838b6a 100644
--- a/tajo-common/src/main/java/org/apache/tajo/json/CommonGsonHelper.java
+++ b/tajo-common/src/main/java/org/apache/tajo/json/CommonGsonHelper.java
@@ -37,8 +37,8 @@ public class CommonGsonHelper {
   private CommonGsonHelper() {
   }
 
-	private static Map<Type, GsonSerDerAdapter> registerAdapters() {
-    Map<Type, GsonSerDerAdapter> adapters = new HashMap<>();
+	private static Map<Type, GsonSerDerAdapter<?>> registerAdapters() {
+    Map<Type, GsonSerDerAdapter<?>> adapters = new HashMap<>();
     adapters.put(Datum.class, new DatumAdapter());
 
     return adapters;

http://git-wip-us.apache.org/repos/asf/tajo/blob/8dad551e/tajo-common/src/main/java/org/apache/tajo/json/GsonHelper.java
----------------------------------------------------------------------
diff --git a/tajo-common/src/main/java/org/apache/tajo/json/GsonHelper.java b/tajo-common/src/main/java/org/apache/tajo/json/GsonHelper.java
index 8c6d891..eb73c89 100644
--- a/tajo-common/src/main/java/org/apache/tajo/json/GsonHelper.java
+++ b/tajo-common/src/main/java/org/apache/tajo/json/GsonHelper.java
@@ -27,14 +27,14 @@ public class GsonHelper {
   private final GsonBuilder builder;
   private final Gson gson;
 
-  public GsonHelper(Map<Type, GsonSerDerAdapter> adapters) {
+  public GsonHelper(Map<Type, GsonSerDerAdapter<?>> adapters) {
     builder = new GsonBuilder().excludeFieldsWithoutExposeAnnotation();
     registerAdapters(builder, adapters);
     gson = builder.create();
   }
 
-  public static void registerAdapters(GsonBuilder builder, Map<Type, GsonSerDerAdapter> adapters) {
-    for (Map.Entry<Type, GsonSerDerAdapter> entry : adapters.entrySet()) {
+  public static void registerAdapters(GsonBuilder builder, Map<Type, GsonSerDerAdapter<?>> adapters) {
+    for (Map.Entry<Type, GsonSerDerAdapter<?>> entry : adapters.entrySet()) {
       try {
         builder.registerTypeAdapter(entry.getKey(), entry.getValue());
       } catch (Exception e) {

http://git-wip-us.apache.org/repos/asf/tajo/blob/8dad551e/tajo-core-tests/src/test/java/org/apache/tajo/cli/tools/TestDDLBuilder.java
----------------------------------------------------------------------
diff --git a/tajo-core-tests/src/test/java/org/apache/tajo/cli/tools/TestDDLBuilder.java b/tajo-core-tests/src/test/java/org/apache/tajo/cli/tools/TestDDLBuilder.java
index ec92884..51a017e 100644
--- a/tajo-core-tests/src/test/java/org/apache/tajo/cli/tools/TestDDLBuilder.java
+++ b/tajo-core-tests/src/test/java/org/apache/tajo/cli/tools/TestDDLBuilder.java
@@ -37,7 +37,7 @@ public class TestDDLBuilder {
   private static final PartitionMethodDesc partitionMethod1;
 
   static {
-    schema1 = new Schema();
+    schema1 = SchemaFactory.newV1();
     schema1.addColumn("name", TajoDataTypes.Type.BLOB);
     schema1.addColumn("addr", TajoDataTypes.Type.TEXT);
 
@@ -45,7 +45,7 @@ public class TestDDLBuilder {
     meta1.putProperty(StorageConstants.TEXT_DELIMITER, StorageConstants.DEFAULT_FIELD_DELIMITER);
     meta1.putProperty(StorageConstants.COMPRESSION_CODEC, GzipCodec.class.getName());
 
-    Schema expressionSchema = new Schema();
+    Schema expressionSchema = SchemaFactory.newV1();
     expressionSchema.addColumn("key", TajoDataTypes.Type.INT4);
     expressionSchema.addColumn("key2", TajoDataTypes.Type.TEXT);
     partitionMethod1 = new PartitionMethodDesc(
@@ -67,14 +67,14 @@ public class TestDDLBuilder {
 
   @Test
   public void testBuildDDLQuotedTableName() throws Exception {
-    Schema schema2 = new Schema();
+    Schema schema2 = SchemaFactory.newV1();
     schema2.addColumn("name", TajoDataTypes.Type.BLOB);
     schema2.addColumn("addr", TajoDataTypes.Type.TEXT);
     schema2.addColumn("FirstName", TajoDataTypes.Type.TEXT);
     schema2.addColumn("LastName", TajoDataTypes.Type.TEXT);
     schema2.addColumn("with", TajoDataTypes.Type.TEXT);
 
-    Schema expressionSchema2 = new Schema();
+    Schema expressionSchema2 = SchemaFactory.newV1();
     expressionSchema2.addColumn("BirthYear", TajoDataTypes.Type.INT4);
 
     PartitionMethodDesc partitionMethod2 = new PartitionMethodDesc(

http://git-wip-us.apache.org/repos/asf/tajo/blob/8dad551e/tajo-core-tests/src/test/java/org/apache/tajo/client/TestCatalogAdminClientExceptions.java
----------------------------------------------------------------------
diff --git a/tajo-core-tests/src/test/java/org/apache/tajo/client/TestCatalogAdminClientExceptions.java b/tajo-core-tests/src/test/java/org/apache/tajo/client/TestCatalogAdminClientExceptions.java
index 78fb45a..6abc3fb 100644
--- a/tajo-core-tests/src/test/java/org/apache/tajo/client/TestCatalogAdminClientExceptions.java
+++ b/tajo-core-tests/src/test/java/org/apache/tajo/client/TestCatalogAdminClientExceptions.java
@@ -23,6 +23,7 @@ import org.apache.tajo.QueryTestCaseBase;
 import org.apache.tajo.TajoTestingCluster;
 import org.apache.tajo.TpchTestBase;
 import org.apache.tajo.catalog.Schema;
+import org.apache.tajo.catalog.SchemaFactory;
 import org.apache.tajo.catalog.TableMeta;
 import org.apache.tajo.conf.TajoConf;
 import org.apache.tajo.exception.*;
@@ -67,20 +68,20 @@ public class TestCatalogAdminClientExceptions extends QueryTestCaseBase {
 
   @Test(expected = UnavailableTableLocationException.class)
   public final void testCreateExternalTableUnavailableLocation() throws TajoException {
-    client.createExternalTable("table128237", new Schema(), URI.create("/tajo/test1bcd"),
+    client.createExternalTable("table128237", SchemaFactory.newV1(), URI.create("/tajo/test1bcd"),
         new TableMeta("TEXT", new KeyValueSet()));
   }
 
   @Test(expected = DuplicateTableException.class)
   public final void testCreateExternalTableDuplicated() throws TajoException {
-    client.createExternalTable("default.lineitem", new Schema(), URI.create("/"),
+    client.createExternalTable("default.lineitem", SchemaFactory.newV1(), URI.create("/"),
         new TableMeta("TEXT", new KeyValueSet()));
   }
 
   @Test(expected = InsufficientPrivilegeException.class)
   public final void testCreateExternalTableInsufficientPrivilege() throws TajoException {
     Path p = TajoConf.getWarehouseDir(conf);
-    client.createExternalTable("information_schema.table1237891", new Schema(), p.toUri(),
+    client.createExternalTable("information_schema.table1237891", SchemaFactory.newV1(), p.toUri(),
         new TableMeta("TEXT", new KeyValueSet()));
   }
 

http://git-wip-us.apache.org/repos/asf/tajo/blob/8dad551e/tajo-core-tests/src/test/java/org/apache/tajo/engine/codegen/TestEvalCodeGenerator.java
----------------------------------------------------------------------
diff --git a/tajo-core-tests/src/test/java/org/apache/tajo/engine/codegen/TestEvalCodeGenerator.java b/tajo-core-tests/src/test/java/org/apache/tajo/engine/codegen/TestEvalCodeGenerator.java
index 68104e7..cdb86a1 100644
--- a/tajo-core-tests/src/test/java/org/apache/tajo/engine/codegen/TestEvalCodeGenerator.java
+++ b/tajo-core-tests/src/test/java/org/apache/tajo/engine/codegen/TestEvalCodeGenerator.java
@@ -21,6 +21,7 @@ package org.apache.tajo.engine.codegen;
 
 import org.apache.tajo.catalog.CatalogUtil;
 import org.apache.tajo.catalog.Schema;
+import org.apache.tajo.catalog.SchemaFactory;
 import org.apache.tajo.common.TajoDataTypes;
 import org.apache.tajo.datum.NullDatum;
 import org.apache.tajo.engine.eval.ExprTestBase;
@@ -30,7 +31,7 @@ import org.junit.Test;
 public class TestEvalCodeGenerator extends ExprTestBase {
   private static Schema schema;
   static {
-    schema = new Schema();
+    schema = SchemaFactory.newV1();
     schema.addColumn("col0", TajoDataTypes.Type.INT1);
     schema.addColumn("col1", TajoDataTypes.Type.INT2);
     schema.addColumn("col2", TajoDataTypes.Type.INT4);
@@ -65,7 +66,7 @@ public class TestEvalCodeGenerator extends ExprTestBase {
 
   @Test
   public void testNullHandling() throws TajoException {
-    schema = new Schema();
+    schema = SchemaFactory.newV1();
     schema.addColumn("col0", TajoDataTypes.Type.INT1);
     schema.addColumn("col1", TajoDataTypes.Type.INT2);
     schema.addColumn("col2", TajoDataTypes.Type.INT4);
@@ -105,7 +106,7 @@ public class TestEvalCodeGenerator extends ExprTestBase {
 
   @Test
   public void testComparison() throws TajoException {
-    Schema inetSchema = new Schema();
+    Schema inetSchema = SchemaFactory.newV1();
     inetSchema.addColumn("addr1", TajoDataTypes.Type.INET4);
     inetSchema.addColumn("addr2", TajoDataTypes.Type.INET4);
 
@@ -161,7 +162,7 @@ public class TestEvalCodeGenerator extends ExprTestBase {
 
   @Test
   public void testBetweenAsymmetric() throws TajoException {
-    Schema schema = new Schema();
+    Schema schema = SchemaFactory.newV1();
     schema.addColumn("col1", TajoDataTypes.Type.INT4);
     schema.addColumn("col2", TajoDataTypes.Type.INT4);
     testEval(schema, "table1", "0,", "select col1 between 1 and 3 from table1", new String[]{"f"});
@@ -195,7 +196,7 @@ public class TestEvalCodeGenerator extends ExprTestBase {
 
   @Test
   public void testBetweenSymmetric() throws TajoException {
-    Schema schema = new Schema();
+    Schema schema = SchemaFactory.newV1();
     schema.addColumn("col1", TajoDataTypes.Type.INT4);
     schema.addColumn("col2", TajoDataTypes.Type.INT4);
     testEval(schema, "table1", "0,", "select col1 between symmetric 1 and 3 from table1", new String[]{"f"});
@@ -230,7 +231,7 @@ public class TestEvalCodeGenerator extends ExprTestBase {
 
   @Test
   public void testUnary() throws TajoException {
-    schema = new Schema();
+    schema = SchemaFactory.newV1();
     schema.addColumn("col0", TajoDataTypes.Type.INT1);
     schema.addColumn("col1", TajoDataTypes.Type.INT2);
     schema.addColumn("col2", TajoDataTypes.Type.INT4);
@@ -302,7 +303,7 @@ public class TestEvalCodeGenerator extends ExprTestBase {
     testSimpleEval("select length('123456') as col1 ", new String[]{"6"});
 
     testEval(schema, "table1", "0,1,2,3,4.5,6.5", "select 'abc' || 'bbc'", new String [] {"abcbbc"});
-    Schema schema = new Schema();
+    Schema schema = SchemaFactory.newV1();
     schema.addColumn("col1", TajoDataTypes.Type.TEXT);
     schema.addColumn("col2", TajoDataTypes.Type.TEXT);
     testEval(schema, "table1", " trim, abc", "select ltrim(col1) || ltrim(col2) from table1",

http://git-wip-us.apache.org/repos/asf/tajo/blob/8dad551e/tajo-core-tests/src/test/java/org/apache/tajo/engine/eval/TestEvalTree.java
----------------------------------------------------------------------
diff --git a/tajo-core-tests/src/test/java/org/apache/tajo/engine/eval/TestEvalTree.java b/tajo-core-tests/src/test/java/org/apache/tajo/engine/eval/TestEvalTree.java
index 9116635..0b33626 100644
--- a/tajo-core-tests/src/test/java/org/apache/tajo/engine/eval/TestEvalTree.java
+++ b/tajo-core-tests/src/test/java/org/apache/tajo/engine/eval/TestEvalTree.java
@@ -21,6 +21,7 @@ package org.apache.tajo.engine.eval;
 import org.apache.tajo.catalog.CatalogUtil;
 import org.apache.tajo.catalog.Column;
 import org.apache.tajo.catalog.Schema;
+import org.apache.tajo.catalog.SchemaFactory;
 import org.apache.tajo.common.TajoDataTypes;
 import org.apache.tajo.common.TajoDataTypes.DataType;
 import org.apache.tajo.datum.Datum;
@@ -42,7 +43,7 @@ public class TestEvalTree extends ExprTestBase {
     FieldEval e2 = new FieldEval("table1.score", CatalogUtil.newSimpleDataType(INT4)); // it indicates
     assertCloneEqual(e2);
 
-    Schema schema1 = new Schema();
+    Schema schema1 = SchemaFactory.newV1();
     schema1.addColumn("table1.id", INT4);
     schema1.addColumn("table1.score", INT4);
     
@@ -395,7 +396,7 @@ public class TestEvalTree extends ExprTestBase {
       assertEquals(caseWhenEval.bind(null, null).eval(null).asInt4(), 1);
     }
 
-    Schema schema = new Schema(new Column[]{new Column("test", TajoDataTypes.Type.INT4)});
+    Schema schema = SchemaFactory.newV1(new Column[]{new Column("test", TajoDataTypes.Type.INT4)});
     Tuple tuple = new VTuple(new Datum[]{DatumFactory.createText("aaa")});
     RegexPredicateEval regexEval = new RegexPredicateEval(false, new FieldEval("test",
         CatalogUtil.newSimpleDataType(TajoDataTypes.Type.INT4)), new ConstEval(DatumFactory.createText("a*")), false);

http://git-wip-us.apache.org/repos/asf/tajo/blob/8dad551e/tajo-core-tests/src/test/java/org/apache/tajo/engine/eval/TestEvalTreeUtil.java
----------------------------------------------------------------------
diff --git a/tajo-core-tests/src/test/java/org/apache/tajo/engine/eval/TestEvalTreeUtil.java b/tajo-core-tests/src/test/java/org/apache/tajo/engine/eval/TestEvalTreeUtil.java
index 6a659be..9192235 100644
--- a/tajo-core-tests/src/test/java/org/apache/tajo/engine/eval/TestEvalTreeUtil.java
+++ b/tajo-core-tests/src/test/java/org/apache/tajo/engine/eval/TestEvalTreeUtil.java
@@ -97,7 +97,7 @@ public class TestEvalTreeUtil {
     catalog.createTablespace(DEFAULT_TABLESPACE_NAME, "hdfs://localhost:1234/warehouse");
     catalog.createDatabase(TajoConstants.DEFAULT_DATABASE_NAME, DEFAULT_TABLESPACE_NAME);
 
-    Schema schema = new Schema();
+    Schema schema = SchemaFactory.newV1();
     schema.addColumn("name", TajoDataTypes.Type.TEXT);
     schema.addColumn("score", TajoDataTypes.Type.INT4);
     schema.addColumn("age", TajoDataTypes.Type.INT4);

http://git-wip-us.apache.org/repos/asf/tajo/blob/8dad551e/tajo-core-tests/src/test/java/org/apache/tajo/engine/eval/TestPredicates.java
----------------------------------------------------------------------
diff --git a/tajo-core-tests/src/test/java/org/apache/tajo/engine/eval/TestPredicates.java b/tajo-core-tests/src/test/java/org/apache/tajo/engine/eval/TestPredicates.java
index 3a2de5b..c3cd0a0 100644
--- a/tajo-core-tests/src/test/java/org/apache/tajo/engine/eval/TestPredicates.java
+++ b/tajo-core-tests/src/test/java/org/apache/tajo/engine/eval/TestPredicates.java
@@ -20,6 +20,7 @@ package org.apache.tajo.engine.eval;
 
 import org.apache.tajo.catalog.CatalogUtil;
 import org.apache.tajo.catalog.Schema;
+import org.apache.tajo.catalog.SchemaFactory;
 import org.apache.tajo.common.TajoDataTypes;
 import org.apache.tajo.exception.TajoException;
 import org.junit.Test;
@@ -86,7 +87,7 @@ public class TestPredicates extends ExprTestBase {
 
     testSimpleEval("select (not (1 > null)) is null;", new String[] {"t"});
 
-    Schema schema1 = new Schema();
+    Schema schema1 = SchemaFactory.newV1();
     schema1.addColumn("col1", INT4);
     schema1.addColumn("col2", INT4);
     schema1.addColumn("col3", INT4);
@@ -112,7 +113,7 @@ public class TestPredicates extends ExprTestBase {
   public void testComparisonEqual() throws TajoException {
 
 
-    Schema schema = new Schema();
+    Schema schema = SchemaFactory.newV1();
     schema.addColumn("col0", TajoDataTypes.Type.INT1);
     schema.addColumn("col1", TajoDataTypes.Type.INT2);
     schema.addColumn("col2", TajoDataTypes.Type.INT4);
@@ -125,7 +126,7 @@ public class TestPredicates extends ExprTestBase {
 
     testEval(schema, "t1", "0,1,2,3,4.1,5.1,cmp,asm,", "SELECT col6 = 'cmp' from t1", new String [] {"t"});
 
-    Schema schema1 = new Schema();
+    Schema schema1 = SchemaFactory.newV1();
     schema1.addColumn("col1", INT4);
     schema1.addColumn("col2", INT4);
     schema1.addColumn("col3", INT4);
@@ -142,7 +143,7 @@ public class TestPredicates extends ExprTestBase {
 
   @Test
   public void testComparisonNotEqual() throws TajoException {
-    Schema schema1 = new Schema();
+    Schema schema1 = SchemaFactory.newV1();
     schema1.addColumn("col1", INT4);
     schema1.addColumn("col2", INT4);
     schema1.addColumn("col3", INT4);
@@ -159,7 +160,7 @@ public class TestPredicates extends ExprTestBase {
 
   @Test
   public void testComparisonLessThan() throws TajoException {
-    Schema schema1 = new Schema();
+    Schema schema1 = SchemaFactory.newV1();
     schema1.addColumn("col1", INT4);
     schema1.addColumn("col2", INT4);
     schema1.addColumn("col3", INT4);
@@ -176,7 +177,7 @@ public class TestPredicates extends ExprTestBase {
 
   @Test
   public void testComparisonLessThanEqual() throws TajoException {
-    Schema schema1 = new Schema();
+    Schema schema1 = SchemaFactory.newV1();
     schema1.addColumn("col1", INT4);
     schema1.addColumn("col2", INT4);
     schema1.addColumn("col3", INT4);
@@ -193,7 +194,7 @@ public class TestPredicates extends ExprTestBase {
 
   @Test
   public void testComparisonGreaterThan() throws TajoException {
-    Schema schema1 = new Schema();
+    Schema schema1 = SchemaFactory.newV1();
     schema1.addColumn("col1", INT4);
     schema1.addColumn("col2", INT4);
     schema1.addColumn("col3", INT4);
@@ -210,7 +211,7 @@ public class TestPredicates extends ExprTestBase {
 
   @Test
   public void testComparisonGreaterThanEqual() throws TajoException {
-    Schema schema1 = new Schema();
+    Schema schema1 = SchemaFactory.newV1();
     schema1.addColumn("col1", INT4);
     schema1.addColumn("col2", INT4);
     schema1.addColumn("col3", INT4);
@@ -231,7 +232,7 @@ public class TestPredicates extends ExprTestBase {
 
   @Test
   public void testBetween() throws TajoException {
-    Schema schema2 = new Schema();
+    Schema schema2 = SchemaFactory.newV1();
     schema2.addColumn("col1", TEXT);
     schema2.addColumn("col2", TEXT);
     schema2.addColumn("col3", TEXT);
@@ -255,7 +256,7 @@ public class TestPredicates extends ExprTestBase {
 
   @Test
   public void testBetween2() throws TajoException { // for TAJO-249
-    Schema schema3 = new Schema();
+    Schema schema3 = SchemaFactory.newV1();
     schema3.addColumn("date_a", INT4);
     schema3.addColumn("date_b", INT4);
     schema3.addColumn("date_c", INT4);
@@ -294,7 +295,7 @@ public class TestPredicates extends ExprTestBase {
 
   @Test
   public void testInPredicateWithConstant() throws TajoException {
-    Schema schema2 = new Schema();
+    Schema schema2 = SchemaFactory.newV1();
     schema2.addColumn("col1", TEXT);
     schema2.addColumn("col2", TEXT);
     schema2.addColumn("col3", TEXT);
@@ -319,7 +320,7 @@ public class TestPredicates extends ExprTestBase {
 
   @Test
   public void testInPredicateWithSimpleExprs() throws TajoException {
-    Schema schema2 = new Schema();
+    Schema schema2 = SchemaFactory.newV1();
     schema2.addColumn("col1", TEXT);
     schema2.addColumn("col2", INT4);
     schema2.addColumn("col3", TEXT);
@@ -343,7 +344,7 @@ public class TestPredicates extends ExprTestBase {
 
   @Test
   public void testIsNullPredicate() throws TajoException {
-    Schema schema1 = new Schema();
+    Schema schema1 = SchemaFactory.newV1();
     schema1.addColumn("col1", INT4);
     schema1.addColumn("col2", INT4);
     testEval(schema1, "table1", "123,", "select col1 is null, col2 is null as a from table1",
@@ -354,7 +355,7 @@ public class TestPredicates extends ExprTestBase {
 
   @Test
   public void testIsNullPredicateWithFunction() throws TajoException {
-    Schema schema2 = new Schema();
+    Schema schema2 = SchemaFactory.newV1();
     schema2.addColumn("col1", TEXT);
     schema2.addColumn("col2", TEXT);
     testEval(schema2, "table1", "_123,", "select ltrim(col1, '_') is null, upper(col2) is null as a from table1",
@@ -393,7 +394,7 @@ public class TestPredicates extends ExprTestBase {
 
   @Test
   public void testBooleanTestOnTable() throws TajoException {
-    Schema schema = new Schema();
+    Schema schema = SchemaFactory.newV1();
     schema.addColumn("col1", BOOLEAN);
     schema.addColumn("col2", BOOLEAN);
     testEval(schema, "table1", "t,f", "select col1 is true, col2 is false from table1", new String [] {"t", "t"});

http://git-wip-us.apache.org/repos/asf/tajo/blob/8dad551e/tajo-core-tests/src/test/java/org/apache/tajo/engine/eval/TestSQLExpression.java
----------------------------------------------------------------------
diff --git a/tajo-core-tests/src/test/java/org/apache/tajo/engine/eval/TestSQLExpression.java b/tajo-core-tests/src/test/java/org/apache/tajo/engine/eval/TestSQLExpression.java
index fe51aa4..2db826b 100644
--- a/tajo-core-tests/src/test/java/org/apache/tajo/engine/eval/TestSQLExpression.java
+++ b/tajo-core-tests/src/test/java/org/apache/tajo/engine/eval/TestSQLExpression.java
@@ -21,6 +21,7 @@ package org.apache.tajo.engine.eval;
 import org.apache.tajo.SessionVars;
 import org.apache.tajo.catalog.CatalogUtil;
 import org.apache.tajo.catalog.Schema;
+import org.apache.tajo.catalog.SchemaFactory;
 import org.apache.tajo.exception.UndefinedFunctionException;
 import org.apache.tajo.common.TajoDataTypes;
 import org.apache.tajo.datum.DatumFactory;
@@ -39,7 +40,7 @@ public class TestSQLExpression extends ExprTestBase {
 
   @Test
   public void testQuotedIdentifiers() throws TajoException {
-    Schema schema = new Schema();
+    Schema schema = SchemaFactory.newV1();
     schema.addColumn("컬럼1", TEXT);
     schema.addColumn("컬럼2", TEXT);
     testEval(schema, "테이블1", "123,234", "select \"컬럼1\"::float, cast (\"컬럼2\" as float4) as a from \"테이블1\"",
@@ -93,7 +94,7 @@ public class TestSQLExpression extends ExprTestBase {
 
   @Test
   public void testExplicitCast() throws TajoException {
-    Schema schema = new Schema();
+    Schema schema = SchemaFactory.newV1();
     schema.addColumn("col0", INT1);
     schema.addColumn("col1", INT2);
     schema.addColumn("col2", INT4);
@@ -173,7 +174,7 @@ public class TestSQLExpression extends ExprTestBase {
 
   @Test
   public void testImplicitCastForInt1() throws TajoException {
-    Schema schema = new Schema();
+    Schema schema = SchemaFactory.newV1();
     schema.addColumn("col0", TajoDataTypes.Type.INT1);
     schema.addColumn("col1", TajoDataTypes.Type.INT2);
     schema.addColumn("col2", TajoDataTypes.Type.INT4);
@@ -275,7 +276,7 @@ public class TestSQLExpression extends ExprTestBase {
 
   @Test
   public void testImplicitCastForInt2() throws TajoException {
-    Schema schema = new Schema();
+    Schema schema = SchemaFactory.newV1();
     schema.addColumn("col0", TajoDataTypes.Type.INT1);
     schema.addColumn("col1", TajoDataTypes.Type.INT2);
     schema.addColumn("col2", TajoDataTypes.Type.INT4);
@@ -377,7 +378,7 @@ public class TestSQLExpression extends ExprTestBase {
 
   @Test
   public void testImplicitCastForInt4() throws TajoException {
-    Schema schema = new Schema();
+    Schema schema = SchemaFactory.newV1();
     schema.addColumn("col0", TajoDataTypes.Type.INT1);
     schema.addColumn("col1", TajoDataTypes.Type.INT2);
     schema.addColumn("col2", TajoDataTypes.Type.INT4);
@@ -480,7 +481,7 @@ public class TestSQLExpression extends ExprTestBase {
 
   @Test
   public void testImplicitCastForInt8() throws TajoException {
-    Schema schema = new Schema();
+    Schema schema = SchemaFactory.newV1();
     schema.addColumn("col0", TajoDataTypes.Type.INT1);
     schema.addColumn("col1", TajoDataTypes.Type.INT2);
     schema.addColumn("col2", TajoDataTypes.Type.INT4);
@@ -587,7 +588,7 @@ public class TestSQLExpression extends ExprTestBase {
 
   @Test
   public void testImplicitCastForFloat4() throws TajoException {
-    Schema schema = new Schema();
+    Schema schema = SchemaFactory.newV1();
     schema.addColumn("col0", TajoDataTypes.Type.INT1);
     schema.addColumn("col1", TajoDataTypes.Type.INT2);
     schema.addColumn("col2", TajoDataTypes.Type.INT4);
@@ -706,7 +707,7 @@ public class TestSQLExpression extends ExprTestBase {
 
   @Test
   public void testImplicitCastForFloat8() throws TajoException {
-    Schema schema = new Schema();
+    Schema schema = SchemaFactory.newV1();
     schema.addColumn("col0", TajoDataTypes.Type.INT1);
     schema.addColumn("col1", TajoDataTypes.Type.INT2);
     schema.addColumn("col2", TajoDataTypes.Type.INT4);
@@ -826,7 +827,7 @@ public class TestSQLExpression extends ExprTestBase {
 
   @Test
   public void testSigned() throws TajoException {
-    Schema schema = new Schema();
+    Schema schema = SchemaFactory.newV1();
     schema.addColumn("col0", TajoDataTypes.Type.INT1);
     schema.addColumn("col1", TajoDataTypes.Type.INT2);
     schema.addColumn("col2", TajoDataTypes.Type.INT4);
@@ -870,7 +871,7 @@ public class TestSQLExpression extends ExprTestBase {
     queryContext.put(SessionVars.TIMEZONE, "GMT-6");
     TimeZone tz = TimeZone.getTimeZone("GMT-6");
 
-    Schema schema = new Schema();
+    Schema schema = SchemaFactory.newV1();
     schema.addColumn("col1", TEXT);
     schema.addColumn("col2", TEXT);
 
@@ -902,7 +903,7 @@ public class TestSQLExpression extends ExprTestBase {
     testSimpleEval("select true", new String[] {"t"});
     testSimpleEval("select false", new String[]{"f"});
 
-    Schema schema = new Schema();
+    Schema schema = SchemaFactory.newV1();
     schema.addColumn("col1", TEXT);
     schema.addColumn("col2", TEXT);
     testEval(schema, "table1", "123,234", "select col1, col2 from table1 where true", new String[]{"123", "234"});

http://git-wip-us.apache.org/repos/asf/tajo/blob/8dad551e/tajo-core-tests/src/test/java/org/apache/tajo/engine/function/TestBuiltinFunctions.java
----------------------------------------------------------------------
diff --git a/tajo-core-tests/src/test/java/org/apache/tajo/engine/function/TestBuiltinFunctions.java b/tajo-core-tests/src/test/java/org/apache/tajo/engine/function/TestBuiltinFunctions.java
index 72fdd6f..ae2de77 100644
--- a/tajo-core-tests/src/test/java/org/apache/tajo/engine/function/TestBuiltinFunctions.java
+++ b/tajo-core-tests/src/test/java/org/apache/tajo/engine/function/TestBuiltinFunctions.java
@@ -23,6 +23,7 @@ import org.apache.tajo.QueryTestCaseBase;
 import org.apache.tajo.TajoConstants;
 import org.apache.tajo.TajoTestingCluster;
 import org.apache.tajo.catalog.Schema;
+import org.apache.tajo.catalog.SchemaFactory;
 import org.apache.tajo.common.TajoDataTypes;
 import org.apache.tajo.storage.StorageConstants;
 import org.apache.tajo.util.KeyValueSet;
@@ -53,7 +54,7 @@ public class TestBuiltinFunctions extends QueryTestCaseBase {
     tableOptions.set(StorageConstants.TEXT_DELIMITER, StorageConstants.DEFAULT_FIELD_DELIMITER);
     tableOptions.set(StorageConstants.TEXT_NULL, "\\\\N");
 
-    Schema schema = new Schema();
+    Schema schema = SchemaFactory.newV1();
     schema.addColumn("id", TajoDataTypes.Type.INT4);
     schema.addColumn("value", TajoDataTypes.Type.INT8);
     String[] data = new String[]{ "1|-111", "2|\\N", "3|-333" };
@@ -79,7 +80,7 @@ public class TestBuiltinFunctions extends QueryTestCaseBase {
     tableOptions.set(StorageConstants.TEXT_DELIMITER, StorageConstants.DEFAULT_FIELD_DELIMITER);
     tableOptions.set(StorageConstants.TEXT_NULL, "\\\\N");
 
-    Schema schema = new Schema();
+    Schema schema = SchemaFactory.newV1();
     schema.addColumn("value", TajoDataTypes.Type.DATE);
     String[] data = new String[]{ "2014-01-02", "2014-12-01", "2015-01-01", "1999-08-09", "2000-03-01" };
     TajoTestingCluster.createTable("testbuiltin11", schema, tableOptions, data, 1);
@@ -103,7 +104,7 @@ public class TestBuiltinFunctions extends QueryTestCaseBase {
     tableOptions.set(StorageConstants.TEXT_DELIMITER, StorageConstants.DEFAULT_FIELD_DELIMITER);
     tableOptions.set(StorageConstants.TEXT_NULL, "\\\\N");
 
-    Schema schema = new Schema();
+    Schema schema = SchemaFactory.newV1();
     schema.addColumn("value", TajoDataTypes.Type.DATE);
     String[] data = new String[]{ "2014-01-02", "2014-12-01", "\\N", "\\N", "2000-03-01" };
     TajoTestingCluster.createTable("testbuiltin11", schema, tableOptions, data, 1);
@@ -127,7 +128,7 @@ public class TestBuiltinFunctions extends QueryTestCaseBase {
     tableOptions.set(StorageConstants.TEXT_DELIMITER, StorageConstants.DEFAULT_FIELD_DELIMITER);
     tableOptions.set(StorageConstants.TEXT_NULL, "\\\\N");
 
-    Schema schema = new Schema();
+    Schema schema = SchemaFactory.newV1();
     schema.addColumn("value", TajoDataTypes.Type.TIME);
     String[] data = new String[]{ "11:11:11", "23:12:50", "00:00:01", "09:59:59", "12:13:14" };
     TajoTestingCluster.createTable("testbuiltin11", schema, tableOptions, data, 1);
@@ -151,7 +152,7 @@ public class TestBuiltinFunctions extends QueryTestCaseBase {
     tableOptions.set(StorageConstants.TEXT_DELIMITER, StorageConstants.DEFAULT_FIELD_DELIMITER);
     tableOptions.set(StorageConstants.TEXT_NULL, "\\\\N");
 
-    Schema schema = new Schema();
+    Schema schema = SchemaFactory.newV1();
     schema.addColumn("value", TajoDataTypes.Type.TIME);
     String[] data = new String[]{ "11:11:11", "\\N", "\\N", "09:59:59", "12:13:14" };
     TajoTestingCluster.createTable("testbuiltin11", schema, tableOptions, data, 1);
@@ -175,7 +176,7 @@ public class TestBuiltinFunctions extends QueryTestCaseBase {
     tableOptions.set(StorageConstants.TEXT_DELIMITER, StorageConstants.DEFAULT_FIELD_DELIMITER);
     tableOptions.set(StorageConstants.TEXT_NULL, "\\\\N");
 
-    Schema schema = new Schema();
+    Schema schema = SchemaFactory.newV1();
     schema.addColumn("value", TajoDataTypes.Type.TIMESTAMP);
     String[] data = new String[]{ "1999-01-01 11:11:11", "2015-01-01 23:12:50", "2016-12-24 00:00:01", 
             "1977-05-04 09:59:59", "2002-11-21 12:13:14" };
@@ -200,7 +201,7 @@ public class TestBuiltinFunctions extends QueryTestCaseBase {
     tableOptions.set(StorageConstants.TEXT_DELIMITER, StorageConstants.DEFAULT_FIELD_DELIMITER);
     tableOptions.set(StorageConstants.TEXT_NULL, "\\\\N");
 
-    Schema schema = new Schema();
+    Schema schema = SchemaFactory.newV1();
     schema.addColumn("value", TajoDataTypes.Type.TIMESTAMP);
     String[] data = new String[]{ "1999-01-01 11:11:11", "2015-01-01 23:12:50", "\\N",
             "\\N", "2002-11-21 12:13:14" };
@@ -232,7 +233,7 @@ public class TestBuiltinFunctions extends QueryTestCaseBase {
     tableOptions.set(StorageConstants.TEXT_DELIMITER, StorageConstants.DEFAULT_FIELD_DELIMITER);
     tableOptions.set(StorageConstants.TEXT_NULL, "\\\\N");
 
-    Schema schema = new Schema();
+    Schema schema = SchemaFactory.newV1();
     schema.addColumn("id", TajoDataTypes.Type.INT4);
     schema.addColumn("value", TajoDataTypes.Type.INT8);
     String[] data = new String[]{ "1|111", "2|\\N", "3|333" };
@@ -265,7 +266,7 @@ public class TestBuiltinFunctions extends QueryTestCaseBase {
     tableOptions.set(StorageConstants.TEXT_DELIMITER, StorageConstants.DEFAULT_FIELD_DELIMITER);
     tableOptions.set(StorageConstants.TEXT_NULL, "\\\\N");
 
-    Schema schema = new Schema();
+    Schema schema = SchemaFactory.newV1();
     schema.addColumn("id", TajoDataTypes.Type.INT4);
     schema.addColumn("name", TajoDataTypes.Type.TEXT);
     String[] data = new String[]{ "1|\\N", "2|\\N", "3|\\N" };
@@ -298,7 +299,7 @@ public class TestBuiltinFunctions extends QueryTestCaseBase {
     tableOptions.set(StorageConstants.TEXT_DELIMITER, StorageConstants.DEFAULT_FIELD_DELIMITER);
     tableOptions.set(StorageConstants.TEXT_NULL, "\\\\N");
 
-    Schema schema = new Schema();
+    Schema schema = SchemaFactory.newV1();
     schema.addColumn("id", TajoDataTypes.Type.INT4);
     schema.addColumn("name", TajoDataTypes.Type.TEXT);
     String[] data = new String[]{ "1|def", "2|\\N", "3|abc" };
@@ -359,7 +360,7 @@ public class TestBuiltinFunctions extends QueryTestCaseBase {
     tableOptions.set(StorageConstants.TEXT_DELIMITER, StorageConstants.DEFAULT_FIELD_DELIMITER);
     tableOptions.set(StorageConstants.TEXT_NULL, "\\\\N");
 
-    Schema schema = new Schema();
+    Schema schema = SchemaFactory.newV1();
     schema.addColumn("id", TajoDataTypes.Type.INT4);
     schema.addColumn("value_int", TajoDataTypes.Type.INT4);
     schema.addColumn("value_long", TajoDataTypes.Type.INT8);
@@ -388,7 +389,7 @@ public class TestBuiltinFunctions extends QueryTestCaseBase {
     tableOptions.set(StorageConstants.TEXT_DELIMITER, StorageConstants.DEFAULT_FIELD_DELIMITER);
     tableOptions.set(StorageConstants.TEXT_NULL, "\\\\N");
 
-    Schema schema = new Schema();
+    Schema schema = SchemaFactory.newV1();
     schema.addColumn("id", TajoDataTypes.Type.INT4);
     schema.addColumn("value_int", TajoDataTypes.Type.INT4);
     schema.addColumn("value_long", TajoDataTypes.Type.INT8);
@@ -417,7 +418,7 @@ public class TestBuiltinFunctions extends QueryTestCaseBase {
     tableOptions.set(StorageConstants.TEXT_DELIMITER, StorageConstants.DEFAULT_FIELD_DELIMITER);
     tableOptions.set(StorageConstants.TEXT_NULL, "\\\\N");
 
-    Schema schema = new Schema();
+    Schema schema = SchemaFactory.newV1();
     schema.addColumn("id", TajoDataTypes.Type.INT4);
     schema.addColumn("value_int", TajoDataTypes.Type.INT4);
     schema.addColumn("value_long", TajoDataTypes.Type.INT8);
@@ -446,7 +447,7 @@ public class TestBuiltinFunctions extends QueryTestCaseBase {
     tableOptions.set(StorageConstants.TEXT_DELIMITER, StorageConstants.DEFAULT_FIELD_DELIMITER);
     tableOptions.set(StorageConstants.TEXT_NULL, "\\\\N");
 
-    Schema schema = new Schema();
+    Schema schema = SchemaFactory.newV1();
     schema.addColumn("id", TajoDataTypes.Type.INT4);
     schema.addColumn("value_int", TajoDataTypes.Type.INT4);
     schema.addColumn("value_long", TajoDataTypes.Type.INT8);
@@ -475,7 +476,7 @@ public class TestBuiltinFunctions extends QueryTestCaseBase {
     tableOptions.set(StorageConstants.TEXT_DELIMITER, StorageConstants.DEFAULT_FIELD_DELIMITER);
     tableOptions.set(StorageConstants.TEXT_NULL, "\\\\N");
 
-    Schema schema = new Schema();
+    Schema schema = SchemaFactory.newV1();
     schema.addColumn("id", TajoDataTypes.Type.INT4);
     schema.addColumn("value_int", TajoDataTypes.Type.INT4);
     schema.addColumn("value_long", TajoDataTypes.Type.INT8);
@@ -507,7 +508,7 @@ public class TestBuiltinFunctions extends QueryTestCaseBase {
     tableOptions.set(StorageConstants.TEXT_DELIMITER, StorageConstants.DEFAULT_FIELD_DELIMITER);
     tableOptions.set(StorageConstants.TEXT_NULL, "\\\\N");
 
-    Schema schema = new Schema();
+    Schema schema = SchemaFactory.newV1();
     schema.addColumn("id", TajoDataTypes.Type.INT4);
     schema.addColumn("value_int", TajoDataTypes.Type.INT4);
     schema.addColumn("value_long", TajoDataTypes.Type.INT8);
@@ -539,7 +540,7 @@ public class TestBuiltinFunctions extends QueryTestCaseBase {
     tableOptions.set(StorageConstants.TEXT_DELIMITER, StorageConstants.DEFAULT_FIELD_DELIMITER);
     tableOptions.set(StorageConstants.TEXT_NULL, "\\\\N");
 
-    Schema schema = new Schema();
+    Schema schema = SchemaFactory.newV1();
     schema.addColumn("id", TajoDataTypes.Type.INT4);
     schema.addColumn("value_int", TajoDataTypes.Type.INT4);
     schema.addColumn("value_long", TajoDataTypes.Type.INT8);
@@ -571,7 +572,7 @@ public class TestBuiltinFunctions extends QueryTestCaseBase {
     tableOptions.set(StorageConstants.TEXT_DELIMITER, StorageConstants.DEFAULT_FIELD_DELIMITER);
     tableOptions.set(StorageConstants.TEXT_NULL, "\\\\N");
 
-    Schema schema = new Schema();
+    Schema schema = SchemaFactory.newV1();
     schema.addColumn("id", TajoDataTypes.Type.INT4);
     schema.addColumn("value_int", TajoDataTypes.Type.INT4);
     schema.addColumn("value_long", TajoDataTypes.Type.INT8);
@@ -603,7 +604,7 @@ public class TestBuiltinFunctions extends QueryTestCaseBase {
     tableOptions.set(StorageConstants.TEXT_DELIMITER, StorageConstants.DEFAULT_FIELD_DELIMITER);
     tableOptions.set(StorageConstants.TEXT_NULL, "\\\\N");
 
-    Schema schema = new Schema();
+    Schema schema = SchemaFactory.newV1();
     schema.addColumn("id", TajoDataTypes.Type.INT4);
     schema.addColumn("value_int", TajoDataTypes.Type.INT4);
     schema.addColumn("value_long", TajoDataTypes.Type.INT8);
@@ -634,7 +635,7 @@ public class TestBuiltinFunctions extends QueryTestCaseBase {
     tableOptions.set(StorageConstants.TEXT_DELIMITER, StorageConstants.DEFAULT_FIELD_DELIMITER);
     tableOptions.set(StorageConstants.TEXT_NULL, "\\\\N");
 
-    Schema schema = new Schema();
+    Schema schema = SchemaFactory.newV1();
     schema.addColumn("id", TajoDataTypes.Type.INT4);
     schema.addColumn("value_int", TajoDataTypes.Type.INT4);
     schema.addColumn("value_long", TajoDataTypes.Type.INT8);
@@ -665,7 +666,7 @@ public class TestBuiltinFunctions extends QueryTestCaseBase {
     tableOptions.set(StorageConstants.TEXT_DELIMITER, StorageConstants.DEFAULT_FIELD_DELIMITER);
     tableOptions.set(StorageConstants.TEXT_NULL, "\\\\N");
 
-    Schema schema = new Schema();
+    Schema schema = SchemaFactory.newV1();
     schema.addColumn("id", TajoDataTypes.Type.INT4);
     schema.addColumn("value_int", TajoDataTypes.Type.INT4);
     schema.addColumn("value_long", TajoDataTypes.Type.INT8);
@@ -696,7 +697,7 @@ public class TestBuiltinFunctions extends QueryTestCaseBase {
     tableOptions.set(StorageConstants.TEXT_DELIMITER, StorageConstants.DEFAULT_FIELD_DELIMITER);
     tableOptions.set(StorageConstants.TEXT_NULL, "\\\\N");
 
-    Schema schema = new Schema();
+    Schema schema = SchemaFactory.newV1();
     schema.addColumn("id", TajoDataTypes.Type.INT4);
     schema.addColumn("value_int", TajoDataTypes.Type.INT4);
     schema.addColumn("value_long", TajoDataTypes.Type.INT8);
@@ -757,11 +758,11 @@ public class TestBuiltinFunctions extends QueryTestCaseBase {
     tableOptions.set(StorageConstants.TEXT_DELIMITER, StorageConstants.DEFAULT_FIELD_DELIMITER);
     tableOptions.set(StorageConstants.TEXT_NULL, "\\\\N");
     
-    Schema schema = new Schema();
+    Schema schema = SchemaFactory.newV1();
     schema.addColumn("id", TajoDataTypes.Type.INT4);
     String[] data = new String[] {"1", "3", "2", "4"};
     TajoTestingCluster.createTable("rank_table1", schema, tableOptions, data, 1);
-    schema = new Schema();
+    schema = SchemaFactory.newV1();
     schema.addColumn("refid", TajoDataTypes.Type.INT4);
     schema.addColumn("value", TajoDataTypes.Type.TEXT);
     data = new String[] {"1|efgh", "2|abcd", "4|erjk", "8|dfef"};
@@ -795,7 +796,7 @@ public class TestBuiltinFunctions extends QueryTestCaseBase {
     tableOptions.set(StorageConstants.TEXT_DELIMITER, StorageConstants.DEFAULT_FIELD_DELIMITER);
     tableOptions.set(StorageConstants.TEXT_NULL, "\\\\N");
 
-    Schema schema = new Schema();
+    Schema schema = SchemaFactory.newV1();
     schema.addColumn("id", TajoDataTypes.Type.INT4);
     schema.addColumn("value_int", TajoDataTypes.Type.INT4);
     schema.addColumn("value_long", TajoDataTypes.Type.INT8);

http://git-wip-us.apache.org/repos/asf/tajo/blob/8dad551e/tajo-core-tests/src/test/java/org/apache/tajo/engine/function/TestConditionalExpressions.java
----------------------------------------------------------------------
diff --git a/tajo-core-tests/src/test/java/org/apache/tajo/engine/function/TestConditionalExpressions.java b/tajo-core-tests/src/test/java/org/apache/tajo/engine/function/TestConditionalExpressions.java
index 691579c..9a072ef 100644
--- a/tajo-core-tests/src/test/java/org/apache/tajo/engine/function/TestConditionalExpressions.java
+++ b/tajo-core-tests/src/test/java/org/apache/tajo/engine/function/TestConditionalExpressions.java
@@ -20,6 +20,7 @@ package org.apache.tajo.engine.function;
 
 import org.apache.tajo.catalog.CatalogUtil;
 import org.apache.tajo.catalog.Schema;
+import org.apache.tajo.catalog.SchemaFactory;
 import org.apache.tajo.datum.NullDatum;
 import org.apache.tajo.exception.UndefinedFunctionException;
 import org.apache.tajo.common.TajoDataTypes;
@@ -32,7 +33,7 @@ import static org.junit.Assert.fail;
 public class TestConditionalExpressions extends ExprTestBase {
   @Test
   public void testCaseWhens1() throws TajoException {
-    Schema schema = new Schema();
+    Schema schema = SchemaFactory.newV1();
     schema.addColumn("col1", TajoDataTypes.Type.INT1);
     schema.addColumn("col2", TajoDataTypes.Type.INT2);
     schema.addColumn("col3", TajoDataTypes.Type.INT4);
@@ -59,7 +60,7 @@ public class TestConditionalExpressions extends ExprTestBase {
 
   @Test
   public void testCaseWhensWithNullReturn() throws TajoException {
-    Schema schema = new Schema();
+    Schema schema = SchemaFactory.newV1();
     schema.addColumn("col1", TajoDataTypes.Type.TEXT);
     schema.addColumn("col2", TajoDataTypes.Type.TEXT);
 
@@ -73,7 +74,7 @@ public class TestConditionalExpressions extends ExprTestBase {
 
   @Test
   public void testCaseWhensWithCommonExpression() throws TajoException {
-    Schema schema = new Schema();
+    Schema schema = SchemaFactory.newV1();
     schema.addColumn("col1", TajoDataTypes.Type.INT4);
     schema.addColumn("col2", TajoDataTypes.Type.INT4);
     schema.addColumn("col3", TajoDataTypes.Type.INT4);
@@ -111,7 +112,7 @@ public class TestConditionalExpressions extends ExprTestBase {
 
   @Test
   public void testCaseWhensWithCommonExpressionAndNull() throws TajoException {
-    Schema schema = new Schema();
+    Schema schema = SchemaFactory.newV1();
     schema.addColumn("col1", TajoDataTypes.Type.INT4);
     schema.addColumn("col2", TajoDataTypes.Type.INT4);
     schema.addColumn("col3", TajoDataTypes.Type.INT4);

http://git-wip-us.apache.org/repos/asf/tajo/blob/8dad551e/tajo-core-tests/src/test/java/org/apache/tajo/engine/function/TestDateTimeFunctions.java
----------------------------------------------------------------------
diff --git a/tajo-core-tests/src/test/java/org/apache/tajo/engine/function/TestDateTimeFunctions.java b/tajo-core-tests/src/test/java/org/apache/tajo/engine/function/TestDateTimeFunctions.java
index 9dd8653..dc9bd25 100644
--- a/tajo-core-tests/src/test/java/org/apache/tajo/engine/function/TestDateTimeFunctions.java
+++ b/tajo-core-tests/src/test/java/org/apache/tajo/engine/function/TestDateTimeFunctions.java
@@ -21,6 +21,7 @@ package org.apache.tajo.engine.function;
 
 import org.apache.tajo.SessionVars;
 import org.apache.tajo.catalog.Schema;
+import org.apache.tajo.catalog.SchemaFactory;
 import org.apache.tajo.datum.DatumFactory;
 import org.apache.tajo.datum.TimestampDatum;
 import org.apache.tajo.engine.eval.ExprTestBase;
@@ -119,7 +120,7 @@ public class TestDateTimeFunctions extends ExprTestBase {
     TimeZone GMT = TimeZone.getTimeZone("GMT");
     TimeZone PST = TimeZone.getTimeZone("PST");
 
-    Schema schema2 = new Schema();
+    Schema schema2 = SchemaFactory.newV1();
     schema2.addColumn("col1", TIMESTAMP);
     testEval(schema2, "table1",
         "1970-01-17 10:09:37",
@@ -135,7 +136,7 @@ public class TestDateTimeFunctions extends ExprTestBase {
         new String[]{"1970.0", "1.0", "17.0"});
 
     // Currently TIME type can be loaded with INT8 type.
-    Schema schema3 = new Schema();
+    Schema schema3 = SchemaFactory.newV1();
     schema3.addColumn("col1", TIME);
     testEval(schema3, "table1",
         "10:09:37.5",
@@ -150,7 +151,7 @@ public class TestDateTimeFunctions extends ExprTestBase {
         "select extract(hour from col1), extract(minute from col1), extract(second from col1) from table1;",
         new String[]{"18.0", "9.0", "37.5"});
 
-    Schema schema4 = new Schema();
+    Schema schema4 = SchemaFactory.newV1();
     schema4.addColumn("col1", DATE);
     testEval(schema4, "table1",
         "1970-01-17",
@@ -235,7 +236,7 @@ public class TestDateTimeFunctions extends ExprTestBase {
     TimeZone GMT = TimeZone.getTimeZone("GMT");
     TimeZone PST = TimeZone.getTimeZone("PST");
 
-    Schema schema2 = new Schema();
+    Schema schema2 = SchemaFactory.newV1();
     schema2.addColumn("col1", TIMESTAMP);
 
     testEval(schema2, "table1",
@@ -251,7 +252,7 @@ public class TestDateTimeFunctions extends ExprTestBase {
         "select date_part('year', col1), date_part('month', col1), date_part('day', col1) from table1;",
         new String[]{"1970.0", "1.0", "18.0"});
 
-    Schema schema3 = new Schema();
+    Schema schema3 = SchemaFactory.newV1();
     schema3.addColumn("col1", TIME);
     testEval(schema3, "table1", "10:09:37.5",
         "select date_part('hour', col1), date_part('minute', col1), date_part('second', col1) from table1;",
@@ -263,7 +264,7 @@ public class TestDateTimeFunctions extends ExprTestBase {
         "select date_part('hour', col1), date_part('minute', col1), date_part('second', col1) from table1;",
         new String[]{"18.0", "9.0", "37.5"});
 
-    Schema schema4 = new Schema();
+    Schema schema4 = SchemaFactory.newV1();
     schema4.addColumn("col1", DATE);
     testEval(schema4, "table1",
         "1970-01-17",

http://git-wip-us.apache.org/repos/asf/tajo/blob/8dad551e/tajo-core-tests/src/test/java/org/apache/tajo/engine/function/TestMathFunctions.java
----------------------------------------------------------------------
diff --git a/tajo-core-tests/src/test/java/org/apache/tajo/engine/function/TestMathFunctions.java b/tajo-core-tests/src/test/java/org/apache/tajo/engine/function/TestMathFunctions.java
index a43e4d3..1c07388 100644
--- a/tajo-core-tests/src/test/java/org/apache/tajo/engine/function/TestMathFunctions.java
+++ b/tajo-core-tests/src/test/java/org/apache/tajo/engine/function/TestMathFunctions.java
@@ -19,6 +19,7 @@
 package org.apache.tajo.engine.function;
 
 import org.apache.tajo.catalog.Schema;
+import org.apache.tajo.catalog.SchemaFactory;
 import org.apache.tajo.datum.NullDatum;
 import org.apache.tajo.engine.eval.ExprTestBase;
 import org.apache.tajo.exception.TajoException;
@@ -37,7 +38,7 @@ public class TestMathFunctions extends ExprTestBase {
     testSimpleEval("select round(-5.5) as col1 ", new String[]{"-6"});
     testSimpleEval("select round(-5.6) as col1 ", new String[]{"-6"});
 
-    Schema schema = new Schema();
+    Schema schema = SchemaFactory.newV1();
     schema.addColumn("col1", FLOAT8);
     schema.addColumn("col2", FLOAT8);
     schema.addColumn("col3", FLOAT8);
@@ -45,7 +46,7 @@ public class TestMathFunctions extends ExprTestBase {
     testEval(schema, "table1", "1.0, 0.2, 0.4", "select round(col1 + col2 + col3) from table1",
         new String[]{"2"});
 
-    Schema schema2 = new Schema();
+    Schema schema2 = SchemaFactory.newV1();
     schema2.addColumn("col1", INT4);
     schema2.addColumn("col2", INT8);
     schema2.addColumn("col3", FLOAT4);
@@ -65,7 +66,7 @@ public class TestMathFunctions extends ExprTestBase {
     testSimpleEval("select floor(-5.1) as col1 ", new String[]{"-6"});
     testSimpleEval("select floor(-5.6) as col1 ", new String[]{"-6"});
 
-    Schema schema = new Schema();
+    Schema schema = SchemaFactory.newV1();
     schema.addColumn("col1", FLOAT8);
     schema.addColumn("col2", FLOAT8);
     schema.addColumn("col3", FLOAT8);
@@ -84,7 +85,7 @@ public class TestMathFunctions extends ExprTestBase {
     testSimpleEval("select ceil(-5.1) as col1 ", new String[]{"-5"});
     testSimpleEval("select ceil(-5.6) as col1 ", new String[]{"-5"});
 
-    Schema schema = new Schema();
+    Schema schema = SchemaFactory.newV1();
     schema.addColumn("col1", FLOAT8);
     schema.addColumn("col2", FLOAT8);
     schema.addColumn("col3", FLOAT8);
@@ -103,7 +104,7 @@ public class TestMathFunctions extends ExprTestBase {
     testSimpleEval("select ceiling(-5.1) as col1 ", new String[]{"-5"});
     testSimpleEval("select ceiling(-5.6) as col1 ", new String[]{"-5"});
 
-    Schema schema = new Schema();
+    Schema schema = SchemaFactory.newV1();
     schema.addColumn("col1", FLOAT8);
     schema.addColumn("col2", FLOAT8);
     schema.addColumn("col3", FLOAT8);
@@ -119,7 +120,7 @@ public class TestMathFunctions extends ExprTestBase {
     testSimpleEval("select sin(1.2) as col1 ", new String[]{"0.9320390859672263"});
     testSimpleEval("select sin(-0.5) as col1 ", new String[]{"-0.479425538604203"});
 
-    Schema schema = new Schema();
+    Schema schema = SchemaFactory.newV1();
     schema.addColumn("col1", FLOAT8);
     schema.addColumn("col2", FLOAT8);
     schema.addColumn("col3", FLOAT8);
@@ -136,7 +137,7 @@ public class TestMathFunctions extends ExprTestBase {
     testSimpleEval("select cos(1.2) as col1 ", new String[]{"0.3623577544766736"});
     testSimpleEval("select cos(-0.5) as col1 ", new String[]{"0.8775825618903728"});
 
-    Schema schema = new Schema();
+    Schema schema = SchemaFactory.newV1();
     schema.addColumn("col1", FLOAT8);
     schema.addColumn("col2", FLOAT8);
     schema.addColumn("col3", FLOAT8);
@@ -152,7 +153,7 @@ public class TestMathFunctions extends ExprTestBase {
     testSimpleEval("select tan(0.8) as col1 ", new String[]{"1.0296385570503641"});
     testSimpleEval("select tan(-0.5) as col1 ", new String[]{"-0.5463024898437905"});
 
-    Schema schema = new Schema();
+    Schema schema = SchemaFactory.newV1();
     schema.addColumn("col1", FLOAT8);
     schema.addColumn("col2", FLOAT8);
     schema.addColumn("col3", FLOAT8);
@@ -168,7 +169,7 @@ public class TestMathFunctions extends ExprTestBase {
     testSimpleEval("select asin(0.8) as col1 ", new String[]{"0.9272952180016123"});
     testSimpleEval("select asin(-0.5) as col1 ", new String[]{"-0.5235987755982989"});
 
-    Schema schema = new Schema();
+    Schema schema = SchemaFactory.newV1();
     schema.addColumn("col1", FLOAT8);
     schema.addColumn("col2", FLOAT8);
     schema.addColumn("col3", FLOAT8);
@@ -184,7 +185,7 @@ public class TestMathFunctions extends ExprTestBase {
     testSimpleEval("select acos(0.8) as col1 ", new String[]{"0.6435011087932843"});
     testSimpleEval("select acos(-0.5) as col1 ", new String[]{"2.0943951023931957"});
 
-    Schema schema = new Schema();
+    Schema schema = SchemaFactory.newV1();
     schema.addColumn("col1", FLOAT8);
     schema.addColumn("col2", FLOAT8);
     schema.addColumn("col3", FLOAT8);
@@ -200,7 +201,7 @@ public class TestMathFunctions extends ExprTestBase {
     testSimpleEval("select atan(1.2) as col1 ", new String[]{"0.8760580505981934"});
     testSimpleEval("select atan(-0.5) as col1 ", new String[]{"-0.4636476090008061"});
 
-    Schema schema = new Schema();
+    Schema schema = SchemaFactory.newV1();
     schema.addColumn("col1", FLOAT8);
     schema.addColumn("col2", FLOAT8);
     schema.addColumn("col3", FLOAT8);
@@ -217,7 +218,7 @@ public class TestMathFunctions extends ExprTestBase {
     testSimpleEval("select atan2(-0.5, 0.3) as col1 ", new String[]{"-1.0303768265243125"});
     testSimpleEval("select atan2(-0.2, -1.3) as col1 ", new String[]{"-2.988943325194528"});
 
-    Schema schema = new Schema();
+    Schema schema = SchemaFactory.newV1();
     schema.addColumn("col1", FLOAT8);
     schema.addColumn("col2", FLOAT8);
     schema.addColumn("col3", FLOAT8);
@@ -233,7 +234,7 @@ public class TestMathFunctions extends ExprTestBase {
     testSimpleEval("select mod(200000000000,2) as col1 ", new String[]{"0"});
     testSimpleEval("select mod(2,200000000000) as col1 ", new String[]{"2"});
 
-    Schema schema = new Schema();
+    Schema schema = SchemaFactory.newV1();
     schema.addColumn("col1", INT8);
     schema.addColumn("col2", INT8);
     schema.addColumn("col3", INT8);
@@ -249,7 +250,7 @@ public class TestMathFunctions extends ExprTestBase {
     testSimpleEval("select div(200000000000,2) as col1 ", new String[]{"100000000000"});
     testSimpleEval("select div(2,200000000000) as col1 ", new String[]{"0"});
 
-    Schema schema = new Schema();
+    Schema schema = SchemaFactory.newV1();
     schema.addColumn("col1", INT8);
     schema.addColumn("col2", INT8);
     schema.addColumn("col3", INT8);
@@ -265,7 +266,7 @@ public class TestMathFunctions extends ExprTestBase {
     testSimpleEval("select sign(0.3) as col1 ", new String[]{"1.0"});
 
 
-    Schema schema = new Schema();
+    Schema schema = SchemaFactory.newV1();
     schema.addColumn("col1", FLOAT4);
     schema.addColumn("col2", FLOAT4);
     schema.addColumn("col3", FLOAT4);
@@ -274,7 +275,7 @@ public class TestMathFunctions extends ExprTestBase {
         new String[]{"1.0"});
 
 
-    Schema schema2 = new Schema();
+    Schema schema2 = SchemaFactory.newV1();
     schema2.addColumn("col1", FLOAT8);
     schema2.addColumn("col2", FLOAT8);
     schema2.addColumn("col3", FLOAT8);
@@ -290,7 +291,7 @@ public class TestMathFunctions extends ExprTestBase {
     testSimpleEval("select sqrt(8.0) as col1 ", new String[]{"2.8284271247461903"});
 
 
-    Schema schema = new Schema();
+    Schema schema = SchemaFactory.newV1();
     schema.addColumn("col1", FLOAT4);
     schema.addColumn("col2", FLOAT4);
     schema.addColumn("col3", FLOAT4);
@@ -299,7 +300,7 @@ public class TestMathFunctions extends ExprTestBase {
         new String[]{"1.1401754564651765"});
 
 
-    Schema schema2 = new Schema();
+    Schema schema2 = SchemaFactory.newV1();
     schema2.addColumn("col1", FLOAT8);
     schema2.addColumn("col2", FLOAT8);
     schema2.addColumn("col3", FLOAT8);
@@ -315,13 +316,13 @@ public class TestMathFunctions extends ExprTestBase {
     testSimpleEval("select exp(1.2) as col1 ", new String[]{String.valueOf(Math.exp(1.2d))});
 
 
-    Schema schema = new Schema();
+    Schema schema = SchemaFactory.newV1();
     schema.addColumn("col1", FLOAT4);
 
     testEval(schema, "table1", "1.123", "select exp(col1) from table1",
         new String[]{String.valueOf(Math.exp(1.123f))});
 
-    Schema schema2 = new Schema();
+    Schema schema2 = SchemaFactory.newV1();
     schema2.addColumn("col1", FLOAT8);
 
     testEval(schema2, "table1", "1.123", "select exp(col1) from table1",
@@ -338,12 +339,12 @@ public class TestMathFunctions extends ExprTestBase {
     testSimpleEval("select abs(2.0) as col1 ", new String[]{"2.0"});
     testSimpleEval("select abs(-2.0) as col1 ", new String[]{"2.0"});
 
-    Schema schema = new Schema();
+    Schema schema = SchemaFactory.newV1();
     schema.addColumn("col1", FLOAT4);
     schema.addColumn("col2", FLOAT4);
     testEval(schema, "table1", "0.39,-0.39", "select abs(col1), abs(col2) from table1", new String[]{"0.39", "0.39"});
 
-    Schema schema2 = new Schema();
+    Schema schema2 = SchemaFactory.newV1();
     schema2.addColumn("col1", FLOAT8);
     schema2.addColumn("col2", FLOAT8);
     testEval(schema2, "table1", "0.033312347,-0.033312347", "select abs(col1), abs(col2) from table1",
@@ -357,14 +358,14 @@ public class TestMathFunctions extends ExprTestBase {
     testSimpleEval("select cbrt(8.0) as col1 ", new String[]{"2.0"});
 
 
-    Schema schema = new Schema();
+    Schema schema = SchemaFactory.newV1();
     schema.addColumn("col1", FLOAT4);
     schema.addColumn("col2", FLOAT4);
     schema.addColumn("col3", FLOAT4);
     testEval(schema, "table1", "1.0, 0.2, 0.1", "select cbrt(col1 + col2 + col3) from table1",
         new String[]{"1.0913929030771317"});
 
-    Schema schema2 = new Schema();
+    Schema schema2 = SchemaFactory.newV1();
     schema2.addColumn("col1", FLOAT8);
     schema2.addColumn("col2", FLOAT8);
     schema2.addColumn("col3", FLOAT8);
@@ -379,7 +380,7 @@ public class TestMathFunctions extends ExprTestBase {
     testSimpleEval("select degrees(2.7) as col1 ", new String[]{String.valueOf(Math.toDegrees(2.7))});
     testSimpleEval("select degrees(-0.8) as col1 ", new String[]{String.valueOf(Math.toDegrees(-0.8))});
 
-    Schema schema = new Schema();
+    Schema schema = SchemaFactory.newV1();
     schema.addColumn("col1", FLOAT4);
     schema.addColumn("col2", FLOAT8);
     schema.addColumn("col3", FLOAT8);
@@ -400,7 +401,7 @@ public class TestMathFunctions extends ExprTestBase {
     testSimpleEval("select pow(null,3.1) as col1 ", new String[]{NullDatum.get().toString()});
     testSimpleEval("select pow(20.1,null) as col1 ", new String[]{NullDatum.get().toString()});
 
-    Schema schema = new Schema();
+    Schema schema = SchemaFactory.newV1();
     schema.addColumn("col1", FLOAT4);
     schema.addColumn("col2", FLOAT8);
     schema.addColumn("col3", INT4);
@@ -420,7 +421,7 @@ public class TestMathFunctions extends ExprTestBase {
     testSimpleEval("select radians(2.7) as col1 ", new String[]{String.valueOf(Math.toRadians(2.7))});
     testSimpleEval("select radians(-0.8) as col1 ", new String[]{String.valueOf(Math.toRadians(-0.8))});
 
-    Schema schema = new Schema();
+    Schema schema = SchemaFactory.newV1();
     schema.addColumn("col1", FLOAT4);
     schema.addColumn("col2", FLOAT8);
     schema.addColumn("col3", FLOAT8);
@@ -462,7 +463,7 @@ public class TestMathFunctions extends ExprTestBase {
     testSimpleEval("select round(1234567890.1234567,3) ", new String[]{"1.234567890123E9"});
     testSimpleEval("select round(1234567890.1234567,5) ", new String[]{"1.23456789012346E9"});
 
-    Schema schema = new Schema();
+    Schema schema = SchemaFactory.newV1();
     schema.addColumn("col1", FLOAT8);
     schema.addColumn("col2", INT4);
 

http://git-wip-us.apache.org/repos/asf/tajo/blob/8dad551e/tajo-core-tests/src/test/java/org/apache/tajo/engine/function/TestPatternMatchingPredicates.java
----------------------------------------------------------------------
diff --git a/tajo-core-tests/src/test/java/org/apache/tajo/engine/function/TestPatternMatchingPredicates.java b/tajo-core-tests/src/test/java/org/apache/tajo/engine/function/TestPatternMatchingPredicates.java
index eb0bd96..0cfbe1c 100644
--- a/tajo-core-tests/src/test/java/org/apache/tajo/engine/function/TestPatternMatchingPredicates.java
+++ b/tajo-core-tests/src/test/java/org/apache/tajo/engine/function/TestPatternMatchingPredicates.java
@@ -19,6 +19,7 @@
 package org.apache.tajo.engine.function;
 
 import org.apache.tajo.catalog.Schema;
+import org.apache.tajo.catalog.SchemaFactory;
 import org.apache.tajo.datum.NullDatum;
 import org.apache.tajo.engine.eval.ExprTestBase;
 import org.apache.tajo.exception.TajoException;
@@ -30,7 +31,7 @@ public class TestPatternMatchingPredicates extends ExprTestBase {
 
   @Test
   public void testLike() throws TajoException {
-    Schema schema = new Schema();
+    Schema schema = SchemaFactory.newV1();
     schema.addColumn("col1", TEXT);
 
     // test for null values

http://git-wip-us.apache.org/repos/asf/tajo/blob/8dad551e/tajo-core-tests/src/test/java/org/apache/tajo/engine/function/TestStringOperatorsAndFunctions.java
----------------------------------------------------------------------
diff --git a/tajo-core-tests/src/test/java/org/apache/tajo/engine/function/TestStringOperatorsAndFunctions.java b/tajo-core-tests/src/test/java/org/apache/tajo/engine/function/TestStringOperatorsAndFunctions.java
index 751a243..dd40822 100644
--- a/tajo-core-tests/src/test/java/org/apache/tajo/engine/function/TestStringOperatorsAndFunctions.java
+++ b/tajo-core-tests/src/test/java/org/apache/tajo/engine/function/TestStringOperatorsAndFunctions.java
@@ -21,6 +21,7 @@ package org.apache.tajo.engine.function;
 
 import org.apache.commons.lang.StringEscapeUtils;
 import org.apache.tajo.catalog.Schema;
+import org.apache.tajo.catalog.SchemaFactory;
 import org.apache.tajo.datum.NullDatum;
 import org.apache.tajo.engine.eval.ExprTestBase;
 import org.apache.tajo.exception.TajoException;
@@ -40,7 +41,7 @@ public class TestStringOperatorsAndFunctions extends ExprTestBase {
 
   @Test
   public void testConcatenateOnExpressions() throws TajoException {
-    Schema schema = new Schema();
+    Schema schema = SchemaFactory.newV1();
     schema.addColumn("col1", TEXT);
     schema.addColumn("col2", INT4);
     schema.addColumn("col3", FLOAT8);
@@ -61,7 +62,7 @@ public class TestStringOperatorsAndFunctions extends ExprTestBase {
 
   @Test
   public void testLTrim() throws TajoException {
-    Schema schema = new Schema();
+    Schema schema = SchemaFactory.newV1();
     schema.addColumn("col1", TEXT);
     schema.addColumn("col2", TEXT);
 
@@ -82,7 +83,7 @@ public class TestStringOperatorsAndFunctions extends ExprTestBase {
 
   @Test
   public void testRTrim() throws TajoException {
-    Schema schema = new Schema();
+    Schema schema = SchemaFactory.newV1();
     schema.addColumn("col1", TEXT);
     schema.addColumn("col2", TEXT);
 
@@ -103,7 +104,7 @@ public class TestStringOperatorsAndFunctions extends ExprTestBase {
 
   @Test
   public void testTrim() throws TajoException {
-    Schema schema = new Schema();
+    Schema schema = SchemaFactory.newV1();
     schema.addColumn("col1", TEXT);
     schema.addColumn("col2", TEXT);
 
@@ -131,7 +132,7 @@ public class TestStringOperatorsAndFunctions extends ExprTestBase {
     testSimpleEval("select regexp_replace('abcdef', null, '--') as col1 ", new String[]{NullDatum.get().toString()});
     testSimpleEval("select regexp_replace('abcdef','bc', null) as col1 ", new String[]{NullDatum.get().toString()});
 
-    Schema schema = new Schema();
+    Schema schema = SchemaFactory.newV1();
     schema.addColumn("col1", TEXT);
     schema.addColumn("col2", TEXT);
     schema.addColumn("col3", TEXT);
@@ -164,7 +165,7 @@ public class TestStringOperatorsAndFunctions extends ExprTestBase {
     testSimpleEval("select left('abcdef',-5) as col1 ", new String[]{"a"});
     testSimpleEval("select left('abcdef',-6) as col1 ", new String[]{""});
 
-    Schema schema = new Schema();
+    Schema schema = SchemaFactory.newV1();
     schema.addColumn("col1", TEXT);
     schema.addColumn("col2", INT4);
     schema.addColumn("col3", TEXT);
@@ -193,7 +194,7 @@ public class TestStringOperatorsAndFunctions extends ExprTestBase {
     testSimpleEval("select right('abcdef',-5) as col1 ", new String[]{"f"});
     testSimpleEval("select right('abcdef',-6) as col1 ", new String[]{""});
 
-    Schema schema = new Schema();
+    Schema schema = SchemaFactory.newV1();
     schema.addColumn("col1", TEXT);
     schema.addColumn("col2", INT4);
     schema.addColumn("col3", TEXT);
@@ -210,7 +211,7 @@ public class TestStringOperatorsAndFunctions extends ExprTestBase {
     testSimpleEval("select reverse('abcdef') as col1 ", new String[]{"fedcba"});
     testSimpleEval("select reverse('가') as col1 ", new String[]{"가"});
 
-    Schema schema = new Schema();
+    Schema schema = SchemaFactory.newV1();
     schema.addColumn("col1", TEXT);
     schema.addColumn("col2", TEXT);
     schema.addColumn("col3", TEXT);
@@ -224,7 +225,7 @@ public class TestStringOperatorsAndFunctions extends ExprTestBase {
     testSimpleEval("select repeat('가',3) as col1 ", new String[]{"가가가"});
     testSimpleEval("select repeat('a',2) as col1 ", new String[]{"aa"});
 
-    Schema schema = new Schema();
+    Schema schema = SchemaFactory.newV1();
     schema.addColumn("col1", TEXT);
     schema.addColumn("col2", TEXT);
     schema.addColumn("col3", TEXT);
@@ -236,7 +237,7 @@ public class TestStringOperatorsAndFunctions extends ExprTestBase {
   public void testUpper() throws TajoException {
     testSimpleEval("select upper('abcdef') as col1 ", new String[]{"ABCDEF"});
 
-    Schema schema = new Schema();
+    Schema schema = SchemaFactory.newV1();
     schema.addColumn("col1", TEXT);
     schema.addColumn("col2", TEXT);
     schema.addColumn("col3", TEXT);
@@ -249,7 +250,7 @@ public class TestStringOperatorsAndFunctions extends ExprTestBase {
   public void testLower() throws TajoException {
     testSimpleEval("select lower('ABCdEF') as col1 ", new String[]{"abcdef"});
 
-    Schema schema = new Schema();
+    Schema schema = SchemaFactory.newV1();
     schema.addColumn("col1", TEXT);
     schema.addColumn("col2", TEXT);
     schema.addColumn("col3", TEXT);
@@ -262,7 +263,7 @@ public class TestStringOperatorsAndFunctions extends ExprTestBase {
   public void testCharLength() throws TajoException {
     testSimpleEval("select char_length('123456') as col1 ", new String[]{"6"});
 
-    Schema schema = new Schema();
+    Schema schema = SchemaFactory.newV1();
     schema.addColumn("col1", TEXT);
     schema.addColumn("col2", TEXT);
     schema.addColumn("col3", TEXT);
@@ -274,7 +275,7 @@ public class TestStringOperatorsAndFunctions extends ExprTestBase {
   public void testLength() throws TajoException {
     testSimpleEval("select length('123456') as col1 ", new String[]{"6"});
 
-    Schema schema = new Schema();
+    Schema schema = SchemaFactory.newV1();
     schema.addColumn("col1", TEXT);
     schema.addColumn("col2", TEXT);
     schema.addColumn("col3", TEXT);
@@ -287,7 +288,7 @@ public class TestStringOperatorsAndFunctions extends ExprTestBase {
     testSimpleEval("select md5('1') as col1 ", new String[]{"c4ca4238a0b923820dcc509a6f75849b"});
     testSimpleEval("select md5('tajo') as col1 ", new String[]{"742721b3a79f71a9491681b8e8a7ce85"});
 
-    Schema schema = new Schema();
+    Schema schema = SchemaFactory.newV1();
     schema.addColumn("col1", TEXT);
     schema.addColumn("col2", TEXT);
     schema.addColumn("col3", TEXT);
@@ -316,7 +317,7 @@ public class TestStringOperatorsAndFunctions extends ExprTestBase {
     testSimpleEval("select to_hex(1234) as col1 ", new String[]{"4d2"});
     testSimpleEval("select to_hex(1023456788888888) as col1 ", new String[]{"3a2d41a583d38"});
 
-    Schema schema = new Schema();
+    Schema schema = SchemaFactory.newV1();
     schema.addColumn("col1", TEXT);
     schema.addColumn("col2", TEXT);
     schema.addColumn("col3", TEXT);
@@ -330,7 +331,7 @@ public class TestStringOperatorsAndFunctions extends ExprTestBase {
     testSimpleEval("select to_bin(10) as col1 ", new String[]{"1010"});
     testSimpleEval("select to_bin(1234) as col1 ", new String[]{"10011010010"});
 
-    Schema schema = new Schema();
+    Schema schema = SchemaFactory.newV1();
     schema.addColumn("col1", TEXT);
     schema.addColumn("col2", TEXT);
     schema.addColumn("col3", TEXT);
@@ -344,7 +345,7 @@ public class TestStringOperatorsAndFunctions extends ExprTestBase {
     testSimpleEval("select octet_length('1') as col1 ", new String[]{"1"});
     testSimpleEval("select octet_length('가') as col1 ", new String[]{"3"});
 
-    Schema schema = new Schema();
+    Schema schema = SchemaFactory.newV1();
     schema.addColumn("col1", TEXT);
     schema.addColumn("col2", TEXT);
     schema.addColumn("col3", TEXT);
@@ -360,7 +361,7 @@ public class TestStringOperatorsAndFunctions extends ExprTestBase {
     testSimpleEval("select split_part('1386577650.123', '.', 3) is null", new String[]{"t"});
 
     // null handling tests
-    Schema schema = new Schema();
+    Schema schema = SchemaFactory.newV1();
     schema.addColumn("col1", TEXT);
     schema.addColumn("col2", TEXT);
     schema.addColumn("col3", TEXT);
@@ -389,7 +390,7 @@ public class TestStringOperatorsAndFunctions extends ExprTestBase {
     testSimpleEval("select substr('abcdef', -1, 3) as col1 ", new String[]{"a"});
     testSimpleEval("select substr('abcdef', -1, 1) as col1 ", new String[]{""});
 
-    Schema schema = new Schema();
+    Schema schema = SchemaFactory.newV1();
     schema.addColumn("col1", TEXT);
     schema.addColumn("col2", TEXT);
     schema.addColumn("col3", TEXT);
@@ -432,7 +433,7 @@ public class TestStringOperatorsAndFunctions extends ExprTestBase {
     testSimpleEval("select locate('abcdef', 'a', -1) as col1 ", new String[]{"0"});
     testSimpleEval("select locate('abcdef', 'a', -5) as col1 ", new String[]{"0"});
 
-    Schema schema = new Schema();
+    Schema schema = SchemaFactory.newV1();
     schema.addColumn("col1", TEXT);
     schema.addColumn("col2", TEXT);
     schema.addColumn("col3", TEXT);
@@ -450,7 +451,7 @@ public class TestStringOperatorsAndFunctions extends ExprTestBase {
   public void testBitLength() throws TajoException {
     testSimpleEval("select bit_length('123456') as col1 ", new String[]{"48"});
 
-    Schema schema = new Schema();
+    Schema schema = SchemaFactory.newV1();
     schema.addColumn("col1", TEXT);
     schema.addColumn("col2", TEXT);
     schema.addColumn("col3", TEXT);
@@ -466,7 +467,7 @@ public class TestStringOperatorsAndFunctions extends ExprTestBase {
     testSimpleEval("select strpos('일이삼사오육','삼사') as col1 ", new String[]{"3"});
     testSimpleEval("select strpos('일이삼사오육','일이삼') as col1 ", new String[]{"1"});
 
-    Schema schema = new Schema();
+    Schema schema = SchemaFactory.newV1();
     schema.addColumn("col1", TEXT);
     schema.addColumn("col2", TEXT);
     schema.addColumn("col3", TEXT);
@@ -482,7 +483,7 @@ public class TestStringOperatorsAndFunctions extends ExprTestBase {
     testSimpleEval("select strposb('일이삼사오육','삼사') as col1 ", new String[]{"7"});    //utf8 1 korean word = 3 chars
     testSimpleEval("select strposb('일이삼사오육','삼사일') as col1 ", new String[]{"0"});
 
-    Schema schema = new Schema();
+    Schema schema = SchemaFactory.newV1();
     schema.addColumn("col1", TEXT);
     schema.addColumn("col2", TEXT);
     schema.addColumn("col3", TEXT);
@@ -500,7 +501,7 @@ public class TestStringOperatorsAndFunctions extends ExprTestBase {
   public void testAscii() throws TajoException {
     testSimpleEval("select ascii('abc') as col1 ", new String[]{"97"});
 
-    Schema schema = new Schema();
+    Schema schema = SchemaFactory.newV1();
     schema.addColumn("col1", TEXT);
     testEval(schema, "table1", "abc", "select ascii(col1) from table1",
             new String[]{"97"});
@@ -516,7 +517,7 @@ public class TestStringOperatorsAndFunctions extends ExprTestBase {
     testSimpleEval("select chr(50) as col1 ", new String[]{"2"});
     testSimpleEval("select chr(64) as col1 ", new String[]{"@"});
 
-    Schema schema = new Schema();
+    Schema schema = SchemaFactory.newV1();
     schema.addColumn("col1", INT4);
     testEval(schema, "table1", "65", "select chr(col1) from table1", new String[]{"A"});
     testEval(schema, "table1", "66", "select chr(col1) from table1", new String[]{"B"});
@@ -587,7 +588,7 @@ public class TestStringOperatorsAndFunctions extends ExprTestBase {
     testSimpleEval("select find_in_set('딸기','사과,배,옥수수,감자,딸기,수박') as col1 ", new String[]{"5"});
 
     // null test
-    Schema schema = new Schema();
+    Schema schema = SchemaFactory.newV1();
     schema.addColumn("col1", TEXT);
     schema.addColumn("col2", TEXT);
     testEval(schema, "table1", "|crt,c,cr,c,def", "select find_in_set(col1, col2) is null from table1",

http://git-wip-us.apache.org/repos/asf/tajo/blob/8dad551e/tajo-core-tests/src/test/java/org/apache/tajo/engine/function/TestUserDefinedFunctions.java
----------------------------------------------------------------------
diff --git a/tajo-core-tests/src/test/java/org/apache/tajo/engine/function/TestUserDefinedFunctions.java b/tajo-core-tests/src/test/java/org/apache/tajo/engine/function/TestUserDefinedFunctions.java
index a179e74..f66c6bb 100644
--- a/tajo-core-tests/src/test/java/org/apache/tajo/engine/function/TestUserDefinedFunctions.java
+++ b/tajo-core-tests/src/test/java/org/apache/tajo/engine/function/TestUserDefinedFunctions.java
@@ -19,6 +19,7 @@
 package org.apache.tajo.engine.function;
 
 import org.apache.tajo.catalog.Schema;
+import org.apache.tajo.catalog.SchemaFactory;
 import org.apache.tajo.datum.NullDatum;
 import org.apache.tajo.engine.eval.ExprTestBase;
 import org.apache.tajo.exception.TajoException;
@@ -35,7 +36,7 @@ public class TestUserDefinedFunctions extends ExprTestBase {
 
   @Test
   public void testNullHandling2() throws TajoException {
-    Schema schema = new Schema();
+    Schema schema = SchemaFactory.newV1();
     schema.addColumn("col1", BOOLEAN);
 
     testEval(schema, "table1", "", "select null_test() from table1", new String[]{NullDatum.get().toString()});