You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tajo.apache.org by jh...@apache.org on 2016/04/27 10:31:04 UTC

[3/4] tajo git commit: TAJO-2110: Fix incorrect DateTime and remove hard coded tests.

http://git-wip-us.apache.org/repos/asf/tajo/blob/aad78a4e/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 adbfd48..27ad24b 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
@@ -82,28 +82,28 @@ public class TestEvalCodeGenerator extends ExprTestBase {
         .add("nullable", TajoDataTypes.Type.NULL_TYPE)
         .build();
 
-    testEval(schema, "table1", ",1,2,3,4.5,6.5,F6,abc,abc,t", "select col0 is null from table1;", new String [] {"t"});
-    testEval(schema, "table1", "0,,2,3,4.5,6.5,F6,abc,abc,t,", "select col1 is null from table1;", new String [] {"t"});
-    testEval(schema, "table1", "0,1,,3,4.5,6.5,F6,abc,abc,t,", "select col2 is null from table1;", new String [] {"t"});
-    testEval(schema, "table1", "0,1,2,,4.5,6.5,F6,abc,abc,t,", "select col3 is null from table1;", new String [] {"t"});
-    testEval(schema, "table1", "0,1,2,3,,6.5,F6,abc,abc,t,", "select col4 is null from table1;", new String [] {"t"});
-    testEval(schema, "table1", "0,1,2,3,4.5,,F6,abc,abc,t,", "select col5 is null from table1;", new String [] {"t"});
-    testEval(schema, "table1", "0,1,2,3,4.5,6.5,,abc,abc,t,", "select col6 is null from table1;", new String [] {"t"});
-    testEval(schema, "table1", "0,1,2,3,4.5,6.5,F6,,abc,t,", "select col7 is null from table1;", new String[]{"t"});
-    testEval(schema, "table1", "0,1,2,3,4.5,6.5,F6,abc,,t,", "select col8 is null from table1;", new String [] {"t"});
-    testEval(schema, "table1", "0,1,2,3,4.5,6.5,F6,abc,abc,,", "select col9 is null from table1;", new String [] {"t"});
+    testEval(schema, "table1", "\\NULL,1,2,3,4.5,6.5,F6,abc,abc,t", "select col0 is null from table1;", new String [] {"t"});
+    testEval(schema, "table1", "0,\\NULL,2,3,4.5,6.5,F6,abc,abc,t,", "select col1 is null from table1;", new String [] {"t"});
+    testEval(schema, "table1", "0,1,\\NULL,3,4.5,6.5,F6,abc,abc,t,", "select col2 is null from table1;", new String [] {"t"});
+    testEval(schema, "table1", "0,1,2,\\NULL,4.5,6.5,F6,abc,abc,t,", "select col3 is null from table1;", new String [] {"t"});
+    testEval(schema, "table1", "0,1,2,3,\\NULL,6.5,F6,abc,abc,t,", "select col4 is null from table1;", new String [] {"t"});
+    testEval(schema, "table1", "0,1,2,3,4.5,\\NULL,F6,abc,abc,t,", "select col5 is null from table1;", new String [] {"t"});
+    testEval(schema, "table1", "0,1,2,3,4.5,6.5,\\NULL,abc,abc,t,", "select col6 is null from table1;", new String [] {"t"});
+    testEval(schema, "table1", "0,1,2,3,4.5,6.5,F6,\\NULL,abc,t,", "select col7 is null from table1;", new String[]{"t"});
+    testEval(schema, "table1", "0,1,2,3,4.5,6.5,F6,abc,\\NULL,t,", "select col8 is null from table1;", new String [] {"t"});
+    testEval(schema, "table1", "0,1,2,3,4.5,6.5,F6,abc,abc,\\NULL,", "select col9 is null from table1;", new String [] {"t"});
     testEval(schema, "table1", "0,1,2,3,4.5,6.5,F6,abc,abc,t,", "select nullable is null from table1;", new String [] {"t"});
 
-    testEval(schema, "table1", ",1,2,3,4.5,6.5,F6,abc,abc,t", "select col0 is not null from table1;", new String [] {"f"});
-    testEval(schema, "table1", "0,,2,3,4.5,6.5,F6,abc,abc,t,", "select col1 is not null from table1;", new String [] {"f"});
-    testEval(schema, "table1", "0,1,,3,4.5,6.5,F6,abc,abc,t,", "select col2 is not null from table1;", new String [] {"f"});
-    testEval(schema, "table1", "0,1,2,,4.5,6.5,F6,abc,abc,t,", "select col3 is not null from table1;", new String [] {"f"});
-    testEval(schema, "table1", "0,1,2,3,,6.5,F6,abc,abc,t,", "select col4 is not null from table1;", new String [] {"f"});
-    testEval(schema, "table1", "0,1,2,3,4.5,,F6,abc,abc,t,", "select col5 is not null from table1;", new String [] {"f"});
-    testEval(schema, "table1", "0,1,2,3,4.5,6.5,,abc,abc,t,", "select col6 is not null from table1;", new String [] {"f"});
-    testEval(schema, "table1", "0,1,2,3,4.5,6.5,F6,,abc,t,", "select col7 is not null from table1;", new String [] {"f"});
-    testEval(schema, "table1", "0,1,2,3,4.5,6.5,F6,abc,,t,", "select col8 is not null from table1;", new String [] {"f"});
-    testEval(schema, "table1", "0,1,2,3,4.5,6.5,F6,abc,abc,,", "select col9 is not null from table1;", new String [] {"f"});
+    testEval(schema, "table1", "\\NULL,1,2,3,4.5,6.5,F6,abc,abc,t", "select col0 is not null from table1;", new String [] {"f"});
+    testEval(schema, "table1", "0,\\NULL,2,3,4.5,6.5,F6,abc,abc,t,", "select col1 is not null from table1;", new String [] {"f"});
+    testEval(schema, "table1", "0,1,\\NULL,3,4.5,6.5,F6,abc,abc,t,", "select col2 is not null from table1;", new String [] {"f"});
+    testEval(schema, "table1", "0,1,2,\\NULL,4.5,6.5,F6,abc,abc,t,", "select col3 is not null from table1;", new String [] {"f"});
+    testEval(schema, "table1", "0,1,2,3,\\NULL,6.5,F6,abc,abc,t,", "select col4 is not null from table1;", new String [] {"f"});
+    testEval(schema, "table1", "0,1,2,3,4.5,\\NULL,F6,abc,abc,t,", "select col5 is not null from table1;", new String [] {"f"});
+    testEval(schema, "table1", "0,1,2,3,4.5,6.5,\\NULL,abc,abc,t,", "select col6 is not null from table1;", new String [] {"f"});
+    testEval(schema, "table1", "0,1,2,3,4.5,6.5,F6,\\NULL,abc,t,", "select col7 is not null from table1;", new String [] {"f"});
+    testEval(schema, "table1", "0,1,2,3,4.5,6.5,F6,abc,\\NULL,t,", "select col8 is not null from table1;", new String [] {"f"});
+    testEval(schema, "table1", "0,1,2,3,4.5,6.5,F6,abc,abc,\\NULL,", "select col9 is not null from table1;", new String [] {"f"});
     testEval(schema, "table1", "0,1,2,3,4.5,6.5,F6,abc,abc,t,", "select nullable is not null from table1;", new String [] {"f"});
   }
 

http://git-wip-us.apache.org/repos/asf/tajo/blob/aad78a4e/tajo-core-tests/src/test/java/org/apache/tajo/engine/eval/ExprTestBase.java
----------------------------------------------------------------------
diff --git a/tajo-core-tests/src/test/java/org/apache/tajo/engine/eval/ExprTestBase.java b/tajo-core-tests/src/test/java/org/apache/tajo/engine/eval/ExprTestBase.java
index 00fa590..38911c4 100644
--- a/tajo-core-tests/src/test/java/org/apache/tajo/engine/eval/ExprTestBase.java
+++ b/tajo-core-tests/src/test/java/org/apache/tajo/engine/eval/ExprTestBase.java
@@ -18,10 +18,9 @@
 
 package org.apache.tajo.engine.eval;
 
-import org.apache.tajo.LocalTajoTestingUtility;
-import org.apache.tajo.OverridableConf;
-import org.apache.tajo.SessionVars;
-import org.apache.tajo.TajoTestingCluster;
+import io.netty.buffer.Unpooled;
+import org.apache.commons.lang.StringEscapeUtils;
+import org.apache.tajo.*;
 import org.apache.tajo.algebra.Expr;
 import org.apache.tajo.catalog.*;
 import org.apache.tajo.cli.tsql.InvalidStatementException;
@@ -52,13 +51,10 @@ import org.apache.tajo.plan.serder.PlanProto;
 import org.apache.tajo.plan.verifier.LogicalPlanVerifier;
 import org.apache.tajo.plan.verifier.PreLogicalPlanVerifier;
 import org.apache.tajo.plan.verifier.VerificationState;
-import org.apache.tajo.storage.LazyTuple;
-import org.apache.tajo.storage.TablespaceManager;
-import org.apache.tajo.storage.Tuple;
-import org.apache.tajo.storage.VTuple;
-import org.apache.tajo.util.BytesUtils;
+import org.apache.tajo.storage.*;
+import org.apache.tajo.storage.text.CSVLineSerDe;
+import org.apache.tajo.storage.text.TextLineDeserializer;
 import org.apache.tajo.util.CommonTestingUtil;
-import org.apache.tajo.util.KeyValueSet;
 import org.apache.tajo.util.datetime.DateTimeUtil;
 import org.junit.AfterClass;
 import org.junit.BeforeClass;
@@ -85,7 +81,7 @@ public class ExprTestBase {
   private static LogicalPlanVerifier annotatedPlanVerifier;
 
   public static String getUserTimeZoneDisplay(TimeZone tz) {
-    return DateTimeUtil.getTimeZoneDisplayTime(tz);
+    return DateTimeUtil.getDisplayTimeZoneOffset(tz, false);
   }
 
   public ExprTestBase() {
@@ -217,53 +213,47 @@ public class ExprTestBase {
     if (context == null) {
       queryContext = LocalTajoTestingUtility.createDummyContext(conf);
     } else {
-      queryContext = LocalTajoTestingUtility.createDummyContext(conf);
+      queryContext = LocalTajoTestingUtility.createDummyContext(context.getConf());
       queryContext.putAll(context);
     }
 
-    String timezoneId = queryContext.get(SessionVars.TIMEZONE);
-    TimeZone timeZone = TimeZone.getTimeZone(timezoneId);
-
-    LazyTuple lazyTuple;
     VTuple vtuple  = null;
     String qualifiedTableName =
         CatalogUtil.buildFQName(DEFAULT_DATABASE_NAME,
             tableName != null ? CatalogUtil.normalizeIdentifier(tableName) : null);
     Schema inputSchema = null;
+
+
+    TableMeta meta = CatalogUtil.newTableMeta(BuiltinStorages.TEXT, queryContext.getConf());
+    meta.putProperty(StorageConstants.TEXT_DELIMITER, StringEscapeUtils.escapeJava(delimiter+""));
+    meta.putProperty(StorageConstants.TEXT_NULL, StringEscapeUtils.escapeJava("\\NULL"));
+
+    String timezoneId = queryContext.get(SessionVars.TIMEZONE);
+    TimeZone timeZone = TimeZone.getTimeZone(timezoneId);
+
     if (schema != null) {
       inputSchema = SchemaUtil.clone(schema);
       inputSchema.setQualifier(qualifiedTableName);
 
-      int targetIdx [] = new int[inputSchema.size()];
-      for (int i = 0; i < targetIdx.length; i++) {
-        targetIdx[i] = i;
+      try {
+        cat.createTable(CatalogUtil.newTableDesc(
+            qualifiedTableName, inputSchema, meta, CommonTestingUtil.getTestDir()));
+      } catch (IOException e) {
+        throw new TajoInternalError(e);
       }
 
-      byte[][] tokens = BytesUtils.splitPreserveAllTokens(
-          csvTuple.getBytes(), delimiter, targetIdx, inputSchema.size());
-      lazyTuple = new LazyTuple(inputSchema, tokens,0);
+      CSVLineSerDe serDe = new CSVLineSerDe();
+      TextLineDeserializer deserializer = serDe.createDeserializer(inputSchema, meta, inputSchema.toArray());
+      deserializer.init();
+
       vtuple = new VTuple(inputSchema.size());
-      for (int i = 0; i < inputSchema.size(); i++) {
-
-        // If null value occurs, null datum is manually inserted to an input tuple.
-        boolean nullDatum;
-        Datum datum = lazyTuple.get(i);
-        nullDatum = (datum instanceof TextDatum || datum instanceof CharDatum);
-        nullDatum = nullDatum &&
-            datum.asChars().equals("") || datum.asChars().equals(queryContext.get(SessionVars.NULL_CHAR));
-        nullDatum |= datum.isNull();
-
-        if (nullDatum) {
-          vtuple.put(i, NullDatum.get());
-        } else {
-          vtuple.put(i, lazyTuple.get(i));
-        }
-      }
+
       try {
-        cat.createTable(new TableDesc(qualifiedTableName, inputSchema,"TEXT",
-            new KeyValueSet(), CommonTestingUtil.getTestDir().toUri()));
-      } catch (IOException e) {
+        deserializer.deserialize(Unpooled.wrappedBuffer(csvTuple.getBytes()), vtuple);
+      } catch (Exception e) {
         throw new TajoInternalError(e);
+      } finally {
+        deserializer.release();
       }
     }
 
@@ -271,6 +261,7 @@ public class ExprTestBase {
 
     TajoClassLoader classLoader = new TajoClassLoader();
     EvalContext evalContext = new EvalContext();
+    evalContext.setTimeZone(timeZone);
 
     try {
       if (needPythonFileCopy()) {
@@ -306,8 +297,6 @@ public class ExprTestBase {
         String outTupleAsChars;
         if (outTuple.type(i) == Type.TIMESTAMP) {
           outTupleAsChars = TimestampDatum.asChars(outTuple.getTimeDate(i), timeZone, false);
-        } else if (outTuple.type(i) == Type.TIME) {
-          outTupleAsChars = TimeDatum.asChars(outTuple.getTimeDate(i), timeZone, false);
         } else {
           outTupleAsChars = outTuple.asDatum(i).toString();
         }

http://git-wip-us.apache.org/repos/asf/tajo/blob/aad78a4e/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 2846f22..a0cb924 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
@@ -19,6 +19,7 @@
 package org.apache.tajo.engine.eval;
 
 import com.google.common.collect.Sets;
+import org.apache.tajo.BuiltinStorages;
 import org.apache.tajo.LocalTajoTestingUtility;
 import org.apache.tajo.TajoConstants;
 import org.apache.tajo.TajoTestingCluster;
@@ -103,7 +104,7 @@ public class TestEvalTreeUtil {
         .add("age", TajoDataTypes.Type.INT4)
         .build();
 
-    TableMeta meta = CatalogUtil.newTableMeta("TEXT");
+    TableMeta meta = CatalogUtil.newTableMeta(BuiltinStorages.TEXT, util.getConfiguration());
     TableDesc desc = new TableDesc(
         CatalogUtil.buildFQName(TajoConstants.DEFAULT_DATABASE_NAME, "people"), schema, meta,
         CommonTestingUtil.getTestDir().toUri());

http://git-wip-us.apache.org/repos/asf/tajo/blob/aad78a4e/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 cc9da7f..32403b3 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
@@ -295,7 +295,7 @@ public class TestPredicates extends ExprTestBase {
         .build();
 
     testEval(schema2, "table1", "a,b,c", "select col1 in ('a'), col2 in ('a', 'c') from table1", new String[]{"t","f"});
-    testEval(schema2, "table1", "a,,c", "select col1 in ('a','b','c'), (col2 in ('a', 'c')) is null from table1",
+    testEval(schema2, "table1", "a,\\NULL,c", "select col1 in ('a','b','c'), (col2 in ('a', 'c')) is null from table1",
         new String[]{"t","t"});
 
     testEval(schema2,
@@ -307,7 +307,7 @@ public class TestPredicates extends ExprTestBase {
     // null handling test
     testEval(schema2,
         "table1",
-        "2014-03-21,,2015-04-01",
+        "2014-03-21,\\NULL,2015-04-01",
         "select (substr(col2,1,4)::int4 in (2014,2015,2016)) is null from table1",
         new String[]{"t"});
   }
@@ -355,10 +355,10 @@ public class TestPredicates extends ExprTestBase {
         .add("col1", TEXT)
         .add("col2", TEXT)
         .build();
-    testEval(schema2, "table1", "_123,", "select ltrim(col1, '_') is null, upper(col2) is null as a from table1",
+    testEval(schema2, "table1", "_123,\\NULL", "select ltrim(col1, '_') is null, upper(col2) is null as a from table1",
         new String[]{"f", "t"});
 
-    testEval(schema2, "table1", "_123,",
+    testEval(schema2, "table1", "_123,\\NULL",
         "select ltrim(col1, '_') is not null, upper(col2) is not null as a from table1", new String[]{"t", "f"});
   }
 

http://git-wip-us.apache.org/repos/asf/tajo/blob/aad78a4e/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 293b02a..f2fb792 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
@@ -26,14 +26,15 @@ import org.apache.tajo.common.TajoDataTypes;
 import org.apache.tajo.datum.DatumFactory;
 import org.apache.tajo.datum.TimestampDatum;
 import org.apache.tajo.engine.query.QueryContext;
+import org.apache.tajo.exception.InvalidOperationException;
 import org.apache.tajo.exception.TajoException;
 import org.apache.tajo.exception.UndefinedFunctionException;
-import org.apache.tajo.util.datetime.DateTimeUtil;
 import org.junit.Test;
 
 import java.util.TimeZone;
 
 import static org.apache.tajo.common.TajoDataTypes.Type.*;
+import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.fail;
 
 public class TestSQLExpression extends ExprTestBase {
@@ -817,8 +818,6 @@ public class TestSQLExpression extends ExprTestBase {
   @Test
   public void testCastFromTable() throws TajoException {
     QueryContext queryContext = new QueryContext(getConf());
-    queryContext.put(SessionVars.TIMEZONE, "GMT-6");
-    TimeZone tz = TimeZone.getTimeZone("GMT-6");
 
     Schema schema = SchemaBuilder.builder()
         .add("col1", TEXT)
@@ -833,16 +832,12 @@ public class TestSQLExpression extends ExprTestBase {
     testEval(queryContext, schema, "table1", "123,234", "select col1::float, col2::float from table1",
         new String[]{"123.0", "234.0"});
 
-    TimestampDatum timestamp = DatumFactory.createTimestamp("1980-04-01 01:50:01" +
-        DateTimeUtil.getTimeZoneDisplayTime(tz));
-
     testEval(queryContext, schema, "table1", "1980-04-01 01:50:01,234",
         "select col1::timestamp as t1, col2::float from table1 where t1 = '1980-04-01 01:50:01'::timestamp",
-        new String[]{TimestampDatum.asChars(timestamp.asTimeMeta(), tz, false), "234.0"}
+        new String[]{"1980-04-01 01:50:01", "234.0"}
     );
 
-    testSimpleEval("select '1980-04-01 01:50:01'::timestamp;", new String[]{
-        TimestampDatum.asChars(timestamp.asTimeMeta(), tz, false)});
+    testSimpleEval("select '1980-04-01 01:50:01'::timestamp;", new String[]{"1980-04-01 01:50:01"});
     testSimpleEval("select '1980-04-01 01:50:01'::timestamp::text", new String[]{"1980-04-01 01:50:01"});
 
     testSimpleEval("select (cast ('99999'::int8 as text))::int4 + 1", new String[]{"100000"});
@@ -950,4 +945,81 @@ public class TestSQLExpression extends ExprTestBase {
     testSimpleEval("select (false OR 1 > null) is null", new String[] {"t"}); // false - unknown -> unknown
     testSimpleEval("select (false OR false)", new String[] {"f"}); // false - false -> false
   }
+
+  @Test
+  public void testInvalidOperation() throws TajoException {
+    testEvalException("select '1980-09-04'::date + '1980-09-04 00:10:10'::timestamp", InvalidOperationException.class);
+    testEvalException("select '1980-09-04 00:10:10'::timestamp + '1980-09-04'::date", InvalidOperationException.class);
+
+    testEvalException("select time '00:00' + time '02:00'", InvalidOperationException.class);
+    testEvalException("select time '00:00' - '1980-09-04'::date", InvalidOperationException.class);
+    testEvalException("select time '00:00' - '1980-09-04 00:10:10'::timestamp", InvalidOperationException.class);
+    testEvalException("select interval '1 day' - '1980-09-04 00:10:10'::timestamp", InvalidOperationException.class);
+
+    //TODO this operation should be allowed after timestamptz added
+    testEvalException("select date '1980-09-04' < timestamp '1980-09-04 00:00:01'", InvalidOperationException.class);
+    testEvalException("select date '1980-09-04' > timestamp '1980-09-04 00:00:01'", InvalidOperationException.class);
+    testEvalException("select date '1980-09-04' = timestamp '1980-09-04 00:00:01'", InvalidOperationException.class);
+    testEvalException("select '1980-09-04 00:10:10'::timestamp - '1980-09-04'::date", InvalidOperationException.class);
+    testEvalException("select '1980-09-04'::date - '1980-09-04 00:10:10'::timestamp", InvalidOperationException.class);
+  }
+
+  @Test
+  public void testArithmeticOperandForDateTime() throws TajoException {
+    Schema schema = SchemaBuilder.builder()
+        .add("col0", TIME)
+        .add("col1", DATE)
+        .add("col2", TIMESTAMP)
+        .build();
+
+    testEval(schema, "table1", "01:00:00,1980-09-04,1980-09-04 01:00:00",
+        "select col0 + col1 from table1;", new String[]{"1980-09-04 01:00:00"});
+    testEval(schema, "table1", "01:00:00,1980-09-04,1980-09-04 01:00:00",
+        "select col0 + col2 from table1;", new String[]{"1980-09-04 02:00:00"});
+    testEval(schema, "table1", "01:00:00,1980-09-04,1980-09-04 01:00:00",
+        "select col0 + interval '1 hour' from table1;", new String[]{"02:00:00"});
+    testEval(schema, "table1", "01:00:00,1980-09-04,1980-09-04 01:00:00",
+        "select interval '1 hour' + col0 from table1;", new String[]{"02:00:00"});
+
+    testEval(schema, "table1", "01:00:00,1980-09-04,1980-09-04 01:00:00",
+        "select col1 + interval '1 day' from table1;", new String[]{"1980-09-05 00:00:00"});
+    testEval(schema, "table1", "01:00:00,1980-09-04,1980-09-04 01:00:00",
+        "select interval '1 day' + col1 from table1;", new String[]{"1980-09-05 00:00:00"});
+    testEval(schema, "table1", "01:00:00,1980-09-04,1980-09-04 01:00:00",
+        "select col1 + col0 from table1;", new String[]{"1980-09-04 01:00:00"});
+
+    testEval(schema, "table1", "01:00:00,1980-09-04,1980-09-04 01:00:00",
+        "select col2 + (interval '1 day' + interval '1 hour') from table1;", new String[]{"1980-09-05 02:00:00"});
+    testEval(schema, "table1", "01:00:00,1980-09-04,1980-09-04 01:00:00",
+        "select (interval '1 day' + interval '1 hour') + col2 from table1;", new String[]{"1980-09-05 02:00:00"});
+    testEval(schema, "table1", "01:00:00,1980-09-04,1980-09-04 01:00:00",
+        "select col2 + col0 from table1;", new String[]{"1980-09-04 02:00:00"});
+
+    testEval(schema, "table1", "01:00:00,1980-09-04,1980-09-04 01:00:00",
+        "select col0 - col0 from table1;", new String[]{"00:00:00"});
+    testEval(schema, "table1", "01:00:00,1980-09-04,1980-09-04 01:00:00",
+        "select col1 - col1 from table1;", new String[]{"0"});
+    testEval(schema, "table1", "01:00:00,1980-09-04,1980-09-04 01:00:00",
+        "select col2 - col2 from table1;", new String[]{"00:00:00"});
+
+    testEval(schema, "table1", "01:00:00,1980-09-04,1980-09-04 01:00:00",
+        "select col0 - interval '1 hour' from table1;", new String[]{"00:00:00"});
+    testEval(schema, "table1", "01:00:00,1980-09-04,1980-09-04 01:00:00",
+        "select col1 - interval '1 day' from table1;", new String[]{"1980-09-03 00:00:00"});
+    testEval(schema, "table1", "01:00:00,1980-09-04,1980-09-04 01:00:00",
+        "select col1 - col0 from table1;", new String[]{"1980-09-03 23:00:00"});
+    testEval(schema, "table1", "01:00:00,1980-09-04,1980-09-04 01:00:00",
+        "select col2 - (interval '1 day' + interval '1 hour') from table1;", new String[]{"1980-09-03 00:00:00"});
+    testEval(schema, "table1", "01:00:00,1980-09-04,1980-09-04 01:00:00",
+        "select col2 - col0 from table1;", new String[]{"1980-09-04 00:00:00"});
+  }
+
+  private <T extends Throwable> void testEvalException(String query, Class<T> clazz) {
+    try {
+      testSimpleEval(query, new String[]{""});
+      fail(query);
+    } catch (Throwable e) {
+      assertEquals(e.getMessage(), clazz, e.getClass());
+    }
+  }
 }

http://git-wip-us.apache.org/repos/asf/tajo/blob/aad78a4e/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 20045ad..8d3a94a 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
@@ -69,7 +69,7 @@ public class TestConditionalExpressions extends ExprTestBase {
     testEval(schema, "table1", "str1,str2",
         "SELECT CASE WHEN col1 IS NOT NULL THEN col2 ELSE NULL END FROM table1",
         new String[]{"str2"});
-    testEval(schema, "table1", ",str2",
+    testEval(schema, "table1", "\\NULL,str2",
         "SELECT CASE WHEN col1 IS NOT NULL THEN col2 ELSE NULL END FROM table1",
         new String[]{NullDatum.get().toString()});
   }

http://git-wip-us.apache.org/repos/asf/tajo/blob/aad78a4e/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 3682006..bf997f3 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
@@ -22,8 +22,6 @@ package org.apache.tajo.engine.function;
 import org.apache.tajo.SessionVars;
 import org.apache.tajo.catalog.Schema;
 import org.apache.tajo.catalog.SchemaBuilder;
-import org.apache.tajo.datum.DatumFactory;
-import org.apache.tajo.datum.TimestampDatum;
 import org.apache.tajo.engine.eval.ExprTestBase;
 import org.apache.tajo.engine.query.QueryContext;
 import org.apache.tajo.exception.TajoException;
@@ -31,8 +29,8 @@ import org.apache.tajo.util.datetime.DateTimeUtil;
 import org.apache.tajo.util.datetime.TimeMeta;
 import org.junit.Test;
 
-import java.text.SimpleDateFormat;
-import java.util.Date;
+import java.time.ZonedDateTime;
+import java.time.format.DateTimeFormatter;
 import java.util.TimeZone;
 
 import static org.apache.tajo.common.TajoDataTypes.Type.*;
@@ -40,12 +38,12 @@ import static org.apache.tajo.common.TajoDataTypes.Type.*;
 public class TestDateTimeFunctions extends ExprTestBase {
   @Test
   public void testToTimestamp() throws TajoException {
-    long expectedTimestamp = System.currentTimeMillis();
-    TimestampDatum expected = DatumFactory.createTimestampDatumWithUnixTime((int)(expectedTimestamp/ 1000));
 
-    // (expectedTimestamp / 1000) means the translation from millis seconds to unix timestamp
-    String q1 = String.format("select to_timestamp(%d);", (expectedTimestamp / 1000));
-    testSimpleEval(q1, new String[]{expected.toString()});
+    QueryContext context = new QueryContext(getConf());
+    context.put(SessionVars.TIMEZONE, "GMT+9");
+
+    String q1 = String.format("select to_timestamp(%d);", 1389071574);
+    testSimpleEval(context, q1, new String[]{"2014-01-07 14:12:54"});
 
     testSimpleEval("select to_timestamp('1997-12-30 11:40:50.345', 'YYYY-MM-DD HH24:MI:SS.MS');",
         new String[]{"1997-12-30 11:40:50.345"});
@@ -236,9 +234,6 @@ public class TestDateTimeFunctions extends ExprTestBase {
 
   @Test
   public void testDatePart() throws TajoException {
-    TimeZone GMT = TimeZone.getTimeZone("GMT");
-    TimeZone PST = TimeZone.getTimeZone("PST");
-
     Schema schema2 = SchemaBuilder.builder()
         .add("col1", TIMESTAMP).build();
 
@@ -247,11 +242,11 @@ 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", "17.0"});
     testEval(schema2, "table1",
-        "1970-01-17 22:09:37" + getUserTimeZoneDisplay(GMT),
+        "1970-01-17 22:09:37-00",
         "select date_part('year', col1), date_part('month', col1), date_part('day', col1) from table1;",
         new String[]{"1970.0", "1.0", "17.0"});
     testEval(schema2, "table1",
-        "1970-01-17 22:09:37" + getUserTimeZoneDisplay(PST),
+        "1970-01-17 22:09:37-04",
         "select date_part('year', col1), date_part('month', col1), date_part('day', col1) from table1;",
         new String[]{"1970.0", "1.0", "18.0"});
 
@@ -261,12 +256,12 @@ public class TestDateTimeFunctions extends ExprTestBase {
     testEval(schema3, "table1", "10:09:37.5",
         "select date_part('hour', col1), date_part('minute', col1), date_part('second', col1) from table1;",
         new String[]{"10.0", "9.0", "37.5"});
-    testEval(schema3, "table1", "10:09:37.5" + getUserTimeZoneDisplay(GMT),
+    testEval(schema3, "table1", "10:09:37.5",
         "select date_part('hour', col1), date_part('minute', col1), date_part('second', col1) from table1;",
         new String[]{"10.0", "9.0", "37.5"});
-    testEval(schema3, "table1", "10:09:37.5" + getUserTimeZoneDisplay(PST),
+    testEval(schema3, "table1", "10:09:37.5",
         "select date_part('hour', col1), date_part('minute', col1), date_part('second', col1) from table1;",
-        new String[]{"18.0", "9.0", "37.5"});
+        new String[]{"10.0", "9.0", "37.5"});
 
     Schema schema4 = SchemaBuilder.builder()
         .add("col1", DATE)
@@ -431,59 +426,43 @@ public class TestDateTimeFunctions extends ExprTestBase {
 
   @Test
   public void testDateTimeNow() throws TajoException {
-    TimeZone originalTimezone = TimeZone.getDefault();
-    TimeZone.setDefault(TimeZone.getTimeZone("GMT-6"));
-
     QueryContext context = new QueryContext(getConf());
-    context.put(SessionVars.TIMEZONE, "GMT-6");
+    context.put(SessionVars.TIMEZONE, "America/Los_Angeles");
+
+    ZonedDateTime zonedDateTime = ZonedDateTime.now(TimeZone.getTimeZone(context.get(SessionVars.TIMEZONE)).toZoneId());
 
-    try {
-      Date expectedDate = new Date(System.currentTimeMillis());
-
-      testSimpleEval(context, "select to_char(now(), 'yyyy-MM-dd');",
-          new String[]{dateFormat(expectedDate, "yyyy-MM-dd")});
-      testSimpleEval(context, "select cast(extract(year from now()) as INT4);",
-          new String[]{dateFormat(expectedDate, "yyyy")});
-      testSimpleEval(context, "select current_date();",
-          new String[]{dateFormat(expectedDate, "yyyy-MM-dd")});
-      testSimpleEval(context, "select cast(extract(hour from current_time()) as INT4);",
-          new String[]{String.valueOf(Integer.parseInt(dateFormat(expectedDate, "HH")))});
-
-      expectedDate.setDate(expectedDate.getDate() + 1);
-
-      testSimpleEval(context, "select current_date() + 1;",
-          new String[]{dateFormat(expectedDate, "yyyy-MM-dd")});
-    } finally {
-      TimeZone.setDefault(originalTimezone);
-    }
+    testSimpleEval(context, "select to_char(now(), 'yyyy-MM-dd');",
+        new String[]{dateFormat(zonedDateTime, "yyyy-MM-dd")});
+    testSimpleEval(context, "select cast(extract(year from now()) as INT4);",
+        new String[]{dateFormat(zonedDateTime, "yyyy")});
+    testSimpleEval(context, "select current_date();",
+        new String[]{dateFormat(zonedDateTime, "yyyy-MM-dd")});
+    testSimpleEval(context, "select cast(extract(hour from current_time()) as INT4);",
+        new String[]{String.valueOf(Integer.parseInt(dateFormat(zonedDateTime, "HH")))});
+
+    zonedDateTime = zonedDateTime.plusDays(1);
+    testSimpleEval(context, "select current_date() + 1;", new String[]{dateFormat(zonedDateTime, "yyyy-MM-dd")});
   }
 
   @Test
   public void testTimeValueKeyword() throws TajoException {
-    TimeZone originTimeZone = TimeZone.getDefault();
-    TimeZone.setDefault(TimeZone.getTimeZone("GMT-6"));
 
     QueryContext context = new QueryContext(getConf());
     context.put(SessionVars.TIMEZONE, "GMT-6");
 
-    try {
-      Date expectedDate = new Date(System.currentTimeMillis());
-
-      testSimpleEval(context, "select to_char(current_timestamp, 'yyyy-MM-dd');",
-          new String[]{dateFormat(expectedDate, "yyyy-MM-dd")});
-      testSimpleEval(context, "select cast(extract(year from current_timestamp) as INT4);",
-          new String[]{dateFormat(expectedDate, "yyyy")});
-      testSimpleEval(context, "select current_date;",
-          new String[]{dateFormat(expectedDate, "yyyy-MM-dd")});
-      testSimpleEval(context, "select cast(extract(hour from current_time) as INT4);",
-          new String[]{String.valueOf(Integer.parseInt(dateFormat(expectedDate, "HH")))});
-    } finally {
-      TimeZone.setDefault(originTimeZone);
-    }
+    ZonedDateTime zonedDateTime = ZonedDateTime.now(TimeZone.getTimeZone(context.get(SessionVars.TIMEZONE)).toZoneId());
+
+    testSimpleEval(context, "select to_char(current_timestamp, 'yyyy-MM-dd');",
+        new String[]{dateFormat(zonedDateTime, "yyyy-MM-dd")});
+    testSimpleEval(context, "select cast(extract(year from current_timestamp) as INT4);",
+        new String[]{dateFormat(zonedDateTime, "yyyy")});
+    testSimpleEval(context, "select current_date;",
+        new String[]{dateFormat(zonedDateTime, "yyyy-MM-dd")});
+    testSimpleEval(context, "select cast(extract(hour from current_time) as INT4);",
+        new String[]{String.valueOf(Integer.parseInt(dateFormat(zonedDateTime, "HH")))});
   }
 
-  private String dateFormat(Date date, String format) {
-    SimpleDateFormat df = new SimpleDateFormat(format);
-    return df.format(date);
+  private String dateFormat(ZonedDateTime dateTime, String format) {
+    return dateTime.format(DateTimeFormatter.ofPattern(format));
   }
 }

http://git-wip-us.apache.org/repos/asf/tajo/blob/aad78a4e/tajo-core-tests/src/test/java/org/apache/tajo/engine/function/TestJsonFunctions.java
----------------------------------------------------------------------
diff --git a/tajo-core-tests/src/test/java/org/apache/tajo/engine/function/TestJsonFunctions.java b/tajo-core-tests/src/test/java/org/apache/tajo/engine/function/TestJsonFunctions.java
index fc5e8e1..a7d8674 100644
--- a/tajo-core-tests/src/test/java/org/apache/tajo/engine/function/TestJsonFunctions.java
+++ b/tajo-core-tests/src/test/java/org/apache/tajo/engine/function/TestJsonFunctions.java
@@ -51,7 +51,7 @@ public class TestJsonFunctions extends ExprTestBase {
   public void testJsonArrayContains() throws TajoException {
     testSimpleEval("select json_array_contains('" + JSON_COMPLEX_ARRAY + "', 100)", new String[]{"t"});
     testSimpleEval("select json_array_contains('" + JSON_COMPLEX_ARRAY + "', 'test')", new String[]{"t"});
-    testSimpleEval("select json_array_contains('" + JSON_COMPLEX_ARRAY + "', '2015-08-13 11:58:59'::timestamp)",
+    testSimpleEval("select json_array_contains('" + JSON_COMPLEX_ARRAY + "', '2015-08-13 11:58:59'::timestamp::text)",
         new String[]{"t"});
     testSimpleEval("select json_array_contains('" + JSON_COMPLEX_ARRAY + "', '2015-08-13 11:58:59'::date)",
         new String[]{"f"});

http://git-wip-us.apache.org/repos/asf/tajo/blob/aad78a4e/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 54907fc..f55919e 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
@@ -36,7 +36,7 @@ public class TestPatternMatchingPredicates extends ExprTestBase {
         .build();
 
     // test for null values
-    testEval(schema, "table1", ",", "select col1 like 'a%' from table1", new String[]{NullDatum.get().toString()});
+    testEval(schema, "table1", "\\NULL,", "select col1 like 'a%' from table1", new String[]{NullDatum.get().toString()});
     testSimpleEval("select null like 'a%'", new String[]{NullDatum.get().toString()});
 
     testEval(schema, "table1", "abc", "select col1 like '%c' from table1", new String[]{"t"});

http://git-wip-us.apache.org/repos/asf/tajo/blob/aad78a4e/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 203af8f..a38eb71 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
@@ -147,9 +147,9 @@ public class TestStringOperatorsAndFunctions extends ExprTestBase {
         new String[]{"ab--ab"});
 
     // null test from a table
-    testEval(schema, "table1", ",(^--|--$),ab", "select regexp_replace(col1, col2, col3) as str from table1",
+    testEval(schema, "table1", "\\NULL,(^--|--$),ab", "select regexp_replace(col1, col2, col3) as str from table1",
         new String[]{NullDatum.get().toString()});
-    testEval(schema, "table1", "------,(^--|--$),", "select regexp_replace(col1, col2, col3) as str from table1",
+    testEval(schema, "table1", "------,(^--|--$),\\NULL", "select regexp_replace(col1, col2, col3) as str from table1",
         new String[]{NullDatum.get().toString()});
   }
 
@@ -177,7 +177,7 @@ public class TestStringOperatorsAndFunctions extends ExprTestBase {
         .build();
 
     // for null tests
-    testEval(schema, "table1", ",1,ghi", "select left(col1,1) is null from table1", new String[]{"t"});
+    testEval(schema, "table1", "\\NULL,1,ghi", "select left(col1,1) is null from table1", new String[]{"t"});
     testEval(schema, "table1", "abc,,ghi", "select left(col1,col2) is null from table1", new String[]{"t"});
 
     testEval(schema, "table1", "abc,1,ghi", "select left(col1,1) || left(col3,3) from table1", new String[]{"aghi"});
@@ -207,8 +207,8 @@ public class TestStringOperatorsAndFunctions extends ExprTestBase {
         .build();
 
     // for null tests
-    testEval(schema, "table1", ",1,ghi", "select right(col1,1) is null from table1", new String[]{"t"});
-    testEval(schema, "table1", "abc,,ghi", "select right(col1,col2) is null from table1", new String[]{"t"});
+    testEval(schema, "table1", "\\NULL,1,ghi", "select right(col1,1) is null from table1", new String[]{"t"});
+    testEval(schema, "table1", "abc,\\NULL,ghi", "select right(col1,col2) is null from table1", new String[]{"t"});
 
     testEval(schema, "table1", "abc,1,ghi", "select right(col1,1) || right(col3,3) from table1", new String[]{"cghi"});
   }
@@ -387,7 +387,7 @@ public class TestStringOperatorsAndFunctions extends ExprTestBase {
     testEval(schema, "t1", ",.,1", "select split_part(col1, col2, col3::int) is null from t1", new String[]{"t"});
     testEval(schema, "t1", "1386577650.123,,1", "select split_part(col1, col2, col3::int) from t1",
         new String[]{"1386577650.123"});
-    testEval(schema, "t1", "1386577650.123,.,", "select split_part(col1, col2, col3::int) is null from t1",
+    testEval(schema, "t1", "1386577650.123,.,\\NULL", "select split_part(col1, col2, col3::int) is null from t1",
         new String[]{"t"});
   }
 
@@ -463,9 +463,9 @@ public class TestStringOperatorsAndFunctions extends ExprTestBase {
     testEval(schema, "table1", ",abcdef,3.14", "select locate(col2, 'cd', 4) from table1", new String[]{"0"});
     testEval(schema, "table1", ",abcdef,3.14", "select locate(col2, 'xy') from table1", new String[]{"0"});
     // null string
-    testEval(schema, "table1", ",abcdef,3.14", "select locate(col1, 'cd') is null from table1", new String[]{"t"});
+    testEval(schema, "table1", "\\NULL,abcdef,3.14", "select locate(col1, 'cd') is null from table1", new String[]{"t"});
     // nul substring
-    testEval(schema, "table1", ",abcdef,3.14", "select locate('cd', col1) is null from table1", new String[]{"t"});
+    testEval(schema, "table1", "\\NULL,abcdef,3.14", "select locate('cd', col1) is null from table1", new String[]{"t"});
   }
 
   @Test
@@ -617,9 +617,9 @@ public class TestStringOperatorsAndFunctions extends ExprTestBase {
         .add("col1", TEXT)
         .add("col2", TEXT)
         .build();
-    testEval(schema, "table1", "|crt,c,cr,c,def", "select find_in_set(col1, col2) is null from table1",
+    testEval(schema, "table1", "\\NULL|crt,c,cr,c,def", "select find_in_set(col1, col2) is null from table1",
         new String[]{"t"}, '|', true);
-    testEval(schema, "table1", "cr|", "select find_in_set(col1, col2) is null from table1",
+    testEval(schema, "table1", "cr|\\NULL", "select find_in_set(col1, col2) is null from table1",
         new String[]{"t"}, '|', true);
   }
 

http://git-wip-us.apache.org/repos/asf/tajo/blob/aad78a4e/tajo-core-tests/src/test/java/org/apache/tajo/engine/planner/TestEvalNodeToExprConverter.java
----------------------------------------------------------------------
diff --git a/tajo-core-tests/src/test/java/org/apache/tajo/engine/planner/TestEvalNodeToExprConverter.java b/tajo-core-tests/src/test/java/org/apache/tajo/engine/planner/TestEvalNodeToExprConverter.java
index 1cf4cf2..454ae6c 100644
--- a/tajo-core-tests/src/test/java/org/apache/tajo/engine/planner/TestEvalNodeToExprConverter.java
+++ b/tajo-core-tests/src/test/java/org/apache/tajo/engine/planner/TestEvalNodeToExprConverter.java
@@ -18,6 +18,7 @@
 
 package org.apache.tajo.engine.planner;
 
+import org.apache.tajo.BuiltinStorages;
 import org.apache.tajo.LocalTajoTestingUtility;
 import org.apache.tajo.QueryVars;
 import org.apache.tajo.TajoTestingCluster;
@@ -32,7 +33,6 @@ import org.apache.tajo.plan.LogicalOptimizer;
 import org.apache.tajo.plan.LogicalPlan;
 import org.apache.tajo.plan.LogicalPlanner;
 import org.apache.tajo.plan.expr.AlgebraicUtil;
-import org.apache.tajo.plan.expr.EvalNode;
 import org.apache.tajo.plan.logical.LogicalNode;
 import org.apache.tajo.plan.logical.NodeType;
 import org.apache.tajo.plan.logical.ScanNode;
@@ -79,7 +79,7 @@ public class TestEvalNodeToExprConverter {
     tpch.loadSchemas();
     tpch.loadOutSchema();
     for (String table : tpchTables) {
-      TableMeta m = CatalogUtil.newTableMeta("TEXT");
+      TableMeta m = CatalogUtil.newTableMeta(BuiltinStorages.TEXT, util.getConfiguration());
       TableDesc d = CatalogUtil.newTableDesc(
         CatalogUtil.buildFQName(DEFAULT_DATABASE_NAME, table), tpch.getSchema(table), m,
         CommonTestingUtil.getTestDir());

http://git-wip-us.apache.org/repos/asf/tajo/blob/aad78a4e/tajo-core-tests/src/test/java/org/apache/tajo/engine/planner/TestJoinOrderAlgorithm.java
----------------------------------------------------------------------
diff --git a/tajo-core-tests/src/test/java/org/apache/tajo/engine/planner/TestJoinOrderAlgorithm.java b/tajo-core-tests/src/test/java/org/apache/tajo/engine/planner/TestJoinOrderAlgorithm.java
index bd9c5f9..0805151 100644
--- a/tajo-core-tests/src/test/java/org/apache/tajo/engine/planner/TestJoinOrderAlgorithm.java
+++ b/tajo-core-tests/src/test/java/org/apache/tajo/engine/planner/TestJoinOrderAlgorithm.java
@@ -20,6 +20,7 @@ package org.apache.tajo.engine.planner;
 
 import org.apache.hadoop.fs.FileSystem;
 import org.apache.hadoop.fs.Path;
+import org.apache.tajo.BuiltinStorages;
 import org.apache.tajo.LocalTajoTestingUtility;
 import org.apache.tajo.TajoConstants;
 import org.apache.tajo.TajoTestingCluster;
@@ -88,7 +89,7 @@ public class TestJoinOrderAlgorithm {
         .add("phone", Type.INT4)
         .build();
 
-    TableMeta meta = CatalogUtil.newTableMeta("TEXT");
+    TableMeta meta = CatalogUtil.newTableMeta(BuiltinStorages.TEXT, util.getConfiguration());
     TableDesc people = new TableDesc(
         CatalogUtil.buildFQName(TajoConstants.DEFAULT_DATABASE_NAME, "employee"), schema, meta,
         CommonTestingUtil.getTestDir().toUri());
@@ -113,7 +114,7 @@ public class TestJoinOrderAlgorithm {
         .add("manager", Type.TEXT)
         .build();
     // Set store type as FAKEFILE to prevent auto update of physical information in LogicalPlanner.updatePhysicalInfo()
-    TableMeta largeTableMeta = CatalogUtil.newTableMeta("FAKEFILE");
+    TableMeta largeTableMeta = CatalogUtil.newTableMeta("FAKEFILE", util.getConfiguration());
     TableDesc largeDept;
     TableStats largeTableStats;
     FileSystem fs = FileSystem.getLocal(util.getConfiguration());

http://git-wip-us.apache.org/repos/asf/tajo/blob/aad78a4e/tajo-core-tests/src/test/java/org/apache/tajo/engine/planner/TestLogicalOptimizer.java
----------------------------------------------------------------------
diff --git a/tajo-core-tests/src/test/java/org/apache/tajo/engine/planner/TestLogicalOptimizer.java b/tajo-core-tests/src/test/java/org/apache/tajo/engine/planner/TestLogicalOptimizer.java
index e57921d..1ff7c87 100644
--- a/tajo-core-tests/src/test/java/org/apache/tajo/engine/planner/TestLogicalOptimizer.java
+++ b/tajo-core-tests/src/test/java/org/apache/tajo/engine/planner/TestLogicalOptimizer.java
@@ -18,6 +18,7 @@
 
 package org.apache.tajo.engine.planner;
 
+import org.apache.tajo.BuiltinStorages;
 import org.apache.tajo.LocalTajoTestingUtility;
 import org.apache.tajo.TajoConstants;
 import org.apache.tajo.TajoTestingCluster;
@@ -82,7 +83,7 @@ public class TestLogicalOptimizer {
         .add("phone", Type.INT4)
         .build();
 
-    TableMeta meta = CatalogUtil.newTableMeta("TEXT");
+    TableMeta meta = CatalogUtil.newTableMeta(BuiltinStorages.TEXT, util.getConfiguration());
     TableDesc people = new TableDesc(
         CatalogUtil.buildFQName(TajoConstants.DEFAULT_DATABASE_NAME, "employee"), schema, meta,
         CommonTestingUtil.getTestDir().toUri());

http://git-wip-us.apache.org/repos/asf/tajo/blob/aad78a4e/tajo-core-tests/src/test/java/org/apache/tajo/engine/planner/TestLogicalPlanner.java
----------------------------------------------------------------------
diff --git a/tajo-core-tests/src/test/java/org/apache/tajo/engine/planner/TestLogicalPlanner.java b/tajo-core-tests/src/test/java/org/apache/tajo/engine/planner/TestLogicalPlanner.java
index d01b0d5..c50a21d 100644
--- a/tajo-core-tests/src/test/java/org/apache/tajo/engine/planner/TestLogicalPlanner.java
+++ b/tajo-core-tests/src/test/java/org/apache/tajo/engine/planner/TestLogicalPlanner.java
@@ -21,10 +21,7 @@ package org.apache.tajo.engine.planner;
 import com.google.common.base.Preconditions;
 import com.google.common.collect.Lists;
 import com.google.common.collect.Sets;
-import org.apache.tajo.LocalTajoTestingUtility;
-import org.apache.tajo.QueryVars;
-import org.apache.tajo.TajoConstants;
-import org.apache.tajo.TajoTestingCluster;
+import org.apache.tajo.*;
 import org.apache.tajo.algebra.AlterTableOpType;
 import org.apache.tajo.algebra.Expr;
 import org.apache.tajo.algebra.JoinType;
@@ -102,7 +99,7 @@ public class TestLogicalPlanner {
         .add("score", Type.INT4)
         .build();
 
-    TableMeta meta = CatalogUtil.newTableMeta("TEXT");
+    TableMeta meta = CatalogUtil.newTableMeta(BuiltinStorages.TEXT, util.getConfiguration());
     TableDesc people = new TableDesc(
         CatalogUtil.buildFQName(TajoConstants.DEFAULT_DATABASE_NAME, "employee"), schema, meta,
         CommonTestingUtil.getTestDir().toUri());
@@ -131,7 +128,7 @@ public class TestLogicalPlanner {
     tpch.loadSchemas();
     tpch.loadOutSchema();
     for (String table : tpchTables) {
-      TableMeta m = CatalogUtil.newTableMeta("TEXT");
+      TableMeta m = CatalogUtil.newTableMeta(BuiltinStorages.TEXT, util.getConfiguration());
       TableDesc d = CatalogUtil.newTableDesc(
           CatalogUtil.buildFQName(DEFAULT_DATABASE_NAME, table), tpch.getSchema(table), m,
           CommonTestingUtil.getTestDir());
@@ -1335,7 +1332,8 @@ public class TestLogicalPlanner {
 
   @Test
   public void testSelectFromSelfDescTable() throws Exception {
-    TableDesc tableDesc = new TableDesc("default.self_desc_table1", null, CatalogUtil.newTableMeta("TEXT"),
+    TableDesc tableDesc = new TableDesc("default.self_desc_table1", null,
+        CatalogUtil.newTableMeta(BuiltinStorages.TEXT, util.getConfiguration()),
         CommonTestingUtil.getTestDir().toUri(), true);
     catalog.createTable(tableDesc);
     assertTrue(catalog.existsTable("default.self_desc_table1"));
@@ -1388,7 +1386,8 @@ public class TestLogicalPlanner {
 
   @Test
   public void testSelectWhereFromSelfDescTable() throws Exception {
-    TableDesc tableDesc = new TableDesc("default.self_desc_table1", null, CatalogUtil.newTableMeta("TEXT"),
+    TableDesc tableDesc = new TableDesc("default.self_desc_table1", null,
+        CatalogUtil.newTableMeta(BuiltinStorages.TEXT, util.getConfiguration()),
         CommonTestingUtil.getTestDir().toUri(), true);
     catalog.createTable(tableDesc);
     assertTrue(catalog.existsTable("default.self_desc_table1"));

http://git-wip-us.apache.org/repos/asf/tajo/blob/aad78a4e/tajo-core-tests/src/test/java/org/apache/tajo/engine/planner/TestPlannerUtil.java
----------------------------------------------------------------------
diff --git a/tajo-core-tests/src/test/java/org/apache/tajo/engine/planner/TestPlannerUtil.java b/tajo-core-tests/src/test/java/org/apache/tajo/engine/planner/TestPlannerUtil.java
index 92557f1..7fd249d 100644
--- a/tajo-core-tests/src/test/java/org/apache/tajo/engine/planner/TestPlannerUtil.java
+++ b/tajo-core-tests/src/test/java/org/apache/tajo/engine/planner/TestPlannerUtil.java
@@ -22,6 +22,7 @@ import org.apache.hadoop.fs.FileSystem;
 import org.apache.hadoop.fs.LocatedFileStatus;
 import org.apache.hadoop.fs.Path;
 import org.apache.hadoop.fs.RemoteIterator;
+import org.apache.tajo.BuiltinStorages;
 import org.apache.tajo.LocalTajoTestingUtility;
 import org.apache.tajo.TajoConstants;
 import org.apache.tajo.TajoTestingCluster;
@@ -85,7 +86,7 @@ public class TestPlannerUtil {
         .add("deptname", Type.TEXT)
         .add("score", CatalogUtil.newSimpleDataType(Type.INT4)).build();
 
-    TableMeta meta = CatalogUtil.newTableMeta("TEXT");
+    TableMeta meta = CatalogUtil.newTableMeta(BuiltinStorages.TEXT, util.getConfiguration());
     TableDesc people = new TableDesc(
         CatalogUtil.buildFQName(TajoConstants.DEFAULT_DATABASE_NAME, "employee"), schema, meta,
         CommonTestingUtil.getTestDir().toUri());

http://git-wip-us.apache.org/repos/asf/tajo/blob/aad78a4e/tajo-core-tests/src/test/java/org/apache/tajo/engine/planner/physical/TestExternalSortExec.java
----------------------------------------------------------------------
diff --git a/tajo-core-tests/src/test/java/org/apache/tajo/engine/planner/physical/TestExternalSortExec.java b/tajo-core-tests/src/test/java/org/apache/tajo/engine/planner/physical/TestExternalSortExec.java
index 5481d07..cb49552 100644
--- a/tajo-core-tests/src/test/java/org/apache/tajo/engine/planner/physical/TestExternalSortExec.java
+++ b/tajo-core-tests/src/test/java/org/apache/tajo/engine/planner/physical/TestExternalSortExec.java
@@ -19,10 +19,7 @@
 package org.apache.tajo.engine.planner.physical;
 
 import org.apache.hadoop.fs.Path;
-import org.apache.tajo.LocalTajoTestingUtility;
-import org.apache.tajo.SessionVars;
-import org.apache.tajo.TajoConstants;
-import org.apache.tajo.TajoTestingCluster;
+import org.apache.tajo.*;
 import org.apache.tajo.algebra.Expr;
 import org.apache.tajo.catalog.*;
 import org.apache.tajo.common.TajoDataTypes.Type;
@@ -121,7 +118,7 @@ public class TestExternalSortExec {
         new Column("col12", Type.INT8)
     }).build();
 
-    TableMeta employeeMeta = CatalogUtil.newTableMeta("TEXT");
+    TableMeta employeeMeta = CatalogUtil.newTableMeta(BuiltinStorages.TEXT, util.getConfiguration());
     Path employeePath = new Path(testDir, "employee.csv");
     Appender appender = ((FileTablespace) TablespaceManager.getLocalFs())
         .getAppender(employeeMeta, tableSchema, employeePath);

http://git-wip-us.apache.org/repos/asf/tajo/blob/aad78a4e/tajo-core-tests/src/test/java/org/apache/tajo/engine/planner/physical/TestFullOuterHashJoinExec.java
----------------------------------------------------------------------
diff --git a/tajo-core-tests/src/test/java/org/apache/tajo/engine/planner/physical/TestFullOuterHashJoinExec.java b/tajo-core-tests/src/test/java/org/apache/tajo/engine/planner/physical/TestFullOuterHashJoinExec.java
index 1d2e6b5..5c56aef 100644
--- a/tajo-core-tests/src/test/java/org/apache/tajo/engine/planner/physical/TestFullOuterHashJoinExec.java
+++ b/tajo-core-tests/src/test/java/org/apache/tajo/engine/planner/physical/TestFullOuterHashJoinExec.java
@@ -19,6 +19,7 @@
 package org.apache.tajo.engine.planner.physical;
 
 import org.apache.hadoop.fs.Path;
+import org.apache.tajo.BuiltinStorages;
 import org.apache.tajo.LocalTajoTestingUtility;
 import org.apache.tajo.TajoTestingCluster;
 import org.apache.tajo.algebra.Expr;
@@ -108,7 +109,7 @@ public class TestFullOuterHashJoinExec {
         .build();
 
 
-    TableMeta dep3Meta = CatalogUtil.newTableMeta("TEXT");
+    TableMeta dep3Meta = CatalogUtil.newTableMeta(BuiltinStorages.TEXT, util.getConfiguration());
     Path dep3Path = new Path(testDir, "dep3.csv");
     Appender appender1 = ((FileTablespace) TablespaceManager.getLocalFs()).getAppender(dep3Meta, dep3Schema, dep3Path);
     appender1.init();
@@ -138,7 +139,7 @@ public class TestFullOuterHashJoinExec {
         .build();
 
 
-    TableMeta job3Meta = CatalogUtil.newTableMeta("TEXT");
+    TableMeta job3Meta = CatalogUtil.newTableMeta(BuiltinStorages.TEXT, util.getConfiguration());
     Path job3Path = new Path(testDir, "job3.csv");
     Appender appender2 = ((FileTablespace) TablespaceManager.getLocalFs()).getAppender(job3Meta, job3Schema, job3Path);
     appender2.init();
@@ -178,7 +179,7 @@ public class TestFullOuterHashJoinExec {
         .build();
 
 
-    TableMeta emp3Meta = CatalogUtil.newTableMeta("TEXT");
+    TableMeta emp3Meta = CatalogUtil.newTableMeta(BuiltinStorages.TEXT, util.getConfiguration());
     Path emp3Path = new Path(testDir, "emp3.csv");
     Appender appender3 = ((FileTablespace) TablespaceManager.getLocalFs()).getAppender(emp3Meta, emp3Schema, emp3Path);
     appender3.init();
@@ -231,7 +232,7 @@ public class TestFullOuterHashJoinExec {
         .build();
 
 
-    TableMeta phone3Meta = CatalogUtil.newTableMeta("TEXT");
+    TableMeta phone3Meta = CatalogUtil.newTableMeta(BuiltinStorages.TEXT, util.getConfiguration());
     Path phone3Path = new Path(testDir, "phone3.csv");
     Appender appender5 = ((FileTablespace) TablespaceManager.getLocalFs())
         .getAppender(phone3Meta, phone3Schema, phone3Path);

http://git-wip-us.apache.org/repos/asf/tajo/blob/aad78a4e/tajo-core-tests/src/test/java/org/apache/tajo/engine/planner/physical/TestFullOuterMergeJoinExec.java
----------------------------------------------------------------------
diff --git a/tajo-core-tests/src/test/java/org/apache/tajo/engine/planner/physical/TestFullOuterMergeJoinExec.java b/tajo-core-tests/src/test/java/org/apache/tajo/engine/planner/physical/TestFullOuterMergeJoinExec.java
index 0fb7bbb..605ad6e 100644
--- a/tajo-core-tests/src/test/java/org/apache/tajo/engine/planner/physical/TestFullOuterMergeJoinExec.java
+++ b/tajo-core-tests/src/test/java/org/apache/tajo/engine/planner/physical/TestFullOuterMergeJoinExec.java
@@ -19,6 +19,7 @@
 package org.apache.tajo.engine.planner.physical;
 
 import org.apache.hadoop.fs.Path;
+import org.apache.tajo.BuiltinStorages;
 import org.apache.tajo.LocalTajoTestingUtility;
 import org.apache.tajo.TajoConstants;
 import org.apache.tajo.TajoTestingCluster;
@@ -112,7 +113,7 @@ public class TestFullOuterMergeJoinExec {
         .build();
 
 
-    TableMeta dep3Meta = CatalogUtil.newTableMeta("TEXT");
+    TableMeta dep3Meta = CatalogUtil.newTableMeta(BuiltinStorages.TEXT, util.getConfiguration());
     Path dep3Path = new Path(testDir, "dep3.csv");
     Appender appender1 = ((FileTablespace) TablespaceManager.getLocalFs()).getAppender(dep3Meta, dep3Schema, dep3Path);
     appender1.init();
@@ -151,7 +152,7 @@ public class TestFullOuterMergeJoinExec {
         .build();
 
 
-    TableMeta dep4Meta = CatalogUtil.newTableMeta("TEXT");
+    TableMeta dep4Meta = CatalogUtil.newTableMeta(BuiltinStorages.TEXT, util.getConfiguration());
     Path dep4Path = new Path(testDir, "dep4.csv");
     Appender appender4 = ((FileTablespace) TablespaceManager.getLocalFs()).getAppender(dep4Meta, dep4Schema, dep4Path);
     appender4.init();
@@ -183,7 +184,7 @@ public class TestFullOuterMergeJoinExec {
         .build();
 
 
-    TableMeta job3Meta = CatalogUtil.newTableMeta("TEXT");
+    TableMeta job3Meta = CatalogUtil.newTableMeta(BuiltinStorages.TEXT, util.getConfiguration());
     Path job3Path = new Path(testDir, "job3.csv");
     Appender appender2 = ((FileTablespace) TablespaceManager.getLocalFs()).getAppender(job3Meta, job3Schema, job3Path);
     appender2.init();
@@ -223,7 +224,7 @@ public class TestFullOuterMergeJoinExec {
         .build();
 
 
-    TableMeta emp3Meta = CatalogUtil.newTableMeta("TEXT");
+    TableMeta emp3Meta = CatalogUtil.newTableMeta(BuiltinStorages.TEXT, util.getConfiguration());
     Path emp3Path = new Path(testDir, "emp3.csv");
     Appender appender3 = ((FileTablespace) TablespaceManager.getLocalFs()).getAppender(emp3Meta, emp3Schema, emp3Path);
     appender3.init();
@@ -276,7 +277,7 @@ public class TestFullOuterMergeJoinExec {
         .build();
 
 
-    TableMeta phone3Meta = CatalogUtil.newTableMeta("TEXT");
+    TableMeta phone3Meta = CatalogUtil.newTableMeta(BuiltinStorages.TEXT, util.getConfiguration());
     Path phone3Path = new Path(testDir, "phone3.csv");
     Appender appender5 = ((FileTablespace) TablespaceManager.getLocalFs())
         .getAppender(phone3Meta, phone3Schema, phone3Path);

http://git-wip-us.apache.org/repos/asf/tajo/blob/aad78a4e/tajo-core-tests/src/test/java/org/apache/tajo/engine/planner/physical/TestHashAntiJoinExec.java
----------------------------------------------------------------------
diff --git a/tajo-core-tests/src/test/java/org/apache/tajo/engine/planner/physical/TestHashAntiJoinExec.java b/tajo-core-tests/src/test/java/org/apache/tajo/engine/planner/physical/TestHashAntiJoinExec.java
index cd04ea0..1398c4d 100644
--- a/tajo-core-tests/src/test/java/org/apache/tajo/engine/planner/physical/TestHashAntiJoinExec.java
+++ b/tajo-core-tests/src/test/java/org/apache/tajo/engine/planner/physical/TestHashAntiJoinExec.java
@@ -19,6 +19,7 @@
 package org.apache.tajo.engine.planner.physical;
 
 import org.apache.hadoop.fs.Path;
+import org.apache.tajo.BuiltinStorages;
 import org.apache.tajo.LocalTajoTestingUtility;
 import org.apache.tajo.TajoTestingCluster;
 import org.apache.tajo.algebra.Expr;
@@ -85,7 +86,7 @@ public class TestHashAntiJoinExec {
         .add("deptname", Type.TEXT)
         .build();
 
-    TableMeta employeeMeta = CatalogUtil.newTableMeta("TEXT");
+    TableMeta employeeMeta = CatalogUtil.newTableMeta(BuiltinStorages.TEXT, util.getConfiguration());
     Path employeePath = new Path(testDir, "employee.csv");
     Appender appender = ((FileTablespace) TablespaceManager.getLocalFs())
         .getAppender(employeeMeta, employeeSchema, employeePath);
@@ -112,7 +113,7 @@ public class TestHashAntiJoinExec {
         .add("name", Type.TEXT)
         .add("age", Type.INT4)
         .build();
-    TableMeta peopleMeta = CatalogUtil.newTableMeta("TEXT");
+    TableMeta peopleMeta = CatalogUtil.newTableMeta(BuiltinStorages.TEXT, util.getConfiguration());
     Path peoplePath = new Path(testDir, "people.csv");
     appender = ((FileTablespace) TablespaceManager.getLocalFs())
         .getAppender(peopleMeta, peopleSchema, peoplePath);

http://git-wip-us.apache.org/repos/asf/tajo/blob/aad78a4e/tajo-core-tests/src/test/java/org/apache/tajo/engine/planner/physical/TestHashJoinExec.java
----------------------------------------------------------------------
diff --git a/tajo-core-tests/src/test/java/org/apache/tajo/engine/planner/physical/TestHashJoinExec.java b/tajo-core-tests/src/test/java/org/apache/tajo/engine/planner/physical/TestHashJoinExec.java
index cdf9068..191c346 100644
--- a/tajo-core-tests/src/test/java/org/apache/tajo/engine/planner/physical/TestHashJoinExec.java
+++ b/tajo-core-tests/src/test/java/org/apache/tajo/engine/planner/physical/TestHashJoinExec.java
@@ -19,10 +19,7 @@
 package org.apache.tajo.engine.planner.physical;
 
 import org.apache.hadoop.fs.Path;
-import org.apache.tajo.LocalTajoTestingUtility;
-import org.apache.tajo.SessionVars;
-import org.apache.tajo.TajoConstants;
-import org.apache.tajo.TajoTestingCluster;
+import org.apache.tajo.*;
 import org.apache.tajo.algebra.Expr;
 import org.apache.tajo.catalog.*;
 import org.apache.tajo.common.TajoDataTypes.Type;
@@ -87,7 +84,7 @@ public class TestHashJoinExec {
         .add("deptname", Type.TEXT)
         .build();
 
-    TableMeta employeeMeta = CatalogUtil.newTableMeta("TEXT");
+    TableMeta employeeMeta = CatalogUtil.newTableMeta(BuiltinStorages.TEXT, util.getConfiguration());
     Path employeePath = new Path(testDir, "employee.csv");
     Appender appender = ((FileTablespace) TablespaceManager.getLocalFs())
         .getAppender(employeeMeta, employeeSchema, employeePath);
@@ -111,7 +108,8 @@ public class TestHashJoinExec {
         .add("name", Type.TEXT)
         .add("age", Type.INT4)
         .build();
-    TableMeta peopleMeta = CatalogUtil.newTableMeta("TEXT");
+
+    TableMeta peopleMeta = CatalogUtil.newTableMeta(BuiltinStorages.TEXT, util.getConfiguration());
     Path peoplePath = new Path(testDir, "people.csv");
     appender = ((FileTablespace) TablespaceManager.getLocalFs())
         .getAppender(peopleMeta, peopleSchema, peoplePath);

http://git-wip-us.apache.org/repos/asf/tajo/blob/aad78a4e/tajo-core-tests/src/test/java/org/apache/tajo/engine/planner/physical/TestHashSemiJoinExec.java
----------------------------------------------------------------------
diff --git a/tajo-core-tests/src/test/java/org/apache/tajo/engine/planner/physical/TestHashSemiJoinExec.java b/tajo-core-tests/src/test/java/org/apache/tajo/engine/planner/physical/TestHashSemiJoinExec.java
index 026bbe2..baebf80 100644
--- a/tajo-core-tests/src/test/java/org/apache/tajo/engine/planner/physical/TestHashSemiJoinExec.java
+++ b/tajo-core-tests/src/test/java/org/apache/tajo/engine/planner/physical/TestHashSemiJoinExec.java
@@ -19,6 +19,7 @@
 package org.apache.tajo.engine.planner.physical;
 
 import org.apache.hadoop.fs.Path;
+import org.apache.tajo.BuiltinStorages;
 import org.apache.tajo.LocalTajoTestingUtility;
 import org.apache.tajo.TajoTestingCluster;
 import org.apache.tajo.algebra.Expr;
@@ -85,7 +86,7 @@ public class TestHashSemiJoinExec {
         .add("deptname", Type.TEXT)
         .build();
 
-    TableMeta employeeMeta = CatalogUtil.newTableMeta("TEXT");
+    TableMeta employeeMeta = CatalogUtil.newTableMeta(BuiltinStorages.TEXT, util.getConfiguration());
     Path employeePath = new Path(testDir, "employee.csv");
     Appender appender = ((FileTablespace) TablespaceManager.getLocalFs())
         .getAppender(employeeMeta, employeeSchema, employeePath);
@@ -112,7 +113,8 @@ public class TestHashSemiJoinExec {
         .add("name", Type.TEXT)
         .add("age", Type.INT4)
         .build();
-    TableMeta peopleMeta = CatalogUtil.newTableMeta("TEXT");
+
+    TableMeta peopleMeta = CatalogUtil.newTableMeta(BuiltinStorages.TEXT, util.getConfiguration());
     Path peoplePath = new Path(testDir, "people.csv");
     appender = ((FileTablespace) TablespaceManager.getLocalFs())
         .getAppender(peopleMeta, peopleSchema, peoplePath);

http://git-wip-us.apache.org/repos/asf/tajo/blob/aad78a4e/tajo-core-tests/src/test/java/org/apache/tajo/engine/planner/physical/TestLeftOuterHashJoinExec.java
----------------------------------------------------------------------
diff --git a/tajo-core-tests/src/test/java/org/apache/tajo/engine/planner/physical/TestLeftOuterHashJoinExec.java b/tajo-core-tests/src/test/java/org/apache/tajo/engine/planner/physical/TestLeftOuterHashJoinExec.java
index c308065..fa20941 100644
--- a/tajo-core-tests/src/test/java/org/apache/tajo/engine/planner/physical/TestLeftOuterHashJoinExec.java
+++ b/tajo-core-tests/src/test/java/org/apache/tajo/engine/planner/physical/TestLeftOuterHashJoinExec.java
@@ -19,6 +19,7 @@
 package org.apache.tajo.engine.planner.physical;
 
 import org.apache.hadoop.fs.Path;
+import org.apache.tajo.BuiltinStorages;
 import org.apache.tajo.LocalTajoTestingUtility;
 import org.apache.tajo.TajoTestingCluster;
 import org.apache.tajo.algebra.Expr;
@@ -106,7 +107,7 @@ public class TestLeftOuterHashJoinExec {
         .build();
 
 
-    TableMeta dep3Meta = CatalogUtil.newTableMeta("TEXT");
+    TableMeta dep3Meta = CatalogUtil.newTableMeta(BuiltinStorages.TEXT, util.getConfiguration());
     Path dep3Path = new Path(testDir, "dep3.csv");
     Appender appender1 = ((FileTablespace) TablespaceManager.getLocalFs()).getAppender(dep3Meta, dep3Schema, dep3Path);
     appender1.init();
@@ -136,7 +137,7 @@ public class TestLeftOuterHashJoinExec {
         .build();
 
 
-    TableMeta job3Meta = CatalogUtil.newTableMeta("TEXT");
+    TableMeta job3Meta = CatalogUtil.newTableMeta(BuiltinStorages.TEXT, util.getConfiguration());
     Path job3Path = new Path(testDir, "job3.csv");
     Appender appender2 = ((FileTablespace) TablespaceManager.getLocalFs())
         .getAppender(job3Meta, job3Schema, job3Path);
@@ -177,7 +178,7 @@ public class TestLeftOuterHashJoinExec {
         .build();
 
 
-    TableMeta emp3Meta = CatalogUtil.newTableMeta("TEXT");
+    TableMeta emp3Meta = CatalogUtil.newTableMeta(BuiltinStorages.TEXT, util.getConfiguration());
     Path emp3Path = new Path(testDir, "emp3.csv");
     Appender appender3 = ((FileTablespace) TablespaceManager.getLocalFs())
         .getAppender(emp3Meta, emp3Schema, emp3Path);
@@ -231,7 +232,7 @@ public class TestLeftOuterHashJoinExec {
         .build();
 
 
-    TableMeta phone3Meta = CatalogUtil.newTableMeta("TEXT");
+    TableMeta phone3Meta = CatalogUtil.newTableMeta(BuiltinStorages.TEXT, util.getConfiguration());
     Path phone3Path = new Path(testDir, "phone3.csv");
     Appender appender5 = ((FileTablespace) TablespaceManager.getLocalFs())
         .getAppender(phone3Meta, phone3Schema, phone3Path);

http://git-wip-us.apache.org/repos/asf/tajo/blob/aad78a4e/tajo-core-tests/src/test/java/org/apache/tajo/engine/planner/physical/TestMergeJoinExec.java
----------------------------------------------------------------------
diff --git a/tajo-core-tests/src/test/java/org/apache/tajo/engine/planner/physical/TestMergeJoinExec.java b/tajo-core-tests/src/test/java/org/apache/tajo/engine/planner/physical/TestMergeJoinExec.java
index 5819003..d3d1c24 100644
--- a/tajo-core-tests/src/test/java/org/apache/tajo/engine/planner/physical/TestMergeJoinExec.java
+++ b/tajo-core-tests/src/test/java/org/apache/tajo/engine/planner/physical/TestMergeJoinExec.java
@@ -19,6 +19,7 @@
 package org.apache.tajo.engine.planner.physical;
 
 import org.apache.hadoop.fs.Path;
+import org.apache.tajo.BuiltinStorages;
 import org.apache.tajo.LocalTajoTestingUtility;
 import org.apache.tajo.TajoConstants;
 import org.apache.tajo.TajoTestingCluster;
@@ -85,7 +86,7 @@ public class TestMergeJoinExec {
         .add("deptname", Type.TEXT)
         .build();
 
-    TableMeta employeeMeta = CatalogUtil.newTableMeta("TEXT");
+    TableMeta employeeMeta = CatalogUtil.newTableMeta(BuiltinStorages.TEXT, util.getConfiguration());
     Path employeePath = new Path(testDir, "employee.csv");
     Appender appender = ((FileTablespace) TablespaceManager.getLocalFs())
         .getAppender(employeeMeta, employeeSchema, employeePath);
@@ -115,7 +116,8 @@ public class TestMergeJoinExec {
         .add("name", Type.TEXT)
         .add("age", Type.INT4)
         .build();
-    TableMeta peopleMeta = CatalogUtil.newTableMeta("TEXT");
+
+    TableMeta peopleMeta = CatalogUtil.newTableMeta(BuiltinStorages.TEXT, util.getConfiguration());
     Path peoplePath = new Path(testDir, "people.csv");
     appender = ((FileTablespace) TablespaceManager.getLocalFs())
         .getAppender(peopleMeta, peopleSchema, peoplePath);

http://git-wip-us.apache.org/repos/asf/tajo/blob/aad78a4e/tajo-core-tests/src/test/java/org/apache/tajo/engine/planner/physical/TestPhysicalPlanner.java
----------------------------------------------------------------------
diff --git a/tajo-core-tests/src/test/java/org/apache/tajo/engine/planner/physical/TestPhysicalPlanner.java b/tajo-core-tests/src/test/java/org/apache/tajo/engine/planner/physical/TestPhysicalPlanner.java
index 694193d..c3a669e 100644
--- a/tajo-core-tests/src/test/java/org/apache/tajo/engine/planner/physical/TestPhysicalPlanner.java
+++ b/tajo-core-tests/src/test/java/org/apache/tajo/engine/planner/physical/TestPhysicalPlanner.java
@@ -117,7 +117,7 @@ public class TestPhysicalPlanner {
         .add("nullable", Type.TEXT)
         .build();
 
-    TableMeta employeeMeta = CatalogUtil.newTableMeta("TEXT");
+    TableMeta employeeMeta = CatalogUtil.newTableMeta(BuiltinStorages.TEXT, conf);
 
 
     Path employeePath = new Path(testDir, "employee.csv");
@@ -138,7 +138,7 @@ public class TestPhysicalPlanner {
     catalog.createTable(employee);
 
     Path scorePath = new Path(testDir, "score");
-    TableMeta scoreMeta = CatalogUtil.newTableMeta("TEXT", new KeyValueSet());
+    TableMeta scoreMeta = CatalogUtil.newTableMeta(BuiltinStorages.TEXT, conf);
     appender = sm.getAppender(scoreMeta, scoreSchema, scorePath);
     appender.init();
     score = new TableDesc(
@@ -435,7 +435,7 @@ public class TestPhysicalPlanner {
     LogicalPlan plan = planner.createPlan(defaultContext, context);
     LogicalNode rootNode = optimizer.optimize(plan);
 
-    TableMeta outputMeta = CatalogUtil.newTableMeta("TEXT");
+    TableMeta outputMeta = CatalogUtil.newTableMeta(BuiltinStorages.TEXT, conf);;
 
     PhysicalPlanner phyPlanner = new PhysicalPlannerImpl(conf);
     PhysicalExec exec = phyPlanner.createPlan(ctx, rootNode);
@@ -504,7 +504,7 @@ public class TestPhysicalPlanner {
     long totalNum = 0;
     for (FileStatus status : fs.listStatus(ctx.getOutputPath().getParent())) {
       Scanner scanner =  ((FileTablespace) TablespaceManager.getLocalFs()).getFileScanner(
-          CatalogUtil.newTableMeta("TEXT"),
+          CatalogUtil.newTableMeta(BuiltinStorages.TEXT, conf),
           rootNode.getOutSchema(),
           status.getPath());
 
@@ -532,7 +532,7 @@ public class TestPhysicalPlanner {
     LogicalPlan plan = planner.createPlan(defaultContext, context);
     LogicalNode rootNode = optimizer.optimize(plan);
 
-    TableMeta outputMeta = CatalogUtil.newTableMeta("RCFILE");
+    TableMeta outputMeta = CatalogUtil.newTableMeta(BuiltinStorages.RCFILE, conf);
 
     PhysicalPlanner phyPlanner = new PhysicalPlannerImpl(conf);
     PhysicalExec exec = phyPlanner.createPlan(ctx, rootNode);
@@ -648,7 +648,7 @@ public class TestPhysicalPlanner {
     ctx.setDataChannel(dataChannel);
     LogicalNode rootNode = optimizer.optimize(plan);
 
-    TableMeta outputMeta = CatalogUtil.newTableMeta(dataChannel.getDataFormat());
+    TableMeta outputMeta = CatalogUtil.newTableMeta(dataChannel.getDataFormat(), conf);
 
     FileSystem fs = sm.getFileSystem();
     QueryId queryId = id.getTaskId().getExecutionBlockId().getQueryId();
@@ -745,7 +745,7 @@ public class TestPhysicalPlanner {
       long expectedFileNum = (long) Math.ceil(fileVolumSum / (float)StorageUnit.MB);
       assertEquals(expectedFileNum, fileStatuses.length);
     }
-    TableMeta outputMeta = CatalogUtil.newTableMeta("TEXT");
+    TableMeta outputMeta = CatalogUtil.newTableMeta(BuiltinStorages.TEXT, conf);;
     Scanner scanner = new MergeScanner(conf, rootNode.getOutSchema(), outputMeta, new ArrayList<>(fragments));
     scanner.init();
 
@@ -782,7 +782,7 @@ public class TestPhysicalPlanner {
     ctx.setDataChannel(dataChannel);
     optimizer.optimize(plan);
 
-    TableMeta outputMeta = CatalogUtil.newTableMeta(dataChannel.getDataFormat());
+    TableMeta outputMeta = CatalogUtil.newTableMeta(dataChannel.getDataFormat(), conf);
 
     FileSystem fs = sm.getFileSystem();
     QueryId queryId = id.getTaskId().getExecutionBlockId().getQueryId();

http://git-wip-us.apache.org/repos/asf/tajo/blob/aad78a4e/tajo-core-tests/src/test/java/org/apache/tajo/engine/planner/physical/TestProgressExternalSortExec.java
----------------------------------------------------------------------
diff --git a/tajo-core-tests/src/test/java/org/apache/tajo/engine/planner/physical/TestProgressExternalSortExec.java b/tajo-core-tests/src/test/java/org/apache/tajo/engine/planner/physical/TestProgressExternalSortExec.java
index 51cd5ea..f88e2ef 100644
--- a/tajo-core-tests/src/test/java/org/apache/tajo/engine/planner/physical/TestProgressExternalSortExec.java
+++ b/tajo-core-tests/src/test/java/org/apache/tajo/engine/planner/physical/TestProgressExternalSortExec.java
@@ -86,7 +86,7 @@ public class TestProgressExternalSortExec {
         .add("deptname", TajoDataTypes.Type.TEXT)
         .build();
 
-    TableMeta employeeMeta = CatalogUtil.newTableMeta(BuiltinStorages.RAW);
+    TableMeta employeeMeta = CatalogUtil.newTableMeta(BuiltinStorages.RAW, conf);
     Path employeePath = new Path(testDir, "employee.raw");
     Appender appender = ((FileTablespace) TablespaceManager.getLocalFs())
         .getAppender(employeeMeta, schema, employeePath);

http://git-wip-us.apache.org/repos/asf/tajo/blob/aad78a4e/tajo-core-tests/src/test/java/org/apache/tajo/engine/planner/physical/TestRadixSort.java
----------------------------------------------------------------------
diff --git a/tajo-core-tests/src/test/java/org/apache/tajo/engine/planner/physical/TestRadixSort.java b/tajo-core-tests/src/test/java/org/apache/tajo/engine/planner/physical/TestRadixSort.java
index f357379..ed5c3f8 100644
--- a/tajo-core-tests/src/test/java/org/apache/tajo/engine/planner/physical/TestRadixSort.java
+++ b/tajo-core-tests/src/test/java/org/apache/tajo/engine/planner/physical/TestRadixSort.java
@@ -36,6 +36,8 @@ import org.apache.tajo.storage.VTuple;
 import org.apache.tajo.tuple.memory.UnSafeTuple;
 import org.apache.tajo.tuple.memory.UnSafeTupleList;
 import org.apache.tajo.util.StringUtils;
+import org.apache.tajo.util.datetime.DateTimeConstants;
+import org.apache.tajo.util.datetime.DateTimeUtil;
 import org.junit.After;
 import org.junit.Before;
 import org.junit.Test;
@@ -219,7 +221,10 @@ public class TestRadixSort {
         DatumFactory.createInt4(Integer.MAX_VALUE),
         DatumFactory.createInt2(Short.MAX_VALUE),
         DatumFactory.createDate(Integer.MAX_VALUE),
-        DatumFactory.createTimestamp(Long.MAX_VALUE),
+        DatumFactory.createTimestamp(
+            // FIXME 'Out of Range of Time'
+            //DateTimeUtil.toJulianDate(JULIAN_MAXYEAR, 1, 1)
+            DateTimeUtil.toJulianTimestamp(DateTimeConstants.JULIAN_MAXYEAR / 20, 1, 1, 0, 0, 0, 0)),
         DatumFactory.createTime(Long.MAX_VALUE),
         DatumFactory.createInet4(Integer.MAX_VALUE),
         DatumFactory.createFloat4(Float.MAX_VALUE),

http://git-wip-us.apache.org/repos/asf/tajo/blob/aad78a4e/tajo-core-tests/src/test/java/org/apache/tajo/engine/planner/physical/TestRightOuterHashJoinExec.java
----------------------------------------------------------------------
diff --git a/tajo-core-tests/src/test/java/org/apache/tajo/engine/planner/physical/TestRightOuterHashJoinExec.java b/tajo-core-tests/src/test/java/org/apache/tajo/engine/planner/physical/TestRightOuterHashJoinExec.java
index 83d26c7..015cf73 100644
--- a/tajo-core-tests/src/test/java/org/apache/tajo/engine/planner/physical/TestRightOuterHashJoinExec.java
+++ b/tajo-core-tests/src/test/java/org/apache/tajo/engine/planner/physical/TestRightOuterHashJoinExec.java
@@ -19,6 +19,7 @@
 package org.apache.tajo.engine.planner.physical;
 
 import org.apache.hadoop.fs.Path;
+import org.apache.tajo.BuiltinStorages;
 import org.apache.tajo.LocalTajoTestingUtility;
 import org.apache.tajo.TajoTestingCluster;
 import org.apache.tajo.algebra.Expr;
@@ -100,7 +101,7 @@ public class TestRightOuterHashJoinExec {
         .build();
 
 
-    TableMeta dep3Meta = CatalogUtil.newTableMeta("TEXT");
+    TableMeta dep3Meta = CatalogUtil.newTableMeta(BuiltinStorages.TEXT, util.getConfiguration());
     Path dep3Path = new Path(testDir, "dep3.csv");
     Appender appender1 = ((FileTablespace) TablespaceManager.getLocalFs())
         .getAppender(dep3Meta, dep3Schema, dep3Path);
@@ -131,7 +132,7 @@ public class TestRightOuterHashJoinExec {
         .build();
 
 
-    TableMeta job3Meta = CatalogUtil.newTableMeta("TEXT");
+    TableMeta job3Meta = CatalogUtil.newTableMeta(BuiltinStorages.TEXT, util.getConfiguration());
     Path job3Path = new Path(testDir, "job3.csv");
     Appender appender2 = ((FileTablespace) TablespaceManager.getLocalFs())
         .getAppender(job3Meta, job3Schema, job3Path);
@@ -172,7 +173,7 @@ public class TestRightOuterHashJoinExec {
         .build();
 
 
-    TableMeta emp3Meta = CatalogUtil.newTableMeta("TEXT");
+    TableMeta emp3Meta = CatalogUtil.newTableMeta(BuiltinStorages.TEXT, util.getConfiguration());
     Path emp3Path = new Path(testDir, "emp3.csv");
     Appender appender3 = ((FileTablespace) TablespaceManager.getLocalFs())
         .getAppender(emp3Meta, emp3Schema, emp3Path);

http://git-wip-us.apache.org/repos/asf/tajo/blob/aad78a4e/tajo-core-tests/src/test/java/org/apache/tajo/engine/planner/physical/TestRightOuterMergeJoinExec.java
----------------------------------------------------------------------
diff --git a/tajo-core-tests/src/test/java/org/apache/tajo/engine/planner/physical/TestRightOuterMergeJoinExec.java b/tajo-core-tests/src/test/java/org/apache/tajo/engine/planner/physical/TestRightOuterMergeJoinExec.java
index 4bfe0f7..a6b5d4f 100644
--- a/tajo-core-tests/src/test/java/org/apache/tajo/engine/planner/physical/TestRightOuterMergeJoinExec.java
+++ b/tajo-core-tests/src/test/java/org/apache/tajo/engine/planner/physical/TestRightOuterMergeJoinExec.java
@@ -19,6 +19,7 @@
 package org.apache.tajo.engine.planner.physical;
 
 import org.apache.hadoop.fs.Path;
+import org.apache.tajo.BuiltinStorages;
 import org.apache.tajo.LocalTajoTestingUtility;
 import org.apache.tajo.TajoTestingCluster;
 import org.apache.tajo.algebra.Expr;
@@ -111,7 +112,7 @@ public class TestRightOuterMergeJoinExec {
         .build();
 
 
-    TableMeta dep3Meta = CatalogUtil.newTableMeta("TEXT");
+    TableMeta dep3Meta = CatalogUtil.newTableMeta(BuiltinStorages.TEXT, util.getConfiguration());
     Path dep3Path = new Path(testDir, "dep3.csv");
     Appender appender1 = ((FileTablespace) TablespaceManager.getLocalFs())
         .getAppender(dep3Meta, dep3Schema, dep3Path);
@@ -151,7 +152,7 @@ public class TestRightOuterMergeJoinExec {
         .build();
 
 
-    TableMeta dep4Meta = CatalogUtil.newTableMeta("TEXT");
+    TableMeta dep4Meta = CatalogUtil.newTableMeta(BuiltinStorages.TEXT, util.getConfiguration());
     Path dep4Path = new Path(testDir, "dep4.csv");
     Appender appender4 = ((FileTablespace) TablespaceManager.getLocalFs())
         .getAppender(dep4Meta, dep4Schema, dep4Path);
@@ -184,7 +185,7 @@ public class TestRightOuterMergeJoinExec {
         .build();
 
 
-    TableMeta job3Meta = CatalogUtil.newTableMeta("TEXT");
+    TableMeta job3Meta = CatalogUtil.newTableMeta(BuiltinStorages.TEXT, util.getConfiguration());
     Path job3Path = new Path(testDir, "job3.csv");
     Appender appender2 = ((FileTablespace) TablespaceManager.getLocalFs())
         .getAppender(job3Meta, job3Schema, job3Path);
@@ -225,7 +226,7 @@ public class TestRightOuterMergeJoinExec {
         .build();
 
 
-    TableMeta emp3Meta = CatalogUtil.newTableMeta("TEXT");
+    TableMeta emp3Meta = CatalogUtil.newTableMeta(BuiltinStorages.TEXT, util.getConfiguration());
     Path emp3Path = new Path(testDir, "emp3.csv");
     Appender appender3 = ((FileTablespace) TablespaceManager.getLocalFs())
         .getAppender(emp3Meta, emp3Schema, emp3Path);
@@ -278,7 +279,7 @@ public class TestRightOuterMergeJoinExec {
         .add("phone_number", Type.TEXT)
         .build();
 
-    TableMeta phone3Meta = CatalogUtil.newTableMeta("TEXT");
+    TableMeta phone3Meta = CatalogUtil.newTableMeta(BuiltinStorages.TEXT, util.getConfiguration());
     Path phone3Path = new Path(testDir, "phone3.csv");
     Appender appender5 = ((FileTablespace) TablespaceManager.getLocalFs())
         .getAppender(phone3Meta, phone3Schema, phone3Path);

http://git-wip-us.apache.org/repos/asf/tajo/blob/aad78a4e/tajo-core-tests/src/test/java/org/apache/tajo/engine/planner/physical/TestSortExec.java
----------------------------------------------------------------------
diff --git a/tajo-core-tests/src/test/java/org/apache/tajo/engine/planner/physical/TestSortExec.java b/tajo-core-tests/src/test/java/org/apache/tajo/engine/planner/physical/TestSortExec.java
index 07b392a..235d126 100644
--- a/tajo-core-tests/src/test/java/org/apache/tajo/engine/planner/physical/TestSortExec.java
+++ b/tajo-core-tests/src/test/java/org/apache/tajo/engine/planner/physical/TestSortExec.java
@@ -19,10 +19,7 @@
 package org.apache.tajo.engine.planner.physical;
 
 import org.apache.hadoop.fs.Path;
-import org.apache.tajo.LocalTajoTestingUtility;
-import org.apache.tajo.TajoConstants;
-import org.apache.tajo.TajoTestingCluster;
-import org.apache.tajo.TpchTestBase;
+import org.apache.tajo.*;
 import org.apache.tajo.algebra.Expr;
 import org.apache.tajo.catalog.*;
 import org.apache.tajo.common.TajoDataTypes.Type;
@@ -87,7 +84,7 @@ public class TestSortExec {
         .add("deptname", Type.TEXT)
         .build();
 
-    employeeMeta = CatalogUtil.newTableMeta("TEXT");
+    employeeMeta = CatalogUtil.newTableMeta(BuiltinStorages.TEXT, util.getConfiguration());
 
     tablePath = StorageUtil.concatPath(workDir, "employee", "table1");
     sm.getFileSystem().mkdirs(tablePath.getParent());

http://git-wip-us.apache.org/repos/asf/tajo/blob/aad78a4e/tajo-core-tests/src/test/java/org/apache/tajo/engine/planner/physical/TestSortIntersectExec.java
----------------------------------------------------------------------
diff --git a/tajo-core-tests/src/test/java/org/apache/tajo/engine/planner/physical/TestSortIntersectExec.java b/tajo-core-tests/src/test/java/org/apache/tajo/engine/planner/physical/TestSortIntersectExec.java
index 7a9385b..5200cde 100644
--- a/tajo-core-tests/src/test/java/org/apache/tajo/engine/planner/physical/TestSortIntersectExec.java
+++ b/tajo-core-tests/src/test/java/org/apache/tajo/engine/planner/physical/TestSortIntersectExec.java
@@ -19,6 +19,7 @@
 package org.apache.tajo.engine.planner.physical;
 
 import org.apache.hadoop.fs.Path;
+import org.apache.tajo.BuiltinStorages;
 import org.apache.tajo.LocalTajoTestingUtility;
 import org.apache.tajo.TajoTestingCluster;
 import org.apache.tajo.algebra.Expr;
@@ -91,7 +92,7 @@ public class TestSortIntersectExec {
         .add("deptname", TajoDataTypes.Type.TEXT)
         .build();
 
-    TableMeta employeeMeta1 = CatalogUtil.newTableMeta("TEXT");
+    TableMeta employeeMeta1 = CatalogUtil.newTableMeta(BuiltinStorages.TEXT, util.getConfiguration());
     Path employeePath1 = new Path(testDir, "employee1.csv");
     Appender appender = ((FileTablespace) TablespaceManager.getLocalFs()).
         getAppender(employeeMeta1, employeeSchema1, employeePath1);
@@ -119,7 +120,7 @@ public class TestSortIntersectExec {
         .add("deptname", TajoDataTypes.Type.TEXT)
         .build();
 
-    TableMeta employeeMeta2 = CatalogUtil.newTableMeta("TEXT");
+    TableMeta employeeMeta2 = CatalogUtil.newTableMeta(BuiltinStorages.TEXT, util.getConfiguration());
     Path employeePath2 = new Path(testDir, "employee2.csv");
     Appender appender2 = ((FileTablespace) TablespaceManager.getLocalFs()).
         getAppender(employeeMeta2, employeeSchema2, employeePath2);

http://git-wip-us.apache.org/repos/asf/tajo/blob/aad78a4e/tajo-core-tests/src/test/java/org/apache/tajo/engine/query/TestJsonWithTimezone.java
----------------------------------------------------------------------
diff --git a/tajo-core-tests/src/test/java/org/apache/tajo/engine/query/TestJsonWithTimezone.java b/tajo-core-tests/src/test/java/org/apache/tajo/engine/query/TestJsonWithTimezone.java
index 3380b1f..9eeba73 100644
--- a/tajo-core-tests/src/test/java/org/apache/tajo/engine/query/TestJsonWithTimezone.java
+++ b/tajo-core-tests/src/test/java/org/apache/tajo/engine/query/TestJsonWithTimezone.java
@@ -18,7 +18,6 @@
 
 package org.apache.tajo.engine.query;
 
-import com.google.common.collect.Lists;
 import org.apache.tajo.QueryTestCaseBase;
 import org.apache.tajo.SessionVars;
 import org.junit.Test;
@@ -74,8 +73,6 @@ public class TestJsonWithTimezone extends QueryTestCaseBase {
     } finally {
       executeString("DROP TABLE IF EXISTS timezoned3");
     }
-
-    getClient().unsetSessionVariables(Lists.newArrayList("TIMEZONE"));
   }
 
   @Test
@@ -96,8 +93,9 @@ public class TestJsonWithTimezone extends QueryTestCaseBase {
   @Test
   public void testTimezonedTable5() throws Exception {
     // Table - timezone = GMT+9 (by a specified system timezone)
-    // TajoClient uses JVM default timezone (GMT+9)
+    // Client - GMT+9 (SET TIME ZONE 'GMT+9')
 
+    TimeZone systemTimeZone = testingCluster.getConfiguration().getSystemTimezone();
     try {
       testingCluster.getConfiguration().setSystemTimezone(TimeZone.getTimeZone("GMT+9"));
 
@@ -109,7 +107,7 @@ public class TestJsonWithTimezone extends QueryTestCaseBase {
       executeString("DROP TABLE IF EXISTS timezoned5");
 
       // restore the config
-      testingCluster.getConfiguration().setSystemTimezone(TimeZone.getTimeZone("GMT"));
+      testingCluster.getConfiguration().setSystemTimezone(systemTimeZone);
     }
   }
 }

http://git-wip-us.apache.org/repos/asf/tajo/blob/aad78a4e/tajo-core-tests/src/test/java/org/apache/tajo/engine/query/TestSelectQuery.java
----------------------------------------------------------------------
diff --git a/tajo-core-tests/src/test/java/org/apache/tajo/engine/query/TestSelectQuery.java b/tajo-core-tests/src/test/java/org/apache/tajo/engine/query/TestSelectQuery.java
index 61b5551..7a88198 100644
--- a/tajo-core-tests/src/test/java/org/apache/tajo/engine/query/TestSelectQuery.java
+++ b/tajo-core-tests/src/test/java/org/apache/tajo/engine/query/TestSelectQuery.java
@@ -627,8 +627,6 @@ public class TestSelectQuery extends QueryTestCaseBase {
     } finally {
       executeString("DROP TABLE IF EXISTS timezoned3");
     }
-
-    getClient().unsetSessionVariables(Lists.newArrayList("TIMEZONE"));
   }
 
   @Test
@@ -649,8 +647,9 @@ public class TestSelectQuery extends QueryTestCaseBase {
   @Test
   public void testTimezonedTable5() throws Exception {
     // Table - timezone = GMT+9 (by a specified system timezone)
-    // TajoClient uses JVM default timezone (GMT+9)
+    // Client - GMT+9 (SET TIME ZONE 'GMT+9';)
 
+    TimeZone systemTimeZone = testingCluster.getConfiguration().getSystemTimezone();
     try {
       testingCluster.getConfiguration().setSystemTimezone(TimeZone.getTimeZone("GMT+9"));
 
@@ -662,7 +661,7 @@ public class TestSelectQuery extends QueryTestCaseBase {
       executeString("DROP TABLE IF EXISTS timezoned5");
 
       // restore the config
-      testingCluster.getConfiguration().setSystemTimezone(TimeZone.getTimeZone("GMT"));
+      testingCluster.getConfiguration().setSystemTimezone(systemTimeZone);
     }
   }
 
@@ -677,7 +676,6 @@ public class TestSelectQuery extends QueryTestCaseBase {
 
       ResultSet res = executeQuery();
       assertResultSet(res, "testTimezonedTable3.result");
-      executeString("SET TIME ZONE 'GMT'");
       cleanupQuery(res);
     } finally {
       executeString("DROP TABLE IF EXISTS timezoned_load1");