TAJO-2135: Invalid join result when join key columns contain nulls.

Closes #1009
diff --git a/CHANGES b/CHANGES
index 60d844f..4838614 100644
--- a/CHANGES
+++ b/CHANGES
@@ -139,6 +139,8 @@
 
   BUG FIXES
 
+    TAJO-2135: Invalid join result when join key columns contain nulls. (jihoon)
+
     TAJO-2110: Fix incorrect DateTime and remove hard coded tests. (jinho)
 
     TAJO-2119: Invalid sort result when sort key columns contain non-ascii values. 
diff --git a/tajo-catalog/tajo-catalog-common/src/main/java/org/apache/tajo/catalog/CatalogUtil.java b/tajo-catalog/tajo-catalog-common/src/main/java/org/apache/tajo/catalog/CatalogUtil.java
index 0ab0c6f..2b20907 100644
--- a/tajo-catalog/tajo-catalog-common/src/main/java/org/apache/tajo/catalog/CatalogUtil.java
+++ b/tajo-catalog/tajo-catalog-common/src/main/java/org/apache/tajo/catalog/CatalogUtil.java
@@ -32,6 +32,7 @@
 import org.apache.tajo.common.TajoDataTypes;
 import org.apache.tajo.common.TajoDataTypes.DataType;
 import org.apache.tajo.conf.TajoConf;
+import org.apache.tajo.datum.NullDatum;
 import org.apache.tajo.exception.InvalidOperationException;
 import org.apache.tajo.exception.UndefinedOperatorException;
 import org.apache.tajo.storage.StorageConstants;
@@ -1014,6 +1015,7 @@
 
     if (dataFormat.equalsIgnoreCase(BuiltinStorages.TEXT)) {
       options.set(StorageConstants.TEXT_DELIMITER, StorageConstants.DEFAULT_FIELD_DELIMITER);
+      options.set(StorageConstants.TEXT_NULL, NullDatum.DEFAULT_TEXT);
     } else if (dataFormat.equalsIgnoreCase("JSON")) {
       options.set(StorageConstants.TEXT_SERDE_CLASS, "org.apache.tajo.storage.json.JsonLineSerDe");
     } else if (dataFormat.equalsIgnoreCase("RCFILE")) {
diff --git a/tajo-cluster-tests/src/test/java/org/apache/tajo/LocalTajoTestingUtility.java b/tajo-cluster-tests/src/test/java/org/apache/tajo/LocalTajoTestingUtility.java
index f084138..9816064 100644
--- a/tajo-cluster-tests/src/test/java/org/apache/tajo/LocalTajoTestingUtility.java
+++ b/tajo-cluster-tests/src/test/java/org/apache/tajo/LocalTajoTestingUtility.java
@@ -39,7 +39,6 @@
 import org.apache.tajo.session.Session;
 import org.apache.tajo.util.CommonTestingUtil;
 import org.apache.tajo.util.FileUtil;
-import org.apache.tajo.util.KeyValueSet;
 import org.apache.tajo.util.TajoIdUtils;
 
 import java.io.File;
@@ -95,8 +94,7 @@
 
   public void setup(String[] names,
                     String[] tablepaths,
-                    Schema[] schemas,
-                    KeyValueSet option) throws Exception {
+                    Schema[] schemas) throws Exception {
     LOG.info("===================================================");
     LOG.info("Starting Test Cluster.");
     LOG.info("===================================================");
@@ -115,7 +113,7 @@
       fs.mkdirs(tablePath);
       Path dfsPath = new Path(tablePath, localPath.getName());
       fs.copyFromLocalFile(localPath, dfsPath);
-      TableMeta meta = CatalogUtil.newTableMeta("TEXT", option);
+      TableMeta meta = CatalogUtil.newTableMeta(BuiltinStorages.TEXT, conf);
 
       // Add fake table statistic data to tables.
       // It gives more various situations to unit tests.
diff --git a/tajo-cluster-tests/src/test/java/org/apache/tajo/TajoTestingCluster.java b/tajo-cluster-tests/src/test/java/org/apache/tajo/TajoTestingCluster.java
index a83884a..8de4cb9 100644
--- a/tajo-cluster-tests/src/test/java/org/apache/tajo/TajoTestingCluster.java
+++ b/tajo-cluster-tests/src/test/java/org/apache/tajo/TajoTestingCluster.java
@@ -590,7 +590,6 @@
 
   public static ResultSet run(String[] names,
                               Schema[] schemas,
-                              KeyValueSet tableOption,
                               String[][] tables,
                               String query,
                               TajoClient client) throws Exception {
@@ -600,7 +599,7 @@
     Path rootDir = TajoConf.getWarehouseDir(util.getConfiguration());
     fs.mkdirs(rootDir);
     for (int i = 0; i < names.length; i++) {
-      createTable(names[i], schemas[i], tableOption, tables[i]);
+      createTable(util.conf, names[i], schemas[i], tables[i]);
     }
 
     ResultSet res = client.executeQueryAndGetResult(query);
@@ -609,7 +608,6 @@
 
   public static ResultSet run(String[] names,
                               Schema[] schemas,
-                              KeyValueSet tableOption,
                               String[][] tables,
                               String query) throws Exception {
     TpchTestBase instance = TpchTestBase.getInstance();
@@ -623,7 +621,7 @@
     TajoConf conf = util.getConfiguration();
 
     try (TajoClient client = new TajoClientImpl(ServiceTrackerFactory.get(conf))) {
-      return run(names, schemas, tableOption, tables, query, client);
+      return run(names, schemas, tables, query, client);
     }
   }
 
@@ -638,13 +636,13 @@
     return new TajoClientImpl(ServiceTrackerFactory.get(conf));
   }
 
-  public static void createTable(String tableName, Schema schema,
-                                 KeyValueSet tableOption, String[] tableDatas) throws Exception {
-    createTable(tableName, schema, tableOption, tableDatas, 1);
+  public static void createTable(TajoConf conf, String tableName, Schema schema,
+                                 String[] tableDatas) throws Exception {
+    createTable(conf, tableName, schema, tableDatas, 1);
   }
 
-  public static void createTable(String tableName, Schema schema,
-                                 KeyValueSet tableOption, String[] tableDatas, int numDataFiles) throws Exception {
+  public static void createTable(TajoConf conf, String tableName, Schema schema,
+                                 String[] tableDatas, int numDataFiles) throws Exception {
     TpchTestBase instance = TpchTestBase.getInstance();
     TajoTestingCluster util = instance.getTestingCluster();
     try (TajoClient client = newTajoClient(util)) {
@@ -682,7 +680,7 @@
           out.close();
         }
       }
-      TableMeta meta = CatalogUtil.newTableMeta("TEXT", tableOption);
+      TableMeta meta = CatalogUtil.newTableMeta(BuiltinStorages.TEXT, conf);
       client.createExternalTable(tableName, schema, tablePath.toUri(), meta);
     }
   }
diff --git a/tajo-cluster-tests/src/test/java/org/apache/tajo/TpchTestBase.java b/tajo-cluster-tests/src/test/java/org/apache/tajo/TpchTestBase.java
index 62f7477..70d25b4 100644
--- a/tajo-cluster-tests/src/test/java/org/apache/tajo/TpchTestBase.java
+++ b/tajo-cluster-tests/src/test/java/org/apache/tajo/TpchTestBase.java
@@ -24,11 +24,9 @@
 import org.apache.hadoop.fs.Path;
 import org.apache.tajo.benchmark.TPCH;
 import org.apache.tajo.catalog.Schema;
-import org.apache.tajo.storage.StorageConstants;
 import org.apache.tajo.util.CommonTestingUtil;
 import org.apache.tajo.util.FileUtil;
 import org.apache.tajo.util.JavaResourceUtil;
-import org.apache.tajo.util.KeyValueSet;
 
 import java.io.File;
 import java.io.IOException;
@@ -90,9 +88,7 @@
 
   private void setUp() throws Exception {
     util = new LocalTajoTestingUtility();
-    KeyValueSet opt = new KeyValueSet();
-    opt.set(StorageConstants.TEXT_DELIMITER, StorageConstants.DEFAULT_FIELD_DELIMITER);
-    util.setup(names, paths, schemas, opt);
+    util.setup(names, paths, schemas);
   }
 
   public static TpchTestBase getInstance() {
diff --git a/tajo-cluster-tests/src/test/resources/tpch/customer.tbl b/tajo-cluster-tests/src/test/resources/tpch/customer.tbl
index 4f684c6..c996e0b 100644
--- a/tajo-cluster-tests/src/test/resources/tpch/customer.tbl
+++ b/tajo-cluster-tests/src/test/resources/tpch/customer.tbl
@@ -3,3 +3,6 @@
 3|Customer#000000003|MG9kdTD2WBHm|1|11-719-748-3364|7498.12|AUTOMOBILE| deposits eat slyly ironic, even instructions. express foxes detect slyly. blithely even accounts abov|
 4|Customer#000000004|XxVSJsLAGtn|4|14-128-190-5944|2866.83|MACHINERY| requests. final, regular ideas sleep final accou|
 5|Customer#000000005|KvpyuHCplrB84WgAiGV6sYpZq7Tj|3|13-750-942-6364|794.47|HOUSEHOLD|n accounts will have to unwind. foxes cajole accor|
+|\N|\N||\N||\N|for null test|
+|\N|\N||\N||\N|for null test2|
+|\N|\N||\N||\N|for null test3|
\ No newline at end of file
diff --git a/tajo-cluster-tests/src/test/resources/tpch/lineitem.tbl b/tajo-cluster-tests/src/test/resources/tpch/lineitem.tbl
index e3beac9..ad4ba08 100644
--- a/tajo-cluster-tests/src/test/resources/tpch/lineitem.tbl
+++ b/tajo-cluster-tests/src/test/resources/tpch/lineitem.tbl
@@ -3,3 +3,6 @@
 2|2|1191|1|38|44694.46|0.00|0.05|N|O|1997-01-28|1997-01-14|1997-02-02|TAKE BACK RETURN|RAIL|ven requests. deposits breach a|
 3|2|1798|1|45|54058.05|0.06|0.00|R|F|1994-02-02|1994-01-04|1994-02-23|NONE|AIR|ongside of the furiously brave acco|
 3|3|6540|2|49|46796.47|0.10|0.00|R|F|1993-11-09|1993-12-20|1993-11-24|TAKE BACK RETURN|RAIL| unusual accounts. eve|
+||||||||\N|\N|\N|\N|\N|\N|\N|for null test|
+||||||||\N|\N|\N|\N|\N|\N|\N|for null test2|
+||||||||\N|\N|\N|\N|\N|\N|\N|for null test3|
\ No newline at end of file
diff --git a/tajo-cluster-tests/src/test/resources/tpch/nation.tbl b/tajo-cluster-tests/src/test/resources/tpch/nation.tbl
index ed3fd5b..c7e0478 100644
--- a/tajo-cluster-tests/src/test/resources/tpch/nation.tbl
+++ b/tajo-cluster-tests/src/test/resources/tpch/nation.tbl
@@ -23,3 +23,6 @@
 22|RUSSIA|3| requests against the platelets use never according to the quickly regular pint|
 23|UNITED KINGDOM|3|eans boost carefully special requests. accounts are. carefull|
 24|UNITED STATES|1|y final packages. slow foxes cajole quickly. quickly silent platelets breach ironic accounts. unusual pinto be|
+|\N||for null test|
+|\N||for null test2|
+|\N||for null test3|
\ No newline at end of file
diff --git a/tajo-cluster-tests/src/test/resources/tpch/orders.tbl b/tajo-cluster-tests/src/test/resources/tpch/orders.tbl
index 15a1b6f..c23a5df 100644
--- a/tajo-cluster-tests/src/test/resources/tpch/orders.tbl
+++ b/tajo-cluster-tests/src/test/resources/tpch/orders.tbl
@@ -1,3 +1,6 @@
 1|3|O|173665.47|1996-01-02|5-LOW|Clerk#000000951|0|nstructions sleep furiously among |
 2|4|O|46929.18|1996-12-01|1-URGENT|Clerk#000000880|0| foxes. pending accounts at the pending, silent asymptot|
 3|2|F|193846.25|1993-10-14|5-LOW|Clerk#000000955|0|sly final accounts boost. carefully regular ideas cajole carefully. depos|
+||\N||\N|\N|\N||for null test|
+||\N||\N|\N|\N||for null test2|
+||\N||\N|\N|\N||for null test3|
\ No newline at end of file
diff --git a/tajo-cluster-tests/src/test/resources/tpch/part.tbl b/tajo-cluster-tests/src/test/resources/tpch/part.tbl
index 6e6fa72..c97e797 100644
--- a/tajo-cluster-tests/src/test/resources/tpch/part.tbl
+++ b/tajo-cluster-tests/src/test/resources/tpch/part.tbl
@@ -1,4 +1,7 @@
 1|goldenrod lavender spring chocolate lace|Manufacturer#1|Brand#13|PROMO BURNISHED COPPER|7|JUMBO PKG|901.00|ly. slyly ironi
 2|blush thistle blue yellow saddle|Manufacturer#1|Brand#13|LARGE BRUSHED BRASS|15|LG CASE|902.00|lar accounts amo
 3|spring green yellow purple cornsilk|Manufacturer#4|Brand#42|STANDARD POLISHED BRASS|21|WRAP CASE|903.00|egular deposits hag
-4|cornflower chocolate smoke green pink|Manufacturer#3|Brand#34|SMALL PLATED BRASS|14|MED DRUM|904.00|p furiously r
\ No newline at end of file
+4|cornflower chocolate smoke green pink|Manufacturer#3|Brand#34|SMALL PLATED BRASS|14|MED DRUM|904.00|p furiously r
+|\N|\N|\N|\N||\N||for null test
+|\N|\N|\N|\N||\N||for null test2
+|\N|\N|\N|\N||\N||for null test3
\ No newline at end of file
diff --git a/tajo-cluster-tests/src/test/resources/tpch/partsupp.tbl b/tajo-cluster-tests/src/test/resources/tpch/partsupp.tbl
index a6211e6..05f9d09 100644
--- a/tajo-cluster-tests/src/test/resources/tpch/partsupp.tbl
+++ b/tajo-cluster-tests/src/test/resources/tpch/partsupp.tbl
@@ -1,3 +1,6 @@
 1|2|3325|771.64|, even theodolites. regular, final theodolites eat after the carefully pending foxes. furiously regular deposits sleep slyly. carefully bold realms above the ironic dependencies haggle careful|
 2|3|8895|1.01|nic accounts. final accounts sleep furiously about the ironic, bold packages. regular, regular accounts|
 3|4|4651|920.92|ilent foxes affix furiously quickly unusual requests. even packages across the carefully even theodolites nag above the sp|
+||||for null test|
+||||for null test2|
+||||for null test3|
\ No newline at end of file
diff --git a/tajo-cluster-tests/src/test/resources/tpch/region.tbl b/tajo-cluster-tests/src/test/resources/tpch/region.tbl
index c5ebb63..13c11db 100644
--- a/tajo-cluster-tests/src/test/resources/tpch/region.tbl
+++ b/tajo-cluster-tests/src/test/resources/tpch/region.tbl
@@ -3,3 +3,6 @@
 2|ASIA|ges. thinly even pinto beans ca|
 3|EUROPE|ly final courts cajole furiously final excuse|
 4|MIDDLE EAST|uickly special accounts cajole carefully blithely close requests. carefully final asymptotes haggle furiousl|
+|\N|for null test|
+|\N|for null test2|
+|\N|for null test3|
\ No newline at end of file
diff --git a/tajo-cluster-tests/src/test/resources/tpch/supplier.tbl b/tajo-cluster-tests/src/test/resources/tpch/supplier.tbl
index a6fafb3..041d3fe 100644
--- a/tajo-cluster-tests/src/test/resources/tpch/supplier.tbl
+++ b/tajo-cluster-tests/src/test/resources/tpch/supplier.tbl
@@ -1,3 +1,6 @@
 2|Supplier#000000002|89eJ5ksX3ImxJQBvxObC,|5|15-679-861-2259|4032.68| slyly bold instructions. idle dependen|
 3|Supplier#000000003|q1,G3Pj6OjIuUYfUoH18BFTKP5aU9bEV3|1|11-383-516-1199|4192.40|blithely silent requests after the express dependencies are sl|
 4|Supplier#000000004|Bk7ah4CK8SYQTepEmvMkkgMwg|15|25-843-787-7479|4641.08|riously even requests above the exp|
+|\N|\N||\N||for null test|
+|\N|\N||\N||for null test2|
+|\N|\N||\N||for null test3|
\ No newline at end of file
diff --git a/tajo-common/src/main/java/org/apache/tajo/conf/TajoConf.java b/tajo-common/src/main/java/org/apache/tajo/conf/TajoConf.java
index 28853e3..6237bd1 100644
--- a/tajo-common/src/main/java/org/apache/tajo/conf/TajoConf.java
+++ b/tajo-common/src/main/java/org/apache/tajo/conf/TajoConf.java
@@ -28,6 +28,7 @@
 import org.apache.tajo.QueryId;
 import org.apache.tajo.SessionVars;
 import org.apache.tajo.TajoConstants;
+import org.apache.tajo.datum.NullDatum;
 import org.apache.tajo.exception.TajoInternalError;
 import org.apache.tajo.service.BaseServiceTracker;
 import org.apache.tajo.unit.StorageUnit;
@@ -383,7 +384,7 @@
     $DATE_ORDER("tajo.datetime.date-order", "YMD"),
 
     // null character for text file output
-    $TEXT_NULL("tajo.text.null", "\\\\N"),
+    $TEXT_NULL("tajo.text.null", NullDatum.DEFAULT_TEXT),
 
     // Only for Debug and Testing
     $DEBUG_ENABLED(TajoConstants.DEBUG_KEY, false),
diff --git a/tajo-common/src/main/java/org/apache/tajo/datum/NullDatum.java b/tajo-common/src/main/java/org/apache/tajo/datum/NullDatum.java
index 76d323b..de4ddcb 100644
--- a/tajo-common/src/main/java/org/apache/tajo/datum/NullDatum.java
+++ b/tajo-common/src/main/java/org/apache/tajo/datum/NullDatum.java
@@ -26,7 +26,7 @@
 
 public class NullDatum extends Datum {
   private static NullDatum instance;
-  public static final String DEFAULT_TEXT = "";
+  public static final String DEFAULT_TEXT = "\\\\N";
   private static final byte [] EMPTY_BYTES = new byte[0];
   private static final DataType NULL_DATA_TYPE;
 
diff --git a/tajo-common/src/main/java/org/apache/tajo/storage/EmptyTuple.java b/tajo-common/src/main/java/org/apache/tajo/storage/EmptyTuple.java
index d3ad4f3..daf7ff6 100644
--- a/tajo-common/src/main/java/org/apache/tajo/storage/EmptyTuple.java
+++ b/tajo-common/src/main/java/org/apache/tajo/storage/EmptyTuple.java
@@ -98,7 +98,7 @@
 
   @Override
   public boolean getBool(int fieldId) {
-    return NullDatum.get().asBool();
+    throw new UnsupportedOperationException();
   }
 
   @Override
diff --git a/tajo-common/src/main/java/org/apache/tajo/storage/StorageConstants.java b/tajo-common/src/main/java/org/apache/tajo/storage/StorageConstants.java
index 4612323..fc48baa 100644
--- a/tajo-common/src/main/java/org/apache/tajo/storage/StorageConstants.java
+++ b/tajo-common/src/main/java/org/apache/tajo/storage/StorageConstants.java
@@ -115,6 +115,8 @@
   // Internal storage properties -------------------------------------------------
   public static final String SHUFFLE_TYPE = "shuffle.type";
 
+  public static final String DEFAULT_PARTITION_NAME = "__TAJO_DEFAULT_PARTITION__";
+
   static {
     PARQUET_DEFAULT_BLOCK_SIZE = Integer.toString(DEFAULT_BLOCK_SIZE);
     PARQUET_DEFAULT_PAGE_SIZE = Integer.toString(DEFAULT_PAGE_SIZE);
diff --git a/tajo-common/src/main/java/org/apache/tajo/util/StringUtils.java b/tajo-common/src/main/java/org/apache/tajo/util/StringUtils.java
index b03634d..f97c6ba 100644
--- a/tajo-common/src/main/java/org/apache/tajo/util/StringUtils.java
+++ b/tajo-common/src/main/java/org/apache/tajo/util/StringUtils.java
@@ -27,6 +27,7 @@
 import org.apache.hadoop.util.Shell;
 import org.apache.hadoop.util.ShutdownHookManager;
 import org.apache.hadoop.util.SignalLogger;
+import org.apache.tajo.storage.StorageConstants;
 
 import java.nio.ByteBuffer;
 import java.nio.CharBuffer;
@@ -259,7 +260,7 @@
   public static String escapePathName(String path, String defaultPath) {
     if (path == null || path.length() == 0) {
       if (defaultPath == null) {
-        return "__TAJO_DEFAULT_PARTITION__";
+        return StorageConstants.DEFAULT_PARTITION_NAME;
       } else {
         return defaultPath;
       }
diff --git a/tajo-core-tests/src/test/java/org/apache/tajo/cli/tsql/TestTajoCli.java b/tajo-core-tests/src/test/java/org/apache/tajo/cli/tsql/TestTajoCli.java
index 4e75aa0..fe2f867 100644
--- a/tajo-core-tests/src/test/java/org/apache/tajo/cli/tsql/TestTajoCli.java
+++ b/tajo-core-tests/src/test/java/org/apache/tajo/cli/tsql/TestTajoCli.java
@@ -295,6 +295,7 @@
 
   @Test
   public void testSelectResultWithNullFalse() throws Exception {
+    setVar(tajoCli, SessionVars.CLI_NULL_CHAR, "testnull");
     String sql =
       "select\n" +
         "  c_custkey,\n" +
diff --git a/tajo-core-tests/src/test/java/org/apache/tajo/client/TestTajoClient.java b/tajo-core-tests/src/test/java/org/apache/tajo/client/TestTajoClient.java
index 75a0ad0..1007642 100644
--- a/tajo-core-tests/src/test/java/org/apache/tajo/client/TestTajoClient.java
+++ b/tajo-core-tests/src/test/java/org/apache/tajo/client/TestTajoClient.java
@@ -675,7 +675,7 @@
         count++;
       }
 
-      assertEquals(5, count);
+      assertEquals(8, count);
     } finally {
       client.closeQuery(queryId);
     }
@@ -729,7 +729,13 @@
         "2|2|O\n" +
         "3|3|F\n" +
         "4||\\T\n" +
-        "5||\\T\n";
+        "5||\\T\n" +
+        "||\\T\n" +
+        "||\\T\n" +
+        "||\\T\n" +
+        "||\\T\n" +
+        "||\\T\n" +
+        "||\\T\n";
 
     String resultDatas = new String(buf, 0, readBytes);
 
@@ -770,7 +776,7 @@
         return o1.getExecutionBlockId().compareTo(o2.getExecutionBlockId());
       }
     });
-    assertEquals(5, taskHistories.get(0).getTotalReadRows());
+    assertEquals(8, taskHistories.get(0).getTotalReadRows());
     assertEquals(1, taskHistories.get(0).getTotalWriteRows());
     assertEquals(1, taskHistories.get(1).getTotalReadRows());
     assertEquals(1, taskHistories.get(1).getTotalWriteRows());
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 62cbd9e..fa658ad 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
@@ -25,8 +25,6 @@
 import org.apache.tajo.catalog.Schema;
 import org.apache.tajo.catalog.SchemaBuilder;
 import org.apache.tajo.common.TajoDataTypes;
-import org.apache.tajo.storage.StorageConstants;
-import org.apache.tajo.util.KeyValueSet;
 import org.junit.Test;
 import org.junit.experimental.categories.Category;
 
@@ -50,16 +48,12 @@
 
   @Test
   public void testMaxLongWithNull() throws Exception {
-    KeyValueSet tableOptions = new KeyValueSet();
-    tableOptions.set(StorageConstants.TEXT_DELIMITER, StorageConstants.DEFAULT_FIELD_DELIMITER);
-    tableOptions.set(StorageConstants.TEXT_NULL, "\\\\N");
-
     Schema schema = SchemaBuilder.builder()
         .add("id", TajoDataTypes.Type.INT4)
         .add("value", TajoDataTypes.Type.INT8)
         .build();
     String[] data = new String[]{ "1|-111", "2|\\N", "3|-333" };
-    TajoTestingCluster.createTable("testbuiltin11", schema, tableOptions, data, 1);
+    TajoTestingCluster.createTable(conf, "testbuiltin11", schema, data, 1);
 
     try {
       ResultSet res = executeString("select max(value) as max_value from testbuiltin11");
@@ -77,15 +71,11 @@
 
   @Test
   public void testMinMaxDate() throws Exception {
-    KeyValueSet tableOptions = new KeyValueSet();
-    tableOptions.set(StorageConstants.TEXT_DELIMITER, StorageConstants.DEFAULT_FIELD_DELIMITER);
-    tableOptions.set(StorageConstants.TEXT_NULL, "\\\\N");
-
     Schema schema = SchemaBuilder.builder()
         .add("value", TajoDataTypes.Type.DATE)
         .build();
     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);
+    TajoTestingCluster.createTable(conf, "testbuiltin11", schema, data, 1);
 
     try {
       ResultSet res = executeString("select min(value) as min_value, max(value) as max_value from testbuiltin11");
@@ -102,15 +92,11 @@
 
   @Test
   public void testMinMaxDateWithNull() throws Exception {
-    KeyValueSet tableOptions = new KeyValueSet();
-    tableOptions.set(StorageConstants.TEXT_DELIMITER, StorageConstants.DEFAULT_FIELD_DELIMITER);
-    tableOptions.set(StorageConstants.TEXT_NULL, "\\\\N");
-
     Schema schema = SchemaBuilder.builder()
         .add("value", TajoDataTypes.Type.DATE)
         .build();
     String[] data = new String[]{ "2014-01-02", "2014-12-01", "\\N", "\\N", "2000-03-01" };
-    TajoTestingCluster.createTable("testbuiltin11", schema, tableOptions, data, 1);
+    TajoTestingCluster.createTable(conf, "testbuiltin11", schema, data, 1);
 
     try {
       ResultSet res = executeString("select min(value) as min_value, max(value) as max_value from testbuiltin11");
@@ -127,15 +113,11 @@
 
   @Test
   public void testMinMaxTime() throws Exception {
-    KeyValueSet tableOptions = new KeyValueSet();
-    tableOptions.set(StorageConstants.TEXT_DELIMITER, StorageConstants.DEFAULT_FIELD_DELIMITER);
-    tableOptions.set(StorageConstants.TEXT_NULL, "\\\\N");
-
     Schema schema = SchemaBuilder.builder()
         .add("value", TajoDataTypes.Type.TIME)
         .build();
     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);
+    TajoTestingCluster.createTable(conf, "testbuiltin11", schema, data, 1);
 
     try {
       ResultSet res = executeString("select min(value) as min_value, max(value) as max_value from testbuiltin11");
@@ -152,15 +134,11 @@
 
   @Test
   public void testMinMaxTimeWithNull() throws Exception {
-    KeyValueSet tableOptions = new KeyValueSet();
-    tableOptions.set(StorageConstants.TEXT_DELIMITER, StorageConstants.DEFAULT_FIELD_DELIMITER);
-    tableOptions.set(StorageConstants.TEXT_NULL, "\\\\N");
-
     Schema schema = SchemaBuilder.builder()
         .add("value", TajoDataTypes.Type.TIME)
         .build();
     String[] data = new String[]{ "11:11:11", "\\N", "\\N", "09:59:59", "12:13:14" };
-    TajoTestingCluster.createTable("testbuiltin11", schema, tableOptions, data, 1);
+    TajoTestingCluster.createTable(conf, "testbuiltin11", schema, data, 1);
 
     try {
       ResultSet res = executeString("select min(value) as min_value, max(value) as max_value from testbuiltin11");
@@ -177,16 +155,12 @@
 
   @Test
   public void testMinMaxTimestamp() throws Exception {
-    KeyValueSet tableOptions = new KeyValueSet();
-    tableOptions.set(StorageConstants.TEXT_DELIMITER, StorageConstants.DEFAULT_FIELD_DELIMITER);
-    tableOptions.set(StorageConstants.TEXT_NULL, "\\\\N");
-
     Schema schema = SchemaBuilder.builder()
         .add("value", TajoDataTypes.Type.TIMESTAMP)
         .build();
     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" };
-    TajoTestingCluster.createTable("testbuiltin11", schema, tableOptions, data, 1);
+    TajoTestingCluster.createTable(conf, "testbuiltin11", schema, data, 1);
 
     try {
       ResultSet res = executeString("select min(value) as min_value, max(value) as max_value from testbuiltin11");
@@ -203,14 +177,10 @@
 
   @Test
   public void testMinMaxTimestampWithNull() throws Exception {
-    KeyValueSet tableOptions = new KeyValueSet();
-    tableOptions.set(StorageConstants.TEXT_DELIMITER, StorageConstants.DEFAULT_FIELD_DELIMITER);
-    tableOptions.set(StorageConstants.TEXT_NULL, "\\\\N");
-
     Schema schema = SchemaBuilder.builder().add("value", TajoDataTypes.Type.TIMESTAMP).build();
     String[] data = new String[]{ "1999-01-01 11:11:11", "2015-01-01 23:12:50", "\\N",
             "\\N", "2002-11-21 12:13:14" };
-    TajoTestingCluster.createTable("testbuiltin11", schema, tableOptions, data, 1);
+    TajoTestingCluster.createTable(conf, "testbuiltin11", schema, data, 1);
 
     try {
       ResultSet res = executeString("select min(value) as min_value, max(value) as max_value from testbuiltin11");
@@ -234,16 +204,12 @@
 
   @Test
   public void testMinLongWithNull() throws Exception {
-    KeyValueSet tableOptions = new KeyValueSet();
-    tableOptions.set(StorageConstants.TEXT_DELIMITER, StorageConstants.DEFAULT_FIELD_DELIMITER);
-    tableOptions.set(StorageConstants.TEXT_NULL, "\\\\N");
-
     Schema schema = SchemaBuilder.builder()
         .add("id", TajoDataTypes.Type.INT4)
         .add("value", TajoDataTypes.Type.INT8)
         .build();
     String[] data = new String[]{ "1|111", "2|\\N", "3|333" };
-    TajoTestingCluster.createTable("testbuiltin11", schema, tableOptions, data, 1);
+    TajoTestingCluster.createTable(conf, "testbuiltin11", schema, data, 1);
 
     try {
       ResultSet res = executeString("select min(value) as min_value from testbuiltin11");
@@ -268,16 +234,12 @@
 
   @Test
   public void testMaxStringWithNull() throws Exception {
-    KeyValueSet tableOptions = new KeyValueSet();
-    tableOptions.set(StorageConstants.TEXT_DELIMITER, StorageConstants.DEFAULT_FIELD_DELIMITER);
-    tableOptions.set(StorageConstants.TEXT_NULL, "\\\\N");
-
     Schema schema = SchemaBuilder.builder()
         .add("id", TajoDataTypes.Type.INT4)
         .add("name", TajoDataTypes.Type.TEXT)
         .build();
     String[] data = new String[]{ "1|\\N", "2|\\N", "3|\\N" };
-    TajoTestingCluster.createTable("testbuiltin11", schema, tableOptions, data, 1);
+    TajoTestingCluster.createTable(conf, "testbuiltin11", schema, data, 1);
 
     try {
       ResultSet res = executeString("select max(name) as max_name from testbuiltin11");
@@ -302,16 +264,12 @@
 
   @Test
   public void testMinStringWithNull() throws Exception {
-    KeyValueSet tableOptions = new KeyValueSet();
-    tableOptions.set(StorageConstants.TEXT_DELIMITER, StorageConstants.DEFAULT_FIELD_DELIMITER);
-    tableOptions.set(StorageConstants.TEXT_NULL, "\\\\N");
-
     Schema schema = SchemaBuilder.builder()
         .add("id", TajoDataTypes.Type.INT4)
         .add("name", TajoDataTypes.Type.TEXT)
         .build();
     String[] data = new String[]{ "1|def", "2|\\N", "3|abc" };
-    TajoTestingCluster.createTable("testbuiltin11", schema, tableOptions, data, 1);
+    TajoTestingCluster.createTable(conf, "testbuiltin11", schema, data, 1);
 
     try {
       ResultSet res = executeString("select min(name) as min_name from testbuiltin11");
@@ -364,10 +322,6 @@
 
   @Test
   public void testAvgWithNull() throws Exception {
-    KeyValueSet tableOptions = new KeyValueSet();
-    tableOptions.set(StorageConstants.TEXT_DELIMITER, StorageConstants.DEFAULT_FIELD_DELIMITER);
-    tableOptions.set(StorageConstants.TEXT_NULL, "\\\\N");
-
     Schema schema = SchemaBuilder.builder()
         .add("id", TajoDataTypes.Type.INT4)
         .add("value_int", TajoDataTypes.Type.INT4)
@@ -376,7 +330,7 @@
         .add("value_double", TajoDataTypes.Type.FLOAT8)
         .build();
     String[] data = new String[]{ "1|\\N|-111|1.2|-50.5", "2|1|\\N|\\N|52.5", "3|2|-333|2.8|\\N" };
-    TajoTestingCluster.createTable("testbuiltin11", schema, tableOptions, data, 1);
+    TajoTestingCluster.createTable(conf, "testbuiltin11", schema, data, 1);
 
     try {
       ResultSet res = executeString("select avg(value_int) as avg_int, avg(value_long) as avg_long, avg(value_float) as avg_float, avg(value_double) as avg_double from testbuiltin11");
@@ -394,10 +348,6 @@
 
   @Test
   public void testAvgWithAllNulls() throws Exception {
-    KeyValueSet tableOptions = new KeyValueSet();
-    tableOptions.set(StorageConstants.TEXT_DELIMITER, StorageConstants.DEFAULT_FIELD_DELIMITER);
-    tableOptions.set(StorageConstants.TEXT_NULL, "\\\\N");
-
     Schema schema = SchemaBuilder.builder()
         .add("id", TajoDataTypes.Type.INT4)
         .add("value_int", TajoDataTypes.Type.INT4)
@@ -406,7 +356,7 @@
         .add("value_double", TajoDataTypes.Type.FLOAT8)
         .build();
     String[] data = new String[]{ "1|\\N|\\N|\\N|\\N", "2|\\N|\\N|\\N|\\N", "3|\\N|\\N|\\N|\\N" };
-    TajoTestingCluster.createTable("testbuiltin11", schema, tableOptions, data, 1);
+    TajoTestingCluster.createTable(conf, "testbuiltin11", schema, data, 1);
 
     try {
       ResultSet res = executeString("select avg(value_int) as avg_int, avg(value_long) as avg_long, avg(value_float) as avg_float, avg(value_double) as avg_double from testbuiltin11");
@@ -424,10 +374,6 @@
 
   @Test
   public void testSumWithNull() throws Exception {
-    KeyValueSet tableOptions = new KeyValueSet();
-    tableOptions.set(StorageConstants.TEXT_DELIMITER, StorageConstants.DEFAULT_FIELD_DELIMITER);
-    tableOptions.set(StorageConstants.TEXT_NULL, "\\\\N");
-
     Schema schema = SchemaBuilder.builder()
         .add("id", TajoDataTypes.Type.INT4)
         .add("value_int", TajoDataTypes.Type.INT4)
@@ -436,7 +382,7 @@
         .add("value_double", TajoDataTypes.Type.FLOAT8)
         .build();
     String[] data = new String[]{ "1|\\N|-111|1.2|-50.5", "2|1|\\N|\\N|52.5", "3|2|-333|2.8|\\N" };
-    TajoTestingCluster.createTable("testbuiltin11", schema, tableOptions, data, 1);
+    TajoTestingCluster.createTable(conf, "testbuiltin11", schema, data, 1);
 
     try {
       ResultSet res = executeString("select sum(value_int) as sum_int, sum(value_long) as sum_long, sum(value_float) as sum_float, sum(value_double) as sum_double from testbuiltin11");
@@ -454,10 +400,6 @@
 
   @Test
   public void testSumWithAllNulls() throws Exception {
-    KeyValueSet tableOptions = new KeyValueSet();
-    tableOptions.set(StorageConstants.TEXT_DELIMITER, StorageConstants.DEFAULT_FIELD_DELIMITER);
-    tableOptions.set(StorageConstants.TEXT_NULL, "\\\\N");
-
     Schema schema = SchemaBuilder.builder()
         .add("id", TajoDataTypes.Type.INT4)
         .add("value_int", TajoDataTypes.Type.INT4)
@@ -466,7 +408,7 @@
         .add("value_double", TajoDataTypes.Type.FLOAT8)
         .build();
     String[] data = new String[]{ "1|\\N|\\N|\\N|\\N", "2|\\N|\\N|\\N|\\N", "3|\\N|\\N|\\N|\\N" };
-    TajoTestingCluster.createTable("testbuiltin11", schema, tableOptions, data, 1);
+    TajoTestingCluster.createTable(conf, "testbuiltin11", schema, data, 1);
 
     try {
       ResultSet res = executeString("select sum(value_int) as sum_int, sum(value_long) as sum_long, sum(value_float) as sum_float, sum(value_double) as sum_double from testbuiltin11");
@@ -484,10 +426,6 @@
 
   @Test
   public void testStdDevSamp() throws Exception {
-    KeyValueSet tableOptions = new KeyValueSet();
-    tableOptions.set(StorageConstants.TEXT_DELIMITER, StorageConstants.DEFAULT_FIELD_DELIMITER);
-    tableOptions.set(StorageConstants.TEXT_NULL, "\\\\N");
-
     Schema schema = SchemaBuilder.builder()
         .add("id", TajoDataTypes.Type.INT4)
         .add("value_int", TajoDataTypes.Type.INT4)
@@ -499,7 +437,7 @@
         "1|\\N|-111|1.2|-50.5",
         "2|1|\\N|\\N|52.5",
         "3|2|-333|2.8|\\N" };
-    TajoTestingCluster.createTable("testbuiltin11", schema, tableOptions, data, 1);
+    TajoTestingCluster.createTable(conf, "testbuiltin11", schema, data, 1);
 
     try {
       ResultSet res = executeString("select stddev_samp(value_int) as sdsamp_int, stddev_samp(value_long) as sdsamp_long, stddev_samp(value_float) as sdsamp_float, stddev_samp(value_double) as sdsamp_double from testbuiltin11");
@@ -517,10 +455,6 @@
 
   @Test
   public void testStdDevSampWithFewNumbers() throws Exception {
-    KeyValueSet tableOptions = new KeyValueSet();
-    tableOptions.set(StorageConstants.TEXT_DELIMITER, StorageConstants.DEFAULT_FIELD_DELIMITER);
-    tableOptions.set(StorageConstants.TEXT_NULL, "\\\\N");
-
     Schema schema = SchemaBuilder.builder()
         .add("id", TajoDataTypes.Type.INT4)
         .add("value_int", TajoDataTypes.Type.INT4)
@@ -532,7 +466,7 @@
         "1|\\N|\\N|\\N|-50.5",
         "2|1|\\N|\\N|\\N",
         "3|\\N|\\N|\\N|\\N" };
-    TajoTestingCluster.createTable("testbuiltin11", schema, tableOptions, data, 1);
+    TajoTestingCluster.createTable(conf, "testbuiltin11", schema, data, 1);
 
     try {
       ResultSet res = executeString("select stddev_samp(value_int) as sdsamp_int, stddev_samp(value_long) as sdsamp_long, stddev_samp(value_float) as sdsamp_float, stddev_samp(value_double) as sdsamp_double from testbuiltin11");
@@ -550,10 +484,6 @@
 
   @Test
   public void testStdDevPop() throws Exception {
-    KeyValueSet tableOptions = new KeyValueSet();
-    tableOptions.set(StorageConstants.TEXT_DELIMITER, StorageConstants.DEFAULT_FIELD_DELIMITER);
-    tableOptions.set(StorageConstants.TEXT_NULL, "\\\\N");
-
     Schema schema = SchemaBuilder.builder()
         .add("id", TajoDataTypes.Type.INT4)
         .add("value_int", TajoDataTypes.Type.INT4)
@@ -565,7 +495,7 @@
         "1|\\N|-111|1.2|-50.5",
         "2|1|\\N|\\N|52.5",
         "3|2|-333|2.8|\\N" };
-    TajoTestingCluster.createTable("testbuiltin11", schema, tableOptions, data, 1);
+    TajoTestingCluster.createTable(conf, "testbuiltin11", schema, data, 1);
 
     try {
       ResultSet res = executeString("select stddev_pop(value_int) as sdpop_int, stddev_pop(value_long) as sdpop_long, stddev_pop(value_float) as sdpop_float, stddev_pop(value_double) as sdpop_double from testbuiltin11");
@@ -583,10 +513,6 @@
 
   @Test
   public void testStdDevPopWithFewNumbers() throws Exception {
-    KeyValueSet tableOptions = new KeyValueSet();
-    tableOptions.set(StorageConstants.TEXT_DELIMITER, StorageConstants.DEFAULT_FIELD_DELIMITER);
-    tableOptions.set(StorageConstants.TEXT_NULL, "\\\\N");
-
     Schema schema = SchemaBuilder.builder()
         .add("id", TajoDataTypes.Type.INT4)
         .add("value_int", TajoDataTypes.Type.INT4)
@@ -598,7 +524,7 @@
         "1|\\N|\\N|\\N|-50.5",
         "2|1|\\N|\\N|\\N",
         "3|\\N|\\N|\\N|\\N" };
-    TajoTestingCluster.createTable("testbuiltin11", schema, tableOptions, data, 1);
+    TajoTestingCluster.createTable(conf, "testbuiltin11", schema, data, 1);
 
     try {
       ResultSet res = executeString("select stddev_pop(value_int) as sdpop_int, stddev_pop(value_long) as sdpop_long, stddev_pop(value_float) as sdpop_float, stddev_pop(value_double) as sdpop_double from testbuiltin11");
@@ -616,10 +542,6 @@
 
   @Test
   public void testVarSamp() throws Exception {
-    KeyValueSet tableOptions = new KeyValueSet();
-    tableOptions.set(StorageConstants.TEXT_DELIMITER, StorageConstants.DEFAULT_FIELD_DELIMITER);
-    tableOptions.set(StorageConstants.TEXT_NULL, "\\\\N");
-
     Schema schema = SchemaBuilder.builder()
         .add("id", TajoDataTypes.Type.INT4)
         .add("value_int", TajoDataTypes.Type.INT4)
@@ -631,7 +553,7 @@
             "1|\\N|-111|1.2|-50.5",
             "2|1|\\N|\\N|52.5",
             "3|2|-333|2.8|\\N" };
-    TajoTestingCluster.createTable("testbuiltin11", schema, tableOptions, data, 1);
+    TajoTestingCluster.createTable(conf, "testbuiltin11", schema, data, 1);
 
     try {
       ResultSet res = executeString("select var_samp(value_int) as vs_int, var_samp(value_long) as vs_long, var_samp(value_float) as vs_float, var_samp(value_double) as vs_double from testbuiltin11");
@@ -648,10 +570,6 @@
 
   @Test
   public void testVarSampWithFewNumbers() throws Exception {
-    KeyValueSet tableOptions = new KeyValueSet();
-    tableOptions.set(StorageConstants.TEXT_DELIMITER, StorageConstants.DEFAULT_FIELD_DELIMITER);
-    tableOptions.set(StorageConstants.TEXT_NULL, "\\\\N");
-
     Schema schema = SchemaBuilder.builder()
         .add("id", TajoDataTypes.Type.INT4)
         .add("value_int", TajoDataTypes.Type.INT4)
@@ -663,7 +581,7 @@
             "1|\\N|\\N|\\N|-50.5",
             "2|1|\\N|\\N|\\N",
             "3|\\N|\\N|\\N|\\N" };
-    TajoTestingCluster.createTable("testbuiltin11", schema, tableOptions, data, 1);
+    TajoTestingCluster.createTable(conf, "testbuiltin11", schema, data, 1);
 
     try {
       ResultSet res = executeString("select var_samp(value_int) as vsamp_int, var_samp(value_long) as vsamp_long, var_samp(value_float) as vsamp_float, var_samp(value_double) as vsamp_double from testbuiltin11");
@@ -680,10 +598,6 @@
 
   @Test
   public void testVarPop() throws Exception {
-    KeyValueSet tableOptions = new KeyValueSet();
-    tableOptions.set(StorageConstants.TEXT_DELIMITER, StorageConstants.DEFAULT_FIELD_DELIMITER);
-    tableOptions.set(StorageConstants.TEXT_NULL, "\\\\N");
-
     Schema schema = SchemaBuilder.builder()
         .add("id", TajoDataTypes.Type.INT4)
         .add("value_int", TajoDataTypes.Type.INT4)
@@ -695,7 +609,7 @@
             "1|\\N|-111|1.2|-50.5",
             "2|1|\\N|\\N|52.5",
             "3|2|-333|2.8|\\N" };
-    TajoTestingCluster.createTable("testbuiltin11", schema, tableOptions, data, 1);
+    TajoTestingCluster.createTable(conf, "testbuiltin11", schema, data, 1);
 
     try {
       ResultSet res = executeString("select var_pop(value_int) as vpop_int, var_pop(value_long) as vpop_long, var_pop(value_float) as vpop_float, var_pop(value_double) as vpop_double from testbuiltin11");
@@ -712,9 +626,6 @@
 
   @Test
   public void testVarPopWithFewNumbers() throws Exception {
-    KeyValueSet tableOptions = new KeyValueSet();
-    tableOptions.set(StorageConstants.TEXT_DELIMITER, StorageConstants.DEFAULT_FIELD_DELIMITER);
-    tableOptions.set(StorageConstants.TEXT_NULL, "\\\\N");
 
     Schema schema = SchemaBuilder.builder()
         .add("id", TajoDataTypes.Type.INT4)
@@ -727,7 +638,7 @@
             "1|\\N|\\N|\\N|-50.5",
             "2|1|\\N|\\N|\\N",
             "3|\\N|\\N|\\N|\\N" };
-    TajoTestingCluster.createTable("testbuiltin11", schema, tableOptions, data, 1);
+    TajoTestingCluster.createTable(conf, "testbuiltin11", schema, data, 1);
 
     try {
       ResultSet res = executeString("select var_pop(value_int) as vpop_int, var_pop(value_long) as vpop_long, var_pop(value_float) as vpop_float, var_pop(value_double) as vpop_double from testbuiltin11");
@@ -774,21 +685,17 @@
   
   @Test
   public void testRankWithTwoTables() throws Exception {
-    KeyValueSet tableOptions = new KeyValueSet();
-    tableOptions.set(StorageConstants.TEXT_DELIMITER, StorageConstants.DEFAULT_FIELD_DELIMITER);
-    tableOptions.set(StorageConstants.TEXT_NULL, "\\\\N");
-
     Schema schema = SchemaBuilder.builder()
         .add("id", TajoDataTypes.Type.INT4)
         .build();
     String[] data = new String[] {"1", "3", "2", "4"};
-    TajoTestingCluster.createTable("rank_table1", schema, tableOptions, data, 1);
+    TajoTestingCluster.createTable(conf, "rank_table1", schema, data, 1);
     schema = SchemaBuilder.builder()
         .add("refid", TajoDataTypes.Type.INT4)
         .add("value", TajoDataTypes.Type.TEXT)
         .build();
     data = new String[] {"1|efgh", "2|abcd", "4|erjk", "8|dfef"};
-    TajoTestingCluster.createTable("rank_table2", schema, tableOptions, data, 1);
+    TajoTestingCluster.createTable(conf, "rank_table2", schema, data, 1);
     ResultSet res = null;
     
     try {
@@ -814,10 +721,6 @@
 
   @Test
   public void testCorr() throws Exception {
-    KeyValueSet tableOptions = new KeyValueSet();
-    tableOptions.set(StorageConstants.TEXT_DELIMITER, StorageConstants.DEFAULT_FIELD_DELIMITER);
-    tableOptions.set(StorageConstants.TEXT_NULL, "\\\\N");
-
     Schema schema = SchemaBuilder.builder()
         .add("id", TajoDataTypes.Type.INT4)
         .add("value_int", TajoDataTypes.Type.INT4)
@@ -831,7 +734,7 @@
         "3|2|-333|2.8|\\N",
         "4|3|-555|2.8|43.2",
         "5|4|-111|1.1|10.2",};
-    TajoTestingCluster.createTable("testbuiltin11", schema, tableOptions, data, 1);
+    TajoTestingCluster.createTable(conf, "testbuiltin11", schema, data, 1);
 
     try {
       ResultSet res = executeString("select corr(value_int, value_long) as corr1, corr(value_long, value_float) as corr2, corr(value_float, value_double) as corr3, corr(value_double, value_int) as corr4 from testbuiltin11");
diff --git a/tajo-core-tests/src/test/java/org/apache/tajo/engine/query/TestAlterTable.java b/tajo-core-tests/src/test/java/org/apache/tajo/engine/query/TestAlterTable.java
index 4c9f367..3b47bff 100644
--- a/tajo-core-tests/src/test/java/org/apache/tajo/engine/query/TestAlterTable.java
+++ b/tajo-core-tests/src/test/java/org/apache/tajo/engine/query/TestAlterTable.java
@@ -27,6 +27,7 @@
 import org.apache.tajo.catalog.TableDesc;
 import org.apache.tajo.catalog.proto.CatalogProtos;
 import org.apache.tajo.exception.*;
+import org.apache.tajo.storage.StorageConstants;
 import org.junit.After;
 import org.junit.Before;
 import org.junit.Test;
@@ -159,12 +160,15 @@
       "36.0,N,1,1\n" +
       "38.0,N,2,2\n" +
       "45.0,R,3,2\n" +
-      "49.0,R,3,3\n";
+      "49.0,R,3,3\n" +
+      "null,null,null,null\n" +
+      "null,null,null,null\n" +
+      "null,null,null,null\n";
 
     res.close();
     assertEquals(expectedResult, result);
 
-    verifyPartitionCount(getCurrentDatabase(), simpleTableName, 4);
+    verifyPartitionCount(getCurrentDatabase(), simpleTableName, 5);
 
     Path tablePath = new Path(tableDesc.getUri());
     FileSystem fs = tablePath.getFileSystem(conf);
@@ -179,6 +183,7 @@
     executeString("ALTER TABLE " + simpleTableName + " DROP PARTITION (col1 = 2 , col2 = 2)").close();
     executeString("ALTER TABLE " + simpleTableName + " DROP PARTITION (col1 = 3 , col2 = 2)").close();
     executeString("ALTER TABLE " + simpleTableName + " DROP PARTITION (col1 = 3 , col2 = 3)").close();
+    executeString("ALTER TABLE " + simpleTableName + " DROP PARTITION (col1 = null , col2 = null)").close();
 
     verifyPartitionCount(getCurrentDatabase(), simpleTableName, 0);
 
@@ -187,28 +192,29 @@
     assertTrue(fs.isDirectory(new Path(tablePath.toUri() + "/col1=2/col2=2")));
     assertTrue(fs.isDirectory(new Path(tablePath.toUri() + "/col1=3/col2=2")));
     assertTrue(fs.isDirectory(new Path(tablePath.toUri() + "/col1=3/col2=3")));
+    assertTrue(fs.isDirectory(new Path(tablePath.toUri() + "/col1=" + StorageConstants.DEFAULT_PARTITION_NAME +
+        "/col2=" + StorageConstants.DEFAULT_PARTITION_NAME)));
 
     executeString("ALTER TABLE " + simpleTableName + " REPAIR PARTITION").close();
-    verifyPartitionCount(getCurrentDatabase(), simpleTableName, 4);
+    verifyPartitionCount(getCurrentDatabase(), simpleTableName, 5);
 
     // Remove just one of existing partitions
     executeString("ALTER TABLE " + simpleTableName + " DROP PARTITION (col1 = 3 , col2 = 3)").close();
     executeString("ALTER TABLE " + simpleTableName + " REPAIR PARTITION").close();
-    verifyPartitionCount(getCurrentDatabase(), simpleTableName, 4);
+    verifyPartitionCount(getCurrentDatabase(), simpleTableName, 5);
 
     // Remove a partition directory from filesystem
     fs.delete(new Path(tablePath.toUri() + "/col1=3/col2=3"), true);
     executeString("ALTER TABLE " + simpleTableName + " REPAIR PARTITION").close();
-    verifyPartitionCount(getCurrentDatabase(), simpleTableName, 4);
+    verifyPartitionCount(getCurrentDatabase(), simpleTableName, 5);
 
     // Add abnormal directories
     assertTrue(fs.mkdirs(new Path(tablePath.toUri() + "/col10=1/col20=1")));
     assertTrue(fs.mkdirs(new Path(tablePath.toUri() + "/col1=")));
     assertTrue(fs.mkdirs(new Path(tablePath.toUri() + "/test")));
-    assertEquals(6, fs.listStatus(new Path(tablePath.toUri())).length);
 
     executeString("ALTER TABLE " + simpleTableName + " REPAIR PARTITION").close();
-    verifyPartitionCount(getCurrentDatabase(), simpleTableName, 4);
+    verifyPartitionCount(getCurrentDatabase(), simpleTableName, 5);
     catalog.dropTable(tableName);
   }
 
@@ -225,7 +231,7 @@
     TableDesc tableDesc = catalog.getTableDesc(databaseName, tableName);
     assertNotNull(tableDesc);
 
-    verifyPartitionCount(databaseName, tableName, 5);
+    verifyPartitionCount(databaseName, tableName, 6);
 
     ResultSet res = executeString("SELECT * FROM " + canonicalTableName + " ORDER BY col1, col2 desc, key desc;");
     String result = resultSetToString(res);
@@ -235,7 +241,10 @@
       "1,1,17.0\n" +
       "2,2,38.0\n" +
       "3,3,49.0\n" +
-      "3,2,45.0\n";
+      "3,2,45.0\n" +
+      "null,null,null\n" +
+      "null,null,null\n" +
+      "null,null,null\n";
     res.close();
     assertEquals(expectedResult, result);
 
@@ -246,7 +255,7 @@
 
     executeString("ALTER TABLE " + canonicalTableName + " REPAIR PARTITION").close();
 
-    verifyPartitionCount(databaseName, tableName, 5);
+    verifyPartitionCount(databaseName, tableName, 6);
 
     res = executeString("SELECT * FROM " + canonicalTableName + " ORDER BY col1, col2 desc, key desc;");
     result = resultSetToString(res);
@@ -269,7 +278,7 @@
     TableDesc tableDesc = catalog.getTableDesc(databaseName, tableName);
     assertNotNull(tableDesc);
 
-    verifyPartitionCount(databaseName, tableName, 5);
+    verifyPartitionCount(databaseName, tableName, 6);
 
     ResultSet res = executeString("SELECT * FROM " + canonicalTableName + " ORDER BY col1, col2 desc, key desc;");
     String result = resultSetToString(res);
@@ -279,7 +288,10 @@
       "1,1,17.0\n" +
       "2,2,38.0\n" +
       "3,3,49.0\n" +
-      "3,2,45.0\n";
+      "3,2,45.0\n" +
+      "null,null,null\n" +
+      "null,null,null\n" +
+      "null,null,null\n";
     res.close();
     assertEquals(expectedResult, result);
 
@@ -298,11 +310,10 @@
     fs.mkdirs(path);
     path = new Path(tableDesc.getUri().getPath(), "col1=a");
     fs.mkdirs(path);
-    assertEquals(9, fs.listStatus(path.getParent()).length);
 
     executeString("ALTER TABLE " + canonicalTableName + " REPAIR PARTITION").close();
 
-    verifyPartitionCount(databaseName, tableName, 7);
+    verifyPartitionCount(databaseName, tableName, 8);
 
     res = executeString("SELECT * FROM " + canonicalTableName + " ORDER BY col1, col2 desc, key desc;");
     result = resultSetToString(res);
@@ -325,7 +336,7 @@
     TableDesc tableDesc = catalog.getTableDesc(databaseName, tableName);
     assertNotNull(tableDesc);
 
-    verifyPartitionCount(databaseName, tableName, 5);
+    verifyPartitionCount(databaseName, tableName, 6);
 
     ResultSet res = executeString("SELECT * FROM " + canonicalTableName + " ORDER BY col1, col2 desc, key desc;");
     String result = resultSetToString(res);
@@ -335,7 +346,10 @@
       "1,1,1996-03-13\n" +
       "2,2,1997-01-28\n" +
       "3,3,1993-11-09\n" +
-      "3,2,1994-02-02\n";
+      "3,2,1994-02-02\n" +
+      "null,null,null\n" +
+      "null,null,null\n" +
+      "null,null,null\n";
     res.close();
     assertEquals(expectedResult, result);
 
@@ -346,7 +360,7 @@
 
     executeString("ALTER TABLE " + canonicalTableName + " REPAIR PARTITION").close();
 
-    verifyPartitionCount(databaseName, tableName, 5);
+    verifyPartitionCount(databaseName, tableName, 6);
 
     res = executeString("SELECT * FROM " + canonicalTableName + " ORDER BY col1, col2 desc, key desc;");
     result = resultSetToString(res);
@@ -369,7 +383,7 @@
     TableDesc tableDesc = catalog.getTableDesc(databaseName, tableName);
     assertNotNull(tableDesc);
 
-    verifyPartitionCount(databaseName, tableName, 5);
+    verifyPartitionCount(databaseName, tableName, 6);
 
     ResultSet res = executeString("SELECT * FROM " + canonicalTableName + " ORDER BY col1, col2 desc, key desc;");
     String result = resultSetToString(res);
@@ -379,7 +393,10 @@
       "1,1,1996-03-13 00:00:00\n" +
       "2,2,1997-01-28 00:00:00\n" +
       "3,3,1993-11-09 00:00:00\n" +
-      "3,2,1994-02-02 00:00:00\n";
+      "3,2,1994-02-02 00:00:00\n" +
+      "null,null,null\n" +
+      "null,null,null\n" +
+      "null,null,null\n";
     res.close();
     assertEquals(expectedResult, result);
 
@@ -390,7 +407,7 @@
 
     executeString("ALTER TABLE " + canonicalTableName + " REPAIR PARTITION").close();
 
-    verifyPartitionCount(databaseName, tableName, 5);
+    verifyPartitionCount(databaseName, tableName, 6);
 
     res = executeString("SELECT * FROM " + canonicalTableName + " ORDER BY col1, col2 desc, key desc;");
     result = resultSetToString(res);
@@ -426,7 +443,10 @@
       "1,1,00:00:00\n" +
       "2,2,12:10:20\n" +
       "3,3,00:00:00\n" +
-      "3,2,12:10:30\n";
+      "3,2,12:10:30\n" +
+      "null,null,00:00:00\n" +
+      "null,null,00:00:00\n" +
+      "null,null,00:00:00\n";
     res.close();
     assertEquals(expectedResult, result);
 
@@ -472,11 +492,14 @@
       "N,1,1,17.0\n" +
       "N,2,2,38.0\n" +
       "R,3,3,49.0\n" +
-      "R,3,2,45.0\n";
+      "R,3,2,45.0\n" +
+      "null,null,null,null\n" +
+      "null,null,null,null\n" +
+      "null,null,null,null\n";
     res.close();
     assertEquals(expectedResult, result);
 
-    verifyPartitionCount(databaseName, tableName, 5);
+    verifyPartitionCount(databaseName, tableName, 6);
 
     // Check the volume of partition
     List<CatalogProtos.PartitionDescProto> partitions = catalog.getPartitionsOfTable(databaseName, tableName);
@@ -491,7 +514,7 @@
 
     executeString("ALTER TABLE " + canonicalTableName + " REPAIR PARTITION").close();
 
-    verifyPartitionCount(databaseName, tableName, 5);
+    verifyPartitionCount(databaseName, tableName, 6);
 
     res = executeString("SELECT * FROM " + canonicalTableName
       + " ORDER BY col1, col2 desc, col3 desc, col4;");    result = resultSetToString(res);
@@ -528,17 +551,25 @@
           sb.append(",");
         }
 
-        switch (colums.get(i).getDataType().getType()) {
-          case TEXT:
-          case TIME:
-          case TIMESTAMP:
-          case DATE:
-            sb.append(partitionColumnValue[0]).append("='").append(partitionColumnValue[1]).append("'");
-            break;
-          default:
-            sb.append(partitionColumnValue[0]).append("=").append(partitionColumnValue[1]);
-            break;
+        final String key = partitionColumnValue[0];
+        final String value;
+        if (partitionColumnValue[1].equalsIgnoreCase(StorageConstants.DEFAULT_PARTITION_NAME)) {
+          value = "null";
+        } else {
+          switch (colums.get(i).getDataType().getType()) {
+            case TEXT:
+            case TIME:
+            case TIMESTAMP:
+            case DATE:
+              value = "'" + partitionColumnValue[1] + "'";
+              break;
+            default:
+              value = partitionColumnValue[1];
+              break;
+          }
         }
+
+        sb.append(key).append("=").append(value);
       }
       sb.append(")");
       executeString(sb.toString()).close();
diff --git a/tajo-core-tests/src/test/java/org/apache/tajo/engine/query/TestCTASQuery.java b/tajo-core-tests/src/test/java/org/apache/tajo/engine/query/TestCTASQuery.java
index 8e0700b..0b2e3f0 100644
--- a/tajo-core-tests/src/test/java/org/apache/tajo/engine/query/TestCTASQuery.java
+++ b/tajo-core-tests/src/test/java/org/apache/tajo/engine/query/TestCTASQuery.java
@@ -79,7 +79,7 @@
     assertTrue(fs.isDirectory(new Path(path.toUri() + "/key=45.0")));
     assertTrue(fs.isDirectory(new Path(path.toUri() + "/key=49.0")));
     if (!testingCluster.isHiveCatalogStoreRunning()) {
-      assertEquals(5, desc.getStats().getNumRows().intValue());
+      assertEquals(8, desc.getStats().getNumRows().intValue());
     }
 
     ResultSet res2 = executeFile("check1.sql");
@@ -122,7 +122,7 @@
     assertTrue(fs.isDirectory(new Path(path.toUri() + "/key=45.0")));
     assertTrue(fs.isDirectory(new Path(path.toUri() + "/key=49.0")));
     if (!cluster.isHiveCatalogStoreRunning()) {
-      assertEquals(5, desc.getStats().getNumRows().intValue());
+      assertEquals(8, desc.getStats().getNumRows().intValue());
     }
 
     ResultSet res2 = executeFile("check2.sql");
diff --git a/tajo-core-tests/src/test/java/org/apache/tajo/engine/query/TestCaseByCases.java b/tajo-core-tests/src/test/java/org/apache/tajo/engine/query/TestCaseByCases.java
index b32ba65..5ae23e5 100644
--- a/tajo-core-tests/src/test/java/org/apache/tajo/engine/query/TestCaseByCases.java
+++ b/tajo-core-tests/src/test/java/org/apache/tajo/engine/query/TestCaseByCases.java
@@ -84,6 +84,9 @@
         "1\n" +
         "2\n" +
         "null\n" +
+        "null\n" +
+        "null\n" +
+        "null\n" +
         "null\n";
 
     assertEquals(expected, resultSetToString(res));
@@ -104,7 +107,10 @@
         "null\n" +
         "null\n" +
         "3\n" +
-        "3\n";
+        "3\n" +
+        "null\n" +
+        "null\n" +
+        "null\n";
 
     assertEquals(expected, resultSetToString(res));
     cleanupQuery(res);
@@ -128,6 +134,9 @@
             "null\n" +
             "2\n" +
             "null\n" +
+            "null\n" +
+            "null\n" +
+            "null\n" +
             "null\n";
 
     assertEquals(expected, resultSetToString(res));
diff --git a/tajo-core-tests/src/test/java/org/apache/tajo/engine/query/TestGroupByQuery.java b/tajo-core-tests/src/test/java/org/apache/tajo/engine/query/TestGroupByQuery.java
index 5df969d..9f8cdbb 100644
--- a/tajo-core-tests/src/test/java/org/apache/tajo/engine/query/TestGroupByQuery.java
+++ b/tajo-core-tests/src/test/java/org/apache/tajo/engine/query/TestGroupByQuery.java
@@ -23,8 +23,6 @@
 import org.apache.tajo.catalog.SchemaBuilder;
 import org.apache.tajo.common.TajoDataTypes.Type;
 import org.apache.tajo.conf.TajoConf.ConfVars;
-import org.apache.tajo.storage.StorageConstants;
-import org.apache.tajo.util.KeyValueSet;
 import org.apache.tajo.util.history.QueryHistory;
 import org.apache.tajo.util.history.StageHistory;
 import org.junit.AfterClass;
@@ -416,11 +414,6 @@
   @Test
   public final void testDistinctAggregationCasebyCase11() throws Exception {
     ResultSet res;
-
-    KeyValueSet tableOptions = new KeyValueSet();
-    tableOptions.set(StorageConstants.TEXT_DELIMITER, StorageConstants.DEFAULT_FIELD_DELIMITER);
-    tableOptions.set(StorageConstants.TEXT_NULL, "\\\\N");
-
     Schema schema = SchemaBuilder.builder()
         .add("id", Type.TEXT)
         .add("code", Type.TEXT)
@@ -428,7 +421,7 @@
         .add("qty2", Type.FLOAT8)
         .build();
     String[] data = new String[]{"1|a|3|3.0", "1|a|4|4.0", "1|b|5|5.0", "2|a|1|6.0", "2|c|2|7.0", "2|d|3|8.0"};
-    TajoTestingCluster.createTable("table10", schema, tableOptions, data);
+    TajoTestingCluster.createTable(conf, "table10", schema, data);
 
     res = executeString("select id, count(distinct code), " +
         "avg(qty), min(qty), max(qty), sum(qty), " +
@@ -472,10 +465,6 @@
   @Test
   public final void testDistinctAggregationCaseByCase3() throws Exception {
     // first distinct is smaller than second distinct.
-    KeyValueSet tableOptions = new KeyValueSet();
-    tableOptions.set(StorageConstants.TEXT_DELIMITER, StorageConstants.DEFAULT_FIELD_DELIMITER);
-    tableOptions.set(StorageConstants.TEXT_NULL, "\\\\N");
-
     Schema schema = SchemaBuilder.builder()
         .add("col1", Type.TEXT)
         .add("col2", Type.TEXT)
@@ -491,7 +480,7 @@
         "a|b-3|\\N"
     };
 
-    TajoTestingCluster.createTable("table10", schema, tableOptions, data);
+    TajoTestingCluster.createTable(conf, "table10", schema, data);
 
     ResultSet res = executeQuery();
     assertResultSet(res);
@@ -503,10 +492,6 @@
   @Test
   public final void testDistinctAggregationCaseByCase4() throws Exception {
     // Reproduction case for TAJO-994
-    KeyValueSet tableOptions = new KeyValueSet();
-    tableOptions.set(StorageConstants.TEXT_DELIMITER, StorageConstants.DEFAULT_FIELD_DELIMITER);
-    tableOptions.set(StorageConstants.TEXT_NULL, "\\\\N");
-
     Schema schema = SchemaBuilder.builder()
         .add("col1", Type.TEXT)
         .add("col2", Type.TEXT)
@@ -521,7 +506,7 @@
         "a|\\N|"
     };
 
-    TajoTestingCluster.createTable("testDistinctAggregationCaseByCase4".toLowerCase(), schema, tableOptions, data);
+    TajoTestingCluster.createTable(conf, "testDistinctAggregationCaseByCase4".toLowerCase(), schema, data);
 
     ResultSet res = executeQuery();
     assertResultSet(res);
@@ -691,10 +676,6 @@
 
   @Test
   public final void testNumShufflePartition() throws Exception {
-    KeyValueSet tableOptions = new KeyValueSet();
-    tableOptions.set(StorageConstants.TEXT_DELIMITER, StorageConstants.DEFAULT_FIELD_DELIMITER);
-    tableOptions.set(StorageConstants.TEXT_NULL, "\\\\N");
-
     Schema schema = SchemaBuilder.builder()
         .add("col1", Type.TEXT)
         .add("col2", Type.TEXT)
@@ -720,7 +701,7 @@
         break;
       }
     }
-    TajoTestingCluster.createTable("testnumshufflepartition", schema, tableOptions, data.toArray(new String[data.size()]), 3);
+    TajoTestingCluster.createTable(conf, "testnumshufflepartition", schema, data.toArray(new String[data.size()]), 3);
 
     try {
       testingCluster.setAllTajoDaemonConfValue(ConfVars.$DIST_QUERY_GROUPBY_PARTITION_VOLUME.varname, "2");
diff --git a/tajo-core-tests/src/test/java/org/apache/tajo/engine/query/TestHBaseTable.java b/tajo-core-tests/src/test/java/org/apache/tajo/engine/query/TestHBaseTable.java
index bc4628f..69a0230 100644
--- a/tajo-core-tests/src/test/java/org/apache/tajo/engine/query/TestHBaseTable.java
+++ b/tajo-core-tests/src/test/java/org/apache/tajo/engine/query/TestHBaseTable.java
@@ -18,8 +18,6 @@
 
 package org.apache.tajo.engine.query;
 
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
 import org.apache.hadoop.fs.FileStatus;
 import org.apache.hadoop.fs.FileSystem;
 import org.apache.hadoop.fs.Path;
@@ -43,13 +41,11 @@
 import org.apache.tajo.exception.UnavailableTableLocationException;
 import org.apache.tajo.plan.expr.*;
 import org.apache.tajo.plan.logical.ScanNode;
-import org.apache.tajo.storage.StorageConstants;
 import org.apache.tajo.storage.Tablespace;
 import org.apache.tajo.storage.TablespaceManager;
 import org.apache.tajo.storage.fragment.Fragment;
 import org.apache.tajo.storage.hbase.*;
 import org.apache.tajo.util.Bytes;
-import org.apache.tajo.util.KeyValueSet;
 import org.junit.AfterClass;
 import org.junit.BeforeClass;
 import org.junit.Test;
@@ -66,8 +62,6 @@
 
 @Category(IntegrationTest.class)
 public class TestHBaseTable extends QueryTestCaseBase {
-  private static final Log LOG = LogFactory.getLog(TestHBaseTable.class);
-
   private static String tableSpaceUri;
   private static String hostName,zkPort;
 
@@ -814,10 +808,6 @@
     TableDesc tableDesc = catalog.getTableDesc(getCurrentDatabase(), "hbase_mapped_table");
 
     // create test table
-    KeyValueSet tableOptions = new KeyValueSet();
-    tableOptions.set(StorageConstants.TEXT_DELIMITER, StorageConstants.DEFAULT_FIELD_DELIMITER);
-    tableOptions.set(StorageConstants.TEXT_NULL, "\\\\N");
-
     Schema schema = SchemaBuilder.builder()
         .add("id", Type.TEXT)
         .add("name", Type.TEXT)
@@ -827,8 +817,8 @@
     for (int i = 99; i >= 0; i--) {
       datas.add(df.format(i) + "|value" + i);
     }
-    TajoTestingCluster.createTable(getCurrentDatabase() + ".base_table",
-        schema, tableOptions, datas.toArray(new String[datas.size()]), 2);
+    TajoTestingCluster.createTable(conf, getCurrentDatabase() + ".base_table",
+        schema, datas.toArray(new String[datas.size()]), 2);
 
     executeString("insert into hbase_mapped_table " +
         "select id, name from base_table ").close();
@@ -871,10 +861,6 @@
     TableDesc tableDesc = catalog.getTableDesc(getCurrentDatabase(), "hbase_mapped_table");
 
     // create test table
-    KeyValueSet tableOptions = new KeyValueSet();
-    tableOptions.set(StorageConstants.TEXT_DELIMITER, StorageConstants.DEFAULT_FIELD_DELIMITER);
-    tableOptions.set(StorageConstants.TEXT_NULL, "\\\\N");
-
     Schema schema = SchemaBuilder.builder()
         .add("id", Type.TEXT)
         .add("name", Type.TEXT)
@@ -883,8 +869,8 @@
     for (int i = 99; i >= 0; i--) {
       datas.add(i + "|value" + i);
     }
-    TajoTestingCluster.createTable(getCurrentDatabase() + ".base_table",
-        schema, tableOptions, datas.toArray(new String[datas.size()]), 2);
+    TajoTestingCluster.createTable(conf, getCurrentDatabase() + ".base_table",
+        schema, datas.toArray(new String[datas.size()]), 2);
 
     executeString("insert into hbase_mapped_table " +
         "select id, name from base_table ").close();
@@ -930,10 +916,6 @@
     TableDesc tableDesc = catalog.getTableDesc(getCurrentDatabase(), "hbase_mapped_table");
 
     // create test table
-    KeyValueSet tableOptions = new KeyValueSet();
-    tableOptions.set(StorageConstants.TEXT_DELIMITER, StorageConstants.DEFAULT_FIELD_DELIMITER);
-    tableOptions.set(StorageConstants.TEXT_NULL, "\\\\N");
-
     Schema schema = SchemaBuilder.builder()
         .add("id", Type.TEXT)
         .add("name", Type.TEXT)
@@ -943,8 +925,8 @@
     for (int i = 99; i >= 0; i--) {
       datas.add(df.format(i) + "|value" + i);
     }
-    TajoTestingCluster.createTable(getCurrentDatabase() + ".base_table",
-        schema, tableOptions, datas.toArray(new String[datas.size()]), 2);
+    TajoTestingCluster.createTable(conf, getCurrentDatabase() + ".base_table",
+        schema, datas.toArray(new String[datas.size()]), 2);
 
     executeString("insert into hbase_mapped_table " +
         "select id, name from base_table ").close();
@@ -989,10 +971,6 @@
     TableDesc tableDesc = catalog.getTableDesc(getCurrentDatabase(), "hbase_mapped_table");
 
     // create test table
-    KeyValueSet tableOptions = new KeyValueSet();
-    tableOptions.set(StorageConstants.TEXT_DELIMITER, StorageConstants.DEFAULT_FIELD_DELIMITER);
-    tableOptions.set(StorageConstants.TEXT_NULL, "\\\\N");
-
     Schema schema = SchemaBuilder.builder()
         .add("id1", Type.TEXT)
         .add("id2", Type.TEXT)
@@ -1003,8 +981,8 @@
     for (int i = 99; i >= 0; i--) {
       datas.add(df.format(i) + "|" + (i + 100) + "|value" + i);
     }
-    TajoTestingCluster.createTable(getCurrentDatabase() + ".base_table",
-        schema, tableOptions, datas.toArray(new String[datas.size()]), 2);
+    TajoTestingCluster.createTable(conf, getCurrentDatabase() + ".base_table",
+        schema, datas.toArray(new String[datas.size()]), 2);
 
     executeString("insert into hbase_mapped_table " +
         "select id1, id2, name from base_table ").close();
@@ -1047,10 +1025,6 @@
     TableDesc tableDesc = catalog.getTableDesc(getCurrentDatabase(), "hbase_mapped_table");
 
     // create test table
-    KeyValueSet tableOptions = new KeyValueSet();
-    tableOptions.set(StorageConstants.TEXT_DELIMITER, StorageConstants.DEFAULT_FIELD_DELIMITER);
-    tableOptions.set(StorageConstants.TEXT_NULL, "\\\\N");
-
     Schema schema = SchemaBuilder.builder()
         .add("id", Type.INT4)
         .add("name", Type.TEXT)
@@ -1059,8 +1033,8 @@
     for (int i = 99; i >= 0; i--) {
       datas.add(i + "|value" + i);
     }
-    TajoTestingCluster.createTable(getCurrentDatabase() + ".base_table",
-        schema, tableOptions, datas.toArray(new String[datas.size()]), 2);
+    TajoTestingCluster.createTable(conf, getCurrentDatabase() + ".base_table",
+        schema, datas.toArray(new String[datas.size()]), 2);
 
     executeString("insert into hbase_mapped_table " +
         "select id, name from base_table ").close();
@@ -1104,10 +1078,6 @@
     TableDesc tableDesc = catalog.getTableDesc(getCurrentDatabase(), "hbase_mapped_table");
 
     // create test table
-    KeyValueSet tableOptions = new KeyValueSet();
-    tableOptions.set(StorageConstants.TEXT_DELIMITER, StorageConstants.DEFAULT_FIELD_DELIMITER);
-    tableOptions.set(StorageConstants.TEXT_NULL, "\\\\N");
-
     Schema schema = SchemaBuilder.builder()
         .add("rk", Type.TEXT)
         .add("col2_key", Type.TEXT)
@@ -1120,8 +1090,8 @@
         datas.add(i + "|ck-" + j + "|value-" + j + "|col3-" + i);
       }
     }
-    TajoTestingCluster.createTable(getCurrentDatabase() + ".base_table",
-        schema, tableOptions, datas.toArray(new String[datas.size()]), 2);
+    TajoTestingCluster.createTable(conf, getCurrentDatabase() + ".base_table",
+        schema, datas.toArray(new String[datas.size()]), 2);
 
     executeString("insert into hbase_mapped_table " +
         "select rk, col2_key, col2_value, col3 from base_table ").close();
@@ -1194,10 +1164,6 @@
     assertTableExists("hbase_mapped_table");
 
     // create test table
-    KeyValueSet tableOptions = new KeyValueSet();
-    tableOptions.set(StorageConstants.TEXT_DELIMITER, StorageConstants.DEFAULT_FIELD_DELIMITER);
-    tableOptions.set(StorageConstants.TEXT_NULL, "\\\\N");
-
     Schema schema = SchemaBuilder.builder()
         .add("id", Type.INT4)
         .add("name", Type.TEXT)
@@ -1206,8 +1172,8 @@
     for (int i = 99; i >= 0; i--) {
       datas.add(i + "|value" + i);
     }
-    TajoTestingCluster.createTable(getCurrentDatabase() + ".base_table",
-        schema, tableOptions, datas.toArray(new String[datas.size()]), 2);
+    TajoTestingCluster.createTable(conf, getCurrentDatabase() + ".base_table",
+        schema, datas.toArray(new String[datas.size()]), 2);
 
     try {
       executeString("insert into hbase_mapped_table " +
@@ -1267,10 +1233,6 @@
   @Test
   public void testCTAS() throws Exception {
     // create test table
-    KeyValueSet tableOptions = new KeyValueSet();
-    tableOptions.set(StorageConstants.TEXT_DELIMITER, StorageConstants.DEFAULT_FIELD_DELIMITER);
-    tableOptions.set(StorageConstants.TEXT_NULL, "\\\\N");
-
     Schema schema = SchemaBuilder.builder()
         .add("id", Type.TEXT)
         .add("name", Type.TEXT)
@@ -1280,8 +1242,8 @@
     for (int i = 99; i >= 0; i--) {
       datas.add(df.format(i) + "|value" + i);
     }
-    TajoTestingCluster.createTable(getCurrentDatabase() + ".base_table",
-        schema, tableOptions, datas.toArray(new String[datas.size()]), 2);
+    TajoTestingCluster.createTable(conf, getCurrentDatabase() + ".base_table",
+        schema, datas.toArray(new String[datas.size()]), 2);
 
     executeString(
         "CREATE TABLE hbase_mapped_table (rk text, col1 text) TABLESPACE cluster1 " +
@@ -1389,10 +1351,6 @@
 
     try {
       // create test table
-      KeyValueSet tableOptions = new KeyValueSet();
-      tableOptions.set(StorageConstants.TEXT_DELIMITER, StorageConstants.DEFAULT_FIELD_DELIMITER);
-      tableOptions.set(StorageConstants.TEXT_NULL, "\\\\N");
-
       Schema schema = SchemaBuilder.builder()
           .add("id", Type.TEXT)
           .add("name", Type.TEXT)
@@ -1403,8 +1361,8 @@
       for (int i = 99; i >= 0; i--) {
         datas.add(df.format(i) + "|value" + i + "|comment-" + i);
       }
-      TajoTestingCluster.createTable(getCurrentDatabase() + ".base_table",
-          schema, tableOptions, datas.toArray(new String[datas.size()]), 2);
+      TajoTestingCluster.createTable(conf, getCurrentDatabase() + ".base_table",
+          schema, datas.toArray(new String[datas.size()]), 2);
 
       executeString("insert into location '/tmp/hfile_test' " +
           "select id, name, comment from base_table ").close();
diff --git a/tajo-core-tests/src/test/java/org/apache/tajo/engine/query/TestInSubquery.java b/tajo-core-tests/src/test/java/org/apache/tajo/engine/query/TestInSubquery.java
index 3733d00..41c0bd5 100644
--- a/tajo-core-tests/src/test/java/org/apache/tajo/engine/query/TestInSubquery.java
+++ b/tajo-core-tests/src/test/java/org/apache/tajo/engine/query/TestInSubquery.java
@@ -98,35 +98,40 @@
     runSimpleTests();
   }
 
-  @Test
+  // TODO: enable after TAJO-2141
+//  @Test
   @Option(withExplain = false, withExplainGlobal = false, parameterized = true, sort = true)
   @SimpleTest()
   public final void testNotInSubQuery() throws Exception {
     runSimpleTests();
   }
 
-  @Test
+  // TODO: enable after TAJO-2141
+//  @Test
   @Option(withExplain = false, withExplainGlobal = false, parameterized = true, sort = true)
   @SimpleTest()
   public final void testMultipleNotInSubQuery() throws Exception {
     runSimpleTests();
   }
 
-  @Test
+  // TODO: enable after TAJO-2141
+//  @Test
   @Option(withExplain = false, withExplainGlobal = false, parameterized = true, sort = true)
   @SimpleTest()
   public final void testNestedNotInSubQuery() throws Exception {
     runSimpleTests();
   }
 
-  @Test
+  // TODO: enable after TAJO-2141
+//  @Test
   @Option(withExplain = false, withExplainGlobal = false, parameterized = true, sort = true)
   @SimpleTest()
   public final void testInAndNotInSubQuery() throws Exception {
     runSimpleTests();
   }
 
-  @Test
+  // TODO: enable after TAJO-2141
+//  @Test
   @Option(withExplain = false, withExplainGlobal = false, parameterized = true, sort = true)
   @SimpleTest()
   public final void testNestedInAndNotInSubQuery() throws Exception {
diff --git a/tajo-core-tests/src/test/java/org/apache/tajo/engine/query/TestInsertQuery.java b/tajo-core-tests/src/test/java/org/apache/tajo/engine/query/TestInsertQuery.java
index 05c30df..b87639f 100644
--- a/tajo-core-tests/src/test/java/org/apache/tajo/engine/query/TestInsertQuery.java
+++ b/tajo-core-tests/src/test/java/org/apache/tajo/engine/query/TestInsertQuery.java
@@ -56,7 +56,7 @@
 
     TableDesc desc = catalog.getTableDesc(getCurrentDatabase(), "table1");
     if (!testingCluster.isHiveCatalogStoreRunning()) {
-      assertEquals(5, desc.getStats().getNumRows().intValue());
+      assertEquals(8, desc.getStats().getNumRows().intValue());
     }
 
     executeString("DROP TABLE table1 PURGE");
@@ -76,7 +76,7 @@
 
     TableDesc desc = catalog.getTableDesc(getCurrentDatabase(), "table1");
     if (!testingCluster.isHiveCatalogStoreRunning()) {
-      assertEquals(5, desc.getStats().getNumRows().intValue());
+      assertEquals(8, desc.getStats().getNumRows().intValue());
     }
 
     res = executeFile("testInsertInto.sql");
@@ -100,11 +100,17 @@
         "2|2|38.0\n" +
         "3|2|45.0\n" +
         "3|3|49.0\n" +
+        "||\n" +
+        "||\n" +
+        "||\n" +
         "1|1|17.0\n" +
         "1|1|36.0\n" +
         "2|2|38.0\n" +
         "3|2|45.0\n" +
-        "3|3|49.0\n";
+        "3|3|49.0\n" +
+        "||\n" +
+        "||\n" +
+        "||\n";
 
     assertNotNull(tableDatas);
     assertEquals(expected, tableDatas);
@@ -135,7 +141,10 @@
           "1|1|2\n" +
           "2|2|1\n" +
           "3|2|1\n" +
-          "3|3|2\n";
+          "3|3|2\n" +
+          "||\n" +
+          "||\n" +
+          "||\n";
 
       assertEquals(expected, resultFileData);
 
@@ -156,7 +165,10 @@
           "1|1|2\n" +
           "2|2|1\n" +
           "3|2|1\n" +
-          "3|3|2\n";
+          "3|3|2\n" +
+          "||\n" +
+          "||\n" +
+          "||\n";
 
       assertEquals(expected + expected, resultFileData);
 
@@ -212,7 +224,10 @@
           "FRANCE,3,6\n" +
           "GERMANY,3,7\n" +
           "INDIA,2,8\n" +
-          "INDONESIA,2,9\n";
+          "INDONESIA,2,9\n" +
+          "null,null,null\n" +
+          "null,null,null\n" +
+          "null,null,null\n";
 
       assertEquals(expected, resultSetToString(res));
       res.close();
@@ -270,7 +285,13 @@
           "INDIA,2,8\n" +
           "INDIA,2,8\n" +
           "INDONESIA,2,9\n" +
-          "INDONESIA,2,9\n";
+          "INDONESIA,2,9\n" +
+          "null,null,null\n" +
+          "null,null,null\n" +
+          "null,null,null\n" +
+          "null,null,null\n" +
+          "null,null,null\n" +
+          "null,null,null\n";
 
       assertEquals(expected, resultSetToString(res));
 
@@ -282,7 +303,7 @@
 
       FileStatus[] files = fs.listStatus(path);
       assertNotNull(files);
-      assertEquals(25, files.length);
+      assertEquals(26, files.length);
 
       for (FileStatus eachFileStatus: files) {
         assertTrue(eachFileStatus.getPath().getName().indexOf("n_nationkey=") == 0);
@@ -311,7 +332,7 @@
     res.close();
     TableDesc desc = catalog.getTableDesc(getCurrentDatabase(), "table1");
     if (!testingCluster.isHiveCatalogStoreRunning()) {
-      assertEquals(5, desc.getStats().getNumRows().intValue());
+      assertEquals(8, desc.getStats().getNumRows().intValue());
     }
     assertEquals(originalDesc.getSchema(), desc.getSchema());
 
@@ -331,7 +352,7 @@
     res.close();
     TableDesc desc = catalog.getTableDesc(getCurrentDatabase(), "table1");
     if (!testingCluster.isHiveCatalogStoreRunning()) {
-      assertEquals(5, desc.getStats().getNumRows().intValue());
+      assertEquals(8, desc.getStats().getNumRows().intValue());
     }
 
     res = executeString("select * from " + CatalogUtil.denormalizeIdentifier(getCurrentDatabase()) + ".table1");
@@ -365,6 +386,21 @@
     assertTrue(res.wasNull());
     assertTrue(49.0 == res.getFloat(3));
 
+    assertTrue(res.next());
+    assertEquals(0, res.getLong(1));
+    assertEquals(0.0, 0.0, res.getFloat(2));
+    assertEquals(0.0, 0.0, res.getFloat(3));
+
+    assertTrue(res.next());
+    assertEquals(0, res.getLong(1));
+    assertEquals(0.0, 0.0, res.getFloat(2));
+    assertEquals(0.0, 0.0, res.getFloat(3));
+
+    assertTrue(res.next());
+    assertEquals(0, res.getLong(1));
+    assertEquals(0.0, 0.0, res.getFloat(2));
+    assertEquals(0.0, 0.0, res.getFloat(3));
+
     assertFalse(res.next());
     res.close();
 
@@ -402,7 +438,7 @@
     res.close();
     TableDesc desc = catalog.getTableDesc(getCurrentDatabase(), "lineitem_year_month");
     if (!testingCluster.isHiveCatalogStoreRunning()) {
-      assertEquals(5, desc.getStats().getNumRows().intValue());
+      assertEquals(8, desc.getStats().getNumRows().intValue());
     }
 
     res = executeQuery();
@@ -424,7 +460,7 @@
     assertTrue(catalog.existsTable(getCurrentDatabase(), tableName));
     TableDesc orderKeys = catalog.getTableDesc(getCurrentDatabase(), tableName);
     if (!testingCluster.isHiveCatalogStoreRunning()) {
-      assertEquals(5, orderKeys.getStats().getNumRows().intValue());
+      assertEquals(8, orderKeys.getStats().getNumRows().intValue());
     }
 
     // this query will result in the two rows.
@@ -554,7 +590,7 @@
 
       TableDesc desc = catalog.getTableDesc(getCurrentDatabase(), "parquet_table");
       if (!testingCluster.isHiveCatalogStoreRunning()) {
-        assertEquals(5, desc.getStats().getNumRows().intValue());
+        assertEquals(8, desc.getStats().getNumRows().intValue());
       }
 
       ResultSet res = executeString("select l_orderkey, l_shipdate, l_shipdate_function " +
@@ -566,7 +602,10 @@
           "1,1996-04-12,1996-04-12\n" +
           "2,1997-01-28,1997-01-28\n" +
           "3,1994-02-02,1994-02-02\n" +
-          "3,1993-11-09,1993-11-09\n";
+          "3,1993-11-09,1993-11-09\n" +
+          "null,null,null\n" +
+          "null,null,null\n" +
+          "null,null,null\n";
 
       assertEquals(expected, resultSetToString(res));
 
@@ -589,7 +628,7 @@
 
       TableDesc desc = catalog.getTableDesc(getCurrentDatabase(), "parquet_table");
       if (!testingCluster.isHiveCatalogStoreRunning()) {
-        assertEquals(5, desc.getStats().getNumRows().intValue());
+        assertEquals(8, desc.getStats().getNumRows().intValue());
       }
 
       ResultSet res = executeString("select l_orderkey, l_shipdate, l_shipdate_function " +
@@ -601,7 +640,10 @@
           "3,1994-02-02,1994-02-02\n" +
           "1,1996-03-13,1996-03-13\n" +
           "1,1996-04-12,1996-04-12\n" +
-          "2,1997-01-28,1997-01-28\n";
+          "2,1997-01-28,1997-01-28\n" +
+          "null,null,null\n" +
+          "null,null,null\n" +
+          "null,null,null\n";
 
       assertEquals(expected, resultSetToString(res));
 
@@ -622,7 +664,7 @@
 
     TableDesc desc = catalog.getTableDesc(getCurrentDatabase(), "table1");
     if (!testingCluster.isHiveCatalogStoreRunning()) {
-      assertEquals(5, desc.getStats().getNumRows().intValue());
+      assertEquals(8, desc.getStats().getNumRows().intValue());
     }
     executeString("DROP TABLE table1 PURGE");
   }
@@ -758,9 +800,15 @@
         "2|2|38.0\n" +
         "3|2|45.0\n" +
         "3|3|49.0\n" +
+        "||\n" +
+        "||\n" +
+        "||\n" +
         "1|3|173665.47\n" +
         "2|4|46929.18\n" +
-        "3|2|193846.25\n";
+        "3|2|193846.25\n" +
+        "||\n" +
+        "||\n" +
+        "||\n";
 
     assertNotNull(tableDatas);
     assertEquals(expected, tableDatas);
@@ -786,9 +834,15 @@
         "2|2|38.0\n" +
         "3|2|45.0\n" +
         "3|3|49.0\n" +
+        "||\n" +
+        "||\n" +
+        "||\n" +
         "1|3|173665.47\n" +
         "2|4|46929.18\n" +
-        "3|2|193846.25\n";
+        "3|2|193846.25\n" +
+        "||\n" +
+        "||\n" +
+        "||\n";
 
     assertNotNull(tableDatas);
     assertEquals(expected, tableDatas);
@@ -808,9 +862,15 @@
         "2|2|38.0\n" +
         "3|2|45.0\n" +
         "3|3|49.0\n" +
+        "||\n" +
+        "||\n" +
+        "||\n" +
         "1|3|173665.47\n" +
         "2|4|46929.18\n" +
-        "3|2|193846.25\n";
+        "3|2|193846.25\n" +
+        "||\n" +
+        "||\n" +
+        "||\n";
 
     assertNotNull(resultDatas);
     assertEquals(expected, resultDatas);
@@ -828,9 +888,15 @@
         "2|2|38.0\n" +
         "3|2|45.0\n" +
         "3|3|49.0\n" +
+        "||\n" +
+        "||\n" +
+        "||\n" +
         "1|3|173665.47\n" +
         "2|4|46929.18\n" +
-        "3|2|193846.25\n";
+        "3|2|193846.25\n" +
+        "||\n" +
+        "||\n" +
+        "||\n";
 
     assertNotNull(resultDatas);
     assertEquals(expected, resultDatas);
diff --git a/tajo-core-tests/src/test/java/org/apache/tajo/engine/query/TestJoinOnPartitionedTables.java b/tajo-core-tests/src/test/java/org/apache/tajo/engine/query/TestJoinOnPartitionedTables.java
index 0d110d1..496d112 100644
--- a/tajo-core-tests/src/test/java/org/apache/tajo/engine/query/TestJoinOnPartitionedTables.java
+++ b/tajo-core-tests/src/test/java/org/apache/tajo/engine/query/TestJoinOnPartitionedTables.java
@@ -170,7 +170,7 @@
           " select l_partkey, l_suppkey, l_linenumber, \n" +
           " l_quantity, l_extendedprice, l_discount, l_tax, \n" +
           " l_returnflag, l_linestatus, l_shipdate, l_commitdate, \n" +
-          " l_receiptdate, l_shipinstruct, l_shipmode, l_comment, l_orderkey from lineitem");
+          " l_receiptdate, l_shipinstruct, l_shipmode, l_comment, l_orderkey from lineitem").close();
 
       ResultSet res = executeString(
           "select a.l_orderkey as key1, b.l_orderkey as key2 from lineitem as a " +
@@ -184,7 +184,10 @@
           "1,null\n" +
           "2,null\n" +
           "3,null\n" +
-          "3,null\n";
+          "3,null\n" +
+          "null,null\n" +
+          "null,null\n" +
+          "null,null\n";
       assertEquals(expected, resultSetToString(res));
       cleanupQuery(res);
     } finally {
diff --git a/tajo-core-tests/src/test/java/org/apache/tajo/engine/query/TestJoinQuery.java b/tajo-core-tests/src/test/java/org/apache/tajo/engine/query/TestJoinQuery.java
index 749aad1..125a2ec 100644
--- a/tajo-core-tests/src/test/java/org/apache/tajo/engine/query/TestJoinQuery.java
+++ b/tajo-core-tests/src/test/java/org/apache/tajo/engine/query/TestJoinQuery.java
@@ -31,6 +31,7 @@
 import org.apache.tajo.conf.TajoConf.ConfVars;
 import org.apache.tajo.datum.Datum;
 import org.apache.tajo.datum.Int4Datum;
+import org.apache.tajo.datum.NullDatum;
 import org.apache.tajo.datum.TextDatum;
 import org.apache.tajo.exception.TajoException;
 import org.apache.tajo.storage.*;
@@ -142,67 +143,63 @@
   protected static void createCommonTables() throws Exception {
     LOG.info("Create common tables for join tests");
 
-    KeyValueSet tableOptions = new KeyValueSet();
-    tableOptions.set(StorageConstants.TEXT_DELIMITER, StorageConstants.DEFAULT_FIELD_DELIMITER);
-    tableOptions.set(StorageConstants.TEXT_NULL, "\\\\N");
-
     Schema schema = SchemaBuilder.builder()
         .add("id", TajoDataTypes.Type.INT4)
         .add("name", TajoDataTypes.Type.TEXT)
         .build();
     String[] data = new String[]{"1|table11-1", "2|table11-2", "3|table11-3", "4|table11-4", "5|table11-5"};
-    TajoTestingCluster.createTable("jointable11", schema, tableOptions, data, 2);
+    TajoTestingCluster.createTable(conf, "jointable11", schema, data, 2);
 
     schema = SchemaBuilder.builder()
         .add("id", TajoDataTypes.Type.INT4)
         .add("name", TajoDataTypes.Type.TEXT)
         .build();
     data = new String[]{"1|table12-1", "2|table12-2"};
-    TajoTestingCluster.createTable("jointable12", schema, tableOptions, data, 2);
+    TajoTestingCluster.createTable(conf, "jointable12", schema, data, 2);
 
     schema = SchemaBuilder.builder()
         .add("id", TajoDataTypes.Type.INT4)
         .add("name", TajoDataTypes.Type.TEXT)
         .build();
     data = new String[]{"2|table13-2", "3|table13-3"};
-    TajoTestingCluster.createTable("jointable13", schema, tableOptions, data);
+    TajoTestingCluster.createTable(conf, "jointable13", schema, data);
 
     schema = SchemaBuilder.builder()
         .add("id", TajoDataTypes.Type.INT4)
         .add("name", TajoDataTypes.Type.TEXT)
         .build();
     data = new String[]{"1|table14-1", "2|table14-2", "3|table14-3", "4|table14-4"};
-    TajoTestingCluster.createTable("jointable14", schema, tableOptions, data);
+    TajoTestingCluster.createTable(conf, "jointable14", schema, data);
 
     schema = SchemaBuilder.builder()
         .add("id", TajoDataTypes.Type.INT4)
         .add("name", TajoDataTypes.Type.TEXT)
         .build();
     data = new String[]{};
-    TajoTestingCluster.createTable("jointable15", schema, tableOptions, data);
+    TajoTestingCluster.createTable(conf, "jointable15", schema, data);
 
     schema = SchemaBuilder.builder()
         .add("id", TajoDataTypes.Type.INT4)
         .add("name", TajoDataTypes.Type.TEXT)
         .build();
     data = new String[]{"1000000|a", "1000001|b", "2|c", "3|d", "4|e"};
-    TajoTestingCluster.createTable("jointable1", schema, tableOptions, data, 1);
+    TajoTestingCluster.createTable(conf, "jointable1", schema, data, 1);
 
     data = new String[10000];
     for (int i = 0; i < data.length; i++) {
       data[i] = i + "|" + "this is testLeftOuterJoinLeftSideSmallTabletestLeftOuterJoinLeftSideSmallTable" + i;
     }
-    TajoTestingCluster.createTable("jointable_large", schema, tableOptions, data, 2);
+    TajoTestingCluster.createTable(conf, "jointable_large", schema, data, 2);
 
     // According to node type(leaf or non-leaf) Broadcast join is determined differently by Repartitioner.
     // testMultipleBroadcastDataFileWithZeroLength testcase is for the leaf node
     createMultiFile("nation", 2, new TupleCreator() {
       public Tuple createTuple(String[] columnDatas) {
         return new VTuple(new Datum[]{
-            new Int4Datum(Integer.parseInt(columnDatas[0])),
-            new TextDatum(columnDatas[1]),
-            new Int4Datum(Integer.parseInt(columnDatas[2])),
-            new TextDatum(columnDatas[3])
+            columnDatas[0].equals("") ? NullDatum.get() : new Int4Datum(Integer.parseInt(columnDatas[0])),
+            columnDatas[1].equals("") ? NullDatum.get() : new TextDatum(columnDatas[1]),
+            columnDatas[2].equals("") ? NullDatum.get() : new Int4Datum(Integer.parseInt(columnDatas[2])),
+            columnDatas[3].equals("") ? NullDatum.get() : new TextDatum(columnDatas[3])
         });
       }
     });
diff --git a/tajo-core-tests/src/test/java/org/apache/tajo/engine/query/TestNullValues.java b/tajo-core-tests/src/test/java/org/apache/tajo/engine/query/TestNullValues.java
index 1966332..c457253 100644
--- a/tajo-core-tests/src/test/java/org/apache/tajo/engine/query/TestNullValues.java
+++ b/tajo-core-tests/src/test/java/org/apache/tajo/engine/query/TestNullValues.java
@@ -25,8 +25,6 @@
 import org.apache.tajo.catalog.SchemaBuilder;
 import org.apache.tajo.client.TajoClient;
 import org.apache.tajo.common.TajoDataTypes.Type;
-import org.apache.tajo.storage.StorageConstants;
-import org.apache.tajo.util.KeyValueSet;
 import org.junit.AfterClass;
 import org.junit.BeforeClass;
 import org.junit.Test;
@@ -70,11 +68,9 @@
         "2||",
         "3|filled|0.2"
     };
-    KeyValueSet opts = new KeyValueSet();
-    opts.set(StorageConstants.TEXT_DELIMITER, StorageConstants.DEFAULT_FIELD_DELIMITER);
 
     try (ResultSet res = TajoTestingCluster
-            .run(table, schemas, opts, new String[][]{data},
+            .run(table, schemas, new String[][]{data},
                     "select * from nulltable1 where col3 is null", client)) {
       assertTrue(res.next());
       assertEquals(2, res.getInt(1));
@@ -95,10 +91,8 @@
         "||",
         "3|filled|"
     };
-    KeyValueSet opts = new KeyValueSet();
-    opts.set(StorageConstants.TEXT_DELIMITER, StorageConstants.DEFAULT_FIELD_DELIMITER);
     try (ResultSet res = TajoTestingCluster
-            .run(table, schemas, opts, new String[][]{data},
+            .run(table, schemas, new String[][]{data},
                     "select * from nulltable2 where col1 is not null", client)) {
       assertTrue(res.next());
       assertEquals(1, res.getInt(1));
@@ -125,13 +119,11 @@
         .build();
     Schema [] schemas = new Schema[] {schema};
     String [] data = {
-        ",,,,672287821,1301460,1,313895860387,126288907,1024",
-        ",,,43578,19,13,6,3581,2557,1024"
+        "||||672287821|1301460|1|313895860387|126288907|1024",
+        "|||43578|19|13|6|3581|2557|1024"
     };
-    KeyValueSet opts = new KeyValueSet();
-    opts.set(StorageConstants.TEXT_DELIMITER, ",");
     try (ResultSet res = TajoTestingCluster
-            .run(table, schemas, opts, new String[][]{data},
+            .run(table, schemas, new String[][]{data},
                     "select * from nulltable3 where col1 is null and col2 is null and col3 is null and col4 = 43578", client)) {
       assertTrue(res.next());
       assertEquals(43578, res.getLong(4));
@@ -156,14 +148,11 @@
         .build();
     Schema [] schemas = new Schema[] {schema};
     String [] data = {
-        "\\N,,,,672287821,",
-        ",\\N,,43578"
+        "\\N||||672287821|",
+        "|\\N||43578"
     };
-    KeyValueSet opts = new KeyValueSet();
-    opts.set(StorageConstants.TEXT_DELIMITER, ",");
-    opts.set(StorageConstants.TEXT_NULL, "\\\\N");
     try (ResultSet res = TajoTestingCluster
-            .run(table, schemas, opts, new String[][]{data},
+            .run(table, schemas, new String[][]{data},
                     "select * from nulltable4 where col1 is null and col2 is null and col3 is null and col5 is null and col4 = 43578"
                     , client)) {
       assertTrue(res.next());
@@ -269,14 +258,11 @@
         "3|c|\\N|t",
         "4|d|4.0|\\N"
     };
-    KeyValueSet tableOptions = new KeyValueSet();
-    tableOptions.set(StorageConstants.TEXT_DELIMITER, StorageConstants.DEFAULT_FIELD_DELIMITER);
-    tableOptions.set(StorageConstants.TEXT_NULL, "\\\\N");
 
     if (client == null) {
-      return TajoTestingCluster.run(table, schemas, tableOptions, new String[][]{data}, query);
+      return TajoTestingCluster.run(table, schemas, new String[][]{data}, query);
     } else {
-      return TajoTestingCluster.run(table, schemas, tableOptions, new String[][]{data}, query, client);
+      return TajoTestingCluster.run(table, schemas, new String[][]{data}, query, client);
     }
   }
 
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 7a88198..d3b646a 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
@@ -32,8 +32,6 @@
 import org.apache.tajo.ipc.ClientProtos;
 import org.apache.tajo.plan.rewrite.BaseLogicalPlanRewriteRuleProvider;
 import org.apache.tajo.plan.rewrite.LogicalPlanRewriteRule;
-import org.apache.tajo.storage.StorageConstants;
-import org.apache.tajo.util.KeyValueSet;
 import org.junit.Test;
 import org.junit.experimental.categories.Category;
 
@@ -380,7 +378,7 @@
     assertTrue(catalog.existsTable(DEFAULT_DATABASE_NAME, "orderkeys"));
     TableDesc orderKeys = catalog.getTableDesc(DEFAULT_DATABASE_NAME, "orderkeys");
     if (!cluster.isHiveCatalogStoreRunning()) {
-      assertEquals(5, orderKeys.getStats().getNumRows().intValue());
+      assertEquals(8, orderKeys.getStats().getNumRows().intValue());
     }
   }
 
@@ -495,16 +493,12 @@
 
   @Test
   public final void testNowInMultipleTasks() throws Exception {
-    KeyValueSet tableOptions = new KeyValueSet();
-    tableOptions.set(StorageConstants.TEXT_DELIMITER, StorageConstants.DEFAULT_FIELD_DELIMITER);
-    tableOptions.set(StorageConstants.TEXT_NULL, "\\\\N");
-
     Schema schema = SchemaBuilder.builder()
         .add("id", Type.INT4)
         .add("name", Type.TEXT)
         .build();
     String[] data = new String[]{ "1|table11-1", "2|table11-2", "3|table11-3", "4|table11-4", "5|table11-5" };
-    TajoTestingCluster.createTable("testNowInMultipleTasks".toLowerCase(), schema, tableOptions, data, 2);
+    TajoTestingCluster.createTable(conf, "testNowInMultipleTasks".toLowerCase(), schema, data, 2);
 
     try {
       testingCluster.setAllTajoDaemonConfValue(ConfVars.$TEST_MIN_TASK_NUM.varname, "2");
diff --git a/tajo-core-tests/src/test/java/org/apache/tajo/engine/query/TestSortQuery.java b/tajo-core-tests/src/test/java/org/apache/tajo/engine/query/TestSortQuery.java
index 3dc9d85..ec89420 100644
--- a/tajo-core-tests/src/test/java/org/apache/tajo/engine/query/TestSortQuery.java
+++ b/tajo-core-tests/src/test/java/org/apache/tajo/engine/query/TestSortQuery.java
@@ -23,8 +23,6 @@
 import org.apache.tajo.catalog.SchemaBuilder;
 import org.apache.tajo.common.TajoDataTypes.Type;
 import org.apache.tajo.conf.TajoConf.ConfVars;
-import org.apache.tajo.storage.StorageConstants;
-import org.apache.tajo.util.KeyValueSet;
 import org.junit.AfterClass;
 import org.junit.Test;
 import org.junit.experimental.categories.Category;
@@ -129,9 +127,6 @@
   public final void testSortFirstDesc() throws Exception {
     try {
       testingCluster.setAllTajoDaemonConfValue(ConfVars.$TEST_MIN_TASK_NUM.varname, "2");
-      KeyValueSet tableOptions = new KeyValueSet();
-      tableOptions.set(StorageConstants.TEXT_DELIMITER, StorageConstants.DEFAULT_FIELD_DELIMITER);
-      tableOptions.set(StorageConstants.TEXT_NULL, "\\\\N");
 
       Schema schema = SchemaBuilder.builder()
           .add("col1", Type.INT4)
@@ -147,7 +142,7 @@
           "3|dat",
           "1|abe"
       };
-      TajoTestingCluster.createTable("sortfirstdesc", schema, tableOptions, data, 2);
+      TajoTestingCluster.createTable(conf, "sortfirstdesc", schema, data, 2);
 
       ResultSet res = executeQuery();
       assertResultSet(res);
@@ -226,7 +221,7 @@
 
   @Test
   public final void testTopkWithJson() throws Exception {
-    // select l_orderkey, l_linenumber from lineitem order by l_orderkey desc limit 3;
+    // select l_orderkey, l_linenumber from lineitem order by l_orderkey desc limit 5;
     ResultSet res = executeJsonQuery();
     assertResultSet(res);
     cleanupQuery(res);
@@ -236,9 +231,6 @@
   public final void testSortOnNullColumn() throws Exception {
     try {
       testingCluster.setAllTajoDaemonConfValue(ConfVars.$TEST_MIN_TASK_NUM.varname, "2");
-      KeyValueSet tableOptions = new KeyValueSet();
-      tableOptions.set(StorageConstants.TEXT_DELIMITER, StorageConstants.DEFAULT_FIELD_DELIMITER);
-      tableOptions.set(StorageConstants.TEXT_NULL, "\\\\N");
 
       Schema schema = SchemaBuilder.builder()
           .add("id", Type.INT4)
@@ -250,7 +242,7 @@
           "3|ARGENTINA",
           "4|CANADA"
       };
-      TajoTestingCluster.createTable("nullsort", schema, tableOptions, data, 2);
+      TajoTestingCluster.createTable(conf, "nullsort", schema, data, 2);
 
       ResultSet res = executeQuery();
       assertResultSet(res);
@@ -263,16 +255,12 @@
 
   @Test
   public final void testSortOnNullColumn2() throws Exception {
-    KeyValueSet tableOptions = new KeyValueSet();
-    tableOptions.set(StorageConstants.TEXT_DELIMITER, StorageConstants.DEFAULT_FIELD_DELIMITER);
-    tableOptions.set(StorageConstants.TEXT_NULL, "\\\\N");
-
     Schema schema = SchemaBuilder.builder()
         .add("id", Type.INT4)
         .add("name", Type.TEXT)
         .build();
     String[] data = new String[]{ "1|111", "2|\\N", "3|333" };
-    TajoTestingCluster.createTable("testSortOnNullColumn2".toLowerCase(), schema, tableOptions, data, 1);
+    TajoTestingCluster.createTable(conf, "testSortOnNullColumn2".toLowerCase(), schema, data, 1);
 
     try {
       ResultSet res = executeString("select * from testSortOnNullColumn2 order by name asc");
@@ -301,16 +289,12 @@
 
   @Test
   public final void testSortOnNullColumn3() throws Exception {
-    KeyValueSet tableOptions = new KeyValueSet();
-    tableOptions.set(StorageConstants.TEXT_DELIMITER, StorageConstants.DEFAULT_FIELD_DELIMITER);
-    tableOptions.set(StorageConstants.TEXT_NULL, "\\\\N");
-
     Schema schema = SchemaBuilder.builder()
         .add("id", Type.INT4)
         .add("name", Type.TEXT)
         .build();
     String[] data = new String[]{ "1|111", "2|\\N", "3|333" };
-    TajoTestingCluster.createTable("testSortOnNullColumn3".toLowerCase(), schema, tableOptions, data, 1);
+    TajoTestingCluster.createTable(conf, "testSortOnNullColumn3".toLowerCase(), schema, data, 1);
 
     try {
       ResultSet res = executeString("select * from testSortOnNullColumn3 order by name nulls first");
@@ -330,16 +314,12 @@
 
   @Test
   public final void testSortOnNullColumn4() throws Exception {
-    KeyValueSet tableOptions = new KeyValueSet();
-    tableOptions.set(StorageConstants.TEXT_DELIMITER, StorageConstants.DEFAULT_FIELD_DELIMITER);
-    tableOptions.set(StorageConstants.TEXT_NULL, "\\\\N");
-
     Schema schema = SchemaBuilder.builder()
         .add("id", Type.INT4)
         .add("name", Type.TEXT)
         .build();
     String[] data = new String[]{ "1|111", "2|\\N", "3|333" };
-    TajoTestingCluster.createTable("testSortOnNullColumn4".toLowerCase(), schema, tableOptions, data, 1);
+    TajoTestingCluster.createTable(conf, "testSortOnNullColumn4".toLowerCase(), schema, data, 1);
 
     try {
       ResultSet res = executeString("select * from testSortOnNullColumn4 order by name desc nulls last");
@@ -359,16 +339,12 @@
 
   @Test
   public final void testSortOnNullColumn5() throws Exception {
-    KeyValueSet tableOptions = new KeyValueSet();
-    tableOptions.set(StorageConstants.TEXT_DELIMITER, StorageConstants.DEFAULT_FIELD_DELIMITER);
-    tableOptions.set(StorageConstants.TEXT_NULL, "\\\\N");
-
     Schema schema = SchemaBuilder.builder()
         .add("id", Type.INT4)
         .add("name", Type.TEXT)
         .build();
     String[] data = new String[]{ "1|111", "2|\\N", "3|333" };
-    TajoTestingCluster.createTable("testSortOnNullColumn5".toLowerCase(), schema, tableOptions, data, 1);
+    TajoTestingCluster.createTable(conf, "testSortOnNullColumn5".toLowerCase(), schema, data, 1);
 
     try {
       ResultSet res = executeString("select * from testSortOnNullColumn5 order by name asc nulls first");
@@ -390,10 +366,6 @@
   public final void testSortOnUnicodeTextAsc() throws Exception {
     try {
       testingCluster.setAllTajoDaemonConfValue(ConfVars.$TEST_MIN_TASK_NUM.varname, "2");
-      KeyValueSet tableOptions = new KeyValueSet();
-      tableOptions.set(StorageConstants.TEXT_DELIMITER, StorageConstants.DEFAULT_FIELD_DELIMITER);
-      tableOptions.set(StorageConstants.TEXT_NULL, "\\\\N");
-
       Schema schema = SchemaBuilder.builder()
           .add("col1", Type.INT4)
           .add("col2", Type.TEXT)
@@ -404,7 +376,7 @@
           "3|가가가",
           "4|냐하하"
       };
-      TajoTestingCluster.createTable("unicode_sort1", schema, tableOptions, data, 2);
+      TajoTestingCluster.createTable(conf, "unicode_sort1", schema, data, 2);
 
       ResultSet res = executeQuery();
       assertResultSet(res);
@@ -419,9 +391,6 @@
   public final void testSortOnUnicodeTextDesc() throws Exception {
     try {
       testingCluster.setAllTajoDaemonConfValue(ConfVars.$TEST_MIN_TASK_NUM.varname, "2");
-      KeyValueSet tableOptions = new KeyValueSet();
-      tableOptions.set(StorageConstants.TEXT_DELIMITER, StorageConstants.DEFAULT_FIELD_DELIMITER);
-      tableOptions.set(StorageConstants.TEXT_NULL, "\\\\N");
 
       Schema schema = SchemaBuilder.builder()
           .add("col1", Type.INT4)
@@ -433,7 +402,7 @@
           "3|가가가",
           "4|냐하하"
       };
-      TajoTestingCluster.createTable("unicode_sort2", schema, tableOptions, data, 2);
+      TajoTestingCluster.createTable(conf, "unicode_sort2", schema, data, 2);
 
       ResultSet res = executeQuery();
       assertResultSet(res);
diff --git a/tajo-core-tests/src/test/java/org/apache/tajo/engine/query/TestTablePartitions.java b/tajo-core-tests/src/test/java/org/apache/tajo/engine/query/TestTablePartitions.java
index 196f332..e74d722 100644
--- a/tajo-core-tests/src/test/java/org/apache/tajo/engine/query/TestTablePartitions.java
+++ b/tajo-core-tests/src/test/java/org/apache/tajo/engine/query/TestTablePartitions.java
@@ -41,7 +41,6 @@
 import org.apache.tajo.querymaster.QueryMasterTask;
 import org.apache.tajo.storage.StorageConstants;
 import org.apache.tajo.util.CommonTestingUtil;
-import org.apache.tajo.util.KeyValueSet;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.junit.runners.Parameterized;
@@ -268,7 +267,7 @@
     assertTrue(fs.isDirectory(new Path(path.toUri() + "/key=45.0")));
     assertTrue(fs.isDirectory(new Path(path.toUri() + "/key=49.0")));
     if (!testingCluster.isHiveCatalogStoreRunning()) {
-      assertEquals(5, desc.getStats().getNumRows().intValue());
+      assertEquals(8, desc.getStats().getNumRows().intValue());
     }
   }
 
@@ -404,7 +403,7 @@
     assertTrue(fs.isDirectory(new Path(path.toUri() + "/col1=3/col2=2/col3=45.0")));
     assertTrue(fs.isDirectory(new Path(path.toUri() + "/col1=3/col2=3/col3=49.0")));
     if (!testingCluster.isHiveCatalogStoreRunning()) {
-      assertEquals(5, desc.getStats().getNumRows().intValue());
+      assertEquals(8, desc.getStats().getNumRows().intValue());
     }
 
     res = executeString("select * from " + tableName + " where col2 = 2");
@@ -468,7 +467,7 @@
       res = executeString("insert into " + tableName
         + " select l_returnflag, l_orderkey, l_partkey, l_quantity from lineitem");
     } else {
-      res = executeString( "create table " + tableName + " (col4 text) "
+      res = executeString( "create table " + tableName + " (col4 text)"
         + " partition by column(col1 int4, col2 int4, col3 float8) as select l_returnflag, l_orderkey, l_partkey, " +
         "l_quantity from lineitem");
     }
@@ -484,7 +483,7 @@
     FileSystem fs = FileSystem.get(conf);
     verifyDirectoriesForThreeColumns(fs, path, 1);
     if (!testingCluster.isHiveCatalogStoreRunning()) {
-      assertEquals(5, desc.getStats().getNumRows().intValue());
+      assertEquals(8, desc.getStats().getNumRows().intValue());
     }
 
     res = executeString("select * from " + tableName + " where col2 = 2");
@@ -529,7 +528,7 @@
 
     verifyDirectoriesForThreeColumns(fs, path, 2);
     if (!testingCluster.isHiveCatalogStoreRunning()) {
-      assertEquals(5, desc.getStats().getNumRows().intValue());
+      assertEquals(8, desc.getStats().getNumRows().intValue());
     }
 
     String expected = "N\n" +
@@ -541,7 +540,13 @@
         "R\n" +
         "R\n" +
         "R\n" +
-        "R\n";
+        "R\n" +
+        "\\N\n" +
+        "\\N\n" +
+        "\\N\n" +
+        "\\N\n" +
+        "\\N\n" +
+        "\\N\n";
 
     String tableData = getTableFileContents(new Path(desc.getUri()));
     assertEquals(expected, tableData);
@@ -658,7 +663,7 @@
 
     TableDesc desc = catalog.getTableDesc(DEFAULT_DATABASE_NAME, tableName);
     if (!testingCluster.isHiveCatalogStoreRunning()) {
-      assertEquals(5, desc.getStats().getNumRows().intValue());
+      assertEquals(8, desc.getStats().getNumRows().intValue());
     }
 
     FileSystem fs = FileSystem.get(conf);
@@ -710,7 +715,7 @@
 
     TableDesc desc = catalog.getTableDesc(DEFAULT_DATABASE_NAME, tableName);
     if (!testingCluster.isHiveCatalogStoreRunning()) {
-      assertEquals(5, desc.getStats().getNumRows().intValue());
+      assertEquals(8, desc.getStats().getNumRows().intValue());
     }
 
     FileSystem fs = FileSystem.get(conf);
@@ -770,7 +775,7 @@
 
     TableDesc desc = catalog.getTableDesc(DEFAULT_DATABASE_NAME, tableName);
     if (!testingCluster.isHiveCatalogStoreRunning()) {
-      assertEquals(5, desc.getStats().getNumRows().intValue());
+      assertEquals(8, desc.getStats().getNumRows().intValue());
     }
 
     FileSystem fs = FileSystem.get(conf);
@@ -868,7 +873,7 @@
 
     TableDesc desc = catalog.getTableDesc(DEFAULT_DATABASE_NAME, tableName);
     if (!testingCluster.isHiveCatalogStoreRunning()) {
-      assertEquals(5, desc.getStats().getNumRows().intValue());
+      assertEquals(8, desc.getStats().getNumRows().intValue());
     }
 
     FileSystem fs = FileSystem.get(conf);
@@ -1002,7 +1007,7 @@
 
     TableDesc desc = catalog.getTableDesc("testinsertquery1", "table1");
     if (!testingCluster.isHiveCatalogStoreRunning()) {
-      assertEquals(5, desc.getStats().getNumRows().intValue());
+      assertEquals(8, desc.getStats().getNumRows().intValue());
     }
 
     if (nodeType == NodeType.INSERT) {
@@ -1016,7 +1021,7 @@
     }
     desc = catalog.getTableDesc("testinsertquery2", "table1");
     if (!testingCluster.isHiveCatalogStoreRunning()) {
-      assertEquals(5, desc.getStats().getNumRows().intValue());
+      assertEquals(8, desc.getStats().getNumRows().intValue());
     }
 
     executeString("DROP TABLE testinsertquery1.table1 PURGE").close();
@@ -1091,10 +1096,6 @@
     testingCluster.setAllTajoDaemonConfValue(TajoConf.ConfVars.$DIST_QUERY_TABLE_PARTITION_VOLUME.varname, "2");
     testingCluster.setAllTajoDaemonConfValue(TajoConf.ConfVars.SHUFFLE_HASH_APPENDER_PAGE_VOLUME.varname, "1");
     try {
-      KeyValueSet tableOptions = new KeyValueSet();
-      tableOptions.set(StorageConstants.TEXT_DELIMITER, StorageConstants.DEFAULT_FIELD_DELIMITER);
-      tableOptions.set(StorageConstants.TEXT_NULL, "\\\\N");
-
       Schema schema = SchemaBuilder.builder()
           .add("col1", TajoDataTypes.Type.TEXT)
           .add("col2", TajoDataTypes.Type.TEXT)
@@ -1121,7 +1122,7 @@
         index++;
       }
 
-      TajoTestingCluster.createTable("testscatteredhashshuffle", schema, tableOptions, data.toArray(new String[data.size()]), 3);
+      TajoTestingCluster.createTable(conf, "testscatteredhashshuffle", schema, data.toArray(new String[data.size()]), 3);
       CatalogService catalog = testingCluster.getMaster().getCatalog();
       assertTrue(catalog.existsTable("default", "testscatteredhashshuffle"));
 
@@ -1279,7 +1280,11 @@
         if (i > 0) {
           partitionName.append("/");
         }
-        partitionName.append(partitionColumn).append("=").append(res.getString(partitionColumn));
+        String partitionValue = res.getString(partitionColumn);
+        if (partitionValue == null) {
+          partitionValue = StorageConstants.DEFAULT_PARTITION_NAME;
+        }
+        partitionName.append(partitionColumn).append("=").append(partitionValue);
       }
       partitionDescProto = catalog.getPartition(databaseName, tableName, partitionName.toString());
       assertNotNull(partitionDescProto);
@@ -1329,7 +1334,7 @@
       // partition. In previous Query and Stage, duplicated partitions were not deleted because they had been in List.
       // If you want to verify duplicated partitions, you need to use List instead of Set with DerbyStore.
       List<PartitionDescProto> partitions = catalog.getPartitionsOfTable(DEFAULT_DATABASE_NAME, tableName);
-      assertEquals(2, partitions.size());
+      assertEquals(3, partitions.size());
 
       PartitionDescProto firstPartition = catalog.getPartition(DEFAULT_DATABASE_NAME, tableName, "key=N");
       assertNotNull(firstPartition);
@@ -1660,7 +1665,10 @@
       "1,1,00:00:00\n" +
       "1,1,11:20:40\n" +
       "2,2,12:10:20\n" +
-      "3,3,00:00:00\n";
+      "3,3,00:00:00\n" +
+        "null,null,00:00:00\n" +
+        "null,null,00:00:00\n" +
+        "null,null,00:00:00\n";
 
     assertEquals(expectedResult, resultSetToString(res));
     res.close();
@@ -1732,7 +1740,10 @@
       "1,1,36.0\n" +
       "2,2,38.0\n" +
       "3,2,45.0\n" +
-      "3,3,49.0\n";
+      "3,3,49.0\n" +
+        "null,null,null\n" +
+        "null,null,null\n" +
+        "null,null,null\n";
     res.close();
     assertEquals(expectedResult, result);
 
@@ -1775,7 +1786,7 @@
     String result = resultSetToString(res);
     String expectedResult = "cnt\n" +
       "-------------------------------\n" +
-      "5\n";
+      "8\n";
     res.close();
     assertEquals(expectedResult, result);
 
@@ -1786,7 +1797,6 @@
     fs.mkdirs(path);
     path = new Path(tableDesc.getUri().getPath(), "col1=a");
     fs.mkdirs(path);
-    assertEquals(8, fs.listStatus(path.getParent()).length);
 
     res = executeString("SELECT COUNT(*) AS cnt FROM " + externalTableName + " WHERE key > 40.0");
     result = resultSetToString(res);
@@ -1807,7 +1817,10 @@
       "1,1,17.0\n" +
       "2,2,38.0\n" +
       "3,2,45.0\n" +
-      "3,3,49.0\n";
+      "3,3,49.0\n" +
+        "null,null,null\n" +
+        "null,null,null\n" +
+        "null,null,null\n";
     res.close();
     assertEquals(expectedResult, result);
 
@@ -1815,7 +1828,7 @@
     result = resultSetToString(res);
     expectedResult = "cnt\n" +
       "-------------------------------\n" +
-      "3\n";
+      "6\n";
     res.close();
     assertEquals(expectedResult, result);
 
@@ -1831,7 +1844,10 @@
       "1,1,17.0\n" +
       "2,2,38.0\n" +
       "3,3,49.0\n" +
-      "3,2,45.0\n";
+      "3,2,45.0\n" +
+        "null,null,null\n" +
+        "null,null,null\n" +
+        "null,null,null\n";
     res.close();
     assertEquals(expectedResult, result);
 
@@ -1871,7 +1887,10 @@
       "N,1,1,36.0\n" +
       "N,2,2,38.0\n" +
       "R,3,2,45.0\n" +
-      "R,3,3,49.0\n";
+      "R,3,3,49.0\n" +
+        "null,null,null,null\n" +
+        "null,null,null,null\n" +
+        "null,null,null,null\n";
     res.close();
     assertEquals(expectedResult, result);
 
diff --git a/tajo-core-tests/src/test/java/org/apache/tajo/engine/query/TestTruncateTable.java b/tajo-core-tests/src/test/java/org/apache/tajo/engine/query/TestTruncateTable.java
index 3ae0c60..24e6547 100644
--- a/tajo-core-tests/src/test/java/org/apache/tajo/engine/query/TestTruncateTable.java
+++ b/tajo-core-tests/src/test/java/org/apache/tajo/engine/query/TestTruncateTable.java
@@ -44,7 +44,7 @@
       while (res.next()) {
         numRows++;
       }
-      assertEquals(5, numRows);
+      assertEquals(8, numRows);
       res.close();
 
       executeString("truncate table truncate_table1");
@@ -58,7 +58,7 @@
       assertEquals(0, numRows);
       res.close();
     } finally {
-      executeString("DROP TABLE truncate_table1 PURGE");
+      executeString("DROP TABLE truncate_table1");
     }
   }
 
@@ -90,7 +90,7 @@
       assertEquals(4, numRows);
       res.close();
     } finally {
-      executeString("DROP TABLE truncate_table2 PURGE");
+      executeString("DROP TABLE truncate_table2");
     }
   }
 }
diff --git a/tajo-core-tests/src/test/java/org/apache/tajo/engine/query/TestUnionQuery.java b/tajo-core-tests/src/test/java/org/apache/tajo/engine/query/TestUnionQuery.java
index 4cce141..2023570 100644
--- a/tajo-core-tests/src/test/java/org/apache/tajo/engine/query/TestUnionQuery.java
+++ b/tajo-core-tests/src/test/java/org/apache/tajo/engine/query/TestUnionQuery.java
@@ -64,7 +64,7 @@
   @SimpleTest
   public final void testUnionAll1() throws Exception {
     Optional<TajoResultSetBase[]> existing = runSimpleTests();
-    verifyResultStats(existing, 8L);
+    verifyResultStats(existing, 14L);
   }
 
   /**
@@ -74,7 +74,7 @@
   @SimpleTest
   public final void testUnionAll2() throws Exception {
     Optional<TajoResultSetBase[]> existing = runSimpleTests();
-    verifyResultStats(existing, 10L);
+    verifyResultStats(existing, 16L);
   }
 
   /**
@@ -124,7 +124,7 @@
   @SimpleTest
   public final void testUnionAll7() throws Exception {
     Optional<TajoResultSetBase[]> existing = runSimpleTests();
-    verifyResultStats(existing, 10L);
+    verifyResultStats(existing, 16L);
   }
 
   @Test
@@ -171,7 +171,7 @@
     // test filter pushdown
     // with stage in union query
     Optional<TajoResultSetBase[]> existing = runSimpleTests();
-    verifyResultStats(existing, 5L);
+    verifyResultStats(existing, 8L);
   }
 
   @Test
@@ -180,7 +180,7 @@
     // test filter pushdown
     // with group by stage in union query
     Optional<TajoResultSetBase[]> existing = runSimpleTests();
-    verifyResultStats(existing, 7L);
+    verifyResultStats(existing, 9L);
   }
 
   @Test
@@ -208,7 +208,7 @@
   @SimpleTest
   public final void testUnion1() throws Exception {
     Optional<TajoResultSetBase[]> existing = runSimpleTests();
-    verifyResultStats(existing, 5L);
+    verifyResultStats(existing, 6L);
   }
 
   /**
@@ -218,7 +218,7 @@
   @SimpleTest
   public final void testUnion2() throws Exception {
     Optional<TajoResultSetBase[]> existing = runSimpleTests();
-    verifyResultStats(existing, 3L);
+    verifyResultStats(existing, 4L);
   }
 
   /**
@@ -268,7 +268,7 @@
   @SimpleTest
   public final void testUnion7() throws Exception {
     Optional<TajoResultSetBase[]> existing = runSimpleTests();
-    verifyResultStats(existing, 3L);
+    verifyResultStats(existing, 4L);
   }
 
   @Test
@@ -315,7 +315,7 @@
     // test filter pushdown
     // with stage in union query
     Optional<TajoResultSetBase[]> existing = runSimpleTests();
-    verifyResultStats(existing, 5L);
+    verifyResultStats(existing, 6L);
   }
 
   @Test
@@ -324,7 +324,7 @@
     // test filter pushdown
     // with group by stage in union query
     Optional<TajoResultSetBase[]> existing = runSimpleTests();
-    verifyResultStats(existing, 7L);
+    verifyResultStats(existing, 8L);
   }
 
   @Test
@@ -349,7 +349,7 @@
   @SimpleTest
   public final void testUnionAllWithSameAliasNames() throws Exception {
     Optional<TajoResultSetBase[]> existing = runSimpleTests();
-    verifyResultStats(existing, 10L);
+    verifyResultStats(existing, 16L);
   }
 
   @Test
@@ -370,7 +370,7 @@
   @SimpleTest
   public final void testUnionWithSameAliasNames() throws Exception {
     Optional<TajoResultSetBase[]> existing = runSimpleTests();
-    verifyResultStats(existing, 3L);
+    verifyResultStats(existing, 4L);
   }
 
   @Test
@@ -416,7 +416,7 @@
   public final void testUnionWithCrossJoin() throws Exception {
     // https://issues.apache.org/jira/browse/TAJO-881
     Optional<TajoResultSetBase[]> existing = runSimpleTests();
-    verifyResultStats(existing, 40L);
+    verifyResultStats(existing, 112L);
   }
 
   @Test
@@ -424,7 +424,7 @@
   public final void testThreeJoinInUnion() throws Exception {
     // https://issues.apache.org/jira/browse/TAJO-881
     Optional<TajoResultSetBase[]> existing = runSimpleTests();
-    verifyResultStats(existing, 30L);
+    verifyResultStats(existing, 33L);
   }
 
   @Test
@@ -445,7 +445,7 @@
   @SimpleTest
   public void testTajo1368Case2() throws Exception {
     Optional<TajoResultSetBase[]> existing = runSimpleTests();
-    verifyResultStats(existing, 10L);
+    verifyResultStats(existing, 16L);
   }
 
   @Test
diff --git a/tajo-core-tests/src/test/java/org/apache/tajo/engine/query/TestWindowQuery.java b/tajo-core-tests/src/test/java/org/apache/tajo/engine/query/TestWindowQuery.java
index 54aa41e..2204ce2 100644
--- a/tajo-core-tests/src/test/java/org/apache/tajo/engine/query/TestWindowQuery.java
+++ b/tajo-core-tests/src/test/java/org/apache/tajo/engine/query/TestWindowQuery.java
@@ -25,8 +25,6 @@
 import org.apache.tajo.catalog.Schema;
 import org.apache.tajo.catalog.SchemaBuilder;
 import org.apache.tajo.common.TajoDataTypes;
-import org.apache.tajo.storage.StorageConstants;
-import org.apache.tajo.util.KeyValueSet;
 import org.junit.Test;
 import org.junit.experimental.categories.Category;
 
@@ -262,16 +260,12 @@
 
   @Test
   public final void testFirstValueTime() throws Exception {
-    KeyValueSet tableOptions = new KeyValueSet();
-    tableOptions.set(StorageConstants.TEXT_DELIMITER, StorageConstants.DEFAULT_FIELD_DELIMITER);
-    tableOptions.set(StorageConstants.TEXT_NULL, "\\\\N");
-
     Schema schema = SchemaBuilder.builder()
         .add("id", TajoDataTypes.Type.INT4)
         .add("time", TajoDataTypes.Type.TIME)
         .build();
     String[] data = new String[]{ "1|12:11:12", "2|10:11:13", "2|05:42:41" };
-    TajoTestingCluster.createTable("firstvaluetime", schema, tableOptions, data, 1);
+    TajoTestingCluster.createTable(conf, "firstvaluetime", schema, data, 1);
 
     try {
       ResultSet res = executeString(
@@ -298,16 +292,12 @@
 
   @Test
   public final void testLastValueTime() throws Exception {
-    KeyValueSet tableOptions = new KeyValueSet();
-    tableOptions.set(StorageConstants.TEXT_DELIMITER, StorageConstants.DEFAULT_FIELD_DELIMITER);
-    tableOptions.set(StorageConstants.TEXT_NULL, "\\\\N");
-
     Schema schema = SchemaBuilder.builder()
         .add("id", TajoDataTypes.Type.INT4)
         .add("time", TajoDataTypes.Type.TIME)
         .build();
     String[] data = new String[]{ "1|12:11:12", "2|10:11:13", "2|05:42:41" };
-    TajoTestingCluster.createTable("lastvaluetime", schema, tableOptions, data, 1);
+    TajoTestingCluster.createTable(conf, "lastvaluetime", schema, data, 1);
 
     try {
       ResultSet res = executeString(
@@ -334,16 +324,12 @@
 
   @Test
   public final void testLagTime() throws Exception {
-    KeyValueSet tableOptions = new KeyValueSet();
-    tableOptions.set(StorageConstants.TEXT_DELIMITER, StorageConstants.DEFAULT_FIELD_DELIMITER);
-    tableOptions.set(StorageConstants.TEXT_NULL, "\\\\N");
-
     Schema schema = SchemaBuilder.builder()
         .add("id", TajoDataTypes.Type.INT4)
         .add("time", TajoDataTypes.Type.TIME)
         .build();
     String[] data = new String[]{ "1|12:11:12", "2|10:11:13", "2|05:42:41" };
-    TajoTestingCluster.createTable("lagtime", schema, tableOptions, data, 1);
+    TajoTestingCluster.createTable(conf, "lagtime", schema, data, 1);
 
     try {
       ResultSet res = executeString(
@@ -384,16 +370,12 @@
 
   @Test
   public final void testLeadTime() throws Exception {
-    KeyValueSet tableOptions = new KeyValueSet();
-    tableOptions.set(StorageConstants.TEXT_DELIMITER, StorageConstants.DEFAULT_FIELD_DELIMITER);
-    tableOptions.set(StorageConstants.TEXT_NULL, "\\\\N");
-
     Schema schema = SchemaBuilder.builder()
         .add("id", TajoDataTypes.Type.INT4)
         .add("time", TajoDataTypes.Type.TIME)
         .build();
     String[] data = new String[]{ "1|12:11:12", "2|10:11:13", "2|05:42:41" };
-    TajoTestingCluster.createTable("leadtime", schema, tableOptions, data, 1);
+    TajoTestingCluster.createTable(conf, "leadtime", schema, data, 1);
 
     try {
       ResultSet res = executeString(
@@ -441,17 +423,13 @@
 
   @Test
   public final void testMultipleWindow() throws Exception {
-    KeyValueSet tableOptions = new KeyValueSet();
-    tableOptions.set(StorageConstants.TEXT_DELIMITER, StorageConstants.DEFAULT_FIELD_DELIMITER);
-    tableOptions.set(StorageConstants.TEXT_NULL, "\\\\N");
-
     Schema schema = SchemaBuilder.builder()
         .add("id", TajoDataTypes.Type.INT4)
         .add("time", TajoDataTypes.Type.TIME)
         .add("name", TajoDataTypes.Type.TEXT)
         .build();
     String[] data = new String[]{ "1|12:11:12|abc", "2|10:11:13|def", "2|05:42:41|ghi" };
-    TajoTestingCluster.createTable("multiwindow", schema, tableOptions, data, 1);
+    TajoTestingCluster.createTable(conf, "multiwindow", schema, data, 1);
 
     try {
       ResultSet res = executeString(
diff --git a/tajo-core-tests/src/test/java/org/apache/tajo/querymaster/TestTaskStatusUpdate.java b/tajo-core-tests/src/test/java/org/apache/tajo/querymaster/TestTaskStatusUpdate.java
index 425a7d6..34eefda 100644
--- a/tajo-core-tests/src/test/java/org/apache/tajo/querymaster/TestTaskStatusUpdate.java
+++ b/tajo-core-tests/src/test/java/org/apache/tajo/querymaster/TestTaskStatusUpdate.java
@@ -58,9 +58,9 @@
       res = executeQuery();
 
       // tpch/lineitem.tbl
-      long[] expectedNumRows = new long[]{5, 2, 2, 2};
-      long[] expectedNumBytes = new long[]{604, 18, 18, 48};
-      long[] expectedReadBytes = new long[]{604, 604, 18, 0};
+      long[] expectedNumRows = new long[]{8, 3, 3, 3};
+      long[] expectedNumBytes = new long[]{737, 26, 26, 68};
+      long[] expectedReadBytes = new long[]{737, 0, 26, 0};
       QueryId queryId = getQueryId(res);
 
       assertStatus(queryId, 2, expectedNumRows, expectedNumBytes, expectedReadBytes);
@@ -77,9 +77,9 @@
       res = executeQuery();
 
       // tpch/lineitem.tbl
-      long[] expectedNumRows = new long[]{5, 2, 2, 2, 2, 2};
-      long[] expectedNumBytes = new long[]{604, 162, 162, 138, 138, 236};
-      long[] expectedReadBytes = new long[]{604, 604, 236, 0, 138, 0};
+      long[] expectedNumRows = new long[]{8, 3, 3, 3, 3, 3};
+      long[] expectedNumBytes = new long[]{737, 171, 171, 147, 147, 288};
+      long[] expectedReadBytes = new long[]{737, 0, 288, 0, 147, 0};
 
       QueryId queryId = getQueryId(res);
       assertStatus(queryId, 3, expectedNumRows, expectedNumBytes, expectedReadBytes);
@@ -106,9 +106,9 @@
       res = executeQuery();
 
       // in/out * stage(4)
-      long[] expectedNumRows = new long[]{5, 5, 2, 2, 2, 2, 2, 2};
-      long[] expectedNumBytes = new long[]{20, 75, 8, 34, 109, 34, 34, 64};
-      long[] expectedReadBytes = new long[]{20, 20, 8, 8, 64, 0, 34, 0};
+      long[] expectedNumRows   = new long[]{8,  8,  2, 2,  2,   2,  2,  2};
+      long[] expectedNumBytes  = new long[]{26, 96, 8, 34, 130, 34, 34, 64};
+      long[] expectedReadBytes = new long[]{26, 0,  8, 0,  64,  0,  34, 0};
 
       QueryId queryId = getQueryId(res);
       assertStatus(queryId, 4, expectedNumRows, expectedNumBytes, expectedReadBytes);
@@ -140,34 +140,42 @@
                             long[] expectedReadBytes) throws Exception {
 
 
-      QueryHistory queryHistory  = testingCluster.getQueryHistory(queryId);
+    QueryHistory queryHistory  = testingCluster.getQueryHistory(queryId);
 
-      assertNotNull(queryHistory);
+    assertNotNull(queryHistory);
 
-      List<StageHistory> stages = queryHistory.getStageHistories();
-      assertEquals(numStages, stages.size());
+    List<StageHistory> stages = queryHistory.getStageHistories();
+    assertEquals(numStages, stages.size());
 
-      Collections.sort(stages, new Comparator<StageHistory>() {
-        @Override
-        public int compare(StageHistory o1, StageHistory o2) {
-          return o1.getExecutionBlockId().compareTo(o2.getExecutionBlockId());
-        }
-      });
-
-      int index = 0;
-      for (StageHistory eachStage : stages) {
-
-        assertEquals(expectedNumRows[index], eachStage.getTotalReadRows());
-        assertEquals(expectedNumBytes[index], eachStage.getTotalInputBytes());
-        assertEquals(expectedReadBytes[index], eachStage.getTotalReadBytes());
-
-        index++;
-
-        assertEquals(expectedNumRows[index], eachStage.getTotalWriteRows());
-        assertEquals(expectedNumBytes[index],eachStage.getTotalWriteBytes());
-
-        index++;
+    Collections.sort(stages, new Comparator<StageHistory>() {
+      @Override
+      public int compare(StageHistory o1, StageHistory o2) {
+        return o1.getExecutionBlockId().compareTo(o2.getExecutionBlockId());
       }
+    });
 
+    int index = 0;
+    StringBuilder expectedString = new StringBuilder();
+    StringBuilder actualString = new StringBuilder();
+
+    for (StageHistory eachStage : stages) {
+      expectedString.append(expectedNumRows[index]).append(",")
+          .append(expectedNumBytes[index]).append(",")
+          .append(expectedReadBytes[index]).append(",");
+      actualString.append(eachStage.getTotalReadRows()).append(",")
+          .append(eachStage.getTotalInputBytes()).append(",")
+          .append(eachStage.getTotalReadBytes()).append(",");
+
+      index++;
+
+      expectedString.append(expectedNumRows[index]).append(",")
+          .append(expectedNumBytes[index]).append("\n");
+      actualString.append(eachStage.getTotalWriteRows()).append(",")
+          .append(eachStage.getTotalWriteBytes()).append("\n");
+
+      index++;
+    }
+
+    assertEquals(expectedString.toString(), actualString.toString());
   }
 }
diff --git a/tajo-core-tests/src/test/java/org/apache/tajo/ws/rs/resources/TestQueryResultResource.java b/tajo-core-tests/src/test/java/org/apache/tajo/ws/rs/resources/TestQueryResultResource.java
index 8b9c93d..e4880b3 100644
--- a/tajo-core-tests/src/test/java/org/apache/tajo/ws/rs/resources/TestQueryResultResource.java
+++ b/tajo-core-tests/src/test/java/org/apache/tajo/ws/rs/resources/TestQueryResultResource.java
@@ -226,11 +226,12 @@
       }
     }
 
-    assertEquals(5, tupleList.size());
+    assertEquals(8, tupleList.size());
 
-    for (Tuple aTuple: tupleList) {
-      assertTrue(aTuple.getInt4(response.getSchema().getColumnId("l_orderkey")) > 0);
+    for (int i = 0; i < 5; i++) {
+      assertTrue(tupleList.get(i).getInt4(response.getSchema().getColumnId("l_orderkey")) > 0);
     }
+    assertEquals(0, tupleList.get(5).getInt4(response.getSchema().getColumnId("l_orderkey")));
   }
 
   @Test
@@ -267,7 +268,7 @@
 
     assertTrue(eos);
     assertEquals(0, offset);
-    assertEquals(5, count);
+    assertEquals(8, count);
 
 
     DataInputStream queryResultSetInputStream =
@@ -295,11 +296,12 @@
     }
 
     assertEquals(contentLength, receviedSize);
-    assertEquals(5, tupleList.size());
+    assertEquals(8, tupleList.size());
 
-    for (Tuple aTuple: tupleList) {
-      assertTrue(aTuple.getInt4(response.getSchema().getColumnId("l_orderkey")) > 0);
+    for (int i = 0; i < 5; i++) {
+      assertTrue(tupleList.get(i).getInt4(response.getSchema().getColumnId("l_orderkey")) > 0);
     }
+    assertEquals(0, tupleList.get(5).getInt4(response.getSchema().getColumnId("l_orderkey")));
   }
 
   @Test
@@ -336,7 +338,7 @@
 
     assertTrue(eos);
     assertEquals(0, offset);
-    assertEquals(5, count);
+    assertEquals(8, count);
     assertTrue(length > 0);
 
     DataInputStream queryResultSetInputStream =
@@ -353,7 +355,7 @@
     } catch (EOFException eof) {
     }
 
-    assertEquals(5, count);
+    assertEquals(8, count);
   }
 
   @Test
@@ -390,7 +392,7 @@
 
     assertTrue(eos);
     assertEquals(0, offset);
-    assertEquals(5, count);
+    assertEquals(8, count);
     assertTrue(length > 0);
 
     DataInputStream queryResultSetInputStream =
@@ -407,6 +409,6 @@
     } catch (EOFException eof) {
     }
 
-    assertEquals(5, count);
+    assertEquals(8, count);
   }
 }
diff --git a/tajo-core-tests/src/test/resources/python/test_funcs.py b/tajo-core-tests/src/test/resources/python/test_funcs.py
index 1167afd..df3371c 100644
--- a/tajo-core-tests/src/test/resources/python/test_funcs.py
+++ b/tajo-core-tests/src/test/resources/python/test_funcs.py
@@ -30,4 +30,7 @@
 
 @output_type('int4')
 def add_py(a,b):
-    return a+b
+    if a != None and b != None:
+        return a+b
+    else:
+        return None
diff --git a/tajo-core-tests/src/test/resources/python/test_udaf.py b/tajo-core-tests/src/test/resources/python/test_udaf.py
index da5a3fd..4e7b34d 100644
--- a/tajo-core-tests/src/test/resources/python/test_udaf.py
+++ b/tajo-core-tests/src/test/resources/python/test_udaf.py
@@ -30,22 +30,30 @@
 
     # eval at the first stage
     def eval(self, item):
-        self.sum += item
-        self.cnt += 1
+        if item != None: # null checking
+            self.sum += item
+            self.cnt += 1
 
     # get intermediate result
     def get_partial_result(self):
-        return [self.sum, self.cnt]
+        if self.cnt == 0:
+            return None
+        else:
+            return [self.sum, self.cnt]
 
     # merge intermediate results
     def merge(self, list):
-        self.sum += list[0]
-        self.cnt += list[1]
+        if list: # null checking
+            self.sum += list[0]
+            self.cnt += list[1]
 
     # get final result
     @output_type('float8')
     def get_final_result(self):
-        return self.sum / float(self.cnt)
+        if self.cnt == 0:
+            return None
+        else:
+            return self.sum / float(self.cnt)
 
 
 class CountPy:
diff --git a/tajo-core-tests/src/test/resources/queries/TestOuterJoinQuery/testMultipleBroadcastDataFileWithZeroLength.sql b/tajo-core-tests/src/test/resources/queries/TestOuterJoinQuery/testMultipleBroadcastDataFileWithZeroLength.sql
index 6ae6c09..1dcfd77 100644
--- a/tajo-core-tests/src/test/resources/queries/TestOuterJoinQuery/testMultipleBroadcastDataFileWithZeroLength.sql
+++ b/tajo-core-tests/src/test/resources/queries/TestOuterJoinQuery/testMultipleBroadcastDataFileWithZeroLength.sql
@@ -1,3 +1,3 @@
 select * from customer a
  left outer join nation_multifile b on a.c_nationkey = b.n_nationkey
- where b.n_nationkey is null
\ No newline at end of file
+ where b.n_nationkey = 100;
\ No newline at end of file
diff --git a/tajo-core-tests/src/test/resources/queries/TestSortQuery/testTopK.sql b/tajo-core-tests/src/test/resources/queries/TestSortQuery/testTopK.sql
index 65519f0..c2acca4 100644
--- a/tajo-core-tests/src/test/resources/queries/TestSortQuery/testTopK.sql
+++ b/tajo-core-tests/src/test/resources/queries/TestSortQuery/testTopK.sql
@@ -1 +1 @@
-select l_orderkey, l_linenumber from lineitem order by l_orderkey desc, l_linenumber asc limit 3;
\ No newline at end of file
+select l_orderkey, l_linenumber from lineitem order by l_orderkey desc, l_linenumber asc limit 5;
\ No newline at end of file
diff --git a/tajo-core-tests/src/test/resources/queries/TestSortQuery/testTopkWithJson.json b/tajo-core-tests/src/test/resources/queries/TestSortQuery/testTopkWithJson.json
index 333037b..3ba8ec6 100644
--- a/tajo-core-tests/src/test/resources/queries/TestSortQuery/testTopkWithJson.json
+++ b/tajo-core-tests/src/test/resources/queries/TestSortQuery/testTopkWithJson.json
@@ -19,7 +19,7 @@
     ],
     "Expr": {
         "Num": {
-            "Value": "3",
+            "Value": "5",
             "ValueType": "Unsigned_Integer",
             "OpType": "Literal"
         },
diff --git a/tajo-core-tests/src/test/resources/results/TestBuiltinFunctions/testAvgDouble.result b/tajo-core-tests/src/test/resources/results/TestBuiltinFunctions/testAvgDouble.result
index bd2a69f..2755056 100644
--- a/tajo-core-tests/src/test/resources/results/TestBuiltinFunctions/testAvgDouble.result
+++ b/tajo-core-tests/src/test/resources/results/TestBuiltinFunctions/testAvgDouble.result
@@ -2,4 +2,5 @@
 -------------------------------
 1,0.065
 2,0.0
-3,0.08
\ No newline at end of file
+3,0.08
+null,null
\ No newline at end of file
diff --git a/tajo-core-tests/src/test/resources/results/TestBuiltinFunctions/testCount.result b/tajo-core-tests/src/test/resources/results/TestBuiltinFunctions/testCount.result
index 381cded..2956ff0 100644
--- a/tajo-core-tests/src/test/resources/results/TestBuiltinFunctions/testCount.result
+++ b/tajo-core-tests/src/test/resources/results/TestBuiltinFunctions/testCount.result
@@ -1,3 +1,3 @@
 rownum
 -------------------------------
-5
\ No newline at end of file
+8
\ No newline at end of file
diff --git a/tajo-core-tests/src/test/resources/results/TestBuiltinFunctions/testSplitPart.result b/tajo-core-tests/src/test/resources/results/TestBuiltinFunctions/testSplitPart.result
index d22cd68..b2a7d91 100644
--- a/tajo-core-tests/src/test/resources/results/TestBuiltinFunctions/testSplitPart.result
+++ b/tajo-core-tests/src/test/resources/results/TestBuiltinFunctions/testSplitPart.result
@@ -4,4 +4,7 @@
 TAKE
 TAKE
 NONE
-TAKE
\ No newline at end of file
+TAKE
+null
+null
+null
\ No newline at end of file
diff --git a/tajo-core-tests/src/test/resources/results/TestBuiltinFunctions/testSplitPartByString.result b/tajo-core-tests/src/test/resources/results/TestBuiltinFunctions/testSplitPartByString.result
index ac8119d..f12988e 100644
--- a/tajo-core-tests/src/test/resources/results/TestBuiltinFunctions/testSplitPartByString.result
+++ b/tajo-core-tests/src/test/resources/results/TestBuiltinFunctions/testSplitPartByString.result
@@ -4,4 +4,7 @@
 TA
 TA
 NONE
-TA
\ No newline at end of file
+TA
+null
+null
+null
\ No newline at end of file
diff --git a/tajo-core-tests/src/test/resources/results/TestBuiltinFunctions/testSplitPartNested.result b/tajo-core-tests/src/test/resources/results/TestBuiltinFunctions/testSplitPartNested.result
index ec0f07b..0200187 100644
--- a/tajo-core-tests/src/test/resources/results/TestBuiltinFunctions/testSplitPartNested.result
+++ b/tajo-core-tests/src/test/resources/results/TestBuiltinFunctions/testSplitPartNested.result
@@ -4,4 +4,7 @@
 KE
 KE
 null
-KE
\ No newline at end of file
+KE
+null
+null
+null
\ No newline at end of file
diff --git a/tajo-core-tests/src/test/resources/results/TestCTASQuery/testCtasWithGroupby.result b/tajo-core-tests/src/test/resources/results/TestCTASQuery/testCtasWithGroupby.result
index 048902f..21b7a2a 100644
--- a/tajo-core-tests/src/test/resources/results/TestCTASQuery/testCtasWithGroupby.result
+++ b/tajo-core-tests/src/test/resources/results/TestCTASQuery/testCtasWithGroupby.result
@@ -4,4 +4,5 @@
 1.0,1.0,36.0
 2.0,2.0,38.0
 3.0,2.0,45.0
-3.0,3.0,49.0
\ No newline at end of file
+3.0,3.0,49.0
+null,null,null
\ No newline at end of file
diff --git a/tajo-core-tests/src/test/resources/results/TestCTASQuery/testCtasWithOrderby.result b/tajo-core-tests/src/test/resources/results/TestCTASQuery/testCtasWithOrderby.result
index 048902f..21b7a2a 100644
--- a/tajo-core-tests/src/test/resources/results/TestCTASQuery/testCtasWithOrderby.result
+++ b/tajo-core-tests/src/test/resources/results/TestCTASQuery/testCtasWithOrderby.result
@@ -4,4 +4,5 @@
 1.0,1.0,36.0
 2.0,2.0,38.0
 3.0,2.0,45.0
-3.0,3.0,49.0
\ No newline at end of file
+3.0,3.0,49.0
+null,null,null
\ No newline at end of file
diff --git a/tajo-core-tests/src/test/resources/results/TestCaseByCases/testTAJO1224Case1.result b/tajo-core-tests/src/test/resources/results/TestCaseByCases/testTAJO1224Case1.result
index 19336a7..8ed0390 100644
--- a/tajo-core-tests/src/test/resources/results/TestCaseByCases/testTAJO1224Case1.result
+++ b/tajo-core-tests/src/test/resources/results/TestCaseByCases/testTAJO1224Case1.result
@@ -1,3 +1,3 @@
 ?count
 -------------------------------
-5
\ No newline at end of file
+8
\ No newline at end of file
diff --git a/tajo-core-tests/src/test/resources/results/TestCaseByCases/testTAJO415Case.result b/tajo-core-tests/src/test/resources/results/TestCaseByCases/testTAJO415Case.result
index 6c527af..839a4e5 100644
--- a/tajo-core-tests/src/test/resources/results/TestCaseByCases/testTAJO415Case.result
+++ b/tajo-core-tests/src/test/resources/results/TestCaseByCases/testTAJO415Case.result
@@ -4,4 +4,5 @@
 2,2,1
 3,3,1
 4,null,1
-5,null,1
\ No newline at end of file
+5,null,1
+null,null,3
\ No newline at end of file
diff --git a/tajo-core-tests/src/test/resources/results/TestCaseByCases/testTAJO718Case.result b/tajo-core-tests/src/test/resources/results/TestCaseByCases/testTAJO718Case.result
index 86c4d57..ddee757 100644
--- a/tajo-core-tests/src/test/resources/results/TestCaseByCases/testTAJO718Case.result
+++ b/tajo-core-tests/src/test/resources/results/TestCaseByCases/testTAJO718Case.result
@@ -2,4 +2,5 @@
 -------------------------------
 1,1,2
 2,2,1
-3,3,2
\ No newline at end of file
+3,3,2
+null,null,0
\ No newline at end of file
diff --git a/tajo-core-tests/src/test/resources/results/TestCaseByCases/testTAJO_1600.result b/tajo-core-tests/src/test/resources/results/TestCaseByCases/testTAJO_1600.result
index 7cb5166..b4ef88a 100644
--- a/tajo-core-tests/src/test/resources/results/TestCaseByCases/testTAJO_1600.result
+++ b/tajo-core-tests/src/test/resources/results/TestCaseByCases/testTAJO_1600.result
@@ -5,3 +5,4 @@
 3,3,F,1993-10-14
 4,null,null,null
 5,null,null,null
+null,null,null,null
diff --git a/tajo-core-tests/src/test/resources/results/TestCrossJoin/testCrossJoin.1.result b/tajo-core-tests/src/test/resources/results/TestCrossJoin/testCrossJoin.1.result
index 7d5a2f5..42d8ad8 100644
--- a/tajo-core-tests/src/test/resources/results/TestCrossJoin/testCrossJoin.1.result
+++ b/tajo-core-tests/src/test/resources/results/TestCrossJoin/testCrossJoin.1.result
@@ -5,123 +5,222 @@
 ALGERIA,ASIA,0,2
 ALGERIA,EUROPE,0,3
 ALGERIA,MIDDLE EAST,0,4
+ALGERIA,null,0,null
+ALGERIA,null,0,null
+ALGERIA,null,0,null
 ARGENTINA,AFRICA,1,0
 ARGENTINA,AMERICA,1,1
 ARGENTINA,ASIA,1,2
 ARGENTINA,EUROPE,1,3
 ARGENTINA,MIDDLE EAST,1,4
+ARGENTINA,null,1,null
+ARGENTINA,null,1,null
+ARGENTINA,null,1,null
 BRAZIL,AFRICA,1,0
 BRAZIL,AMERICA,1,1
 BRAZIL,ASIA,1,2
 BRAZIL,EUROPE,1,3
 BRAZIL,MIDDLE EAST,1,4
+BRAZIL,null,1,null
+BRAZIL,null,1,null
+BRAZIL,null,1,null
 CANADA,AFRICA,1,0
 CANADA,AMERICA,1,1
 CANADA,ASIA,1,2
 CANADA,EUROPE,1,3
 CANADA,MIDDLE EAST,1,4
+CANADA,null,1,null
+CANADA,null,1,null
+CANADA,null,1,null
 CHINA,AFRICA,2,0
 CHINA,AMERICA,2,1
 CHINA,ASIA,2,2
 CHINA,EUROPE,2,3
 CHINA,MIDDLE EAST,2,4
+CHINA,null,2,null
+CHINA,null,2,null
+CHINA,null,2,null
 EGYPT,AFRICA,4,0
 EGYPT,AMERICA,4,1
 EGYPT,ASIA,4,2
 EGYPT,EUROPE,4,3
 EGYPT,MIDDLE EAST,4,4
+EGYPT,null,4,null
+EGYPT,null,4,null
+EGYPT,null,4,null
 ETHIOPIA,AFRICA,0,0
 ETHIOPIA,AMERICA,0,1
 ETHIOPIA,ASIA,0,2
 ETHIOPIA,EUROPE,0,3
 ETHIOPIA,MIDDLE EAST,0,4
+ETHIOPIA,null,0,null
+ETHIOPIA,null,0,null
+ETHIOPIA,null,0,null
 FRANCE,AFRICA,3,0
 FRANCE,AMERICA,3,1
 FRANCE,ASIA,3,2
 FRANCE,EUROPE,3,3
 FRANCE,MIDDLE EAST,3,4
+FRANCE,null,3,null
+FRANCE,null,3,null
+FRANCE,null,3,null
 GERMANY,AFRICA,3,0
 GERMANY,AMERICA,3,1
 GERMANY,ASIA,3,2
 GERMANY,EUROPE,3,3
 GERMANY,MIDDLE EAST,3,4
+GERMANY,null,3,null
+GERMANY,null,3,null
+GERMANY,null,3,null
 INDIA,AFRICA,2,0
 INDIA,AMERICA,2,1
 INDIA,ASIA,2,2
 INDIA,EUROPE,2,3
 INDIA,MIDDLE EAST,2,4
+INDIA,null,2,null
+INDIA,null,2,null
+INDIA,null,2,null
 INDONESIA,AFRICA,2,0
 INDONESIA,AMERICA,2,1
 INDONESIA,ASIA,2,2
 INDONESIA,EUROPE,2,3
 INDONESIA,MIDDLE EAST,2,4
+INDONESIA,null,2,null
+INDONESIA,null,2,null
+INDONESIA,null,2,null
 IRAN,AFRICA,4,0
 IRAN,AMERICA,4,1
 IRAN,ASIA,4,2
 IRAN,EUROPE,4,3
 IRAN,MIDDLE EAST,4,4
+IRAN,null,4,null
+IRAN,null,4,null
+IRAN,null,4,null
 IRAQ,AFRICA,4,0
 IRAQ,AMERICA,4,1
 IRAQ,ASIA,4,2
 IRAQ,EUROPE,4,3
 IRAQ,MIDDLE EAST,4,4
+IRAQ,null,4,null
+IRAQ,null,4,null
+IRAQ,null,4,null
 JAPAN,AFRICA,2,0
 JAPAN,AMERICA,2,1
 JAPAN,ASIA,2,2
 JAPAN,EUROPE,2,3
 JAPAN,MIDDLE EAST,2,4
+JAPAN,null,2,null
+JAPAN,null,2,null
+JAPAN,null,2,null
 JORDAN,AFRICA,4,0
 JORDAN,AMERICA,4,1
 JORDAN,ASIA,4,2
 JORDAN,EUROPE,4,3
 JORDAN,MIDDLE EAST,4,4
+JORDAN,null,4,null
+JORDAN,null,4,null
+JORDAN,null,4,null
 KENYA,AFRICA,0,0
 KENYA,AMERICA,0,1
 KENYA,ASIA,0,2
 KENYA,EUROPE,0,3
 KENYA,MIDDLE EAST,0,4
+KENYA,null,0,null
+KENYA,null,0,null
+KENYA,null,0,null
 MOROCCO,AFRICA,0,0
 MOROCCO,AMERICA,0,1
 MOROCCO,ASIA,0,2
 MOROCCO,EUROPE,0,3
 MOROCCO,MIDDLE EAST,0,4
+MOROCCO,null,0,null
+MOROCCO,null,0,null
+MOROCCO,null,0,null
 MOZAMBIQUE,AFRICA,0,0
 MOZAMBIQUE,AMERICA,0,1
 MOZAMBIQUE,ASIA,0,2
 MOZAMBIQUE,EUROPE,0,3
 MOZAMBIQUE,MIDDLE EAST,0,4
+MOZAMBIQUE,null,0,null
+MOZAMBIQUE,null,0,null
+MOZAMBIQUE,null,0,null
 PERU,AFRICA,1,0
 PERU,AMERICA,1,1
 PERU,ASIA,1,2
 PERU,EUROPE,1,3
 PERU,MIDDLE EAST,1,4
+PERU,null,1,null
+PERU,null,1,null
+PERU,null,1,null
 ROMANIA,AFRICA,3,0
 ROMANIA,AMERICA,3,1
 ROMANIA,ASIA,3,2
 ROMANIA,EUROPE,3,3
 ROMANIA,MIDDLE EAST,3,4
+ROMANIA,null,3,null
+ROMANIA,null,3,null
+ROMANIA,null,3,null
 RUSSIA,AFRICA,3,0
 RUSSIA,AMERICA,3,1
 RUSSIA,ASIA,3,2
 RUSSIA,EUROPE,3,3
 RUSSIA,MIDDLE EAST,3,4
+RUSSIA,null,3,null
+RUSSIA,null,3,null
+RUSSIA,null,3,null
 SAUDI ARABIA,AFRICA,4,0
 SAUDI ARABIA,AMERICA,4,1
 SAUDI ARABIA,ASIA,4,2
 SAUDI ARABIA,EUROPE,4,3
 SAUDI ARABIA,MIDDLE EAST,4,4
+SAUDI ARABIA,null,4,null
+SAUDI ARABIA,null,4,null
+SAUDI ARABIA,null,4,null
 UNITED KINGDOM,AFRICA,3,0
 UNITED KINGDOM,AMERICA,3,1
 UNITED KINGDOM,ASIA,3,2
 UNITED KINGDOM,EUROPE,3,3
 UNITED KINGDOM,MIDDLE EAST,3,4
+UNITED KINGDOM,null,3,null
+UNITED KINGDOM,null,3,null
+UNITED KINGDOM,null,3,null
 UNITED STATES,AFRICA,1,0
 UNITED STATES,AMERICA,1,1
 UNITED STATES,ASIA,1,2
 UNITED STATES,EUROPE,1,3
 UNITED STATES,MIDDLE EAST,1,4
+UNITED STATES,null,1,null
+UNITED STATES,null,1,null
+UNITED STATES,null,1,null
 VIETNAM,AFRICA,2,0
 VIETNAM,AMERICA,2,1
 VIETNAM,ASIA,2,2
 VIETNAM,EUROPE,2,3
 VIETNAM,MIDDLE EAST,2,4
+VIETNAM,null,2,null
+VIETNAM,null,2,null
+VIETNAM,null,2,null
+null,AFRICA,null,0
+null,AFRICA,null,0
+null,AFRICA,null,0
+null,AMERICA,null,1
+null,AMERICA,null,1
+null,AMERICA,null,1
+null,ASIA,null,2
+null,ASIA,null,2
+null,ASIA,null,2
+null,EUROPE,null,3
+null,EUROPE,null,3
+null,EUROPE,null,3
+null,MIDDLE EAST,null,4
+null,MIDDLE EAST,null,4
+null,MIDDLE EAST,null,4
+null,null,null,null
+null,null,null,null
+null,null,null,null
+null,null,null,null
+null,null,null,null
+null,null,null,null
+null,null,null,null
+null,null,null,null
+null,null,null,null
diff --git a/tajo-core-tests/src/test/resources/results/TestCrossJoin/testCrossJoin.2.result b/tajo-core-tests/src/test/resources/results/TestCrossJoin/testCrossJoin.2.result
index 304b867..f95d10c 100644
--- a/tajo-core-tests/src/test/resources/results/TestCrossJoin/testCrossJoin.2.result
+++ b/tajo-core-tests/src/test/resources/results/TestCrossJoin/testCrossJoin.2.result
@@ -5,23 +5,62 @@
 0,AFRICA,lar deposits. blithely final packages cajole. regular waters are final requests. regular accounts are according to ,3,Customer#000000003,MG9kdTD2WBHm,1,11-719-748-3364,7498.12,AUTOMOBILE, deposits eat slyly ironic, even instructions. express foxes detect slyly. blithely even accounts abov
 0,AFRICA,lar deposits. blithely final packages cajole. regular waters are final requests. regular accounts are according to ,4,Customer#000000004,XxVSJsLAGtn,4,14-128-190-5944,2866.83,MACHINERY, requests. final, regular ideas sleep final accou
 0,AFRICA,lar deposits. blithely final packages cajole. regular waters are final requests. regular accounts are according to ,5,Customer#000000005,KvpyuHCplrB84WgAiGV6sYpZq7Tj,3,13-750-942-6364,794.47,HOUSEHOLD,n accounts will have to unwind. foxes cajole accor
+0,AFRICA,lar deposits. blithely final packages cajole. regular waters are final requests. regular accounts are according to ,null,null,null,null,null,null,null,for null test
+0,AFRICA,lar deposits. blithely final packages cajole. regular waters are final requests. regular accounts are according to ,null,null,null,null,null,null,null,for null test2
+0,AFRICA,lar deposits. blithely final packages cajole. regular waters are final requests. regular accounts are according to ,null,null,null,null,null,null,null,for null test3
 1,AMERICA,hs use ironic, even requests. s,1,Customer#000000001,IVhzIApeRb ot,c,E,15,25-989-741-2988,711.56,BUILDING,to the even, regular platelets. regular, ironic epitaphs nag e
 1,AMERICA,hs use ironic, even requests. s,2,Customer#000000002,XSTf4,NCwDVaWNe6tEgvwfmRchLXak,13,23-768-687-3665,121.65,AUTOMOBILE,l accounts. blithely ironic theodolites integrate boldly: caref
 1,AMERICA,hs use ironic, even requests. s,3,Customer#000000003,MG9kdTD2WBHm,1,11-719-748-3364,7498.12,AUTOMOBILE, deposits eat slyly ironic, even instructions. express foxes detect slyly. blithely even accounts abov
 1,AMERICA,hs use ironic, even requests. s,4,Customer#000000004,XxVSJsLAGtn,4,14-128-190-5944,2866.83,MACHINERY, requests. final, regular ideas sleep final accou
 1,AMERICA,hs use ironic, even requests. s,5,Customer#000000005,KvpyuHCplrB84WgAiGV6sYpZq7Tj,3,13-750-942-6364,794.47,HOUSEHOLD,n accounts will have to unwind. foxes cajole accor
+1,AMERICA,hs use ironic, even requests. s,null,null,null,null,null,null,null,for null test
+1,AMERICA,hs use ironic, even requests. s,null,null,null,null,null,null,null,for null test2
+1,AMERICA,hs use ironic, even requests. s,null,null,null,null,null,null,null,for null test3
 2,ASIA,ges. thinly even pinto beans ca,1,Customer#000000001,IVhzIApeRb ot,c,E,15,25-989-741-2988,711.56,BUILDING,to the even, regular platelets. regular, ironic epitaphs nag e
 2,ASIA,ges. thinly even pinto beans ca,2,Customer#000000002,XSTf4,NCwDVaWNe6tEgvwfmRchLXak,13,23-768-687-3665,121.65,AUTOMOBILE,l accounts. blithely ironic theodolites integrate boldly: caref
 2,ASIA,ges. thinly even pinto beans ca,3,Customer#000000003,MG9kdTD2WBHm,1,11-719-748-3364,7498.12,AUTOMOBILE, deposits eat slyly ironic, even instructions. express foxes detect slyly. blithely even accounts abov
 2,ASIA,ges. thinly even pinto beans ca,4,Customer#000000004,XxVSJsLAGtn,4,14-128-190-5944,2866.83,MACHINERY, requests. final, regular ideas sleep final accou
 2,ASIA,ges. thinly even pinto beans ca,5,Customer#000000005,KvpyuHCplrB84WgAiGV6sYpZq7Tj,3,13-750-942-6364,794.47,HOUSEHOLD,n accounts will have to unwind. foxes cajole accor
+2,ASIA,ges. thinly even pinto beans ca,null,null,null,null,null,null,null,for null test
+2,ASIA,ges. thinly even pinto beans ca,null,null,null,null,null,null,null,for null test2
+2,ASIA,ges. thinly even pinto beans ca,null,null,null,null,null,null,null,for null test3
 3,EUROPE,ly final courts cajole furiously final excuse,1,Customer#000000001,IVhzIApeRb ot,c,E,15,25-989-741-2988,711.56,BUILDING,to the even, regular platelets. regular, ironic epitaphs nag e
 3,EUROPE,ly final courts cajole furiously final excuse,2,Customer#000000002,XSTf4,NCwDVaWNe6tEgvwfmRchLXak,13,23-768-687-3665,121.65,AUTOMOBILE,l accounts. blithely ironic theodolites integrate boldly: caref
 3,EUROPE,ly final courts cajole furiously final excuse,3,Customer#000000003,MG9kdTD2WBHm,1,11-719-748-3364,7498.12,AUTOMOBILE, deposits eat slyly ironic, even instructions. express foxes detect slyly. blithely even accounts abov
 3,EUROPE,ly final courts cajole furiously final excuse,4,Customer#000000004,XxVSJsLAGtn,4,14-128-190-5944,2866.83,MACHINERY, requests. final, regular ideas sleep final accou
 3,EUROPE,ly final courts cajole furiously final excuse,5,Customer#000000005,KvpyuHCplrB84WgAiGV6sYpZq7Tj,3,13-750-942-6364,794.47,HOUSEHOLD,n accounts will have to unwind. foxes cajole accor
+3,EUROPE,ly final courts cajole furiously final excuse,null,null,null,null,null,null,null,for null test
+3,EUROPE,ly final courts cajole furiously final excuse,null,null,null,null,null,null,null,for null test2
+3,EUROPE,ly final courts cajole furiously final excuse,null,null,null,null,null,null,null,for null test3
 4,MIDDLE EAST,uickly special accounts cajole carefully blithely close requests. carefully final asymptotes haggle furiousl,1,Customer#000000001,IVhzIApeRb ot,c,E,15,25-989-741-2988,711.56,BUILDING,to the even, regular platelets. regular, ironic epitaphs nag e
 4,MIDDLE EAST,uickly special accounts cajole carefully blithely close requests. carefully final asymptotes haggle furiousl,2,Customer#000000002,XSTf4,NCwDVaWNe6tEgvwfmRchLXak,13,23-768-687-3665,121.65,AUTOMOBILE,l accounts. blithely ironic theodolites integrate boldly: caref
 4,MIDDLE EAST,uickly special accounts cajole carefully blithely close requests. carefully final asymptotes haggle furiousl,3,Customer#000000003,MG9kdTD2WBHm,1,11-719-748-3364,7498.12,AUTOMOBILE, deposits eat slyly ironic, even instructions. express foxes detect slyly. blithely even accounts abov
 4,MIDDLE EAST,uickly special accounts cajole carefully blithely close requests. carefully final asymptotes haggle furiousl,4,Customer#000000004,XxVSJsLAGtn,4,14-128-190-5944,2866.83,MACHINERY, requests. final, regular ideas sleep final accou
 4,MIDDLE EAST,uickly special accounts cajole carefully blithely close requests. carefully final asymptotes haggle furiousl,5,Customer#000000005,KvpyuHCplrB84WgAiGV6sYpZq7Tj,3,13-750-942-6364,794.47,HOUSEHOLD,n accounts will have to unwind. foxes cajole accor
+4,MIDDLE EAST,uickly special accounts cajole carefully blithely close requests. carefully final asymptotes haggle furiousl,null,null,null,null,null,null,null,for null test
+4,MIDDLE EAST,uickly special accounts cajole carefully blithely close requests. carefully final asymptotes haggle furiousl,null,null,null,null,null,null,null,for null test2
+4,MIDDLE EAST,uickly special accounts cajole carefully blithely close requests. carefully final asymptotes haggle furiousl,null,null,null,null,null,null,null,for null test3
+null,null,for null test,1,Customer#000000001,IVhzIApeRb ot,c,E,15,25-989-741-2988,711.56,BUILDING,to the even, regular platelets. regular, ironic epitaphs nag e
+null,null,for null test,2,Customer#000000002,XSTf4,NCwDVaWNe6tEgvwfmRchLXak,13,23-768-687-3665,121.65,AUTOMOBILE,l accounts. blithely ironic theodolites integrate boldly: caref
+null,null,for null test,3,Customer#000000003,MG9kdTD2WBHm,1,11-719-748-3364,7498.12,AUTOMOBILE, deposits eat slyly ironic, even instructions. express foxes detect slyly. blithely even accounts abov
+null,null,for null test,4,Customer#000000004,XxVSJsLAGtn,4,14-128-190-5944,2866.83,MACHINERY, requests. final, regular ideas sleep final accou
+null,null,for null test,5,Customer#000000005,KvpyuHCplrB84WgAiGV6sYpZq7Tj,3,13-750-942-6364,794.47,HOUSEHOLD,n accounts will have to unwind. foxes cajole accor
+null,null,for null test,null,null,null,null,null,null,null,for null test
+null,null,for null test,null,null,null,null,null,null,null,for null test2
+null,null,for null test,null,null,null,null,null,null,null,for null test3
+null,null,for null test2,1,Customer#000000001,IVhzIApeRb ot,c,E,15,25-989-741-2988,711.56,BUILDING,to the even, regular platelets. regular, ironic epitaphs nag e
+null,null,for null test2,2,Customer#000000002,XSTf4,NCwDVaWNe6tEgvwfmRchLXak,13,23-768-687-3665,121.65,AUTOMOBILE,l accounts. blithely ironic theodolites integrate boldly: caref
+null,null,for null test2,3,Customer#000000003,MG9kdTD2WBHm,1,11-719-748-3364,7498.12,AUTOMOBILE, deposits eat slyly ironic, even instructions. express foxes detect slyly. blithely even accounts abov
+null,null,for null test2,4,Customer#000000004,XxVSJsLAGtn,4,14-128-190-5944,2866.83,MACHINERY, requests. final, regular ideas sleep final accou
+null,null,for null test2,5,Customer#000000005,KvpyuHCplrB84WgAiGV6sYpZq7Tj,3,13-750-942-6364,794.47,HOUSEHOLD,n accounts will have to unwind. foxes cajole accor
+null,null,for null test2,null,null,null,null,null,null,null,for null test
+null,null,for null test2,null,null,null,null,null,null,null,for null test2
+null,null,for null test2,null,null,null,null,null,null,null,for null test3
+null,null,for null test3,1,Customer#000000001,IVhzIApeRb ot,c,E,15,25-989-741-2988,711.56,BUILDING,to the even, regular platelets. regular, ironic epitaphs nag e
+null,null,for null test3,2,Customer#000000002,XSTf4,NCwDVaWNe6tEgvwfmRchLXak,13,23-768-687-3665,121.65,AUTOMOBILE,l accounts. blithely ironic theodolites integrate boldly: caref
+null,null,for null test3,3,Customer#000000003,MG9kdTD2WBHm,1,11-719-748-3364,7498.12,AUTOMOBILE, deposits eat slyly ironic, even instructions. express foxes detect slyly. blithely even accounts abov
+null,null,for null test3,4,Customer#000000004,XxVSJsLAGtn,4,14-128-190-5944,2866.83,MACHINERY, requests. final, regular ideas sleep final accou
+null,null,for null test3,5,Customer#000000005,KvpyuHCplrB84WgAiGV6sYpZq7Tj,3,13-750-942-6364,794.47,HOUSEHOLD,n accounts will have to unwind. foxes cajole accor
+null,null,for null test3,null,null,null,null,null,null,null,for null test
+null,null,for null test3,null,null,null,null,null,null,null,for null test2
+null,null,for null test3,null,null,null,null,null,null,null,for null test3
diff --git a/tajo-core-tests/src/test/resources/results/TestCrossJoin/testCrossJoin.3.result b/tajo-core-tests/src/test/resources/results/TestCrossJoin/testCrossJoin.3.result
index 304b867..f95d10c 100644
--- a/tajo-core-tests/src/test/resources/results/TestCrossJoin/testCrossJoin.3.result
+++ b/tajo-core-tests/src/test/resources/results/TestCrossJoin/testCrossJoin.3.result
@@ -5,23 +5,62 @@
 0,AFRICA,lar deposits. blithely final packages cajole. regular waters are final requests. regular accounts are according to ,3,Customer#000000003,MG9kdTD2WBHm,1,11-719-748-3364,7498.12,AUTOMOBILE, deposits eat slyly ironic, even instructions. express foxes detect slyly. blithely even accounts abov
 0,AFRICA,lar deposits. blithely final packages cajole. regular waters are final requests. regular accounts are according to ,4,Customer#000000004,XxVSJsLAGtn,4,14-128-190-5944,2866.83,MACHINERY, requests. final, regular ideas sleep final accou
 0,AFRICA,lar deposits. blithely final packages cajole. regular waters are final requests. regular accounts are according to ,5,Customer#000000005,KvpyuHCplrB84WgAiGV6sYpZq7Tj,3,13-750-942-6364,794.47,HOUSEHOLD,n accounts will have to unwind. foxes cajole accor
+0,AFRICA,lar deposits. blithely final packages cajole. regular waters are final requests. regular accounts are according to ,null,null,null,null,null,null,null,for null test
+0,AFRICA,lar deposits. blithely final packages cajole. regular waters are final requests. regular accounts are according to ,null,null,null,null,null,null,null,for null test2
+0,AFRICA,lar deposits. blithely final packages cajole. regular waters are final requests. regular accounts are according to ,null,null,null,null,null,null,null,for null test3
 1,AMERICA,hs use ironic, even requests. s,1,Customer#000000001,IVhzIApeRb ot,c,E,15,25-989-741-2988,711.56,BUILDING,to the even, regular platelets. regular, ironic epitaphs nag e
 1,AMERICA,hs use ironic, even requests. s,2,Customer#000000002,XSTf4,NCwDVaWNe6tEgvwfmRchLXak,13,23-768-687-3665,121.65,AUTOMOBILE,l accounts. blithely ironic theodolites integrate boldly: caref
 1,AMERICA,hs use ironic, even requests. s,3,Customer#000000003,MG9kdTD2WBHm,1,11-719-748-3364,7498.12,AUTOMOBILE, deposits eat slyly ironic, even instructions. express foxes detect slyly. blithely even accounts abov
 1,AMERICA,hs use ironic, even requests. s,4,Customer#000000004,XxVSJsLAGtn,4,14-128-190-5944,2866.83,MACHINERY, requests. final, regular ideas sleep final accou
 1,AMERICA,hs use ironic, even requests. s,5,Customer#000000005,KvpyuHCplrB84WgAiGV6sYpZq7Tj,3,13-750-942-6364,794.47,HOUSEHOLD,n accounts will have to unwind. foxes cajole accor
+1,AMERICA,hs use ironic, even requests. s,null,null,null,null,null,null,null,for null test
+1,AMERICA,hs use ironic, even requests. s,null,null,null,null,null,null,null,for null test2
+1,AMERICA,hs use ironic, even requests. s,null,null,null,null,null,null,null,for null test3
 2,ASIA,ges. thinly even pinto beans ca,1,Customer#000000001,IVhzIApeRb ot,c,E,15,25-989-741-2988,711.56,BUILDING,to the even, regular platelets. regular, ironic epitaphs nag e
 2,ASIA,ges. thinly even pinto beans ca,2,Customer#000000002,XSTf4,NCwDVaWNe6tEgvwfmRchLXak,13,23-768-687-3665,121.65,AUTOMOBILE,l accounts. blithely ironic theodolites integrate boldly: caref
 2,ASIA,ges. thinly even pinto beans ca,3,Customer#000000003,MG9kdTD2WBHm,1,11-719-748-3364,7498.12,AUTOMOBILE, deposits eat slyly ironic, even instructions. express foxes detect slyly. blithely even accounts abov
 2,ASIA,ges. thinly even pinto beans ca,4,Customer#000000004,XxVSJsLAGtn,4,14-128-190-5944,2866.83,MACHINERY, requests. final, regular ideas sleep final accou
 2,ASIA,ges. thinly even pinto beans ca,5,Customer#000000005,KvpyuHCplrB84WgAiGV6sYpZq7Tj,3,13-750-942-6364,794.47,HOUSEHOLD,n accounts will have to unwind. foxes cajole accor
+2,ASIA,ges. thinly even pinto beans ca,null,null,null,null,null,null,null,for null test
+2,ASIA,ges. thinly even pinto beans ca,null,null,null,null,null,null,null,for null test2
+2,ASIA,ges. thinly even pinto beans ca,null,null,null,null,null,null,null,for null test3
 3,EUROPE,ly final courts cajole furiously final excuse,1,Customer#000000001,IVhzIApeRb ot,c,E,15,25-989-741-2988,711.56,BUILDING,to the even, regular platelets. regular, ironic epitaphs nag e
 3,EUROPE,ly final courts cajole furiously final excuse,2,Customer#000000002,XSTf4,NCwDVaWNe6tEgvwfmRchLXak,13,23-768-687-3665,121.65,AUTOMOBILE,l accounts. blithely ironic theodolites integrate boldly: caref
 3,EUROPE,ly final courts cajole furiously final excuse,3,Customer#000000003,MG9kdTD2WBHm,1,11-719-748-3364,7498.12,AUTOMOBILE, deposits eat slyly ironic, even instructions. express foxes detect slyly. blithely even accounts abov
 3,EUROPE,ly final courts cajole furiously final excuse,4,Customer#000000004,XxVSJsLAGtn,4,14-128-190-5944,2866.83,MACHINERY, requests. final, regular ideas sleep final accou
 3,EUROPE,ly final courts cajole furiously final excuse,5,Customer#000000005,KvpyuHCplrB84WgAiGV6sYpZq7Tj,3,13-750-942-6364,794.47,HOUSEHOLD,n accounts will have to unwind. foxes cajole accor
+3,EUROPE,ly final courts cajole furiously final excuse,null,null,null,null,null,null,null,for null test
+3,EUROPE,ly final courts cajole furiously final excuse,null,null,null,null,null,null,null,for null test2
+3,EUROPE,ly final courts cajole furiously final excuse,null,null,null,null,null,null,null,for null test3
 4,MIDDLE EAST,uickly special accounts cajole carefully blithely close requests. carefully final asymptotes haggle furiousl,1,Customer#000000001,IVhzIApeRb ot,c,E,15,25-989-741-2988,711.56,BUILDING,to the even, regular platelets. regular, ironic epitaphs nag e
 4,MIDDLE EAST,uickly special accounts cajole carefully blithely close requests. carefully final asymptotes haggle furiousl,2,Customer#000000002,XSTf4,NCwDVaWNe6tEgvwfmRchLXak,13,23-768-687-3665,121.65,AUTOMOBILE,l accounts. blithely ironic theodolites integrate boldly: caref
 4,MIDDLE EAST,uickly special accounts cajole carefully blithely close requests. carefully final asymptotes haggle furiousl,3,Customer#000000003,MG9kdTD2WBHm,1,11-719-748-3364,7498.12,AUTOMOBILE, deposits eat slyly ironic, even instructions. express foxes detect slyly. blithely even accounts abov
 4,MIDDLE EAST,uickly special accounts cajole carefully blithely close requests. carefully final asymptotes haggle furiousl,4,Customer#000000004,XxVSJsLAGtn,4,14-128-190-5944,2866.83,MACHINERY, requests. final, regular ideas sleep final accou
 4,MIDDLE EAST,uickly special accounts cajole carefully blithely close requests. carefully final asymptotes haggle furiousl,5,Customer#000000005,KvpyuHCplrB84WgAiGV6sYpZq7Tj,3,13-750-942-6364,794.47,HOUSEHOLD,n accounts will have to unwind. foxes cajole accor
+4,MIDDLE EAST,uickly special accounts cajole carefully blithely close requests. carefully final asymptotes haggle furiousl,null,null,null,null,null,null,null,for null test
+4,MIDDLE EAST,uickly special accounts cajole carefully blithely close requests. carefully final asymptotes haggle furiousl,null,null,null,null,null,null,null,for null test2
+4,MIDDLE EAST,uickly special accounts cajole carefully blithely close requests. carefully final asymptotes haggle furiousl,null,null,null,null,null,null,null,for null test3
+null,null,for null test,1,Customer#000000001,IVhzIApeRb ot,c,E,15,25-989-741-2988,711.56,BUILDING,to the even, regular platelets. regular, ironic epitaphs nag e
+null,null,for null test,2,Customer#000000002,XSTf4,NCwDVaWNe6tEgvwfmRchLXak,13,23-768-687-3665,121.65,AUTOMOBILE,l accounts. blithely ironic theodolites integrate boldly: caref
+null,null,for null test,3,Customer#000000003,MG9kdTD2WBHm,1,11-719-748-3364,7498.12,AUTOMOBILE, deposits eat slyly ironic, even instructions. express foxes detect slyly. blithely even accounts abov
+null,null,for null test,4,Customer#000000004,XxVSJsLAGtn,4,14-128-190-5944,2866.83,MACHINERY, requests. final, regular ideas sleep final accou
+null,null,for null test,5,Customer#000000005,KvpyuHCplrB84WgAiGV6sYpZq7Tj,3,13-750-942-6364,794.47,HOUSEHOLD,n accounts will have to unwind. foxes cajole accor
+null,null,for null test,null,null,null,null,null,null,null,for null test
+null,null,for null test,null,null,null,null,null,null,null,for null test2
+null,null,for null test,null,null,null,null,null,null,null,for null test3
+null,null,for null test2,1,Customer#000000001,IVhzIApeRb ot,c,E,15,25-989-741-2988,711.56,BUILDING,to the even, regular platelets. regular, ironic epitaphs nag e
+null,null,for null test2,2,Customer#000000002,XSTf4,NCwDVaWNe6tEgvwfmRchLXak,13,23-768-687-3665,121.65,AUTOMOBILE,l accounts. blithely ironic theodolites integrate boldly: caref
+null,null,for null test2,3,Customer#000000003,MG9kdTD2WBHm,1,11-719-748-3364,7498.12,AUTOMOBILE, deposits eat slyly ironic, even instructions. express foxes detect slyly. blithely even accounts abov
+null,null,for null test2,4,Customer#000000004,XxVSJsLAGtn,4,14-128-190-5944,2866.83,MACHINERY, requests. final, regular ideas sleep final accou
+null,null,for null test2,5,Customer#000000005,KvpyuHCplrB84WgAiGV6sYpZq7Tj,3,13-750-942-6364,794.47,HOUSEHOLD,n accounts will have to unwind. foxes cajole accor
+null,null,for null test2,null,null,null,null,null,null,null,for null test
+null,null,for null test2,null,null,null,null,null,null,null,for null test2
+null,null,for null test2,null,null,null,null,null,null,null,for null test3
+null,null,for null test3,1,Customer#000000001,IVhzIApeRb ot,c,E,15,25-989-741-2988,711.56,BUILDING,to the even, regular platelets. regular, ironic epitaphs nag e
+null,null,for null test3,2,Customer#000000002,XSTf4,NCwDVaWNe6tEgvwfmRchLXak,13,23-768-687-3665,121.65,AUTOMOBILE,l accounts. blithely ironic theodolites integrate boldly: caref
+null,null,for null test3,3,Customer#000000003,MG9kdTD2WBHm,1,11-719-748-3364,7498.12,AUTOMOBILE, deposits eat slyly ironic, even instructions. express foxes detect slyly. blithely even accounts abov
+null,null,for null test3,4,Customer#000000004,XxVSJsLAGtn,4,14-128-190-5944,2866.83,MACHINERY, requests. final, regular ideas sleep final accou
+null,null,for null test3,5,Customer#000000005,KvpyuHCplrB84WgAiGV6sYpZq7Tj,3,13-750-942-6364,794.47,HOUSEHOLD,n accounts will have to unwind. foxes cajole accor
+null,null,for null test3,null,null,null,null,null,null,null,for null test
+null,null,for null test3,null,null,null,null,null,null,null,for null test2
+null,null,for null test3,null,null,null,null,null,null,null,for null test3
diff --git a/tajo-core-tests/src/test/resources/results/TestCrossJoin/testCrossJoin.4.result b/tajo-core-tests/src/test/resources/results/TestCrossJoin/testCrossJoin.4.result
index a7dd7b5..067ec18 100644
--- a/tajo-core-tests/src/test/resources/results/TestCrossJoin/testCrossJoin.4.result
+++ b/tajo-core-tests/src/test/resources/results/TestCrossJoin/testCrossJoin.4.result
@@ -5,23 +5,62 @@
 1,Customer#000000001,IVhzIApeRb ot,c,E,15,25-989-741-2988,711.56,BUILDING,to the even, regular platelets. regular, ironic epitaphs nag e,2,ASIA,ges. thinly even pinto beans ca
 1,Customer#000000001,IVhzIApeRb ot,c,E,15,25-989-741-2988,711.56,BUILDING,to the even, regular platelets. regular, ironic epitaphs nag e,3,EUROPE,ly final courts cajole furiously final excuse
 1,Customer#000000001,IVhzIApeRb ot,c,E,15,25-989-741-2988,711.56,BUILDING,to the even, regular platelets. regular, ironic epitaphs nag e,4,MIDDLE EAST,uickly special accounts cajole carefully blithely close requests. carefully final asymptotes haggle furiousl
+1,Customer#000000001,IVhzIApeRb ot,c,E,15,25-989-741-2988,711.56,BUILDING,to the even, regular platelets. regular, ironic epitaphs nag e,null,null,for null test
+1,Customer#000000001,IVhzIApeRb ot,c,E,15,25-989-741-2988,711.56,BUILDING,to the even, regular platelets. regular, ironic epitaphs nag e,null,null,for null test2
+1,Customer#000000001,IVhzIApeRb ot,c,E,15,25-989-741-2988,711.56,BUILDING,to the even, regular platelets. regular, ironic epitaphs nag e,null,null,for null test3
 2,Customer#000000002,XSTf4,NCwDVaWNe6tEgvwfmRchLXak,13,23-768-687-3665,121.65,AUTOMOBILE,l accounts. blithely ironic theodolites integrate boldly: caref,0,AFRICA,lar deposits. blithely final packages cajole. regular waters are final requests. regular accounts are according to 
 2,Customer#000000002,XSTf4,NCwDVaWNe6tEgvwfmRchLXak,13,23-768-687-3665,121.65,AUTOMOBILE,l accounts. blithely ironic theodolites integrate boldly: caref,1,AMERICA,hs use ironic, even requests. s
 2,Customer#000000002,XSTf4,NCwDVaWNe6tEgvwfmRchLXak,13,23-768-687-3665,121.65,AUTOMOBILE,l accounts. blithely ironic theodolites integrate boldly: caref,2,ASIA,ges. thinly even pinto beans ca
 2,Customer#000000002,XSTf4,NCwDVaWNe6tEgvwfmRchLXak,13,23-768-687-3665,121.65,AUTOMOBILE,l accounts. blithely ironic theodolites integrate boldly: caref,3,EUROPE,ly final courts cajole furiously final excuse
 2,Customer#000000002,XSTf4,NCwDVaWNe6tEgvwfmRchLXak,13,23-768-687-3665,121.65,AUTOMOBILE,l accounts. blithely ironic theodolites integrate boldly: caref,4,MIDDLE EAST,uickly special accounts cajole carefully blithely close requests. carefully final asymptotes haggle furiousl
+2,Customer#000000002,XSTf4,NCwDVaWNe6tEgvwfmRchLXak,13,23-768-687-3665,121.65,AUTOMOBILE,l accounts. blithely ironic theodolites integrate boldly: caref,null,null,for null test
+2,Customer#000000002,XSTf4,NCwDVaWNe6tEgvwfmRchLXak,13,23-768-687-3665,121.65,AUTOMOBILE,l accounts. blithely ironic theodolites integrate boldly: caref,null,null,for null test2
+2,Customer#000000002,XSTf4,NCwDVaWNe6tEgvwfmRchLXak,13,23-768-687-3665,121.65,AUTOMOBILE,l accounts. blithely ironic theodolites integrate boldly: caref,null,null,for null test3
 3,Customer#000000003,MG9kdTD2WBHm,1,11-719-748-3364,7498.12,AUTOMOBILE, deposits eat slyly ironic, even instructions. express foxes detect slyly. blithely even accounts abov,0,AFRICA,lar deposits. blithely final packages cajole. regular waters are final requests. regular accounts are according to 
 3,Customer#000000003,MG9kdTD2WBHm,1,11-719-748-3364,7498.12,AUTOMOBILE, deposits eat slyly ironic, even instructions. express foxes detect slyly. blithely even accounts abov,1,AMERICA,hs use ironic, even requests. s
 3,Customer#000000003,MG9kdTD2WBHm,1,11-719-748-3364,7498.12,AUTOMOBILE, deposits eat slyly ironic, even instructions. express foxes detect slyly. blithely even accounts abov,2,ASIA,ges. thinly even pinto beans ca
 3,Customer#000000003,MG9kdTD2WBHm,1,11-719-748-3364,7498.12,AUTOMOBILE, deposits eat slyly ironic, even instructions. express foxes detect slyly. blithely even accounts abov,3,EUROPE,ly final courts cajole furiously final excuse
 3,Customer#000000003,MG9kdTD2WBHm,1,11-719-748-3364,7498.12,AUTOMOBILE, deposits eat slyly ironic, even instructions. express foxes detect slyly. blithely even accounts abov,4,MIDDLE EAST,uickly special accounts cajole carefully blithely close requests. carefully final asymptotes haggle furiousl
+3,Customer#000000003,MG9kdTD2WBHm,1,11-719-748-3364,7498.12,AUTOMOBILE, deposits eat slyly ironic, even instructions. express foxes detect slyly. blithely even accounts abov,null,null,for null test
+3,Customer#000000003,MG9kdTD2WBHm,1,11-719-748-3364,7498.12,AUTOMOBILE, deposits eat slyly ironic, even instructions. express foxes detect slyly. blithely even accounts abov,null,null,for null test2
+3,Customer#000000003,MG9kdTD2WBHm,1,11-719-748-3364,7498.12,AUTOMOBILE, deposits eat slyly ironic, even instructions. express foxes detect slyly. blithely even accounts abov,null,null,for null test3
 4,Customer#000000004,XxVSJsLAGtn,4,14-128-190-5944,2866.83,MACHINERY, requests. final, regular ideas sleep final accou,0,AFRICA,lar deposits. blithely final packages cajole. regular waters are final requests. regular accounts are according to 
 4,Customer#000000004,XxVSJsLAGtn,4,14-128-190-5944,2866.83,MACHINERY, requests. final, regular ideas sleep final accou,1,AMERICA,hs use ironic, even requests. s
 4,Customer#000000004,XxVSJsLAGtn,4,14-128-190-5944,2866.83,MACHINERY, requests. final, regular ideas sleep final accou,2,ASIA,ges. thinly even pinto beans ca
 4,Customer#000000004,XxVSJsLAGtn,4,14-128-190-5944,2866.83,MACHINERY, requests. final, regular ideas sleep final accou,3,EUROPE,ly final courts cajole furiously final excuse
 4,Customer#000000004,XxVSJsLAGtn,4,14-128-190-5944,2866.83,MACHINERY, requests. final, regular ideas sleep final accou,4,MIDDLE EAST,uickly special accounts cajole carefully blithely close requests. carefully final asymptotes haggle furiousl
+4,Customer#000000004,XxVSJsLAGtn,4,14-128-190-5944,2866.83,MACHINERY, requests. final, regular ideas sleep final accou,null,null,for null test
+4,Customer#000000004,XxVSJsLAGtn,4,14-128-190-5944,2866.83,MACHINERY, requests. final, regular ideas sleep final accou,null,null,for null test2
+4,Customer#000000004,XxVSJsLAGtn,4,14-128-190-5944,2866.83,MACHINERY, requests. final, regular ideas sleep final accou,null,null,for null test3
 5,Customer#000000005,KvpyuHCplrB84WgAiGV6sYpZq7Tj,3,13-750-942-6364,794.47,HOUSEHOLD,n accounts will have to unwind. foxes cajole accor,0,AFRICA,lar deposits. blithely final packages cajole. regular waters are final requests. regular accounts are according to 
 5,Customer#000000005,KvpyuHCplrB84WgAiGV6sYpZq7Tj,3,13-750-942-6364,794.47,HOUSEHOLD,n accounts will have to unwind. foxes cajole accor,1,AMERICA,hs use ironic, even requests. s
 5,Customer#000000005,KvpyuHCplrB84WgAiGV6sYpZq7Tj,3,13-750-942-6364,794.47,HOUSEHOLD,n accounts will have to unwind. foxes cajole accor,2,ASIA,ges. thinly even pinto beans ca
 5,Customer#000000005,KvpyuHCplrB84WgAiGV6sYpZq7Tj,3,13-750-942-6364,794.47,HOUSEHOLD,n accounts will have to unwind. foxes cajole accor,3,EUROPE,ly final courts cajole furiously final excuse
 5,Customer#000000005,KvpyuHCplrB84WgAiGV6sYpZq7Tj,3,13-750-942-6364,794.47,HOUSEHOLD,n accounts will have to unwind. foxes cajole accor,4,MIDDLE EAST,uickly special accounts cajole carefully blithely close requests. carefully final asymptotes haggle furiousl
+5,Customer#000000005,KvpyuHCplrB84WgAiGV6sYpZq7Tj,3,13-750-942-6364,794.47,HOUSEHOLD,n accounts will have to unwind. foxes cajole accor,null,null,for null test
+5,Customer#000000005,KvpyuHCplrB84WgAiGV6sYpZq7Tj,3,13-750-942-6364,794.47,HOUSEHOLD,n accounts will have to unwind. foxes cajole accor,null,null,for null test2
+5,Customer#000000005,KvpyuHCplrB84WgAiGV6sYpZq7Tj,3,13-750-942-6364,794.47,HOUSEHOLD,n accounts will have to unwind. foxes cajole accor,null,null,for null test3
+null,null,null,null,null,null,null,for null test,0,AFRICA,lar deposits. blithely final packages cajole. regular waters are final requests. regular accounts are according to 
+null,null,null,null,null,null,null,for null test,1,AMERICA,hs use ironic, even requests. s
+null,null,null,null,null,null,null,for null test,2,ASIA,ges. thinly even pinto beans ca
+null,null,null,null,null,null,null,for null test,3,EUROPE,ly final courts cajole furiously final excuse
+null,null,null,null,null,null,null,for null test,4,MIDDLE EAST,uickly special accounts cajole carefully blithely close requests. carefully final asymptotes haggle furiousl
+null,null,null,null,null,null,null,for null test,null,null,for null test
+null,null,null,null,null,null,null,for null test,null,null,for null test2
+null,null,null,null,null,null,null,for null test,null,null,for null test3
+null,null,null,null,null,null,null,for null test2,0,AFRICA,lar deposits. blithely final packages cajole. regular waters are final requests. regular accounts are according to 
+null,null,null,null,null,null,null,for null test2,1,AMERICA,hs use ironic, even requests. s
+null,null,null,null,null,null,null,for null test2,2,ASIA,ges. thinly even pinto beans ca
+null,null,null,null,null,null,null,for null test2,3,EUROPE,ly final courts cajole furiously final excuse
+null,null,null,null,null,null,null,for null test2,4,MIDDLE EAST,uickly special accounts cajole carefully blithely close requests. carefully final asymptotes haggle furiousl
+null,null,null,null,null,null,null,for null test2,null,null,for null test
+null,null,null,null,null,null,null,for null test2,null,null,for null test2
+null,null,null,null,null,null,null,for null test2,null,null,for null test3
+null,null,null,null,null,null,null,for null test3,0,AFRICA,lar deposits. blithely final packages cajole. regular waters are final requests. regular accounts are according to 
+null,null,null,null,null,null,null,for null test3,1,AMERICA,hs use ironic, even requests. s
+null,null,null,null,null,null,null,for null test3,2,ASIA,ges. thinly even pinto beans ca
+null,null,null,null,null,null,null,for null test3,3,EUROPE,ly final courts cajole furiously final excuse
+null,null,null,null,null,null,null,for null test3,4,MIDDLE EAST,uickly special accounts cajole carefully blithely close requests. carefully final asymptotes haggle furiousl
+null,null,null,null,null,null,null,for null test3,null,null,for null test
+null,null,null,null,null,null,null,for null test3,null,null,for null test2
+null,null,null,null,null,null,null,for null test3,null,null,for null test3
diff --git a/tajo-core-tests/src/test/resources/results/TestCrossJoin/testCrossJoin.5.result b/tajo-core-tests/src/test/resources/results/TestCrossJoin/testCrossJoin.5.result
index 89720e0..f26f232 100644
--- a/tajo-core-tests/src/test/resources/results/TestCrossJoin/testCrossJoin.5.result
+++ b/tajo-core-tests/src/test/resources/results/TestCrossJoin/testCrossJoin.5.result
@@ -5,11 +5,41 @@
 108,3,Customer#000000003,MG9kdTD2WBHm,1,11-719-748-3364,7498.12,AUTOMOBILE, deposits eat slyly ironic, even instructions. express foxes detect slyly. blithely even accounts abov,4,MIDDLE EAST,uickly special accounts cajole carefully blithely close requests. carefully final asymptotes haggle furiousl,30
 108,4,Customer#000000004,XxVSJsLAGtn,4,14-128-190-5944,2866.83,MACHINERY, requests. final, regular ideas sleep final accou,4,MIDDLE EAST,uickly special accounts cajole carefully blithely close requests. carefully final asymptotes haggle furiousl,40
 108,5,Customer#000000005,KvpyuHCplrB84WgAiGV6sYpZq7Tj,3,13-750-942-6364,794.47,HOUSEHOLD,n accounts will have to unwind. foxes cajole accor,4,MIDDLE EAST,uickly special accounts cajole carefully blithely close requests. carefully final asymptotes haggle furiousl,50
+108,null,null,null,null,null,null,null,for null test,4,MIDDLE EAST,uickly special accounts cajole carefully blithely close requests. carefully final asymptotes haggle furiousl,null
+108,null,null,null,null,null,null,null,for null test2,4,MIDDLE EAST,uickly special accounts cajole carefully blithely close requests. carefully final asymptotes haggle furiousl,null
+108,null,null,null,null,null,null,null,for null test3,4,MIDDLE EAST,uickly special accounts cajole carefully blithely close requests. carefully final asymptotes haggle furiousl,null
 115,1,Customer#000000001,IVhzIApeRb ot,c,E,15,25-989-741-2988,711.56,BUILDING,to the even, regular platelets. regular, ironic epitaphs nag e,0,AFRICA,lar deposits. blithely final packages cajole. regular waters are final requests. regular accounts are according to ,10
 115,2,Customer#000000002,XSTf4,NCwDVaWNe6tEgvwfmRchLXak,13,23-768-687-3665,121.65,AUTOMOBILE,l accounts. blithely ironic theodolites integrate boldly: caref,0,AFRICA,lar deposits. blithely final packages cajole. regular waters are final requests. regular accounts are according to ,20
 115,3,Customer#000000003,MG9kdTD2WBHm,1,11-719-748-3364,7498.12,AUTOMOBILE, deposits eat slyly ironic, even instructions. express foxes detect slyly. blithely even accounts abov,0,AFRICA,lar deposits. blithely final packages cajole. regular waters are final requests. regular accounts are according to ,30
 115,4,Customer#000000004,XxVSJsLAGtn,4,14-128-190-5944,2866.83,MACHINERY, requests. final, regular ideas sleep final accou,0,AFRICA,lar deposits. blithely final packages cajole. regular waters are final requests. regular accounts are according to ,40
 115,5,Customer#000000005,KvpyuHCplrB84WgAiGV6sYpZq7Tj,3,13-750-942-6364,794.47,HOUSEHOLD,n accounts will have to unwind. foxes cajole accor,0,AFRICA,lar deposits. blithely final packages cajole. regular waters are final requests. regular accounts are according to ,50
+115,null,null,null,null,null,null,null,for null test,0,AFRICA,lar deposits. blithely final packages cajole. regular waters are final requests. regular accounts are according to ,null
+115,null,null,null,null,null,null,null,for null test2,0,AFRICA,lar deposits. blithely final packages cajole. regular waters are final requests. regular accounts are according to ,null
+115,null,null,null,null,null,null,null,for null test3,0,AFRICA,lar deposits. blithely final packages cajole. regular waters are final requests. regular accounts are according to ,null
+13,1,Customer#000000001,IVhzIApeRb ot,c,E,15,25-989-741-2988,711.56,BUILDING,to the even, regular platelets. regular, ironic epitaphs nag e,null,null,for null test,10
+13,2,Customer#000000002,XSTf4,NCwDVaWNe6tEgvwfmRchLXak,13,23-768-687-3665,121.65,AUTOMOBILE,l accounts. blithely ironic theodolites integrate boldly: caref,null,null,for null test,20
+13,3,Customer#000000003,MG9kdTD2WBHm,1,11-719-748-3364,7498.12,AUTOMOBILE, deposits eat slyly ironic, even instructions. express foxes detect slyly. blithely even accounts abov,null,null,for null test,30
+13,4,Customer#000000004,XxVSJsLAGtn,4,14-128-190-5944,2866.83,MACHINERY, requests. final, regular ideas sleep final accou,null,null,for null test,40
+13,5,Customer#000000005,KvpyuHCplrB84WgAiGV6sYpZq7Tj,3,13-750-942-6364,794.47,HOUSEHOLD,n accounts will have to unwind. foxes cajole accor,null,null,for null test,50
+13,null,null,null,null,null,null,null,for null test,null,null,for null test,null
+13,null,null,null,null,null,null,null,for null test2,null,null,for null test,null
+13,null,null,null,null,null,null,null,for null test3,null,null,for null test,null
+14,1,Customer#000000001,IVhzIApeRb ot,c,E,15,25-989-741-2988,711.56,BUILDING,to the even, regular platelets. regular, ironic epitaphs nag e,null,null,for null test2,10
+14,1,Customer#000000001,IVhzIApeRb ot,c,E,15,25-989-741-2988,711.56,BUILDING,to the even, regular platelets. regular, ironic epitaphs nag e,null,null,for null test3,10
+14,2,Customer#000000002,XSTf4,NCwDVaWNe6tEgvwfmRchLXak,13,23-768-687-3665,121.65,AUTOMOBILE,l accounts. blithely ironic theodolites integrate boldly: caref,null,null,for null test2,20
+14,2,Customer#000000002,XSTf4,NCwDVaWNe6tEgvwfmRchLXak,13,23-768-687-3665,121.65,AUTOMOBILE,l accounts. blithely ironic theodolites integrate boldly: caref,null,null,for null test3,20
+14,3,Customer#000000003,MG9kdTD2WBHm,1,11-719-748-3364,7498.12,AUTOMOBILE, deposits eat slyly ironic, even instructions. express foxes detect slyly. blithely even accounts abov,null,null,for null test2,30
+14,3,Customer#000000003,MG9kdTD2WBHm,1,11-719-748-3364,7498.12,AUTOMOBILE, deposits eat slyly ironic, even instructions. express foxes detect slyly. blithely even accounts abov,null,null,for null test3,30
+14,4,Customer#000000004,XxVSJsLAGtn,4,14-128-190-5944,2866.83,MACHINERY, requests. final, regular ideas sleep final accou,null,null,for null test2,40
+14,4,Customer#000000004,XxVSJsLAGtn,4,14-128-190-5944,2866.83,MACHINERY, requests. final, regular ideas sleep final accou,null,null,for null test3,40
+14,5,Customer#000000005,KvpyuHCplrB84WgAiGV6sYpZq7Tj,3,13-750-942-6364,794.47,HOUSEHOLD,n accounts will have to unwind. foxes cajole accor,null,null,for null test2,50
+14,5,Customer#000000005,KvpyuHCplrB84WgAiGV6sYpZq7Tj,3,13-750-942-6364,794.47,HOUSEHOLD,n accounts will have to unwind. foxes cajole accor,null,null,for null test3,50
+14,null,null,null,null,null,null,null,for null test,null,null,for null test2,null
+14,null,null,null,null,null,null,null,for null test,null,null,for null test3,null
+14,null,null,null,null,null,null,null,for null test2,null,null,for null test2,null
+14,null,null,null,null,null,null,null,for null test2,null,null,for null test3,null
+14,null,null,null,null,null,null,null,for null test3,null,null,for null test2,null
+14,null,null,null,null,null,null,null,for null test3,null,null,for null test3,null
 31,1,Customer#000000001,IVhzIApeRb ot,c,E,15,25-989-741-2988,711.56,BUILDING,to the even, regular platelets. regular, ironic epitaphs nag e,1,AMERICA,hs use ironic, even requests. s,10
 31,1,Customer#000000001,IVhzIApeRb ot,c,E,15,25-989-741-2988,711.56,BUILDING,to the even, regular platelets. regular, ironic epitaphs nag e,2,ASIA,ges. thinly even pinto beans ca,10
 31,2,Customer#000000002,XSTf4,NCwDVaWNe6tEgvwfmRchLXak,13,23-768-687-3665,121.65,AUTOMOBILE,l accounts. blithely ironic theodolites integrate boldly: caref,1,AMERICA,hs use ironic, even requests. s,20
@@ -20,8 +50,17 @@
 31,4,Customer#000000004,XxVSJsLAGtn,4,14-128-190-5944,2866.83,MACHINERY, requests. final, regular ideas sleep final accou,2,ASIA,ges. thinly even pinto beans ca,40
 31,5,Customer#000000005,KvpyuHCplrB84WgAiGV6sYpZq7Tj,3,13-750-942-6364,794.47,HOUSEHOLD,n accounts will have to unwind. foxes cajole accor,1,AMERICA,hs use ironic, even requests. s,50
 31,5,Customer#000000005,KvpyuHCplrB84WgAiGV6sYpZq7Tj,3,13-750-942-6364,794.47,HOUSEHOLD,n accounts will have to unwind. foxes cajole accor,2,ASIA,ges. thinly even pinto beans ca,50
+31,null,null,null,null,null,null,null,for null test,1,AMERICA,hs use ironic, even requests. s,null
+31,null,null,null,null,null,null,null,for null test,2,ASIA,ges. thinly even pinto beans ca,null
+31,null,null,null,null,null,null,null,for null test2,1,AMERICA,hs use ironic, even requests. s,null
+31,null,null,null,null,null,null,null,for null test2,2,ASIA,ges. thinly even pinto beans ca,null
+31,null,null,null,null,null,null,null,for null test3,1,AMERICA,hs use ironic, even requests. s,null
+31,null,null,null,null,null,null,null,for null test3,2,ASIA,ges. thinly even pinto beans ca,null
 45,1,Customer#000000001,IVhzIApeRb ot,c,E,15,25-989-741-2988,711.56,BUILDING,to the even, regular platelets. regular, ironic epitaphs nag e,3,EUROPE,ly final courts cajole furiously final excuse,10
 45,2,Customer#000000002,XSTf4,NCwDVaWNe6tEgvwfmRchLXak,13,23-768-687-3665,121.65,AUTOMOBILE,l accounts. blithely ironic theodolites integrate boldly: caref,3,EUROPE,ly final courts cajole furiously final excuse,20
 45,3,Customer#000000003,MG9kdTD2WBHm,1,11-719-748-3364,7498.12,AUTOMOBILE, deposits eat slyly ironic, even instructions. express foxes detect slyly. blithely even accounts abov,3,EUROPE,ly final courts cajole furiously final excuse,30
 45,4,Customer#000000004,XxVSJsLAGtn,4,14-128-190-5944,2866.83,MACHINERY, requests. final, regular ideas sleep final accou,3,EUROPE,ly final courts cajole furiously final excuse,40
 45,5,Customer#000000005,KvpyuHCplrB84WgAiGV6sYpZq7Tj,3,13-750-942-6364,794.47,HOUSEHOLD,n accounts will have to unwind. foxes cajole accor,3,EUROPE,ly final courts cajole furiously final excuse,50
+45,null,null,null,null,null,null,null,for null test,3,EUROPE,ly final courts cajole furiously final excuse,null
+45,null,null,null,null,null,null,null,for null test2,3,EUROPE,ly final courts cajole furiously final excuse,null
+45,null,null,null,null,null,null,null,for null test3,3,EUROPE,ly final courts cajole furiously final excuse,null
diff --git a/tajo-core-tests/src/test/resources/results/TestCrossJoin/testCrossJoinOfOneSmallTable.1.result b/tajo-core-tests/src/test/resources/results/TestCrossJoin/testCrossJoinOfOneSmallTable.1.result
index d3bd041..cd6a8bc 100644
--- a/tajo-core-tests/src/test/resources/results/TestCrossJoin/testCrossJoinOfOneSmallTable.1.result
+++ b/tajo-core-tests/src/test/resources/results/TestCrossJoin/testCrossJoinOfOneSmallTable.1.result
@@ -5,123 +5,222 @@
 0,ALGERIA,0, haggle. carefully final deposits detect slyly agai,2,ASIA,ges. thinly even pinto beans ca
 0,ALGERIA,0, haggle. carefully final deposits detect slyly agai,3,EUROPE,ly final courts cajole furiously final excuse
 0,ALGERIA,0, haggle. carefully final deposits detect slyly agai,4,MIDDLE EAST,uickly special accounts cajole carefully blithely close requests. carefully final asymptotes haggle furiousl
+0,ALGERIA,0, haggle. carefully final deposits detect slyly agai,null,null,for null test
+0,ALGERIA,0, haggle. carefully final deposits detect slyly agai,null,null,for null test2
+0,ALGERIA,0, haggle. carefully final deposits detect slyly agai,null,null,for null test3
 1,ARGENTINA,1,al foxes promise slyly according to the regular accounts. bold requests alon,0,AFRICA,lar deposits. blithely final packages cajole. regular waters are final requests. regular accounts are according to 
 1,ARGENTINA,1,al foxes promise slyly according to the regular accounts. bold requests alon,1,AMERICA,hs use ironic, even requests. s
 1,ARGENTINA,1,al foxes promise slyly according to the regular accounts. bold requests alon,2,ASIA,ges. thinly even pinto beans ca
 1,ARGENTINA,1,al foxes promise slyly according to the regular accounts. bold requests alon,3,EUROPE,ly final courts cajole furiously final excuse
 1,ARGENTINA,1,al foxes promise slyly according to the regular accounts. bold requests alon,4,MIDDLE EAST,uickly special accounts cajole carefully blithely close requests. carefully final asymptotes haggle furiousl
+1,ARGENTINA,1,al foxes promise slyly according to the regular accounts. bold requests alon,null,null,for null test
+1,ARGENTINA,1,al foxes promise slyly according to the regular accounts. bold requests alon,null,null,for null test2
+1,ARGENTINA,1,al foxes promise slyly according to the regular accounts. bold requests alon,null,null,for null test3
 2,BRAZIL,1,y alongside of the pending deposits. carefully special packages are about the ironic forges. slyly special ,0,AFRICA,lar deposits. blithely final packages cajole. regular waters are final requests. regular accounts are according to 
 2,BRAZIL,1,y alongside of the pending deposits. carefully special packages are about the ironic forges. slyly special ,1,AMERICA,hs use ironic, even requests. s
 2,BRAZIL,1,y alongside of the pending deposits. carefully special packages are about the ironic forges. slyly special ,2,ASIA,ges. thinly even pinto beans ca
 2,BRAZIL,1,y alongside of the pending deposits. carefully special packages are about the ironic forges. slyly special ,3,EUROPE,ly final courts cajole furiously final excuse
 2,BRAZIL,1,y alongside of the pending deposits. carefully special packages are about the ironic forges. slyly special ,4,MIDDLE EAST,uickly special accounts cajole carefully blithely close requests. carefully final asymptotes haggle furiousl
+2,BRAZIL,1,y alongside of the pending deposits. carefully special packages are about the ironic forges. slyly special ,null,null,for null test
+2,BRAZIL,1,y alongside of the pending deposits. carefully special packages are about the ironic forges. slyly special ,null,null,for null test2
+2,BRAZIL,1,y alongside of the pending deposits. carefully special packages are about the ironic forges. slyly special ,null,null,for null test3
 3,CANADA,1,eas hang ironic, silent packages. slyly regular packages are furiously over the tithes. fluffily bold,0,AFRICA,lar deposits. blithely final packages cajole. regular waters are final requests. regular accounts are according to 
 3,CANADA,1,eas hang ironic, silent packages. slyly regular packages are furiously over the tithes. fluffily bold,1,AMERICA,hs use ironic, even requests. s
 3,CANADA,1,eas hang ironic, silent packages. slyly regular packages are furiously over the tithes. fluffily bold,2,ASIA,ges. thinly even pinto beans ca
 3,CANADA,1,eas hang ironic, silent packages. slyly regular packages are furiously over the tithes. fluffily bold,3,EUROPE,ly final courts cajole furiously final excuse
 3,CANADA,1,eas hang ironic, silent packages. slyly regular packages are furiously over the tithes. fluffily bold,4,MIDDLE EAST,uickly special accounts cajole carefully blithely close requests. carefully final asymptotes haggle furiousl
+3,CANADA,1,eas hang ironic, silent packages. slyly regular packages are furiously over the tithes. fluffily bold,null,null,for null test
+3,CANADA,1,eas hang ironic, silent packages. slyly regular packages are furiously over the tithes. fluffily bold,null,null,for null test2
+3,CANADA,1,eas hang ironic, silent packages. slyly regular packages are furiously over the tithes. fluffily bold,null,null,for null test3
 4,EGYPT,4,y above the carefully unusual theodolites. final dugouts are quickly across the furiously regular d,0,AFRICA,lar deposits. blithely final packages cajole. regular waters are final requests. regular accounts are according to 
 4,EGYPT,4,y above the carefully unusual theodolites. final dugouts are quickly across the furiously regular d,1,AMERICA,hs use ironic, even requests. s
 4,EGYPT,4,y above the carefully unusual theodolites. final dugouts are quickly across the furiously regular d,2,ASIA,ges. thinly even pinto beans ca
 4,EGYPT,4,y above the carefully unusual theodolites. final dugouts are quickly across the furiously regular d,3,EUROPE,ly final courts cajole furiously final excuse
 4,EGYPT,4,y above the carefully unusual theodolites. final dugouts are quickly across the furiously regular d,4,MIDDLE EAST,uickly special accounts cajole carefully blithely close requests. carefully final asymptotes haggle furiousl
+4,EGYPT,4,y above the carefully unusual theodolites. final dugouts are quickly across the furiously regular d,null,null,for null test
+4,EGYPT,4,y above the carefully unusual theodolites. final dugouts are quickly across the furiously regular d,null,null,for null test2
+4,EGYPT,4,y above the carefully unusual theodolites. final dugouts are quickly across the furiously regular d,null,null,for null test3
 5,ETHIOPIA,0,ven packages wake quickly. regu,0,AFRICA,lar deposits. blithely final packages cajole. regular waters are final requests. regular accounts are according to 
 5,ETHIOPIA,0,ven packages wake quickly. regu,1,AMERICA,hs use ironic, even requests. s
 5,ETHIOPIA,0,ven packages wake quickly. regu,2,ASIA,ges. thinly even pinto beans ca
 5,ETHIOPIA,0,ven packages wake quickly. regu,3,EUROPE,ly final courts cajole furiously final excuse
 5,ETHIOPIA,0,ven packages wake quickly. regu,4,MIDDLE EAST,uickly special accounts cajole carefully blithely close requests. carefully final asymptotes haggle furiousl
+5,ETHIOPIA,0,ven packages wake quickly. regu,null,null,for null test
+5,ETHIOPIA,0,ven packages wake quickly. regu,null,null,for null test2
+5,ETHIOPIA,0,ven packages wake quickly. regu,null,null,for null test3
 6,FRANCE,3,refully final requests. regular, ironi,0,AFRICA,lar deposits. blithely final packages cajole. regular waters are final requests. regular accounts are according to 
 6,FRANCE,3,refully final requests. regular, ironi,1,AMERICA,hs use ironic, even requests. s
 6,FRANCE,3,refully final requests. regular, ironi,2,ASIA,ges. thinly even pinto beans ca
 6,FRANCE,3,refully final requests. regular, ironi,3,EUROPE,ly final courts cajole furiously final excuse
 6,FRANCE,3,refully final requests. regular, ironi,4,MIDDLE EAST,uickly special accounts cajole carefully blithely close requests. carefully final asymptotes haggle furiousl
+6,FRANCE,3,refully final requests. regular, ironi,null,null,for null test
+6,FRANCE,3,refully final requests. regular, ironi,null,null,for null test2
+6,FRANCE,3,refully final requests. regular, ironi,null,null,for null test3
 7,GERMANY,3,l platelets. regular accounts x-ray: unusual, regular acco,0,AFRICA,lar deposits. blithely final packages cajole. regular waters are final requests. regular accounts are according to 
 7,GERMANY,3,l platelets. regular accounts x-ray: unusual, regular acco,1,AMERICA,hs use ironic, even requests. s
 7,GERMANY,3,l platelets. regular accounts x-ray: unusual, regular acco,2,ASIA,ges. thinly even pinto beans ca
 7,GERMANY,3,l platelets. regular accounts x-ray: unusual, regular acco,3,EUROPE,ly final courts cajole furiously final excuse
 7,GERMANY,3,l platelets. regular accounts x-ray: unusual, regular acco,4,MIDDLE EAST,uickly special accounts cajole carefully blithely close requests. carefully final asymptotes haggle furiousl
+7,GERMANY,3,l platelets. regular accounts x-ray: unusual, regular acco,null,null,for null test
+7,GERMANY,3,l platelets. regular accounts x-ray: unusual, regular acco,null,null,for null test2
+7,GERMANY,3,l platelets. regular accounts x-ray: unusual, regular acco,null,null,for null test3
 8,INDIA,2,ss excuses cajole slyly across the packages. deposits print aroun,0,AFRICA,lar deposits. blithely final packages cajole. regular waters are final requests. regular accounts are according to 
 8,INDIA,2,ss excuses cajole slyly across the packages. deposits print aroun,1,AMERICA,hs use ironic, even requests. s
 8,INDIA,2,ss excuses cajole slyly across the packages. deposits print aroun,2,ASIA,ges. thinly even pinto beans ca
 8,INDIA,2,ss excuses cajole slyly across the packages. deposits print aroun,3,EUROPE,ly final courts cajole furiously final excuse
 8,INDIA,2,ss excuses cajole slyly across the packages. deposits print aroun,4,MIDDLE EAST,uickly special accounts cajole carefully blithely close requests. carefully final asymptotes haggle furiousl
+8,INDIA,2,ss excuses cajole slyly across the packages. deposits print aroun,null,null,for null test
+8,INDIA,2,ss excuses cajole slyly across the packages. deposits print aroun,null,null,for null test2
+8,INDIA,2,ss excuses cajole slyly across the packages. deposits print aroun,null,null,for null test3
 9,INDONESIA,2, slyly express asymptotes. regular deposits haggle slyly. carefully ironic hockey players sleep blithely. carefull,0,AFRICA,lar deposits. blithely final packages cajole. regular waters are final requests. regular accounts are according to 
 9,INDONESIA,2, slyly express asymptotes. regular deposits haggle slyly. carefully ironic hockey players sleep blithely. carefull,1,AMERICA,hs use ironic, even requests. s
 9,INDONESIA,2, slyly express asymptotes. regular deposits haggle slyly. carefully ironic hockey players sleep blithely. carefull,2,ASIA,ges. thinly even pinto beans ca
 9,INDONESIA,2, slyly express asymptotes. regular deposits haggle slyly. carefully ironic hockey players sleep blithely. carefull,3,EUROPE,ly final courts cajole furiously final excuse
 9,INDONESIA,2, slyly express asymptotes. regular deposits haggle slyly. carefully ironic hockey players sleep blithely. carefull,4,MIDDLE EAST,uickly special accounts cajole carefully blithely close requests. carefully final asymptotes haggle furiousl
+9,INDONESIA,2, slyly express asymptotes. regular deposits haggle slyly. carefully ironic hockey players sleep blithely. carefull,null,null,for null test
+9,INDONESIA,2, slyly express asymptotes. regular deposits haggle slyly. carefully ironic hockey players sleep blithely. carefull,null,null,for null test2
+9,INDONESIA,2, slyly express asymptotes. regular deposits haggle slyly. carefully ironic hockey players sleep blithely. carefull,null,null,for null test3
 10,IRAN,4,efully alongside of the slyly final dependencies. ,0,AFRICA,lar deposits. blithely final packages cajole. regular waters are final requests. regular accounts are according to 
 10,IRAN,4,efully alongside of the slyly final dependencies. ,1,AMERICA,hs use ironic, even requests. s
 10,IRAN,4,efully alongside of the slyly final dependencies. ,2,ASIA,ges. thinly even pinto beans ca
 10,IRAN,4,efully alongside of the slyly final dependencies. ,3,EUROPE,ly final courts cajole furiously final excuse
 10,IRAN,4,efully alongside of the slyly final dependencies. ,4,MIDDLE EAST,uickly special accounts cajole carefully blithely close requests. carefully final asymptotes haggle furiousl
+10,IRAN,4,efully alongside of the slyly final dependencies. ,null,null,for null test
+10,IRAN,4,efully alongside of the slyly final dependencies. ,null,null,for null test2
+10,IRAN,4,efully alongside of the slyly final dependencies. ,null,null,for null test3
 11,IRAQ,4,nic deposits boost atop the quickly final requests? quickly regula,0,AFRICA,lar deposits. blithely final packages cajole. regular waters are final requests. regular accounts are according to 
 11,IRAQ,4,nic deposits boost atop the quickly final requests? quickly regula,1,AMERICA,hs use ironic, even requests. s
 11,IRAQ,4,nic deposits boost atop the quickly final requests? quickly regula,2,ASIA,ges. thinly even pinto beans ca
 11,IRAQ,4,nic deposits boost atop the quickly final requests? quickly regula,3,EUROPE,ly final courts cajole furiously final excuse
 11,IRAQ,4,nic deposits boost atop the quickly final requests? quickly regula,4,MIDDLE EAST,uickly special accounts cajole carefully blithely close requests. carefully final asymptotes haggle furiousl
+11,IRAQ,4,nic deposits boost atop the quickly final requests? quickly regula,null,null,for null test
+11,IRAQ,4,nic deposits boost atop the quickly final requests? quickly regula,null,null,for null test2
+11,IRAQ,4,nic deposits boost atop the quickly final requests? quickly regula,null,null,for null test3
 12,JAPAN,2,ously. final, express gifts cajole a,0,AFRICA,lar deposits. blithely final packages cajole. regular waters are final requests. regular accounts are according to 
 12,JAPAN,2,ously. final, express gifts cajole a,1,AMERICA,hs use ironic, even requests. s
 12,JAPAN,2,ously. final, express gifts cajole a,2,ASIA,ges. thinly even pinto beans ca
 12,JAPAN,2,ously. final, express gifts cajole a,3,EUROPE,ly final courts cajole furiously final excuse
 12,JAPAN,2,ously. final, express gifts cajole a,4,MIDDLE EAST,uickly special accounts cajole carefully blithely close requests. carefully final asymptotes haggle furiousl
+12,JAPAN,2,ously. final, express gifts cajole a,null,null,for null test
+12,JAPAN,2,ously. final, express gifts cajole a,null,null,for null test2
+12,JAPAN,2,ously. final, express gifts cajole a,null,null,for null test3
 13,JORDAN,4,ic deposits are blithely about the carefully regular pa,0,AFRICA,lar deposits. blithely final packages cajole. regular waters are final requests. regular accounts are according to 
 13,JORDAN,4,ic deposits are blithely about the carefully regular pa,1,AMERICA,hs use ironic, even requests. s
 13,JORDAN,4,ic deposits are blithely about the carefully regular pa,2,ASIA,ges. thinly even pinto beans ca
 13,JORDAN,4,ic deposits are blithely about the carefully regular pa,3,EUROPE,ly final courts cajole furiously final excuse
 13,JORDAN,4,ic deposits are blithely about the carefully regular pa,4,MIDDLE EAST,uickly special accounts cajole carefully blithely close requests. carefully final asymptotes haggle furiousl
+13,JORDAN,4,ic deposits are blithely about the carefully regular pa,null,null,for null test
+13,JORDAN,4,ic deposits are blithely about the carefully regular pa,null,null,for null test2
+13,JORDAN,4,ic deposits are blithely about the carefully regular pa,null,null,for null test3
 14,KENYA,0, pending excuses haggle furiously deposits. pending, express pinto beans wake fluffily past t,0,AFRICA,lar deposits. blithely final packages cajole. regular waters are final requests. regular accounts are according to 
 14,KENYA,0, pending excuses haggle furiously deposits. pending, express pinto beans wake fluffily past t,1,AMERICA,hs use ironic, even requests. s
 14,KENYA,0, pending excuses haggle furiously deposits. pending, express pinto beans wake fluffily past t,2,ASIA,ges. thinly even pinto beans ca
 14,KENYA,0, pending excuses haggle furiously deposits. pending, express pinto beans wake fluffily past t,3,EUROPE,ly final courts cajole furiously final excuse
 14,KENYA,0, pending excuses haggle furiously deposits. pending, express pinto beans wake fluffily past t,4,MIDDLE EAST,uickly special accounts cajole carefully blithely close requests. carefully final asymptotes haggle furiousl
+14,KENYA,0, pending excuses haggle furiously deposits. pending, express pinto beans wake fluffily past t,null,null,for null test
+14,KENYA,0, pending excuses haggle furiously deposits. pending, express pinto beans wake fluffily past t,null,null,for null test2
+14,KENYA,0, pending excuses haggle furiously deposits. pending, express pinto beans wake fluffily past t,null,null,for null test3
 15,MOROCCO,0,rns. blithely bold courts among the closely regular packages use furiously bold platelets?,0,AFRICA,lar deposits. blithely final packages cajole. regular waters are final requests. regular accounts are according to 
 15,MOROCCO,0,rns. blithely bold courts among the closely regular packages use furiously bold platelets?,1,AMERICA,hs use ironic, even requests. s
 15,MOROCCO,0,rns. blithely bold courts among the closely regular packages use furiously bold platelets?,2,ASIA,ges. thinly even pinto beans ca
 15,MOROCCO,0,rns. blithely bold courts among the closely regular packages use furiously bold platelets?,3,EUROPE,ly final courts cajole furiously final excuse
 15,MOROCCO,0,rns. blithely bold courts among the closely regular packages use furiously bold platelets?,4,MIDDLE EAST,uickly special accounts cajole carefully blithely close requests. carefully final asymptotes haggle furiousl
+15,MOROCCO,0,rns. blithely bold courts among the closely regular packages use furiously bold platelets?,null,null,for null test
+15,MOROCCO,0,rns. blithely bold courts among the closely regular packages use furiously bold platelets?,null,null,for null test2
+15,MOROCCO,0,rns. blithely bold courts among the closely regular packages use furiously bold platelets?,null,null,for null test3
 16,MOZAMBIQUE,0,s. ironic, unusual asymptotes wake blithely r,0,AFRICA,lar deposits. blithely final packages cajole. regular waters are final requests. regular accounts are according to 
 16,MOZAMBIQUE,0,s. ironic, unusual asymptotes wake blithely r,1,AMERICA,hs use ironic, even requests. s
 16,MOZAMBIQUE,0,s. ironic, unusual asymptotes wake blithely r,2,ASIA,ges. thinly even pinto beans ca
 16,MOZAMBIQUE,0,s. ironic, unusual asymptotes wake blithely r,3,EUROPE,ly final courts cajole furiously final excuse
 16,MOZAMBIQUE,0,s. ironic, unusual asymptotes wake blithely r,4,MIDDLE EAST,uickly special accounts cajole carefully blithely close requests. carefully final asymptotes haggle furiousl
+16,MOZAMBIQUE,0,s. ironic, unusual asymptotes wake blithely r,null,null,for null test
+16,MOZAMBIQUE,0,s. ironic, unusual asymptotes wake blithely r,null,null,for null test2
+16,MOZAMBIQUE,0,s. ironic, unusual asymptotes wake blithely r,null,null,for null test3
 17,PERU,1,platelets. blithely pending dependencies use fluffily across the even pinto beans. carefully silent accoun,0,AFRICA,lar deposits. blithely final packages cajole. regular waters are final requests. regular accounts are according to 
 17,PERU,1,platelets. blithely pending dependencies use fluffily across the even pinto beans. carefully silent accoun,1,AMERICA,hs use ironic, even requests. s
 17,PERU,1,platelets. blithely pending dependencies use fluffily across the even pinto beans. carefully silent accoun,2,ASIA,ges. thinly even pinto beans ca
 17,PERU,1,platelets. blithely pending dependencies use fluffily across the even pinto beans. carefully silent accoun,3,EUROPE,ly final courts cajole furiously final excuse
 17,PERU,1,platelets. blithely pending dependencies use fluffily across the even pinto beans. carefully silent accoun,4,MIDDLE EAST,uickly special accounts cajole carefully blithely close requests. carefully final asymptotes haggle furiousl
+17,PERU,1,platelets. blithely pending dependencies use fluffily across the even pinto beans. carefully silent accoun,null,null,for null test
+17,PERU,1,platelets. blithely pending dependencies use fluffily across the even pinto beans. carefully silent accoun,null,null,for null test2
+17,PERU,1,platelets. blithely pending dependencies use fluffily across the even pinto beans. carefully silent accoun,null,null,for null test3
 18,CHINA,2,c dependencies. furiously express notornis sleep slyly regular accounts. ideas sleep. depos,0,AFRICA,lar deposits. blithely final packages cajole. regular waters are final requests. regular accounts are according to 
 18,CHINA,2,c dependencies. furiously express notornis sleep slyly regular accounts. ideas sleep. depos,1,AMERICA,hs use ironic, even requests. s
 18,CHINA,2,c dependencies. furiously express notornis sleep slyly regular accounts. ideas sleep. depos,2,ASIA,ges. thinly even pinto beans ca
 18,CHINA,2,c dependencies. furiously express notornis sleep slyly regular accounts. ideas sleep. depos,3,EUROPE,ly final courts cajole furiously final excuse
 18,CHINA,2,c dependencies. furiously express notornis sleep slyly regular accounts. ideas sleep. depos,4,MIDDLE EAST,uickly special accounts cajole carefully blithely close requests. carefully final asymptotes haggle furiousl
+18,CHINA,2,c dependencies. furiously express notornis sleep slyly regular accounts. ideas sleep. depos,null,null,for null test
+18,CHINA,2,c dependencies. furiously express notornis sleep slyly regular accounts. ideas sleep. depos,null,null,for null test2
+18,CHINA,2,c dependencies. furiously express notornis sleep slyly regular accounts. ideas sleep. depos,null,null,for null test3
 19,ROMANIA,3,ular asymptotes are about the furious multipliers. express dependencies nag above the ironically ironic account,0,AFRICA,lar deposits. blithely final packages cajole. regular waters are final requests. regular accounts are according to 
 19,ROMANIA,3,ular asymptotes are about the furious multipliers. express dependencies nag above the ironically ironic account,1,AMERICA,hs use ironic, even requests. s
 19,ROMANIA,3,ular asymptotes are about the furious multipliers. express dependencies nag above the ironically ironic account,2,ASIA,ges. thinly even pinto beans ca
 19,ROMANIA,3,ular asymptotes are about the furious multipliers. express dependencies nag above the ironically ironic account,3,EUROPE,ly final courts cajole furiously final excuse
 19,ROMANIA,3,ular asymptotes are about the furious multipliers. express dependencies nag above the ironically ironic account,4,MIDDLE EAST,uickly special accounts cajole carefully blithely close requests. carefully final asymptotes haggle furiousl
+19,ROMANIA,3,ular asymptotes are about the furious multipliers. express dependencies nag above the ironically ironic account,null,null,for null test
+19,ROMANIA,3,ular asymptotes are about the furious multipliers. express dependencies nag above the ironically ironic account,null,null,for null test2
+19,ROMANIA,3,ular asymptotes are about the furious multipliers. express dependencies nag above the ironically ironic account,null,null,for null test3
 20,SAUDI ARABIA,4,ts. silent requests haggle. closely express packages sleep across the blithely,0,AFRICA,lar deposits. blithely final packages cajole. regular waters are final requests. regular accounts are according to 
 20,SAUDI ARABIA,4,ts. silent requests haggle. closely express packages sleep across the blithely,1,AMERICA,hs use ironic, even requests. s
 20,SAUDI ARABIA,4,ts. silent requests haggle. closely express packages sleep across the blithely,2,ASIA,ges. thinly even pinto beans ca
 20,SAUDI ARABIA,4,ts. silent requests haggle. closely express packages sleep across the blithely,3,EUROPE,ly final courts cajole furiously final excuse
 20,SAUDI ARABIA,4,ts. silent requests haggle. closely express packages sleep across the blithely,4,MIDDLE EAST,uickly special accounts cajole carefully blithely close requests. carefully final asymptotes haggle furiousl
+20,SAUDI ARABIA,4,ts. silent requests haggle. closely express packages sleep across the blithely,null,null,for null test
+20,SAUDI ARABIA,4,ts. silent requests haggle. closely express packages sleep across the blithely,null,null,for null test2
+20,SAUDI ARABIA,4,ts. silent requests haggle. closely express packages sleep across the blithely,null,null,for null test3
 21,VIETNAM,2,hely enticingly express accounts. even, final ,0,AFRICA,lar deposits. blithely final packages cajole. regular waters are final requests. regular accounts are according to 
 21,VIETNAM,2,hely enticingly express accounts. even, final ,1,AMERICA,hs use ironic, even requests. s
 21,VIETNAM,2,hely enticingly express accounts. even, final ,2,ASIA,ges. thinly even pinto beans ca
 21,VIETNAM,2,hely enticingly express accounts. even, final ,3,EUROPE,ly final courts cajole furiously final excuse
 21,VIETNAM,2,hely enticingly express accounts. even, final ,4,MIDDLE EAST,uickly special accounts cajole carefully blithely close requests. carefully final asymptotes haggle furiousl
+21,VIETNAM,2,hely enticingly express accounts. even, final ,null,null,for null test
+21,VIETNAM,2,hely enticingly express accounts. even, final ,null,null,for null test2
+21,VIETNAM,2,hely enticingly express accounts. even, final ,null,null,for null test3
 22,RUSSIA,3, requests against the platelets use never according to the quickly regular pint,0,AFRICA,lar deposits. blithely final packages cajole. regular waters are final requests. regular accounts are according to 
 22,RUSSIA,3, requests against the platelets use never according to the quickly regular pint,1,AMERICA,hs use ironic, even requests. s
 22,RUSSIA,3, requests against the platelets use never according to the quickly regular pint,2,ASIA,ges. thinly even pinto beans ca
 22,RUSSIA,3, requests against the platelets use never according to the quickly regular pint,3,EUROPE,ly final courts cajole furiously final excuse
 22,RUSSIA,3, requests against the platelets use never according to the quickly regular pint,4,MIDDLE EAST,uickly special accounts cajole carefully blithely close requests. carefully final asymptotes haggle furiousl
+22,RUSSIA,3, requests against the platelets use never according to the quickly regular pint,null,null,for null test
+22,RUSSIA,3, requests against the platelets use never according to the quickly regular pint,null,null,for null test2
+22,RUSSIA,3, requests against the platelets use never according to the quickly regular pint,null,null,for null test3
 23,UNITED KINGDOM,3,eans boost carefully special requests. accounts are. carefull,0,AFRICA,lar deposits. blithely final packages cajole. regular waters are final requests. regular accounts are according to 
 23,UNITED KINGDOM,3,eans boost carefully special requests. accounts are. carefull,1,AMERICA,hs use ironic, even requests. s
 23,UNITED KINGDOM,3,eans boost carefully special requests. accounts are. carefull,2,ASIA,ges. thinly even pinto beans ca
 23,UNITED KINGDOM,3,eans boost carefully special requests. accounts are. carefull,3,EUROPE,ly final courts cajole furiously final excuse
 23,UNITED KINGDOM,3,eans boost carefully special requests. accounts are. carefull,4,MIDDLE EAST,uickly special accounts cajole carefully blithely close requests. carefully final asymptotes haggle furiousl
+23,UNITED KINGDOM,3,eans boost carefully special requests. accounts are. carefull,null,null,for null test
+23,UNITED KINGDOM,3,eans boost carefully special requests. accounts are. carefull,null,null,for null test2
+23,UNITED KINGDOM,3,eans boost carefully special requests. accounts are. carefull,null,null,for null test3
 24,UNITED STATES,1,y final packages. slow foxes cajole quickly. quickly silent platelets breach ironic accounts. unusual pinto be,0,AFRICA,lar deposits. blithely final packages cajole. regular waters are final requests. regular accounts are according to 
 24,UNITED STATES,1,y final packages. slow foxes cajole quickly. quickly silent platelets breach ironic accounts. unusual pinto be,1,AMERICA,hs use ironic, even requests. s
 24,UNITED STATES,1,y final packages. slow foxes cajole quickly. quickly silent platelets breach ironic accounts. unusual pinto be,2,ASIA,ges. thinly even pinto beans ca
 24,UNITED STATES,1,y final packages. slow foxes cajole quickly. quickly silent platelets breach ironic accounts. unusual pinto be,3,EUROPE,ly final courts cajole furiously final excuse
 24,UNITED STATES,1,y final packages. slow foxes cajole quickly. quickly silent platelets breach ironic accounts. unusual pinto be,4,MIDDLE EAST,uickly special accounts cajole carefully blithely close requests. carefully final asymptotes haggle furiousl
+24,UNITED STATES,1,y final packages. slow foxes cajole quickly. quickly silent platelets breach ironic accounts. unusual pinto be,null,null,for null test
+24,UNITED STATES,1,y final packages. slow foxes cajole quickly. quickly silent platelets breach ironic accounts. unusual pinto be,null,null,for null test2
+24,UNITED STATES,1,y final packages. slow foxes cajole quickly. quickly silent platelets breach ironic accounts. unusual pinto be,null,null,for null test3
+null,null,null,for null test,0,AFRICA,lar deposits. blithely final packages cajole. regular waters are final requests. regular accounts are according to 
+null,null,null,for null test,1,AMERICA,hs use ironic, even requests. s
+null,null,null,for null test,2,ASIA,ges. thinly even pinto beans ca
+null,null,null,for null test,3,EUROPE,ly final courts cajole furiously final excuse
+null,null,null,for null test,4,MIDDLE EAST,uickly special accounts cajole carefully blithely close requests. carefully final asymptotes haggle furiousl
+null,null,null,for null test,null,null,for null test
+null,null,null,for null test,null,null,for null test2
+null,null,null,for null test,null,null,for null test3
+null,null,null,for null test2,0,AFRICA,lar deposits. blithely final packages cajole. regular waters are final requests. regular accounts are according to 
+null,null,null,for null test2,1,AMERICA,hs use ironic, even requests. s
+null,null,null,for null test2,2,ASIA,ges. thinly even pinto beans ca
+null,null,null,for null test2,3,EUROPE,ly final courts cajole furiously final excuse
+null,null,null,for null test2,4,MIDDLE EAST,uickly special accounts cajole carefully blithely close requests. carefully final asymptotes haggle furiousl
+null,null,null,for null test2,null,null,for null test
+null,null,null,for null test2,null,null,for null test2
+null,null,null,for null test2,null,null,for null test3
+null,null,null,for null test3,0,AFRICA,lar deposits. blithely final packages cajole. regular waters are final requests. regular accounts are according to 
+null,null,null,for null test3,1,AMERICA,hs use ironic, even requests. s
+null,null,null,for null test3,2,ASIA,ges. thinly even pinto beans ca
+null,null,null,for null test3,3,EUROPE,ly final courts cajole furiously final excuse
+null,null,null,for null test3,4,MIDDLE EAST,uickly special accounts cajole carefully blithely close requests. carefully final asymptotes haggle furiousl
+null,null,null,for null test3,null,null,for null test
+null,null,null,for null test3,null,null,for null test2
+null,null,null,for null test3,null,null,for null test3
diff --git a/tajo-core-tests/src/test/resources/results/TestCrossJoin/testCrossJoinOftwoSmallTables.1.result b/tajo-core-tests/src/test/resources/results/TestCrossJoin/testCrossJoinOftwoSmallTables.1.result
index d2b414a..5731f27 100644
--- a/tajo-core-tests/src/test/resources/results/TestCrossJoin/testCrossJoinOftwoSmallTables.1.result
+++ b/tajo-core-tests/src/test/resources/results/TestCrossJoin/testCrossJoinOftwoSmallTables.1.result
@@ -5,23 +5,62 @@
 1,1,7706,1,17.0,21168.23,0.04,0.02,N,O,1996-03-13,1996-02-12,1996-03-22,DELIVER IN PERSON,TRUCK,egular courts above the,2,ASIA,ges. thinly even pinto beans ca
 1,1,7706,1,17.0,21168.23,0.04,0.02,N,O,1996-03-13,1996-02-12,1996-03-22,DELIVER IN PERSON,TRUCK,egular courts above the,3,EUROPE,ly final courts cajole furiously final excuse
 1,1,7706,1,17.0,21168.23,0.04,0.02,N,O,1996-03-13,1996-02-12,1996-03-22,DELIVER IN PERSON,TRUCK,egular courts above the,4,MIDDLE EAST,uickly special accounts cajole carefully blithely close requests. carefully final asymptotes haggle furiousl
+1,1,7706,1,17.0,21168.23,0.04,0.02,N,O,1996-03-13,1996-02-12,1996-03-22,DELIVER IN PERSON,TRUCK,egular courts above the,null,null,for null test
+1,1,7706,1,17.0,21168.23,0.04,0.02,N,O,1996-03-13,1996-02-12,1996-03-22,DELIVER IN PERSON,TRUCK,egular courts above the,null,null,for null test2
+1,1,7706,1,17.0,21168.23,0.04,0.02,N,O,1996-03-13,1996-02-12,1996-03-22,DELIVER IN PERSON,TRUCK,egular courts above the,null,null,for null test3
 1,1,7311,2,36.0,45983.16,0.09,0.06,N,O,1996-04-12,1996-02-28,1996-04-20,TAKE BACK RETURN,MAIL,ly final dependencies: slyly bold ,0,AFRICA,lar deposits. blithely final packages cajole. regular waters are final requests. regular accounts are according to 
 1,1,7311,2,36.0,45983.16,0.09,0.06,N,O,1996-04-12,1996-02-28,1996-04-20,TAKE BACK RETURN,MAIL,ly final dependencies: slyly bold ,1,AMERICA,hs use ironic, even requests. s
 1,1,7311,2,36.0,45983.16,0.09,0.06,N,O,1996-04-12,1996-02-28,1996-04-20,TAKE BACK RETURN,MAIL,ly final dependencies: slyly bold ,2,ASIA,ges. thinly even pinto beans ca
 1,1,7311,2,36.0,45983.16,0.09,0.06,N,O,1996-04-12,1996-02-28,1996-04-20,TAKE BACK RETURN,MAIL,ly final dependencies: slyly bold ,3,EUROPE,ly final courts cajole furiously final excuse
 1,1,7311,2,36.0,45983.16,0.09,0.06,N,O,1996-04-12,1996-02-28,1996-04-20,TAKE BACK RETURN,MAIL,ly final dependencies: slyly bold ,4,MIDDLE EAST,uickly special accounts cajole carefully blithely close requests. carefully final asymptotes haggle furiousl
+1,1,7311,2,36.0,45983.16,0.09,0.06,N,O,1996-04-12,1996-02-28,1996-04-20,TAKE BACK RETURN,MAIL,ly final dependencies: slyly bold ,null,null,for null test
+1,1,7311,2,36.0,45983.16,0.09,0.06,N,O,1996-04-12,1996-02-28,1996-04-20,TAKE BACK RETURN,MAIL,ly final dependencies: slyly bold ,null,null,for null test2
+1,1,7311,2,36.0,45983.16,0.09,0.06,N,O,1996-04-12,1996-02-28,1996-04-20,TAKE BACK RETURN,MAIL,ly final dependencies: slyly bold ,null,null,for null test3
 2,2,1191,1,38.0,44694.46,0.0,0.05,N,O,1997-01-28,1997-01-14,1997-02-02,TAKE BACK RETURN,RAIL,ven requests. deposits breach a,0,AFRICA,lar deposits. blithely final packages cajole. regular waters are final requests. regular accounts are according to 
 2,2,1191,1,38.0,44694.46,0.0,0.05,N,O,1997-01-28,1997-01-14,1997-02-02,TAKE BACK RETURN,RAIL,ven requests. deposits breach a,1,AMERICA,hs use ironic, even requests. s
 2,2,1191,1,38.0,44694.46,0.0,0.05,N,O,1997-01-28,1997-01-14,1997-02-02,TAKE BACK RETURN,RAIL,ven requests. deposits breach a,2,ASIA,ges. thinly even pinto beans ca
 2,2,1191,1,38.0,44694.46,0.0,0.05,N,O,1997-01-28,1997-01-14,1997-02-02,TAKE BACK RETURN,RAIL,ven requests. deposits breach a,3,EUROPE,ly final courts cajole furiously final excuse
 2,2,1191,1,38.0,44694.46,0.0,0.05,N,O,1997-01-28,1997-01-14,1997-02-02,TAKE BACK RETURN,RAIL,ven requests. deposits breach a,4,MIDDLE EAST,uickly special accounts cajole carefully blithely close requests. carefully final asymptotes haggle furiousl
+2,2,1191,1,38.0,44694.46,0.0,0.05,N,O,1997-01-28,1997-01-14,1997-02-02,TAKE BACK RETURN,RAIL,ven requests. deposits breach a,null,null,for null test
+2,2,1191,1,38.0,44694.46,0.0,0.05,N,O,1997-01-28,1997-01-14,1997-02-02,TAKE BACK RETURN,RAIL,ven requests. deposits breach a,null,null,for null test2
+2,2,1191,1,38.0,44694.46,0.0,0.05,N,O,1997-01-28,1997-01-14,1997-02-02,TAKE BACK RETURN,RAIL,ven requests. deposits breach a,null,null,for null test3
 3,2,1798,1,45.0,54058.05,0.06,0.0,R,F,1994-02-02,1994-01-04,1994-02-23,NONE,AIR,ongside of the furiously brave acco,0,AFRICA,lar deposits. blithely final packages cajole. regular waters are final requests. regular accounts are according to 
 3,2,1798,1,45.0,54058.05,0.06,0.0,R,F,1994-02-02,1994-01-04,1994-02-23,NONE,AIR,ongside of the furiously brave acco,1,AMERICA,hs use ironic, even requests. s
 3,2,1798,1,45.0,54058.05,0.06,0.0,R,F,1994-02-02,1994-01-04,1994-02-23,NONE,AIR,ongside of the furiously brave acco,2,ASIA,ges. thinly even pinto beans ca
 3,2,1798,1,45.0,54058.05,0.06,0.0,R,F,1994-02-02,1994-01-04,1994-02-23,NONE,AIR,ongside of the furiously brave acco,3,EUROPE,ly final courts cajole furiously final excuse
 3,2,1798,1,45.0,54058.05,0.06,0.0,R,F,1994-02-02,1994-01-04,1994-02-23,NONE,AIR,ongside of the furiously brave acco,4,MIDDLE EAST,uickly special accounts cajole carefully blithely close requests. carefully final asymptotes haggle furiousl
+3,2,1798,1,45.0,54058.05,0.06,0.0,R,F,1994-02-02,1994-01-04,1994-02-23,NONE,AIR,ongside of the furiously brave acco,null,null,for null test
+3,2,1798,1,45.0,54058.05,0.06,0.0,R,F,1994-02-02,1994-01-04,1994-02-23,NONE,AIR,ongside of the furiously brave acco,null,null,for null test2
+3,2,1798,1,45.0,54058.05,0.06,0.0,R,F,1994-02-02,1994-01-04,1994-02-23,NONE,AIR,ongside of the furiously brave acco,null,null,for null test3
 3,3,6540,2,49.0,46796.47,0.1,0.0,R,F,1993-11-09,1993-12-20,1993-11-24,TAKE BACK RETURN,RAIL, unusual accounts. eve,0,AFRICA,lar deposits. blithely final packages cajole. regular waters are final requests. regular accounts are according to 
 3,3,6540,2,49.0,46796.47,0.1,0.0,R,F,1993-11-09,1993-12-20,1993-11-24,TAKE BACK RETURN,RAIL, unusual accounts. eve,1,AMERICA,hs use ironic, even requests. s
 3,3,6540,2,49.0,46796.47,0.1,0.0,R,F,1993-11-09,1993-12-20,1993-11-24,TAKE BACK RETURN,RAIL, unusual accounts. eve,2,ASIA,ges. thinly even pinto beans ca
 3,3,6540,2,49.0,46796.47,0.1,0.0,R,F,1993-11-09,1993-12-20,1993-11-24,TAKE BACK RETURN,RAIL, unusual accounts. eve,3,EUROPE,ly final courts cajole furiously final excuse
 3,3,6540,2,49.0,46796.47,0.1,0.0,R,F,1993-11-09,1993-12-20,1993-11-24,TAKE BACK RETURN,RAIL, unusual accounts. eve,4,MIDDLE EAST,uickly special accounts cajole carefully blithely close requests. carefully final asymptotes haggle furiousl
+3,3,6540,2,49.0,46796.47,0.1,0.0,R,F,1993-11-09,1993-12-20,1993-11-24,TAKE BACK RETURN,RAIL, unusual accounts. eve,null,null,for null test
+3,3,6540,2,49.0,46796.47,0.1,0.0,R,F,1993-11-09,1993-12-20,1993-11-24,TAKE BACK RETURN,RAIL, unusual accounts. eve,null,null,for null test2
+3,3,6540,2,49.0,46796.47,0.1,0.0,R,F,1993-11-09,1993-12-20,1993-11-24,TAKE BACK RETURN,RAIL, unusual accounts. eve,null,null,for null test3
+null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,for null test,0,AFRICA,lar deposits. blithely final packages cajole. regular waters are final requests. regular accounts are according to 
+null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,for null test,1,AMERICA,hs use ironic, even requests. s
+null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,for null test,2,ASIA,ges. thinly even pinto beans ca
+null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,for null test,3,EUROPE,ly final courts cajole furiously final excuse
+null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,for null test,4,MIDDLE EAST,uickly special accounts cajole carefully blithely close requests. carefully final asymptotes haggle furiousl
+null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,for null test,null,null,for null test
+null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,for null test,null,null,for null test2
+null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,for null test,null,null,for null test3
+null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,for null test2,0,AFRICA,lar deposits. blithely final packages cajole. regular waters are final requests. regular accounts are according to 
+null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,for null test2,1,AMERICA,hs use ironic, even requests. s
+null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,for null test2,2,ASIA,ges. thinly even pinto beans ca
+null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,for null test2,3,EUROPE,ly final courts cajole furiously final excuse
+null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,for null test2,4,MIDDLE EAST,uickly special accounts cajole carefully blithely close requests. carefully final asymptotes haggle furiousl
+null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,for null test2,null,null,for null test
+null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,for null test2,null,null,for null test2
+null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,for null test2,null,null,for null test3
+null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,for null test3,0,AFRICA,lar deposits. blithely final packages cajole. regular waters are final requests. regular accounts are according to 
+null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,for null test3,1,AMERICA,hs use ironic, even requests. s
+null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,for null test3,2,ASIA,ges. thinly even pinto beans ca
+null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,for null test3,3,EUROPE,ly final courts cajole furiously final excuse
+null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,for null test3,4,MIDDLE EAST,uickly special accounts cajole carefully blithely close requests. carefully final asymptotes haggle furiousl
+null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,for null test3,null,null,for null test
+null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,for null test3,null,null,for null test2
+null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,for null test3,null,null,for null test3
diff --git a/tajo-core-tests/src/test/resources/results/TestCrossJoin/testCrossJoinWithAsterisk1.result b/tajo-core-tests/src/test/resources/results/TestCrossJoin/testCrossJoinWithAsterisk1.result
index 304b867..1724274 100644
--- a/tajo-core-tests/src/test/resources/results/TestCrossJoin/testCrossJoinWithAsterisk1.result
+++ b/tajo-core-tests/src/test/resources/results/TestCrossJoin/testCrossJoinWithAsterisk1.result
@@ -5,23 +5,62 @@
 0,AFRICA,lar deposits. blithely final packages cajole. regular waters are final requests. regular accounts are according to ,3,Customer#000000003,MG9kdTD2WBHm,1,11-719-748-3364,7498.12,AUTOMOBILE, deposits eat slyly ironic, even instructions. express foxes detect slyly. blithely even accounts abov
 0,AFRICA,lar deposits. blithely final packages cajole. regular waters are final requests. regular accounts are according to ,4,Customer#000000004,XxVSJsLAGtn,4,14-128-190-5944,2866.83,MACHINERY, requests. final, regular ideas sleep final accou
 0,AFRICA,lar deposits. blithely final packages cajole. regular waters are final requests. regular accounts are according to ,5,Customer#000000005,KvpyuHCplrB84WgAiGV6sYpZq7Tj,3,13-750-942-6364,794.47,HOUSEHOLD,n accounts will have to unwind. foxes cajole accor
+0,AFRICA,lar deposits. blithely final packages cajole. regular waters are final requests. regular accounts are according to ,null,null,null,null,null,null,null,for null test
+0,AFRICA,lar deposits. blithely final packages cajole. regular waters are final requests. regular accounts are according to ,null,null,null,null,null,null,null,for null test2
+0,AFRICA,lar deposits. blithely final packages cajole. regular waters are final requests. regular accounts are according to ,null,null,null,null,null,null,null,for null test3
 1,AMERICA,hs use ironic, even requests. s,1,Customer#000000001,IVhzIApeRb ot,c,E,15,25-989-741-2988,711.56,BUILDING,to the even, regular platelets. regular, ironic epitaphs nag e
 1,AMERICA,hs use ironic, even requests. s,2,Customer#000000002,XSTf4,NCwDVaWNe6tEgvwfmRchLXak,13,23-768-687-3665,121.65,AUTOMOBILE,l accounts. blithely ironic theodolites integrate boldly: caref
 1,AMERICA,hs use ironic, even requests. s,3,Customer#000000003,MG9kdTD2WBHm,1,11-719-748-3364,7498.12,AUTOMOBILE, deposits eat slyly ironic, even instructions. express foxes detect slyly. blithely even accounts abov
 1,AMERICA,hs use ironic, even requests. s,4,Customer#000000004,XxVSJsLAGtn,4,14-128-190-5944,2866.83,MACHINERY, requests. final, regular ideas sleep final accou
 1,AMERICA,hs use ironic, even requests. s,5,Customer#000000005,KvpyuHCplrB84WgAiGV6sYpZq7Tj,3,13-750-942-6364,794.47,HOUSEHOLD,n accounts will have to unwind. foxes cajole accor
+1,AMERICA,hs use ironic, even requests. s,null,null,null,null,null,null,null,for null test
+1,AMERICA,hs use ironic, even requests. s,null,null,null,null,null,null,null,for null test2
+1,AMERICA,hs use ironic, even requests. s,null,null,null,null,null,null,null,for null test3
 2,ASIA,ges. thinly even pinto beans ca,1,Customer#000000001,IVhzIApeRb ot,c,E,15,25-989-741-2988,711.56,BUILDING,to the even, regular platelets. regular, ironic epitaphs nag e
 2,ASIA,ges. thinly even pinto beans ca,2,Customer#000000002,XSTf4,NCwDVaWNe6tEgvwfmRchLXak,13,23-768-687-3665,121.65,AUTOMOBILE,l accounts. blithely ironic theodolites integrate boldly: caref
 2,ASIA,ges. thinly even pinto beans ca,3,Customer#000000003,MG9kdTD2WBHm,1,11-719-748-3364,7498.12,AUTOMOBILE, deposits eat slyly ironic, even instructions. express foxes detect slyly. blithely even accounts abov
 2,ASIA,ges. thinly even pinto beans ca,4,Customer#000000004,XxVSJsLAGtn,4,14-128-190-5944,2866.83,MACHINERY, requests. final, regular ideas sleep final accou
 2,ASIA,ges. thinly even pinto beans ca,5,Customer#000000005,KvpyuHCplrB84WgAiGV6sYpZq7Tj,3,13-750-942-6364,794.47,HOUSEHOLD,n accounts will have to unwind. foxes cajole accor
+2,ASIA,ges. thinly even pinto beans ca,null,null,null,null,null,null,null,for null test
+2,ASIA,ges. thinly even pinto beans ca,null,null,null,null,null,null,null,for null test2
+2,ASIA,ges. thinly even pinto beans ca,null,null,null,null,null,null,null,for null test3
 3,EUROPE,ly final courts cajole furiously final excuse,1,Customer#000000001,IVhzIApeRb ot,c,E,15,25-989-741-2988,711.56,BUILDING,to the even, regular platelets. regular, ironic epitaphs nag e
 3,EUROPE,ly final courts cajole furiously final excuse,2,Customer#000000002,XSTf4,NCwDVaWNe6tEgvwfmRchLXak,13,23-768-687-3665,121.65,AUTOMOBILE,l accounts. blithely ironic theodolites integrate boldly: caref
 3,EUROPE,ly final courts cajole furiously final excuse,3,Customer#000000003,MG9kdTD2WBHm,1,11-719-748-3364,7498.12,AUTOMOBILE, deposits eat slyly ironic, even instructions. express foxes detect slyly. blithely even accounts abov
 3,EUROPE,ly final courts cajole furiously final excuse,4,Customer#000000004,XxVSJsLAGtn,4,14-128-190-5944,2866.83,MACHINERY, requests. final, regular ideas sleep final accou
 3,EUROPE,ly final courts cajole furiously final excuse,5,Customer#000000005,KvpyuHCplrB84WgAiGV6sYpZq7Tj,3,13-750-942-6364,794.47,HOUSEHOLD,n accounts will have to unwind. foxes cajole accor
+3,EUROPE,ly final courts cajole furiously final excuse,null,null,null,null,null,null,null,for null test
+3,EUROPE,ly final courts cajole furiously final excuse,null,null,null,null,null,null,null,for null test2
+3,EUROPE,ly final courts cajole furiously final excuse,null,null,null,null,null,null,null,for null test3
 4,MIDDLE EAST,uickly special accounts cajole carefully blithely close requests. carefully final asymptotes haggle furiousl,1,Customer#000000001,IVhzIApeRb ot,c,E,15,25-989-741-2988,711.56,BUILDING,to the even, regular platelets. regular, ironic epitaphs nag e
 4,MIDDLE EAST,uickly special accounts cajole carefully blithely close requests. carefully final asymptotes haggle furiousl,2,Customer#000000002,XSTf4,NCwDVaWNe6tEgvwfmRchLXak,13,23-768-687-3665,121.65,AUTOMOBILE,l accounts. blithely ironic theodolites integrate boldly: caref
 4,MIDDLE EAST,uickly special accounts cajole carefully blithely close requests. carefully final asymptotes haggle furiousl,3,Customer#000000003,MG9kdTD2WBHm,1,11-719-748-3364,7498.12,AUTOMOBILE, deposits eat slyly ironic, even instructions. express foxes detect slyly. blithely even accounts abov
 4,MIDDLE EAST,uickly special accounts cajole carefully blithely close requests. carefully final asymptotes haggle furiousl,4,Customer#000000004,XxVSJsLAGtn,4,14-128-190-5944,2866.83,MACHINERY, requests. final, regular ideas sleep final accou
 4,MIDDLE EAST,uickly special accounts cajole carefully blithely close requests. carefully final asymptotes haggle furiousl,5,Customer#000000005,KvpyuHCplrB84WgAiGV6sYpZq7Tj,3,13-750-942-6364,794.47,HOUSEHOLD,n accounts will have to unwind. foxes cajole accor
+4,MIDDLE EAST,uickly special accounts cajole carefully blithely close requests. carefully final asymptotes haggle furiousl,null,null,null,null,null,null,null,for null test
+4,MIDDLE EAST,uickly special accounts cajole carefully blithely close requests. carefully final asymptotes haggle furiousl,null,null,null,null,null,null,null,for null test2
+4,MIDDLE EAST,uickly special accounts cajole carefully blithely close requests. carefully final asymptotes haggle furiousl,null,null,null,null,null,null,null,for null test3
+null,null,for null test,1,Customer#000000001,IVhzIApeRb ot,c,E,15,25-989-741-2988,711.56,BUILDING,to the even, regular platelets. regular, ironic epitaphs nag e
+null,null,for null test2,1,Customer#000000001,IVhzIApeRb ot,c,E,15,25-989-741-2988,711.56,BUILDING,to the even, regular platelets. regular, ironic epitaphs nag e
+null,null,for null test3,1,Customer#000000001,IVhzIApeRb ot,c,E,15,25-989-741-2988,711.56,BUILDING,to the even, regular platelets. regular, ironic epitaphs nag e
+null,null,for null test,2,Customer#000000002,XSTf4,NCwDVaWNe6tEgvwfmRchLXak,13,23-768-687-3665,121.65,AUTOMOBILE,l accounts. blithely ironic theodolites integrate boldly: caref
+null,null,for null test2,2,Customer#000000002,XSTf4,NCwDVaWNe6tEgvwfmRchLXak,13,23-768-687-3665,121.65,AUTOMOBILE,l accounts. blithely ironic theodolites integrate boldly: caref
+null,null,for null test3,2,Customer#000000002,XSTf4,NCwDVaWNe6tEgvwfmRchLXak,13,23-768-687-3665,121.65,AUTOMOBILE,l accounts. blithely ironic theodolites integrate boldly: caref
+null,null,for null test,3,Customer#000000003,MG9kdTD2WBHm,1,11-719-748-3364,7498.12,AUTOMOBILE, deposits eat slyly ironic, even instructions. express foxes detect slyly. blithely even accounts abov
+null,null,for null test2,3,Customer#000000003,MG9kdTD2WBHm,1,11-719-748-3364,7498.12,AUTOMOBILE, deposits eat slyly ironic, even instructions. express foxes detect slyly. blithely even accounts abov
+null,null,for null test3,3,Customer#000000003,MG9kdTD2WBHm,1,11-719-748-3364,7498.12,AUTOMOBILE, deposits eat slyly ironic, even instructions. express foxes detect slyly. blithely even accounts abov
+null,null,for null test,4,Customer#000000004,XxVSJsLAGtn,4,14-128-190-5944,2866.83,MACHINERY, requests. final, regular ideas sleep final accou
+null,null,for null test2,4,Customer#000000004,XxVSJsLAGtn,4,14-128-190-5944,2866.83,MACHINERY, requests. final, regular ideas sleep final accou
+null,null,for null test3,4,Customer#000000004,XxVSJsLAGtn,4,14-128-190-5944,2866.83,MACHINERY, requests. final, regular ideas sleep final accou
+null,null,for null test,5,Customer#000000005,KvpyuHCplrB84WgAiGV6sYpZq7Tj,3,13-750-942-6364,794.47,HOUSEHOLD,n accounts will have to unwind. foxes cajole accor
+null,null,for null test2,5,Customer#000000005,KvpyuHCplrB84WgAiGV6sYpZq7Tj,3,13-750-942-6364,794.47,HOUSEHOLD,n accounts will have to unwind. foxes cajole accor
+null,null,for null test3,5,Customer#000000005,KvpyuHCplrB84WgAiGV6sYpZq7Tj,3,13-750-942-6364,794.47,HOUSEHOLD,n accounts will have to unwind. foxes cajole accor
+null,null,for null test,null,null,null,null,null,null,null,for null test
+null,null,for null test2,null,null,null,null,null,null,null,for null test
+null,null,for null test3,null,null,null,null,null,null,null,for null test
+null,null,for null test,null,null,null,null,null,null,null,for null test2
+null,null,for null test2,null,null,null,null,null,null,null,for null test2
+null,null,for null test3,null,null,null,null,null,null,null,for null test2
+null,null,for null test,null,null,null,null,null,null,null,for null test3
+null,null,for null test2,null,null,null,null,null,null,null,for null test3
+null,null,for null test3,null,null,null,null,null,null,null,for null test3
diff --git a/tajo-core-tests/src/test/resources/results/TestCrossJoin/testCrossJoinWithAsterisk2.result b/tajo-core-tests/src/test/resources/results/TestCrossJoin/testCrossJoinWithAsterisk2.result
index 304b867..1724274 100644
--- a/tajo-core-tests/src/test/resources/results/TestCrossJoin/testCrossJoinWithAsterisk2.result
+++ b/tajo-core-tests/src/test/resources/results/TestCrossJoin/testCrossJoinWithAsterisk2.result
@@ -5,23 +5,62 @@
 0,AFRICA,lar deposits. blithely final packages cajole. regular waters are final requests. regular accounts are according to ,3,Customer#000000003,MG9kdTD2WBHm,1,11-719-748-3364,7498.12,AUTOMOBILE, deposits eat slyly ironic, even instructions. express foxes detect slyly. blithely even accounts abov
 0,AFRICA,lar deposits. blithely final packages cajole. regular waters are final requests. regular accounts are according to ,4,Customer#000000004,XxVSJsLAGtn,4,14-128-190-5944,2866.83,MACHINERY, requests. final, regular ideas sleep final accou
 0,AFRICA,lar deposits. blithely final packages cajole. regular waters are final requests. regular accounts are according to ,5,Customer#000000005,KvpyuHCplrB84WgAiGV6sYpZq7Tj,3,13-750-942-6364,794.47,HOUSEHOLD,n accounts will have to unwind. foxes cajole accor
+0,AFRICA,lar deposits. blithely final packages cajole. regular waters are final requests. regular accounts are according to ,null,null,null,null,null,null,null,for null test
+0,AFRICA,lar deposits. blithely final packages cajole. regular waters are final requests. regular accounts are according to ,null,null,null,null,null,null,null,for null test2
+0,AFRICA,lar deposits. blithely final packages cajole. regular waters are final requests. regular accounts are according to ,null,null,null,null,null,null,null,for null test3
 1,AMERICA,hs use ironic, even requests. s,1,Customer#000000001,IVhzIApeRb ot,c,E,15,25-989-741-2988,711.56,BUILDING,to the even, regular platelets. regular, ironic epitaphs nag e
 1,AMERICA,hs use ironic, even requests. s,2,Customer#000000002,XSTf4,NCwDVaWNe6tEgvwfmRchLXak,13,23-768-687-3665,121.65,AUTOMOBILE,l accounts. blithely ironic theodolites integrate boldly: caref
 1,AMERICA,hs use ironic, even requests. s,3,Customer#000000003,MG9kdTD2WBHm,1,11-719-748-3364,7498.12,AUTOMOBILE, deposits eat slyly ironic, even instructions. express foxes detect slyly. blithely even accounts abov
 1,AMERICA,hs use ironic, even requests. s,4,Customer#000000004,XxVSJsLAGtn,4,14-128-190-5944,2866.83,MACHINERY, requests. final, regular ideas sleep final accou
 1,AMERICA,hs use ironic, even requests. s,5,Customer#000000005,KvpyuHCplrB84WgAiGV6sYpZq7Tj,3,13-750-942-6364,794.47,HOUSEHOLD,n accounts will have to unwind. foxes cajole accor
+1,AMERICA,hs use ironic, even requests. s,null,null,null,null,null,null,null,for null test
+1,AMERICA,hs use ironic, even requests. s,null,null,null,null,null,null,null,for null test2
+1,AMERICA,hs use ironic, even requests. s,null,null,null,null,null,null,null,for null test3
 2,ASIA,ges. thinly even pinto beans ca,1,Customer#000000001,IVhzIApeRb ot,c,E,15,25-989-741-2988,711.56,BUILDING,to the even, regular platelets. regular, ironic epitaphs nag e
 2,ASIA,ges. thinly even pinto beans ca,2,Customer#000000002,XSTf4,NCwDVaWNe6tEgvwfmRchLXak,13,23-768-687-3665,121.65,AUTOMOBILE,l accounts. blithely ironic theodolites integrate boldly: caref
 2,ASIA,ges. thinly even pinto beans ca,3,Customer#000000003,MG9kdTD2WBHm,1,11-719-748-3364,7498.12,AUTOMOBILE, deposits eat slyly ironic, even instructions. express foxes detect slyly. blithely even accounts abov
 2,ASIA,ges. thinly even pinto beans ca,4,Customer#000000004,XxVSJsLAGtn,4,14-128-190-5944,2866.83,MACHINERY, requests. final, regular ideas sleep final accou
 2,ASIA,ges. thinly even pinto beans ca,5,Customer#000000005,KvpyuHCplrB84WgAiGV6sYpZq7Tj,3,13-750-942-6364,794.47,HOUSEHOLD,n accounts will have to unwind. foxes cajole accor
+2,ASIA,ges. thinly even pinto beans ca,null,null,null,null,null,null,null,for null test
+2,ASIA,ges. thinly even pinto beans ca,null,null,null,null,null,null,null,for null test2
+2,ASIA,ges. thinly even pinto beans ca,null,null,null,null,null,null,null,for null test3
 3,EUROPE,ly final courts cajole furiously final excuse,1,Customer#000000001,IVhzIApeRb ot,c,E,15,25-989-741-2988,711.56,BUILDING,to the even, regular platelets. regular, ironic epitaphs nag e
 3,EUROPE,ly final courts cajole furiously final excuse,2,Customer#000000002,XSTf4,NCwDVaWNe6tEgvwfmRchLXak,13,23-768-687-3665,121.65,AUTOMOBILE,l accounts. blithely ironic theodolites integrate boldly: caref
 3,EUROPE,ly final courts cajole furiously final excuse,3,Customer#000000003,MG9kdTD2WBHm,1,11-719-748-3364,7498.12,AUTOMOBILE, deposits eat slyly ironic, even instructions. express foxes detect slyly. blithely even accounts abov
 3,EUROPE,ly final courts cajole furiously final excuse,4,Customer#000000004,XxVSJsLAGtn,4,14-128-190-5944,2866.83,MACHINERY, requests. final, regular ideas sleep final accou
 3,EUROPE,ly final courts cajole furiously final excuse,5,Customer#000000005,KvpyuHCplrB84WgAiGV6sYpZq7Tj,3,13-750-942-6364,794.47,HOUSEHOLD,n accounts will have to unwind. foxes cajole accor
+3,EUROPE,ly final courts cajole furiously final excuse,null,null,null,null,null,null,null,for null test
+3,EUROPE,ly final courts cajole furiously final excuse,null,null,null,null,null,null,null,for null test2
+3,EUROPE,ly final courts cajole furiously final excuse,null,null,null,null,null,null,null,for null test3
 4,MIDDLE EAST,uickly special accounts cajole carefully blithely close requests. carefully final asymptotes haggle furiousl,1,Customer#000000001,IVhzIApeRb ot,c,E,15,25-989-741-2988,711.56,BUILDING,to the even, regular platelets. regular, ironic epitaphs nag e
 4,MIDDLE EAST,uickly special accounts cajole carefully blithely close requests. carefully final asymptotes haggle furiousl,2,Customer#000000002,XSTf4,NCwDVaWNe6tEgvwfmRchLXak,13,23-768-687-3665,121.65,AUTOMOBILE,l accounts. blithely ironic theodolites integrate boldly: caref
 4,MIDDLE EAST,uickly special accounts cajole carefully blithely close requests. carefully final asymptotes haggle furiousl,3,Customer#000000003,MG9kdTD2WBHm,1,11-719-748-3364,7498.12,AUTOMOBILE, deposits eat slyly ironic, even instructions. express foxes detect slyly. blithely even accounts abov
 4,MIDDLE EAST,uickly special accounts cajole carefully blithely close requests. carefully final asymptotes haggle furiousl,4,Customer#000000004,XxVSJsLAGtn,4,14-128-190-5944,2866.83,MACHINERY, requests. final, regular ideas sleep final accou
 4,MIDDLE EAST,uickly special accounts cajole carefully blithely close requests. carefully final asymptotes haggle furiousl,5,Customer#000000005,KvpyuHCplrB84WgAiGV6sYpZq7Tj,3,13-750-942-6364,794.47,HOUSEHOLD,n accounts will have to unwind. foxes cajole accor
+4,MIDDLE EAST,uickly special accounts cajole carefully blithely close requests. carefully final asymptotes haggle furiousl,null,null,null,null,null,null,null,for null test
+4,MIDDLE EAST,uickly special accounts cajole carefully blithely close requests. carefully final asymptotes haggle furiousl,null,null,null,null,null,null,null,for null test2
+4,MIDDLE EAST,uickly special accounts cajole carefully blithely close requests. carefully final asymptotes haggle furiousl,null,null,null,null,null,null,null,for null test3
+null,null,for null test,1,Customer#000000001,IVhzIApeRb ot,c,E,15,25-989-741-2988,711.56,BUILDING,to the even, regular platelets. regular, ironic epitaphs nag e
+null,null,for null test2,1,Customer#000000001,IVhzIApeRb ot,c,E,15,25-989-741-2988,711.56,BUILDING,to the even, regular platelets. regular, ironic epitaphs nag e
+null,null,for null test3,1,Customer#000000001,IVhzIApeRb ot,c,E,15,25-989-741-2988,711.56,BUILDING,to the even, regular platelets. regular, ironic epitaphs nag e
+null,null,for null test,2,Customer#000000002,XSTf4,NCwDVaWNe6tEgvwfmRchLXak,13,23-768-687-3665,121.65,AUTOMOBILE,l accounts. blithely ironic theodolites integrate boldly: caref
+null,null,for null test2,2,Customer#000000002,XSTf4,NCwDVaWNe6tEgvwfmRchLXak,13,23-768-687-3665,121.65,AUTOMOBILE,l accounts. blithely ironic theodolites integrate boldly: caref
+null,null,for null test3,2,Customer#000000002,XSTf4,NCwDVaWNe6tEgvwfmRchLXak,13,23-768-687-3665,121.65,AUTOMOBILE,l accounts. blithely ironic theodolites integrate boldly: caref
+null,null,for null test,3,Customer#000000003,MG9kdTD2WBHm,1,11-719-748-3364,7498.12,AUTOMOBILE, deposits eat slyly ironic, even instructions. express foxes detect slyly. blithely even accounts abov
+null,null,for null test2,3,Customer#000000003,MG9kdTD2WBHm,1,11-719-748-3364,7498.12,AUTOMOBILE, deposits eat slyly ironic, even instructions. express foxes detect slyly. blithely even accounts abov
+null,null,for null test3,3,Customer#000000003,MG9kdTD2WBHm,1,11-719-748-3364,7498.12,AUTOMOBILE, deposits eat slyly ironic, even instructions. express foxes detect slyly. blithely even accounts abov
+null,null,for null test,4,Customer#000000004,XxVSJsLAGtn,4,14-128-190-5944,2866.83,MACHINERY, requests. final, regular ideas sleep final accou
+null,null,for null test2,4,Customer#000000004,XxVSJsLAGtn,4,14-128-190-5944,2866.83,MACHINERY, requests. final, regular ideas sleep final accou
+null,null,for null test3,4,Customer#000000004,XxVSJsLAGtn,4,14-128-190-5944,2866.83,MACHINERY, requests. final, regular ideas sleep final accou
+null,null,for null test,5,Customer#000000005,KvpyuHCplrB84WgAiGV6sYpZq7Tj,3,13-750-942-6364,794.47,HOUSEHOLD,n accounts will have to unwind. foxes cajole accor
+null,null,for null test2,5,Customer#000000005,KvpyuHCplrB84WgAiGV6sYpZq7Tj,3,13-750-942-6364,794.47,HOUSEHOLD,n accounts will have to unwind. foxes cajole accor
+null,null,for null test3,5,Customer#000000005,KvpyuHCplrB84WgAiGV6sYpZq7Tj,3,13-750-942-6364,794.47,HOUSEHOLD,n accounts will have to unwind. foxes cajole accor
+null,null,for null test,null,null,null,null,null,null,null,for null test
+null,null,for null test2,null,null,null,null,null,null,null,for null test
+null,null,for null test3,null,null,null,null,null,null,null,for null test
+null,null,for null test,null,null,null,null,null,null,null,for null test2
+null,null,for null test2,null,null,null,null,null,null,null,for null test2
+null,null,for null test3,null,null,null,null,null,null,null,for null test2
+null,null,for null test,null,null,null,null,null,null,null,for null test3
+null,null,for null test2,null,null,null,null,null,null,null,for null test3
+null,null,for null test3,null,null,null,null,null,null,null,for null test3
diff --git a/tajo-core-tests/src/test/resources/results/TestCrossJoin/testCrossJoinWithAsterisk3.result b/tajo-core-tests/src/test/resources/results/TestCrossJoin/testCrossJoinWithAsterisk3.result
index a7dd7b5..f9c0f46 100644
--- a/tajo-core-tests/src/test/resources/results/TestCrossJoin/testCrossJoinWithAsterisk3.result
+++ b/tajo-core-tests/src/test/resources/results/TestCrossJoin/testCrossJoinWithAsterisk3.result
@@ -5,23 +5,62 @@
 1,Customer#000000001,IVhzIApeRb ot,c,E,15,25-989-741-2988,711.56,BUILDING,to the even, regular platelets. regular, ironic epitaphs nag e,2,ASIA,ges. thinly even pinto beans ca
 1,Customer#000000001,IVhzIApeRb ot,c,E,15,25-989-741-2988,711.56,BUILDING,to the even, regular platelets. regular, ironic epitaphs nag e,3,EUROPE,ly final courts cajole furiously final excuse
 1,Customer#000000001,IVhzIApeRb ot,c,E,15,25-989-741-2988,711.56,BUILDING,to the even, regular platelets. regular, ironic epitaphs nag e,4,MIDDLE EAST,uickly special accounts cajole carefully blithely close requests. carefully final asymptotes haggle furiousl
+1,Customer#000000001,IVhzIApeRb ot,c,E,15,25-989-741-2988,711.56,BUILDING,to the even, regular platelets. regular, ironic epitaphs nag e,null,null,for null test
+1,Customer#000000001,IVhzIApeRb ot,c,E,15,25-989-741-2988,711.56,BUILDING,to the even, regular platelets. regular, ironic epitaphs nag e,null,null,for null test2
+1,Customer#000000001,IVhzIApeRb ot,c,E,15,25-989-741-2988,711.56,BUILDING,to the even, regular platelets. regular, ironic epitaphs nag e,null,null,for null test3
 2,Customer#000000002,XSTf4,NCwDVaWNe6tEgvwfmRchLXak,13,23-768-687-3665,121.65,AUTOMOBILE,l accounts. blithely ironic theodolites integrate boldly: caref,0,AFRICA,lar deposits. blithely final packages cajole. regular waters are final requests. regular accounts are according to 
 2,Customer#000000002,XSTf4,NCwDVaWNe6tEgvwfmRchLXak,13,23-768-687-3665,121.65,AUTOMOBILE,l accounts. blithely ironic theodolites integrate boldly: caref,1,AMERICA,hs use ironic, even requests. s
 2,Customer#000000002,XSTf4,NCwDVaWNe6tEgvwfmRchLXak,13,23-768-687-3665,121.65,AUTOMOBILE,l accounts. blithely ironic theodolites integrate boldly: caref,2,ASIA,ges. thinly even pinto beans ca
 2,Customer#000000002,XSTf4,NCwDVaWNe6tEgvwfmRchLXak,13,23-768-687-3665,121.65,AUTOMOBILE,l accounts. blithely ironic theodolites integrate boldly: caref,3,EUROPE,ly final courts cajole furiously final excuse
 2,Customer#000000002,XSTf4,NCwDVaWNe6tEgvwfmRchLXak,13,23-768-687-3665,121.65,AUTOMOBILE,l accounts. blithely ironic theodolites integrate boldly: caref,4,MIDDLE EAST,uickly special accounts cajole carefully blithely close requests. carefully final asymptotes haggle furiousl
+2,Customer#000000002,XSTf4,NCwDVaWNe6tEgvwfmRchLXak,13,23-768-687-3665,121.65,AUTOMOBILE,l accounts. blithely ironic theodolites integrate boldly: caref,null,null,for null test
+2,Customer#000000002,XSTf4,NCwDVaWNe6tEgvwfmRchLXak,13,23-768-687-3665,121.65,AUTOMOBILE,l accounts. blithely ironic theodolites integrate boldly: caref,null,null,for null test2
+2,Customer#000000002,XSTf4,NCwDVaWNe6tEgvwfmRchLXak,13,23-768-687-3665,121.65,AUTOMOBILE,l accounts. blithely ironic theodolites integrate boldly: caref,null,null,for null test3
 3,Customer#000000003,MG9kdTD2WBHm,1,11-719-748-3364,7498.12,AUTOMOBILE, deposits eat slyly ironic, even instructions. express foxes detect slyly. blithely even accounts abov,0,AFRICA,lar deposits. blithely final packages cajole. regular waters are final requests. regular accounts are according to 
 3,Customer#000000003,MG9kdTD2WBHm,1,11-719-748-3364,7498.12,AUTOMOBILE, deposits eat slyly ironic, even instructions. express foxes detect slyly. blithely even accounts abov,1,AMERICA,hs use ironic, even requests. s
 3,Customer#000000003,MG9kdTD2WBHm,1,11-719-748-3364,7498.12,AUTOMOBILE, deposits eat slyly ironic, even instructions. express foxes detect slyly. blithely even accounts abov,2,ASIA,ges. thinly even pinto beans ca
 3,Customer#000000003,MG9kdTD2WBHm,1,11-719-748-3364,7498.12,AUTOMOBILE, deposits eat slyly ironic, even instructions. express foxes detect slyly. blithely even accounts abov,3,EUROPE,ly final courts cajole furiously final excuse
 3,Customer#000000003,MG9kdTD2WBHm,1,11-719-748-3364,7498.12,AUTOMOBILE, deposits eat slyly ironic, even instructions. express foxes detect slyly. blithely even accounts abov,4,MIDDLE EAST,uickly special accounts cajole carefully blithely close requests. carefully final asymptotes haggle furiousl
+3,Customer#000000003,MG9kdTD2WBHm,1,11-719-748-3364,7498.12,AUTOMOBILE, deposits eat slyly ironic, even instructions. express foxes detect slyly. blithely even accounts abov,null,null,for null test
+3,Customer#000000003,MG9kdTD2WBHm,1,11-719-748-3364,7498.12,AUTOMOBILE, deposits eat slyly ironic, even instructions. express foxes detect slyly. blithely even accounts abov,null,null,for null test2
+3,Customer#000000003,MG9kdTD2WBHm,1,11-719-748-3364,7498.12,AUTOMOBILE, deposits eat slyly ironic, even instructions. express foxes detect slyly. blithely even accounts abov,null,null,for null test3
 4,Customer#000000004,XxVSJsLAGtn,4,14-128-190-5944,2866.83,MACHINERY, requests. final, regular ideas sleep final accou,0,AFRICA,lar deposits. blithely final packages cajole. regular waters are final requests. regular accounts are according to 
 4,Customer#000000004,XxVSJsLAGtn,4,14-128-190-5944,2866.83,MACHINERY, requests. final, regular ideas sleep final accou,1,AMERICA,hs use ironic, even requests. s
 4,Customer#000000004,XxVSJsLAGtn,4,14-128-190-5944,2866.83,MACHINERY, requests. final, regular ideas sleep final accou,2,ASIA,ges. thinly even pinto beans ca
 4,Customer#000000004,XxVSJsLAGtn,4,14-128-190-5944,2866.83,MACHINERY, requests. final, regular ideas sleep final accou,3,EUROPE,ly final courts cajole furiously final excuse
 4,Customer#000000004,XxVSJsLAGtn,4,14-128-190-5944,2866.83,MACHINERY, requests. final, regular ideas sleep final accou,4,MIDDLE EAST,uickly special accounts cajole carefully blithely close requests. carefully final asymptotes haggle furiousl
+4,Customer#000000004,XxVSJsLAGtn,4,14-128-190-5944,2866.83,MACHINERY, requests. final, regular ideas sleep final accou,null,null,for null test
+4,Customer#000000004,XxVSJsLAGtn,4,14-128-190-5944,2866.83,MACHINERY, requests. final, regular ideas sleep final accou,null,null,for null test2
+4,Customer#000000004,XxVSJsLAGtn,4,14-128-190-5944,2866.83,MACHINERY, requests. final, regular ideas sleep final accou,null,null,for null test3
 5,Customer#000000005,KvpyuHCplrB84WgAiGV6sYpZq7Tj,3,13-750-942-6364,794.47,HOUSEHOLD,n accounts will have to unwind. foxes cajole accor,0,AFRICA,lar deposits. blithely final packages cajole. regular waters are final requests. regular accounts are according to 
 5,Customer#000000005,KvpyuHCplrB84WgAiGV6sYpZq7Tj,3,13-750-942-6364,794.47,HOUSEHOLD,n accounts will have to unwind. foxes cajole accor,1,AMERICA,hs use ironic, even requests. s
 5,Customer#000000005,KvpyuHCplrB84WgAiGV6sYpZq7Tj,3,13-750-942-6364,794.47,HOUSEHOLD,n accounts will have to unwind. foxes cajole accor,2,ASIA,ges. thinly even pinto beans ca
 5,Customer#000000005,KvpyuHCplrB84WgAiGV6sYpZq7Tj,3,13-750-942-6364,794.47,HOUSEHOLD,n accounts will have to unwind. foxes cajole accor,3,EUROPE,ly final courts cajole furiously final excuse
 5,Customer#000000005,KvpyuHCplrB84WgAiGV6sYpZq7Tj,3,13-750-942-6364,794.47,HOUSEHOLD,n accounts will have to unwind. foxes cajole accor,4,MIDDLE EAST,uickly special accounts cajole carefully blithely close requests. carefully final asymptotes haggle furiousl
+5,Customer#000000005,KvpyuHCplrB84WgAiGV6sYpZq7Tj,3,13-750-942-6364,794.47,HOUSEHOLD,n accounts will have to unwind. foxes cajole accor,null,null,for null test
+5,Customer#000000005,KvpyuHCplrB84WgAiGV6sYpZq7Tj,3,13-750-942-6364,794.47,HOUSEHOLD,n accounts will have to unwind. foxes cajole accor,null,null,for null test2
+5,Customer#000000005,KvpyuHCplrB84WgAiGV6sYpZq7Tj,3,13-750-942-6364,794.47,HOUSEHOLD,n accounts will have to unwind. foxes cajole accor,null,null,for null test3
+null,null,null,null,null,null,null,for null test,0,AFRICA,lar deposits. blithely final packages cajole. regular waters are final requests. regular accounts are according to 
+null,null,null,null,null,null,null,for null test2,0,AFRICA,lar deposits. blithely final packages cajole. regular waters are final requests. regular accounts are according to 
+null,null,null,null,null,null,null,for null test3,0,AFRICA,lar deposits. blithely final packages cajole. regular waters are final requests. regular accounts are according to 
+null,null,null,null,null,null,null,for null test,1,AMERICA,hs use ironic, even requests. s
+null,null,null,null,null,null,null,for null test2,1,AMERICA,hs use ironic, even requests. s
+null,null,null,null,null,null,null,for null test3,1,AMERICA,hs use ironic, even requests. s
+null,null,null,null,null,null,null,for null test,2,ASIA,ges. thinly even pinto beans ca
+null,null,null,null,null,null,null,for null test2,2,ASIA,ges. thinly even pinto beans ca
+null,null,null,null,null,null,null,for null test3,2,ASIA,ges. thinly even pinto beans ca
+null,null,null,null,null,null,null,for null test,3,EUROPE,ly final courts cajole furiously final excuse
+null,null,null,null,null,null,null,for null test2,3,EUROPE,ly final courts cajole furiously final excuse
+null,null,null,null,null,null,null,for null test3,3,EUROPE,ly final courts cajole furiously final excuse
+null,null,null,null,null,null,null,for null test,4,MIDDLE EAST,uickly special accounts cajole carefully blithely close requests. carefully final asymptotes haggle furiousl
+null,null,null,null,null,null,null,for null test2,4,MIDDLE EAST,uickly special accounts cajole carefully blithely close requests. carefully final asymptotes haggle furiousl
+null,null,null,null,null,null,null,for null test3,4,MIDDLE EAST,uickly special accounts cajole carefully blithely close requests. carefully final asymptotes haggle furiousl
+null,null,null,null,null,null,null,for null test,null,null,for null test
+null,null,null,null,null,null,null,for null test,null,null,for null test2
+null,null,null,null,null,null,null,for null test,null,null,for null test3
+null,null,null,null,null,null,null,for null test2,null,null,for null test
+null,null,null,null,null,null,null,for null test2,null,null,for null test2
+null,null,null,null,null,null,null,for null test2,null,null,for null test3
+null,null,null,null,null,null,null,for null test3,null,null,for null test
+null,null,null,null,null,null,null,for null test3,null,null,for null test2
+null,null,null,null,null,null,null,for null test3,null,null,for null test3
diff --git a/tajo-core-tests/src/test/resources/results/TestCrossJoin/testCrossJoinWithAsterisk4.result b/tajo-core-tests/src/test/resources/results/TestCrossJoin/testCrossJoinWithAsterisk4.result
index 8e08403..257c107 100644
--- a/tajo-core-tests/src/test/resources/results/TestCrossJoin/testCrossJoinWithAsterisk4.result
+++ b/tajo-core-tests/src/test/resources/results/TestCrossJoin/testCrossJoinWithAsterisk4.result
@@ -1,27 +1,66 @@
 len,c_custkey,c_name,c_address,c_nationkey,c_phone,c_acctbal,c_mktsegment,c_comment,r_regionkey,r_name,r_comment,?multiply
 -------------------------------
+13,1,Customer#000000001,IVhzIApeRb ot,c,E,15,25-989-741-2988,711.56,BUILDING,to the even, regular platelets. regular, ironic epitaphs nag e,null,null,for null test,10
+13,2,Customer#000000002,XSTf4,NCwDVaWNe6tEgvwfmRchLXak,13,23-768-687-3665,121.65,AUTOMOBILE,l accounts. blithely ironic theodolites integrate boldly: caref,null,null,for null test,20
+13,3,Customer#000000003,MG9kdTD2WBHm,1,11-719-748-3364,7498.12,AUTOMOBILE, deposits eat slyly ironic, even instructions. express foxes detect slyly. blithely even accounts abov,null,null,for null test,30
+13,4,Customer#000000004,XxVSJsLAGtn,4,14-128-190-5944,2866.83,MACHINERY, requests. final, regular ideas sleep final accou,null,null,for null test,40
+13,5,Customer#000000005,KvpyuHCplrB84WgAiGV6sYpZq7Tj,3,13-750-942-6364,794.47,HOUSEHOLD,n accounts will have to unwind. foxes cajole accor,null,null,for null test,50
+13,null,null,null,null,null,null,null,for null test,null,null,for null test,null
+13,null,null,null,null,null,null,null,for null test2,null,null,for null test,null
+13,null,null,null,null,null,null,null,for null test3,null,null,for null test,null
+14,1,Customer#000000001,IVhzIApeRb ot,c,E,15,25-989-741-2988,711.56,BUILDING,to the even, regular platelets. regular, ironic epitaphs nag e,null,null,for null test2,10
+14,1,Customer#000000001,IVhzIApeRb ot,c,E,15,25-989-741-2988,711.56,BUILDING,to the even, regular platelets. regular, ironic epitaphs nag e,null,null,for null test3,10
+14,2,Customer#000000002,XSTf4,NCwDVaWNe6tEgvwfmRchLXak,13,23-768-687-3665,121.65,AUTOMOBILE,l accounts. blithely ironic theodolites integrate boldly: caref,null,null,for null test2,20
+14,2,Customer#000000002,XSTf4,NCwDVaWNe6tEgvwfmRchLXak,13,23-768-687-3665,121.65,AUTOMOBILE,l accounts. blithely ironic theodolites integrate boldly: caref,null,null,for null test3,20
+14,3,Customer#000000003,MG9kdTD2WBHm,1,11-719-748-3364,7498.12,AUTOMOBILE, deposits eat slyly ironic, even instructions. express foxes detect slyly. blithely even accounts abov,null,null,for null test2,30
+14,3,Customer#000000003,MG9kdTD2WBHm,1,11-719-748-3364,7498.12,AUTOMOBILE, deposits eat slyly ironic, even instructions. express foxes detect slyly. blithely even accounts abov,null,null,for null test3,30
+14,4,Customer#000000004,XxVSJsLAGtn,4,14-128-190-5944,2866.83,MACHINERY, requests. final, regular ideas sleep final accou,null,null,for null test2,40
+14,4,Customer#000000004,XxVSJsLAGtn,4,14-128-190-5944,2866.83,MACHINERY, requests. final, regular ideas sleep final accou,null,null,for null test3,40
+14,5,Customer#000000005,KvpyuHCplrB84WgAiGV6sYpZq7Tj,3,13-750-942-6364,794.47,HOUSEHOLD,n accounts will have to unwind. foxes cajole accor,null,null,for null test2,50
+14,5,Customer#000000005,KvpyuHCplrB84WgAiGV6sYpZq7Tj,3,13-750-942-6364,794.47,HOUSEHOLD,n accounts will have to unwind. foxes cajole accor,null,null,for null test3,50
+14,null,null,null,null,null,null,null,for null test,null,null,for null test2,null
+14,null,null,null,null,null,null,null,for null test,null,null,for null test3,null
+14,null,null,null,null,null,null,null,for null test2,null,null,for null test2,null
+14,null,null,null,null,null,null,null,for null test2,null,null,for null test3,null
+14,null,null,null,null,null,null,null,for null test3,null,null,for null test2,null
+14,null,null,null,null,null,null,null,for null test3,null,null,for null test3,null
 31,1,Customer#000000001,IVhzIApeRb ot,c,E,15,25-989-741-2988,711.56,BUILDING,to the even, regular platelets. regular, ironic epitaphs nag e,1,AMERICA,hs use ironic, even requests. s,10
 31,2,Customer#000000002,XSTf4,NCwDVaWNe6tEgvwfmRchLXak,13,23-768-687-3665,121.65,AUTOMOBILE,l accounts. blithely ironic theodolites integrate boldly: caref,1,AMERICA,hs use ironic, even requests. s,20
 31,3,Customer#000000003,MG9kdTD2WBHm,1,11-719-748-3364,7498.12,AUTOMOBILE, deposits eat slyly ironic, even instructions. express foxes detect slyly. blithely even accounts abov,1,AMERICA,hs use ironic, even requests. s,30
 31,4,Customer#000000004,XxVSJsLAGtn,4,14-128-190-5944,2866.83,MACHINERY, requests. final, regular ideas sleep final accou,1,AMERICA,hs use ironic, even requests. s,40
 31,5,Customer#000000005,KvpyuHCplrB84WgAiGV6sYpZq7Tj,3,13-750-942-6364,794.47,HOUSEHOLD,n accounts will have to unwind. foxes cajole accor,1,AMERICA,hs use ironic, even requests. s,50
+31,null,null,null,null,null,null,null,for null test,1,AMERICA,hs use ironic, even requests. s,null
+31,null,null,null,null,null,null,null,for null test2,1,AMERICA,hs use ironic, even requests. s,null
+31,null,null,null,null,null,null,null,for null test3,1,AMERICA,hs use ironic, even requests. s,null
 31,1,Customer#000000001,IVhzIApeRb ot,c,E,15,25-989-741-2988,711.56,BUILDING,to the even, regular platelets. regular, ironic epitaphs nag e,2,ASIA,ges. thinly even pinto beans ca,10
 31,2,Customer#000000002,XSTf4,NCwDVaWNe6tEgvwfmRchLXak,13,23-768-687-3665,121.65,AUTOMOBILE,l accounts. blithely ironic theodolites integrate boldly: caref,2,ASIA,ges. thinly even pinto beans ca,20
 31,3,Customer#000000003,MG9kdTD2WBHm,1,11-719-748-3364,7498.12,AUTOMOBILE, deposits eat slyly ironic, even instructions. express foxes detect slyly. blithely even accounts abov,2,ASIA,ges. thinly even pinto beans ca,30
 31,4,Customer#000000004,XxVSJsLAGtn,4,14-128-190-5944,2866.83,MACHINERY, requests. final, regular ideas sleep final accou,2,ASIA,ges. thinly even pinto beans ca,40
 31,5,Customer#000000005,KvpyuHCplrB84WgAiGV6sYpZq7Tj,3,13-750-942-6364,794.47,HOUSEHOLD,n accounts will have to unwind. foxes cajole accor,2,ASIA,ges. thinly even pinto beans ca,50
+31,null,null,null,null,null,null,null,for null test,2,ASIA,ges. thinly even pinto beans ca,null
+31,null,null,null,null,null,null,null,for null test2,2,ASIA,ges. thinly even pinto beans ca,null
+31,null,null,null,null,null,null,null,for null test3,2,ASIA,ges. thinly even pinto beans ca,null
 45,1,Customer#000000001,IVhzIApeRb ot,c,E,15,25-989-741-2988,711.56,BUILDING,to the even, regular platelets. regular, ironic epitaphs nag e,3,EUROPE,ly final courts cajole furiously final excuse,10
 45,2,Customer#000000002,XSTf4,NCwDVaWNe6tEgvwfmRchLXak,13,23-768-687-3665,121.65,AUTOMOBILE,l accounts. blithely ironic theodolites integrate boldly: caref,3,EUROPE,ly final courts cajole furiously final excuse,20
 45,3,Customer#000000003,MG9kdTD2WBHm,1,11-719-748-3364,7498.12,AUTOMOBILE, deposits eat slyly ironic, even instructions. express foxes detect slyly. blithely even accounts abov,3,EUROPE,ly final courts cajole furiously final excuse,30
 45,4,Customer#000000004,XxVSJsLAGtn,4,14-128-190-5944,2866.83,MACHINERY, requests. final, regular ideas sleep final accou,3,EUROPE,ly final courts cajole furiously final excuse,40
 45,5,Customer#000000005,KvpyuHCplrB84WgAiGV6sYpZq7Tj,3,13-750-942-6364,794.47,HOUSEHOLD,n accounts will have to unwind. foxes cajole accor,3,EUROPE,ly final courts cajole furiously final excuse,50
+45,null,null,null,null,null,null,null,for null test,3,EUROPE,ly final courts cajole furiously final excuse,null
+45,null,null,null,null,null,null,null,for null test2,3,EUROPE,ly final courts cajole furiously final excuse,null
+45,null,null,null,null,null,null,null,for null test3,3,EUROPE,ly final courts cajole furiously final excuse,null
 108,1,Customer#000000001,IVhzIApeRb ot,c,E,15,25-989-741-2988,711.56,BUILDING,to the even, regular platelets. regular, ironic epitaphs nag e,4,MIDDLE EAST,uickly special accounts cajole carefully blithely close requests. carefully final asymptotes haggle furiousl,10
 108,2,Customer#000000002,XSTf4,NCwDVaWNe6tEgvwfmRchLXak,13,23-768-687-3665,121.65,AUTOMOBILE,l accounts. blithely ironic theodolites integrate boldly: caref,4,MIDDLE EAST,uickly special accounts cajole carefully blithely close requests. carefully final asymptotes haggle furiousl,20
 108,3,Customer#000000003,MG9kdTD2WBHm,1,11-719-748-3364,7498.12,AUTOMOBILE, deposits eat slyly ironic, even instructions. express foxes detect slyly. blithely even accounts abov,4,MIDDLE EAST,uickly special accounts cajole carefully blithely close requests. carefully final asymptotes haggle furiousl,30
 108,4,Customer#000000004,XxVSJsLAGtn,4,14-128-190-5944,2866.83,MACHINERY, requests. final, regular ideas sleep final accou,4,MIDDLE EAST,uickly special accounts cajole carefully blithely close requests. carefully final asymptotes haggle furiousl,40
 108,5,Customer#000000005,KvpyuHCplrB84WgAiGV6sYpZq7Tj,3,13-750-942-6364,794.47,HOUSEHOLD,n accounts will have to unwind. foxes cajole accor,4,MIDDLE EAST,uickly special accounts cajole carefully blithely close requests. carefully final asymptotes haggle furiousl,50
+108,null,null,null,null,null,null,null,for null test,4,MIDDLE EAST,uickly special accounts cajole carefully blithely close requests. carefully final asymptotes haggle furiousl,null
+108,null,null,null,null,null,null,null,for null test2,4,MIDDLE EAST,uickly special accounts cajole carefully blithely close requests. carefully final asymptotes haggle furiousl,null
+108,null,null,null,null,null,null,null,for null test3,4,MIDDLE EAST,uickly special accounts cajole carefully blithely close requests. carefully final asymptotes haggle furiousl,null
 115,1,Customer#000000001,IVhzIApeRb ot,c,E,15,25-989-741-2988,711.56,BUILDING,to the even, regular platelets. regular, ironic epitaphs nag e,0,AFRICA,lar deposits. blithely final packages cajole. regular waters are final requests. regular accounts are according to ,10
 115,2,Customer#000000002,XSTf4,NCwDVaWNe6tEgvwfmRchLXak,13,23-768-687-3665,121.65,AUTOMOBILE,l accounts. blithely ironic theodolites integrate boldly: caref,0,AFRICA,lar deposits. blithely final packages cajole. regular waters are final requests. regular accounts are according to ,20
 115,3,Customer#000000003,MG9kdTD2WBHm,1,11-719-748-3364,7498.12,AUTOMOBILE, deposits eat slyly ironic, even instructions. express foxes detect slyly. blithely even accounts abov,0,AFRICA,lar deposits. blithely final packages cajole. regular waters are final requests. regular accounts are according to ,30
 115,4,Customer#000000004,XxVSJsLAGtn,4,14-128-190-5944,2866.83,MACHINERY, requests. final, regular ideas sleep final accou,0,AFRICA,lar deposits. blithely final packages cajole. regular waters are final requests. regular accounts are according to ,40
 115,5,Customer#000000005,KvpyuHCplrB84WgAiGV6sYpZq7Tj,3,13-750-942-6364,794.47,HOUSEHOLD,n accounts will have to unwind. foxes cajole accor,0,AFRICA,lar deposits. blithely final packages cajole. regular waters are final requests. regular accounts are according to ,50
+115,null,null,null,null,null,null,null,for null test,0,AFRICA,lar deposits. blithely final packages cajole. regular waters are final requests. regular accounts are according to ,null
+115,null,null,null,null,null,null,null,for null test2,0,AFRICA,lar deposits. blithely final packages cajole. regular waters are final requests. regular accounts are according to ,null
+115,null,null,null,null,null,null,null,for null test3,0,AFRICA,lar deposits. blithely final packages cajole. regular waters are final requests. regular accounts are according to ,null
diff --git a/tajo-core-tests/src/test/resources/results/TestGroupByQuery/testComplexParameter2.result b/tajo-core-tests/src/test/resources/results/TestGroupByQuery/testComplexParameter2.result
index 6ee9cb5..b586a1b 100644
--- a/tajo-core-tests/src/test/resources/results/TestGroupByQuery/testComplexParameter2.result
+++ b/tajo-core-tests/src/test/resources/results/TestGroupByQuery/testComplexParameter2.result
@@ -1,3 +1,3 @@
 merged
 -------------------------------
-8
\ No newline at end of file
+11
\ No newline at end of file
diff --git a/tajo-core-tests/src/test/resources/results/TestGroupByQuery/testComplexParameterWithSubQuery.result b/tajo-core-tests/src/test/resources/results/TestGroupByQuery/testComplexParameterWithSubQuery.result
index 59e09fe..946270f 100644
--- a/tajo-core-tests/src/test/resources/results/TestGroupByQuery/testComplexParameterWithSubQuery.result
+++ b/tajo-core-tests/src/test/resources/results/TestGroupByQuery/testComplexParameterWithSubQuery.result
@@ -1,3 +1,3 @@
 total
 -------------------------------
-10
\ No newline at end of file
+16
\ No newline at end of file
diff --git a/tajo-core-tests/src/test/resources/results/TestGroupByQuery/testDistinctAggregation1.result b/tajo-core-tests/src/test/resources/results/TestGroupByQuery/testDistinctAggregation1.result
index f2ad32a..e26817c 100644
--- a/tajo-core-tests/src/test/resources/results/TestGroupByQuery/testDistinctAggregation1.result
+++ b/tajo-core-tests/src/test/resources/results/TestGroupByQuery/testDistinctAggregation1.result
@@ -2,4 +2,5 @@
 -------------------------------
 1,1,2
 2,2,1
-3,3,2
\ No newline at end of file
+3,3,2
+null,null,0
\ No newline at end of file
diff --git a/tajo-core-tests/src/test/resources/results/TestGroupByQuery/testDistinctAggregation2.result b/tajo-core-tests/src/test/resources/results/TestGroupByQuery/testDistinctAggregation2.result
index 9164120..46cd099 100644
--- a/tajo-core-tests/src/test/resources/results/TestGroupByQuery/testDistinctAggregation2.result
+++ b/tajo-core-tests/src/test/resources/results/TestGroupByQuery/testDistinctAggregation2.result
@@ -2,4 +2,5 @@
 -------------------------------
 1,2,2
 2,1,1
-3,2,2
\ No newline at end of file
+3,2,2
+null,3,0
\ No newline at end of file
diff --git a/tajo-core-tests/src/test/resources/results/TestGroupByQuery/testDistinctAggregation3.result b/tajo-core-tests/src/test/resources/results/TestGroupByQuery/testDistinctAggregation3.result
index 5600470..4e458e9 100644
--- a/tajo-core-tests/src/test/resources/results/TestGroupByQuery/testDistinctAggregation3.result
+++ b/tajo-core-tests/src/test/resources/results/TestGroupByQuery/testDistinctAggregation3.result
@@ -1,3 +1,3 @@
 ?count,?count_1,?sum_2
 -------------------------------
-5,3,6
\ No newline at end of file
+8,3,6
\ No newline at end of file
diff --git a/tajo-core-tests/src/test/resources/results/TestGroupByQuery/testDistinctAggregation4.result b/tajo-core-tests/src/test/resources/results/TestGroupByQuery/testDistinctAggregation4.result
index 72b4e8e..d73599f 100644
--- a/tajo-core-tests/src/test/resources/results/TestGroupByQuery/testDistinctAggregation4.result
+++ b/tajo-core-tests/src/test/resources/results/TestGroupByQuery/testDistinctAggregation4.result
@@ -1,4 +1,5 @@
 l_linenumber,?count,?count_1,?sum_2
 -------------------------------
 1,3,3,6
-2,2,2,4
\ No newline at end of file
+2,2,2,4
+null,3,0,0
\ No newline at end of file
diff --git a/tajo-core-tests/src/test/resources/results/TestGroupByQuery/testDistinctAggregation5.result b/tajo-core-tests/src/test/resources/results/TestGroupByQuery/testDistinctAggregation5.result
index 229a279..2af19f7 100644
--- a/tajo-core-tests/src/test/resources/results/TestGroupByQuery/testDistinctAggregation5.result
+++ b/tajo-core-tests/src/test/resources/results/TestGroupByQuery/testDistinctAggregation5.result
@@ -1,4 +1,5 @@
 ?sum,l_linenumber,?count_1,?count_2
 -------------------------------
 6,1,3,3
-4,2,2,2
\ No newline at end of file
+4,2,2,2
+0,null,0,3
\ No newline at end of file
diff --git a/tajo-core-tests/src/test/resources/results/TestGroupByQuery/testDistinctAggregation6.result b/tajo-core-tests/src/test/resources/results/TestGroupByQuery/testDistinctAggregation6.result
index cd59b8f..ec24ef8 100644
--- a/tajo-core-tests/src/test/resources/results/TestGroupByQuery/testDistinctAggregation6.result
+++ b/tajo-core-tests/src/test/resources/results/TestGroupByQuery/testDistinctAggregation6.result
@@ -2,4 +2,5 @@
 -------------------------------
 1,2,3,2
 1,2,1,1
-1,6,3,2
\ No newline at end of file
+1,6,3,2
+0,null,null,3
\ No newline at end of file
diff --git a/tajo-core-tests/src/test/resources/results/TestGroupByQuery/testDistinctAggregation7.result b/tajo-core-tests/src/test/resources/results/TestGroupByQuery/testDistinctAggregation7.result
index 4173b04..c89de2f 100644
--- a/tajo-core-tests/src/test/resources/results/TestGroupByQuery/testDistinctAggregation7.result
+++ b/tajo-core-tests/src/test/resources/results/TestGroupByQuery/testDistinctAggregation7.result
@@ -1,3 +1,3 @@
 ?count,?count_1,?count_2
 -------------------------------
-5,5,4
\ No newline at end of file
+8,5,4
\ No newline at end of file
diff --git a/tajo-core-tests/src/test/resources/results/TestGroupByQuery/testDistinctAggregation8.result b/tajo-core-tests/src/test/resources/results/TestGroupByQuery/testDistinctAggregation8.result
index 519390d..f07c356 100644
--- a/tajo-core-tests/src/test/resources/results/TestGroupByQuery/testDistinctAggregation8.result
+++ b/tajo-core-tests/src/test/resources/results/TestGroupByQuery/testDistinctAggregation8.result
@@ -4,4 +4,5 @@
 2,1,N,O,1997-01-28,1,2
 3,1,R,F,1994-02-02,1,3
 1,2,N,O,1996-04-12,1,1
-3,2,R,F,1993-11-09,1,3
\ No newline at end of file
+3,2,R,F,1993-11-09,1,3
+0,null,null,null,null,0,null
\ No newline at end of file
diff --git a/tajo-core-tests/src/test/resources/results/TestGroupByQuery/testDistinctAggregationWithUnion1.result b/tajo-core-tests/src/test/resources/results/TestGroupByQuery/testDistinctAggregationWithUnion1.result
index 16c5524..5defa0a 100644
--- a/tajo-core-tests/src/test/resources/results/TestGroupByQuery/testDistinctAggregationWithUnion1.result
+++ b/tajo-core-tests/src/test/resources/results/TestGroupByQuery/testDistinctAggregationWithUnion1.result
@@ -1,4 +1,5 @@
 ?sum,l_linenumber,?count_1,total
 -------------------------------
 6,1,3,6
-4,2,2,4
\ No newline at end of file
+4,2,2,4
+0,null,0,2
\ No newline at end of file
diff --git a/tajo-core-tests/src/test/resources/results/TestGroupByQuery/testDistinctAggregation_case1.result b/tajo-core-tests/src/test/resources/results/TestGroupByQuery/testDistinctAggregation_case1.result
index 9296346..24f5749 100644
--- a/tajo-core-tests/src/test/resources/results/TestGroupByQuery/testDistinctAggregation_case1.result
+++ b/tajo-core-tests/src/test/resources/results/TestGroupByQuery/testDistinctAggregation_case1.result
@@ -1,4 +1,5 @@
 quantity,suppkey,l_returnflag
 -------------------------------
 91.0,3,N
-94.0,2,R
\ No newline at end of file
+94.0,2,R
+null,0,null
\ No newline at end of file
diff --git a/tajo-core-tests/src/test/resources/results/TestGroupByQuery/testDistinctAggregation_case2.result b/tajo-core-tests/src/test/resources/results/TestGroupByQuery/testDistinctAggregation_case2.result
index 7af127f..a87952a 100644
--- a/tajo-core-tests/src/test/resources/results/TestGroupByQuery/testDistinctAggregation_case2.result
+++ b/tajo-core-tests/src/test/resources/results/TestGroupByQuery/testDistinctAggregation_case2.result
@@ -1,4 +1,5 @@
 quantity,partkey,suppkey,l_returnflag
 -------------------------------
 91.0,2,3,N
-94.0,2,2,R
\ No newline at end of file
+94.0,2,2,R
+null,0,0,null
\ No newline at end of file
diff --git a/tajo-core-tests/src/test/resources/results/TestGroupByQuery/testDistinctAggregation_case3.result b/tajo-core-tests/src/test/resources/results/TestGroupByQuery/testDistinctAggregation_case3.result
index 31905fa..0f34869 100644
--- a/tajo-core-tests/src/test/resources/results/TestGroupByQuery/testDistinctAggregation_case3.result
+++ b/tajo-core-tests/src/test/resources/results/TestGroupByQuery/testDistinctAggregation_case3.result
@@ -1,4 +1,5 @@
 quantity,partkey,?count,?max_1,l_returnflag
 -------------------------------
 91.0,2,3,38.0,N
-94.0,2,2,49.0,R
\ No newline at end of file
+94.0,2,2,49.0,R
+null,0,0,null,null
\ No newline at end of file
diff --git a/tajo-core-tests/src/test/resources/results/TestGroupByQuery/testDistinctAggregation_case4.result b/tajo-core-tests/src/test/resources/results/TestGroupByQuery/testDistinctAggregation_case4.result
index 8afda65..8d9d239 100644
--- a/tajo-core-tests/src/test/resources/results/TestGroupByQuery/testDistinctAggregation_case4.result
+++ b/tajo-core-tests/src/test/resources/results/TestGroupByQuery/testDistinctAggregation_case4.result
@@ -2,4 +2,5 @@
 -------------------------------
 1,53.0,1,2,36.0,N
 2,38.0,1,1,38.0,N
-3,94.0,2,2,49.0,R
\ No newline at end of file
+3,94.0,2,2,49.0,R
+null,null,0,0,null,null
\ No newline at end of file
diff --git a/tajo-core-tests/src/test/resources/results/TestGroupByQuery/testDistinctAggregation_case5.result b/tajo-core-tests/src/test/resources/results/TestGroupByQuery/testDistinctAggregation_case5.result
index 8afda65..8d9d239 100644
--- a/tajo-core-tests/src/test/resources/results/TestGroupByQuery/testDistinctAggregation_case5.result
+++ b/tajo-core-tests/src/test/resources/results/TestGroupByQuery/testDistinctAggregation_case5.result
@@ -2,4 +2,5 @@
 -------------------------------
 1,53.0,1,2,36.0,N
 2,38.0,1,1,38.0,N
-3,94.0,2,2,49.0,R
\ No newline at end of file
+3,94.0,2,2,49.0,R
+null,null,0,0,null,null
\ No newline at end of file
diff --git a/tajo-core-tests/src/test/resources/results/TestGroupByQuery/testDistinctAggregation_case6.result b/tajo-core-tests/src/test/resources/results/TestGroupByQuery/testDistinctAggregation_case6.result
index 8afda65..8d9d239 100644
--- a/tajo-core-tests/src/test/resources/results/TestGroupByQuery/testDistinctAggregation_case6.result
+++ b/tajo-core-tests/src/test/resources/results/TestGroupByQuery/testDistinctAggregation_case6.result
@@ -2,4 +2,5 @@
 -------------------------------
 1,53.0,1,2,36.0,N
 2,38.0,1,1,38.0,N
-3,94.0,2,2,49.0,R
\ No newline at end of file
+3,94.0,2,2,49.0,R
+null,null,0,0,null,null
\ No newline at end of file
diff --git a/tajo-core-tests/src/test/resources/results/TestGroupByQuery/testDistinctAggregation_case7.result b/tajo-core-tests/src/test/resources/results/TestGroupByQuery/testDistinctAggregation_case7.result
index 03cdf1e..351664c 100644
--- a/tajo-core-tests/src/test/resources/results/TestGroupByQuery/testDistinctAggregation_case7.result
+++ b/tajo-core-tests/src/test/resources/results/TestGroupByQuery/testDistinctAggregation_case7.result
@@ -2,4 +2,5 @@
 -------------------------------
 1,53.0,1,2,36.0
 1,38.0,1,1,38.0
-1,94.0,2,2,49.0
\ No newline at end of file
+1,94.0,2,2,49.0
+0,null,0,0,null
\ No newline at end of file
diff --git a/tajo-core-tests/src/test/resources/results/TestGroupByQuery/testDistinctAggregation_case8.result b/tajo-core-tests/src/test/resources/results/TestGroupByQuery/testDistinctAggregation_case8.result
index e234896..20b3e89 100644
--- a/tajo-core-tests/src/test/resources/results/TestGroupByQuery/testDistinctAggregation_case8.result
+++ b/tajo-core-tests/src/test/resources/results/TestGroupByQuery/testDistinctAggregation_case8.result
@@ -3,4 +3,5 @@
 1,1,1,2,53.0
 2,2,1,1,38.0
 3,2,1,1,45.0
-3,3,1,1,49.0
\ No newline at end of file
+3,3,1,1,49.0
+null,null,0,0,null
\ No newline at end of file
diff --git a/tajo-core-tests/src/test/resources/results/TestGroupByQuery/testDistinctAggregation_case9.result b/tajo-core-tests/src/test/resources/results/TestGroupByQuery/testDistinctAggregation_case9.result
index 506eea0..fdf694a 100644
--- a/tajo-core-tests/src/test/resources/results/TestGroupByQuery/testDistinctAggregation_case9.result
+++ b/tajo-core-tests/src/test/resources/results/TestGroupByQuery/testDistinctAggregation_case9.result
@@ -3,4 +3,5 @@
 1,1,28.0,1,26.5,2
 2,1,39.0,2,38.0,1
 3,1,46.0,2,45.0,1
-3,1,51.0,3,49.0,1
\ No newline at end of file
+3,1,51.0,3,49.0,1
+null,0,null,null,null,0
\ No newline at end of file
diff --git a/tajo-core-tests/src/test/resources/results/TestGroupByQuery/testGroupBy.result b/tajo-core-tests/src/test/resources/results/TestGroupByQuery/testGroupBy.result
index 385d0de..00a3ee8 100644
--- a/tajo-core-tests/src/test/resources/results/TestGroupByQuery/testGroupBy.result
+++ b/tajo-core-tests/src/test/resources/results/TestGroupByQuery/testGroupBy.result
@@ -1,3 +1,3 @@
 unique_key
 -------------------------------
-5
\ No newline at end of file
+8
\ No newline at end of file
diff --git a/tajo-core-tests/src/test/resources/results/TestGroupByQuery/testGroupBy2.result b/tajo-core-tests/src/test/resources/results/TestGroupByQuery/testGroupBy2.result
index 1fda90c..1a148dc 100644
--- a/tajo-core-tests/src/test/resources/results/TestGroupByQuery/testGroupBy2.result
+++ b/tajo-core-tests/src/test/resources/results/TestGroupByQuery/testGroupBy2.result
@@ -2,3 +2,4 @@
 -------------------------------
 2
 3
+3
diff --git a/tajo-core-tests/src/test/resources/results/TestGroupByQuery/testGroupBy3.result b/tajo-core-tests/src/test/resources/results/TestGroupByQuery/testGroupBy3.result
index c956d65..e62d55f 100644
--- a/tajo-core-tests/src/test/resources/results/TestGroupByQuery/testGroupBy3.result
+++ b/tajo-core-tests/src/test/resources/results/TestGroupByQuery/testGroupBy3.result
@@ -2,4 +2,5 @@
 -------------------------------
 1
 2
-3
\ No newline at end of file
+3
+null
\ No newline at end of file
diff --git a/tajo-core-tests/src/test/resources/results/TestGroupByQuery/testGroupBy4.result b/tajo-core-tests/src/test/resources/results/TestGroupByQuery/testGroupBy4.result
index 22c6664..705a804 100644
--- a/tajo-core-tests/src/test/resources/results/TestGroupByQuery/testGroupBy4.result
+++ b/tajo-core-tests/src/test/resources/results/TestGroupByQuery/testGroupBy4.result
@@ -2,4 +2,5 @@
 -------------------------------
 1,2
 2,1
-3,2
\ No newline at end of file
+3,2
+null,3
\ No newline at end of file
diff --git a/tajo-core-tests/src/test/resources/results/TestGroupByQuery/testGroupBy5.result b/tajo-core-tests/src/test/resources/results/TestGroupByQuery/testGroupBy5.result
index abf0e45..83e2dae 100644
--- a/tajo-core-tests/src/test/resources/results/TestGroupByQuery/testGroupBy5.result
+++ b/tajo-core-tests/src/test/resources/results/TestGroupByQuery/testGroupBy5.result
@@ -2,4 +2,5 @@
 -------------------------------
 1,00
 2,00
-3,00
\ No newline at end of file
+3,00
+null,00
\ No newline at end of file
diff --git a/tajo-core-tests/src/test/resources/results/TestGroupByQuery/testGroupByNested1.result b/tajo-core-tests/src/test/resources/results/TestGroupByQuery/testGroupByNested1.result
index 788a084..98bfbc9 100644
--- a/tajo-core-tests/src/test/resources/results/TestGroupByQuery/testGroupByNested1.result
+++ b/tajo-core-tests/src/test/resources/results/TestGroupByQuery/testGroupByNested1.result
@@ -3,4 +3,5 @@
 2
 4
 5
-6
\ No newline at end of file
+6
+null
\ No newline at end of file
diff --git a/tajo-core-tests/src/test/resources/results/TestGroupByQuery/testGroupByNested2.result b/tajo-core-tests/src/test/resources/results/TestGroupByQuery/testGroupByNested2.result
index 8656add..65148dd 100644
--- a/tajo-core-tests/src/test/resources/results/TestGroupByQuery/testGroupByNested2.result
+++ b/tajo-core-tests/src/test/resources/results/TestGroupByQuery/testGroupByNested2.result
@@ -3,4 +3,5 @@
 4
 4
 5
-6
\ No newline at end of file
+6
+null
\ No newline at end of file
diff --git a/tajo-core-tests/src/test/resources/results/TestGroupByQuery/testGroupByWithConstantKeys1.result b/tajo-core-tests/src/test/resources/results/TestGroupByQuery/testGroupByWithConstantKeys1.result
index 2c04315..c17c5ac 100644
--- a/tajo-core-tests/src/test/resources/results/TestGroupByQuery/testGroupByWithConstantKeys1.result
+++ b/tajo-core-tests/src/test/resources/results/TestGroupByQuery/testGroupByWithConstantKeys1.result
@@ -1,3 +1,3 @@
 key,total
 -------------------------------
-123,5
\ No newline at end of file
+123,8
\ No newline at end of file
diff --git a/tajo-core-tests/src/test/resources/results/TestGroupByQuery/testGroupByWithConstantKeys2.result b/tajo-core-tests/src/test/resources/results/TestGroupByQuery/testGroupByWithConstantKeys2.result
index 776db3c..9b1ffa3 100644
--- a/tajo-core-tests/src/test/resources/results/TestGroupByQuery/testGroupByWithConstantKeys2.result
+++ b/tajo-core-tests/src/test/resources/results/TestGroupByQuery/testGroupByWithConstantKeys2.result
@@ -2,4 +2,5 @@
 -------------------------------
 1,2014-07-07 04:28:31.561,##,2
 2,2014-07-07 04:28:31.561,##,2
-3,2014-07-07 04:28:31.561,##,1
\ No newline at end of file
+3,2014-07-07 04:28:31.561,##,1
+null,2014-07-07 04:28:31.561,##,3
\ No newline at end of file
diff --git a/tajo-core-tests/src/test/resources/results/TestGroupByQuery/testGroupByWithConstantKeys3.result b/tajo-core-tests/src/test/resources/results/TestGroupByQuery/testGroupByWithConstantKeys3.result
index 3285621..3db05ce 100644
--- a/tajo-core-tests/src/test/resources/results/TestGroupByQuery/testGroupByWithConstantKeys3.result
+++ b/tajo-core-tests/src/test/resources/results/TestGroupByQuery/testGroupByWithConstantKeys3.result
@@ -1,3 +1,3 @@
 b,c,d
 -------------------------------
-2014-07-07 04:28:31.561,##,5
\ No newline at end of file
+2014-07-07 04:28:31.561,##,8
\ No newline at end of file
diff --git a/tajo-core-tests/src/test/resources/results/TestGroupByQuery/testGroupByWithConstantKeys4.result b/tajo-core-tests/src/test/resources/results/TestGroupByQuery/testGroupByWithConstantKeys4.result
index 69560d5..19fb0cc 100644
--- a/tajo-core-tests/src/test/resources/results/TestGroupByQuery/testGroupByWithConstantKeys4.result
+++ b/tajo-core-tests/src/test/resources/results/TestGroupByQuery/testGroupByWithConstantKeys4.result
@@ -2,4 +2,5 @@
 -------------------------------
 day,1,2
 day,2,1
-day,3,2
\ No newline at end of file
+day,3,2
+day,null,3
\ No newline at end of file
diff --git a/tajo-core-tests/src/test/resources/results/TestGroupByQuery/testGroupByWithConstantKeys5.result b/tajo-core-tests/src/test/resources/results/TestGroupByQuery/testGroupByWithConstantKeys5.result
index 30ba1de..9bc7496 100644
--- a/tajo-core-tests/src/test/resources/results/TestGroupByQuery/testGroupByWithConstantKeys5.result
+++ b/tajo-core-tests/src/test/resources/results/TestGroupByQuery/testGroupByWithConstantKeys5.result
@@ -2,4 +2,5 @@
 -------------------------------
 day,day,1,2
 day,day,2,1
-day,day,3,2
\ No newline at end of file
+day,day,3,2
+day,day,null,3
\ No newline at end of file
diff --git a/tajo-core-tests/src/test/resources/results/TestGroupByQuery/testGroupByWithExpressionKeys1.result b/tajo-core-tests/src/test/resources/results/TestGroupByQuery/testGroupByWithExpressionKeys1.result
index d1f1282..7bee234 100644
--- a/tajo-core-tests/src/test/resources/results/TestGroupByQuery/testGroupByWithExpressionKeys1.result
+++ b/tajo-core-tests/src/test/resources/results/TestGroupByQuery/testGroupByWithExpressionKeys1.result
@@ -2,4 +2,5 @@
 -------------------------------
 1,2
 2,1
-3,2
\ No newline at end of file
+3,2
+null,3
\ No newline at end of file
diff --git a/tajo-core-tests/src/test/resources/results/TestGroupByQuery/testGroupByWithExpressionKeys2.result b/tajo-core-tests/src/test/resources/results/TestGroupByQuery/testGroupByWithExpressionKeys2.result
index d1f1282..7bee234 100644
--- a/tajo-core-tests/src/test/resources/results/TestGroupByQuery/testGroupByWithExpressionKeys2.result
+++ b/tajo-core-tests/src/test/resources/results/TestGroupByQuery/testGroupByWithExpressionKeys2.result
@@ -2,4 +2,5 @@
 -------------------------------
 1,2
 2,1
-3,2
\ No newline at end of file
+3,2
+null,3
\ No newline at end of file
diff --git a/tajo-core-tests/src/test/resources/results/TestGroupByQuery/testGroupByWithSameConstantKeys1.result b/tajo-core-tests/src/test/resources/results/TestGroupByQuery/testGroupByWithSameConstantKeys1.result
index a8fbe00..15fc269 100644
--- a/tajo-core-tests/src/test/resources/results/TestGroupByQuery/testGroupByWithSameConstantKeys1.result
+++ b/tajo-core-tests/src/test/resources/results/TestGroupByQuery/testGroupByWithSameConstantKeys1.result
@@ -2,4 +2,5 @@
 -------------------------------
 1,##,##,2
 2,##,##,2
-3,##,##,1
\ No newline at end of file
+3,##,##,1
+null,##,##,3
\ No newline at end of file
diff --git a/tajo-core-tests/src/test/resources/results/TestGroupByQuery/testGroupByWithSameExprs1.result b/tajo-core-tests/src/test/resources/results/TestGroupByQuery/testGroupByWithSameExprs1.result
index c7db60e..354c7c7 100644
--- a/tajo-core-tests/src/test/resources/results/TestGroupByQuery/testGroupByWithSameExprs1.result
+++ b/tajo-core-tests/src/test/resources/results/TestGroupByQuery/testGroupByWithSameExprs1.result
@@ -3,4 +3,5 @@
 4
 4
 6
-6
\ No newline at end of file
+6
+null
\ No newline at end of file
diff --git a/tajo-core-tests/src/test/resources/results/TestGroupByQuery/testGroupByWithSameExprs2.result b/tajo-core-tests/src/test/resources/results/TestGroupByQuery/testGroupByWithSameExprs2.result
index c2b2851..ad93d2a 100644
--- a/tajo-core-tests/src/test/resources/results/TestGroupByQuery/testGroupByWithSameExprs2.result
+++ b/tajo-core-tests/src/test/resources/results/TestGroupByQuery/testGroupByWithSameExprs2.result
@@ -3,4 +3,5 @@
 2,2
 2,2
 3,3
-3,3
\ No newline at end of file
+3,3
+null,null
\ No newline at end of file
diff --git a/tajo-core-tests/src/test/resources/results/TestGroupByQuery/testGroupbyWithPythonFunc2.result b/tajo-core-tests/src/test/resources/results/TestGroupByQuery/testGroupbyWithPythonFunc2.result
index 1413e41..0b3229d 100644
--- a/tajo-core-tests/src/test/resources/results/TestGroupByQuery/testGroupbyWithPythonFunc2.result
+++ b/tajo-core-tests/src/test/resources/results/TestGroupByQuery/testGroupbyWithPythonFunc2.result
@@ -5,3 +5,4 @@
 2,5
 3,5
 4,5
+null,3
diff --git a/tajo-core-tests/src/test/resources/results/TestGroupByQuery/testPythonUdaf.result b/tajo-core-tests/src/test/resources/results/TestGroupByQuery/testPythonUdaf.result
index e1ba22d..1eb7767 100644
--- a/tajo-core-tests/src/test/resources/results/TestGroupByQuery/testPythonUdaf.result
+++ b/tajo-core-tests/src/test/resources/results/TestGroupByQuery/testPythonUdaf.result
@@ -1,3 +1,3 @@
 ?avgpy,?avg_1,?countpy_2
 -------------------------------
-12.0,12.0,25
\ No newline at end of file
+12.0,12.0,28
\ No newline at end of file
diff --git a/tajo-core-tests/src/test/resources/results/TestGroupByQuery/testPythonUdaf2.result b/tajo-core-tests/src/test/resources/results/TestGroupByQuery/testPythonUdaf2.result
index c2a8888..4b76df6 100644
--- a/tajo-core-tests/src/test/resources/results/TestGroupByQuery/testPythonUdaf2.result
+++ b/tajo-core-tests/src/test/resources/results/TestGroupByQuery/testPythonUdaf2.result
@@ -2,3 +2,4 @@
 -------------------------------
 2,2
 3,3
+3,3
diff --git a/tajo-core-tests/src/test/resources/results/TestGroupByQuery/testPythonUdaf3.result b/tajo-core-tests/src/test/resources/results/TestGroupByQuery/testPythonUdaf3.result
index 7338988..7eeaa0b 100644
--- a/tajo-core-tests/src/test/resources/results/TestGroupByQuery/testPythonUdaf3.result
+++ b/tajo-core-tests/src/test/resources/results/TestGroupByQuery/testPythonUdaf3.result
@@ -3,3 +3,4 @@
 173665.47,1,173665.47,1
 193846.25,1,193846.25,1
 46929.18,1,46929.18,1
+null,3,null,3
diff --git a/tajo-core-tests/src/test/resources/results/TestInSubquery/testInSubQuery2.result b/tajo-core-tests/src/test/resources/results/TestInSubquery/testInSubQuery2.result
index fbab93d..1cbaf34 100644
--- a/tajo-core-tests/src/test/resources/results/TestInSubquery/testInSubQuery2.result
+++ b/tajo-core-tests/src/test/resources/results/TestInSubquery/testInSubQuery2.result
@@ -1,3 +1,3 @@
 n_name
 -------------------------------
-ETHIOPIA
+INDIA
diff --git a/tajo-core-tests/src/test/resources/results/TestInSubquery/testMultipleNotInSubQuery.result b/tajo-core-tests/src/test/resources/results/TestInSubquery/testMultipleNotInSubQuery.result
index a1e17d5..72cedb8 100644
--- a/tajo-core-tests/src/test/resources/results/TestInSubquery/testMultipleNotInSubQuery.result
+++ b/tajo-core-tests/src/test/resources/results/TestInSubquery/testMultipleNotInSubQuery.result
@@ -18,3 +18,4 @@
 UNITED KINGDOM
 UNITED STATES
 VIETNAM
+null
diff --git a/tajo-core-tests/src/test/resources/results/TestInSubquery/testNestedNotInSubQuery.result b/tajo-core-tests/src/test/resources/results/TestInSubquery/testNestedNotInSubQuery.result
index e746b35..47d3004 100644
--- a/tajo-core-tests/src/test/resources/results/TestInSubquery/testNestedNotInSubQuery.result
+++ b/tajo-core-tests/src/test/resources/results/TestInSubquery/testNestedNotInSubQuery.result
@@ -5,3 +5,4 @@
 Customer#000000003
 Customer#000000004
 Customer#000000005
+null
diff --git a/tajo-core-tests/src/test/resources/results/TestInSubquery/testNotInSubQuery.result b/tajo-core-tests/src/test/resources/results/TestInSubquery/testNotInSubQuery.result
index 50b69bd..b947183 100644
--- a/tajo-core-tests/src/test/resources/results/TestInSubquery/testNotInSubQuery.result
+++ b/tajo-core-tests/src/test/resources/results/TestInSubquery/testNotInSubQuery.result
@@ -20,3 +20,4 @@
 UNITED KINGDOM
 UNITED STATES
 VIETNAM
+null
diff --git a/tajo-core-tests/src/test/resources/results/TestInnerJoinQuery/testJoinOnMultipleDatabases.Hash.plan b/tajo-core-tests/src/test/resources/results/TestInnerJoinQuery/testJoinOnMultipleDatabases.Hash.plan
index 41125d7..46528f6 100644
--- a/tajo-core-tests/src/test/resources/results/TestInnerJoinQuery/testJoinOnMultipleDatabases.Hash.plan
+++ b/tajo-core-tests/src/test/resources/results/TestInnerJoinQuery/testJoinOnMultipleDatabases.Hash.plan
@@ -8,23 +8,23 @@
      => out schema: {(8) default.nation.n_name (TEXT), joins.part_.p_mfgr (TEXT), joins.part_.p_partkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_phone (TEXT)}
      => in schema: {(10) default.nation.n_name (TEXT), default.partsupp.ps_suppkey (INT4), joins.part_.p_mfgr (TEXT), joins.part_.p_partkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_phone (TEXT), joins.supplier_.s_suppkey (INT4)}
       JOIN(15)(INNER)
-        => Join Cond: default.nation.n_regionkey (INT4) = default.region.r_regionkey (INT4)
+        => Join Cond: joins.supplier_.s_nationkey (INT4) = default.nation.n_nationkey (INT4)
         => target list: default.nation.n_name (TEXT), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_phone (TEXT), joins.supplier_.s_suppkey (INT4)
         => out schema: {(7) default.nation.n_name (TEXT), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_phone (TEXT), joins.supplier_.s_suppkey (INT4)}
-        => in schema: {(9) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), default.region.r_regionkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_phone (TEXT), joins.supplier_.s_suppkey (INT4)}
-         SCAN(4) on default.region
-           => target list: default.region.r_regionkey (INT4)
-           => out schema: {(1) default.region.r_regionkey (INT4)}
-           => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)}
+        => in schema: {(9) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT), joins.supplier_.s_suppkey (INT4)}
+         SCAN(1) on joins.supplier_
+           => target list: joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT), joins.supplier_.s_suppkey (INT4)
+           => out schema: {(7) joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT), joins.supplier_.s_suppkey (INT4)}
+           => in schema: {(7) joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT), joins.supplier_.s_suppkey (INT4)}
          JOIN(14)(INNER)
-           => Join Cond: joins.supplier_.s_nationkey (INT4) = default.nation.n_nationkey (INT4)
-           => target list: default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_phone (TEXT), joins.supplier_.s_suppkey (INT4)
-           => out schema: {(8) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_phone (TEXT), joins.supplier_.s_suppkey (INT4)}
-           => in schema: {(10) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT), joins.supplier_.s_suppkey (INT4)}
-            SCAN(1) on joins.supplier_
-              => target list: joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT), joins.supplier_.s_suppkey (INT4)
-              => out schema: {(7) joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT), joins.supplier_.s_suppkey (INT4)}
-              => in schema: {(7) joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT), joins.supplier_.s_suppkey (INT4)}
+           => Join Cond: default.nation.n_regionkey (INT4) = default.region.r_regionkey (INT4)
+           => target list: default.nation.n_name (TEXT), default.nation.n_nationkey (INT4)
+           => out schema: {(2) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4)}
+           => in schema: {(4) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4), default.region.r_regionkey (INT4)}
+            SCAN(4) on default.region
+              => target list: default.region.r_regionkey (INT4)
+              => out schema: {(1) default.region.r_regionkey (INT4)}
+              => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)}
             SCAN(3) on default.nation
               => target list: default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)
               => out schema: {(3) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)}
@@ -79,23 +79,23 @@
      => out schema: {(8) default.nation.n_name (TEXT), joins.part_.p_mfgr (TEXT), joins.part_.p_partkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_phone (TEXT)}
      => in schema: {(10) default.nation.n_name (TEXT), default.partsupp.ps_suppkey (INT4), joins.part_.p_mfgr (TEXT), joins.part_.p_partkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_phone (TEXT), joins.supplier_.s_suppkey (INT4)}
       JOIN(15)(INNER)
-        => Join Cond: default.nation.n_regionkey (INT4) = default.region.r_regionkey (INT4)
+        => Join Cond: joins.supplier_.s_nationkey (INT4) = default.nation.n_nationkey (INT4)
         => target list: default.nation.n_name (TEXT), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_phone (TEXT), joins.supplier_.s_suppkey (INT4)
         => out schema: {(7) default.nation.n_name (TEXT), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_phone (TEXT), joins.supplier_.s_suppkey (INT4)}
-        => in schema: {(9) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), default.region.r_regionkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_phone (TEXT), joins.supplier_.s_suppkey (INT4)}
-         SCAN(4) on default.region
-           => target list: default.region.r_regionkey (INT4)
-           => out schema: {(1) default.region.r_regionkey (INT4)}
-           => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)}
+        => in schema: {(9) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT), joins.supplier_.s_suppkey (INT4)}
+         SCAN(1) on joins.supplier_
+           => target list: joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT), joins.supplier_.s_suppkey (INT4)
+           => out schema: {(7) joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT), joins.supplier_.s_suppkey (INT4)}
+           => in schema: {(7) joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT), joins.supplier_.s_suppkey (INT4)}
          JOIN(14)(INNER)
-           => Join Cond: joins.supplier_.s_nationkey (INT4) = default.nation.n_nationkey (INT4)
-           => target list: default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_phone (TEXT), joins.supplier_.s_suppkey (INT4)
-           => out schema: {(8) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_phone (TEXT), joins.supplier_.s_suppkey (INT4)}
-           => in schema: {(10) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT), joins.supplier_.s_suppkey (INT4)}
-            SCAN(1) on joins.supplier_
-              => target list: joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT), joins.supplier_.s_suppkey (INT4)
-              => out schema: {(7) joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT), joins.supplier_.s_suppkey (INT4)}
-              => in schema: {(7) joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT), joins.supplier_.s_suppkey (INT4)}
+           => Join Cond: default.nation.n_regionkey (INT4) = default.region.r_regionkey (INT4)
+           => target list: default.nation.n_name (TEXT), default.nation.n_nationkey (INT4)
+           => out schema: {(2) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4)}
+           => in schema: {(4) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4), default.region.r_regionkey (INT4)}
+            SCAN(4) on default.region
+              => target list: default.region.r_regionkey (INT4)
+              => out schema: {(1) default.region.r_regionkey (INT4)}
+              => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)}
             SCAN(3) on default.nation
               => target list: default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)
               => out schema: {(3) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)}
diff --git a/tajo-core-tests/src/test/resources/results/TestInnerJoinQuery/testJoinOnMultipleDatabases.Hash_NoBroadcast.plan b/tajo-core-tests/src/test/resources/results/TestInnerJoinQuery/testJoinOnMultipleDatabases.Hash_NoBroadcast.plan
index 7ba3a64..fa85e61 100644
--- a/tajo-core-tests/src/test/resources/results/TestInnerJoinQuery/testJoinOnMultipleDatabases.Hash_NoBroadcast.plan
+++ b/tajo-core-tests/src/test/resources/results/TestInnerJoinQuery/testJoinOnMultipleDatabases.Hash_NoBroadcast.plan
@@ -8,23 +8,23 @@
      => out schema: {(8) default.nation.n_name (TEXT), joins.part_.p_mfgr (TEXT), joins.part_.p_partkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_phone (TEXT)}
      => in schema: {(10) default.nation.n_name (TEXT), default.partsupp.ps_suppkey (INT4), joins.part_.p_mfgr (TEXT), joins.part_.p_partkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_phone (TEXT), joins.supplier_.s_suppkey (INT4)}
       JOIN(15)(INNER)
-        => Join Cond: default.nation.n_regionkey (INT4) = default.region.r_regionkey (INT4)
+        => Join Cond: joins.supplier_.s_nationkey (INT4) = default.nation.n_nationkey (INT4)
         => target list: default.nation.n_name (TEXT), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_phone (TEXT), joins.supplier_.s_suppkey (INT4)
         => out schema: {(7) default.nation.n_name (TEXT), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_phone (TEXT), joins.supplier_.s_suppkey (INT4)}
-        => in schema: {(9) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), default.region.r_regionkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_phone (TEXT), joins.supplier_.s_suppkey (INT4)}
-         SCAN(4) on default.region
-           => target list: default.region.r_regionkey (INT4)
-           => out schema: {(1) default.region.r_regionkey (INT4)}
-           => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)}
+        => in schema: {(9) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT), joins.supplier_.s_suppkey (INT4)}
+         SCAN(1) on joins.supplier_
+           => target list: joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT), joins.supplier_.s_suppkey (INT4)
+           => out schema: {(7) joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT), joins.supplier_.s_suppkey (INT4)}
+           => in schema: {(7) joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT), joins.supplier_.s_suppkey (INT4)}
          JOIN(14)(INNER)
-           => Join Cond: joins.supplier_.s_nationkey (INT4) = default.nation.n_nationkey (INT4)
-           => target list: default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_phone (TEXT), joins.supplier_.s_suppkey (INT4)
-           => out schema: {(8) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_phone (TEXT), joins.supplier_.s_suppkey (INT4)}
-           => in schema: {(10) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT), joins.supplier_.s_suppkey (INT4)}
-            SCAN(1) on joins.supplier_
-              => target list: joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT), joins.supplier_.s_suppkey (INT4)
-              => out schema: {(7) joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT), joins.supplier_.s_suppkey (INT4)}
-              => in schema: {(7) joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT), joins.supplier_.s_suppkey (INT4)}
+           => Join Cond: default.nation.n_regionkey (INT4) = default.region.r_regionkey (INT4)
+           => target list: default.nation.n_name (TEXT), default.nation.n_nationkey (INT4)
+           => out schema: {(2) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4)}
+           => in schema: {(4) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4), default.region.r_regionkey (INT4)}
+            SCAN(4) on default.region
+              => target list: default.region.r_regionkey (INT4)
+              => out schema: {(1) default.region.r_regionkey (INT4)}
+              => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)}
             SCAN(3) on default.nation
               => target list: default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)
               => out schema: {(3) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)}
@@ -103,7 +103,7 @@
 =======================================================
 
 [Outgoing]
-[q_0000000000000_0000] 4 => 6 (type=HASH_SHUFFLE, key=default.nation.n_nationkey (INT4), num=32)
+[q_0000000000000_0000] 4 => 6 (type=HASH_SHUFFLE, key=default.nation.n_regionkey (INT4), num=32)
 
 SCAN(3) on default.nation
   => target list: default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)
@@ -115,12 +115,12 @@
 =======================================================
 
 [Outgoing]
-[q_0000000000000_0000] 5 => 6 (type=HASH_SHUFFLE, key=joins.supplier_.s_nationkey (INT4), num=32)
+[q_0000000000000_0000] 5 => 6 (type=HASH_SHUFFLE, key=default.region.r_regionkey (INT4), num=32)
 
-SCAN(1) on joins.supplier_
-  => target list: joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT), joins.supplier_.s_suppkey (INT4)
-  => out schema: {(7) joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT), joins.supplier_.s_suppkey (INT4)}
-  => in schema: {(7) joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT), joins.supplier_.s_suppkey (INT4)}
+SCAN(4) on default.region
+  => target list: default.region.r_regionkey (INT4)
+  => out schema: {(1) default.region.r_regionkey (INT4)}
+  => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)}
 
 =======================================================
 Block Id: eb_0000000000000_0000_000003 [INTERMEDIATE]
@@ -150,20 +150,20 @@
 =======================================================
 
 [Incoming]
-[q_0000000000000_0000] 4 => 6 (type=HASH_SHUFFLE, key=default.nation.n_nationkey (INT4), num=32)
-[q_0000000000000_0000] 5 => 6 (type=HASH_SHUFFLE, key=joins.supplier_.s_nationkey (INT4), num=32)
+[q_0000000000000_0000] 4 => 6 (type=HASH_SHUFFLE, key=default.nation.n_regionkey (INT4), num=32)
+[q_0000000000000_0000] 5 => 6 (type=HASH_SHUFFLE, key=default.region.r_regionkey (INT4), num=32)
 
 [Outgoing]
-[q_0000000000000_0000] 6 => 8 (type=HASH_SHUFFLE, key=default.nation.n_regionkey (INT4), num=32)
+[q_0000000000000_0000] 6 => 8 (type=HASH_SHUFFLE, key=default.nation.n_nationkey (INT4), num=32)
 
 JOIN(14)(INNER)
-  => Join Cond: joins.supplier_.s_nationkey (INT4) = default.nation.n_nationkey (INT4)
-  => target list: default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_phone (TEXT), joins.supplier_.s_suppkey (INT4)
-  => out schema: {(8) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_phone (TEXT), joins.supplier_.s_suppkey (INT4)}
-  => in schema: {(10) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT), joins.supplier_.s_suppkey (INT4)}
+  => Join Cond: default.nation.n_regionkey (INT4) = default.region.r_regionkey (INT4)
+  => target list: default.nation.n_name (TEXT), default.nation.n_nationkey (INT4)
+  => out schema: {(2) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4)}
+  => in schema: {(4) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4), default.region.r_regionkey (INT4)}
    SCAN(21) on eb_0000000000000_0000_000005
-     => out schema: {(7) joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT), joins.supplier_.s_suppkey (INT4)}
-     => in schema: {(7) joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT), joins.supplier_.s_suppkey (INT4)}
+     => out schema: {(1) default.region.r_regionkey (INT4)}
+     => in schema: {(1) default.region.r_regionkey (INT4)}
    SCAN(20) on eb_0000000000000_0000_000004
      => out schema: {(3) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)}
      => in schema: {(3) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)}
@@ -173,35 +173,35 @@
 =======================================================
 
 [Outgoing]
-[q_0000000000000_0000] 7 => 8 (type=HASH_SHUFFLE, key=default.region.r_regionkey (INT4), num=32)
+[q_0000000000000_0000] 7 => 8 (type=HASH_SHUFFLE, key=joins.supplier_.s_nationkey (INT4), num=32)
 
-SCAN(4) on default.region
-  => target list: default.region.r_regionkey (INT4)
-  => out schema: {(1) default.region.r_regionkey (INT4)}
-  => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)}
+SCAN(1) on joins.supplier_
+  => target list: joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT), joins.supplier_.s_suppkey (INT4)
+  => out schema: {(7) joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT), joins.supplier_.s_suppkey (INT4)}
+  => in schema: {(7) joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT), joins.supplier_.s_suppkey (INT4)}
 
 =======================================================
 Block Id: eb_0000000000000_0000_000008 [INTERMEDIATE]
 =======================================================
 
 [Incoming]
-[q_0000000000000_0000] 6 => 8 (type=HASH_SHUFFLE, key=default.nation.n_regionkey (INT4), num=32)
-[q_0000000000000_0000] 7 => 8 (type=HASH_SHUFFLE, key=default.region.r_regionkey (INT4), num=32)
+[q_0000000000000_0000] 6 => 8 (type=HASH_SHUFFLE, key=default.nation.n_nationkey (INT4), num=32)
+[q_0000000000000_0000] 7 => 8 (type=HASH_SHUFFLE, key=joins.supplier_.s_nationkey (INT4), num=32)
 
 [Outgoing]
 [q_0000000000000_0000] 8 => 9 (type=HASH_SHUFFLE, key=joins.supplier_.s_suppkey (INT4), num=32)
 
 JOIN(15)(INNER)
-  => Join Cond: default.nation.n_regionkey (INT4) = default.region.r_regionkey (INT4)
+  => Join Cond: joins.supplier_.s_nationkey (INT4) = default.nation.n_nationkey (INT4)
   => target list: default.nation.n_name (TEXT), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_phone (TEXT), joins.supplier_.s_suppkey (INT4)
   => out schema: {(7) default.nation.n_name (TEXT), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_phone (TEXT), joins.supplier_.s_suppkey (INT4)}
-  => in schema: {(9) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), default.region.r_regionkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_phone (TEXT), joins.supplier_.s_suppkey (INT4)}
+  => in schema: {(9) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT), joins.supplier_.s_suppkey (INT4)}
    SCAN(23) on eb_0000000000000_0000_000007
-     => out schema: {(1) default.region.r_regionkey (INT4)}
-     => in schema: {(1) default.region.r_regionkey (INT4)}
+     => out schema: {(7) joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT), joins.supplier_.s_suppkey (INT4)}
+     => in schema: {(7) joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT), joins.supplier_.s_suppkey (INT4)}
    SCAN(22) on eb_0000000000000_0000_000006
-     => out schema: {(8) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_phone (TEXT), joins.supplier_.s_suppkey (INT4)}
-     => in schema: {(8) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_phone (TEXT), joins.supplier_.s_suppkey (INT4)}
+     => out schema: {(2) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4)}
+     => in schema: {(2) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4)}
 
 =======================================================
 Block Id: eb_0000000000000_0000_000009 [INTERMEDIATE]
diff --git a/tajo-core-tests/src/test/resources/results/TestInnerJoinQuery/testJoinOnMultipleDatabases.Sort.plan b/tajo-core-tests/src/test/resources/results/TestInnerJoinQuery/testJoinOnMultipleDatabases.Sort.plan
index 41125d7..46528f6 100644
--- a/tajo-core-tests/src/test/resources/results/TestInnerJoinQuery/testJoinOnMultipleDatabases.Sort.plan
+++ b/tajo-core-tests/src/test/resources/results/TestInnerJoinQuery/testJoinOnMultipleDatabases.Sort.plan
@@ -8,23 +8,23 @@
      => out schema: {(8) default.nation.n_name (TEXT), joins.part_.p_mfgr (TEXT), joins.part_.p_partkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_phone (TEXT)}
      => in schema: {(10) default.nation.n_name (TEXT), default.partsupp.ps_suppkey (INT4), joins.part_.p_mfgr (TEXT), joins.part_.p_partkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_phone (TEXT), joins.supplier_.s_suppkey (INT4)}
       JOIN(15)(INNER)
-        => Join Cond: default.nation.n_regionkey (INT4) = default.region.r_regionkey (INT4)
+        => Join Cond: joins.supplier_.s_nationkey (INT4) = default.nation.n_nationkey (INT4)
         => target list: default.nation.n_name (TEXT), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_phone (TEXT), joins.supplier_.s_suppkey (INT4)
         => out schema: {(7) default.nation.n_name (TEXT), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_phone (TEXT), joins.supplier_.s_suppkey (INT4)}
-        => in schema: {(9) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), default.region.r_regionkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_phone (TEXT), joins.supplier_.s_suppkey (INT4)}
-         SCAN(4) on default.region
-           => target list: default.region.r_regionkey (INT4)
-           => out schema: {(1) default.region.r_regionkey (INT4)}
-           => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)}
+        => in schema: {(9) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT), joins.supplier_.s_suppkey (INT4)}
+         SCAN(1) on joins.supplier_
+           => target list: joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT), joins.supplier_.s_suppkey (INT4)
+           => out schema: {(7) joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT), joins.supplier_.s_suppkey (INT4)}
+           => in schema: {(7) joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT), joins.supplier_.s_suppkey (INT4)}
          JOIN(14)(INNER)
-           => Join Cond: joins.supplier_.s_nationkey (INT4) = default.nation.n_nationkey (INT4)
-           => target list: default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_phone (TEXT), joins.supplier_.s_suppkey (INT4)
-           => out schema: {(8) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_phone (TEXT), joins.supplier_.s_suppkey (INT4)}
-           => in schema: {(10) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT), joins.supplier_.s_suppkey (INT4)}
-            SCAN(1) on joins.supplier_
-              => target list: joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT), joins.supplier_.s_suppkey (INT4)
-              => out schema: {(7) joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT), joins.supplier_.s_suppkey (INT4)}
-              => in schema: {(7) joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT), joins.supplier_.s_suppkey (INT4)}
+           => Join Cond: default.nation.n_regionkey (INT4) = default.region.r_regionkey (INT4)
+           => target list: default.nation.n_name (TEXT), default.nation.n_nationkey (INT4)
+           => out schema: {(2) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4)}
+           => in schema: {(4) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4), default.region.r_regionkey (INT4)}
+            SCAN(4) on default.region
+              => target list: default.region.r_regionkey (INT4)
+              => out schema: {(1) default.region.r_regionkey (INT4)}
+              => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)}
             SCAN(3) on default.nation
               => target list: default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)
               => out schema: {(3) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)}
@@ -79,23 +79,23 @@
      => out schema: {(8) default.nation.n_name (TEXT), joins.part_.p_mfgr (TEXT), joins.part_.p_partkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_phone (TEXT)}
      => in schema: {(10) default.nation.n_name (TEXT), default.partsupp.ps_suppkey (INT4), joins.part_.p_mfgr (TEXT), joins.part_.p_partkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_phone (TEXT), joins.supplier_.s_suppkey (INT4)}
       JOIN(15)(INNER)
-        => Join Cond: default.nation.n_regionkey (INT4) = default.region.r_regionkey (INT4)
+        => Join Cond: joins.supplier_.s_nationkey (INT4) = default.nation.n_nationkey (INT4)
         => target list: default.nation.n_name (TEXT), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_phone (TEXT), joins.supplier_.s_suppkey (INT4)
         => out schema: {(7) default.nation.n_name (TEXT), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_phone (TEXT), joins.supplier_.s_suppkey (INT4)}
-        => in schema: {(9) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), default.region.r_regionkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_phone (TEXT), joins.supplier_.s_suppkey (INT4)}
-         SCAN(4) on default.region
-           => target list: default.region.r_regionkey (INT4)
-           => out schema: {(1) default.region.r_regionkey (INT4)}
-           => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)}
+        => in schema: {(9) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT), joins.supplier_.s_suppkey (INT4)}
+         SCAN(1) on joins.supplier_
+           => target list: joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT), joins.supplier_.s_suppkey (INT4)
+           => out schema: {(7) joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT), joins.supplier_.s_suppkey (INT4)}
+           => in schema: {(7) joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT), joins.supplier_.s_suppkey (INT4)}
          JOIN(14)(INNER)
-           => Join Cond: joins.supplier_.s_nationkey (INT4) = default.nation.n_nationkey (INT4)
-           => target list: default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_phone (TEXT), joins.supplier_.s_suppkey (INT4)
-           => out schema: {(8) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_phone (TEXT), joins.supplier_.s_suppkey (INT4)}
-           => in schema: {(10) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT), joins.supplier_.s_suppkey (INT4)}
-            SCAN(1) on joins.supplier_
-              => target list: joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT), joins.supplier_.s_suppkey (INT4)
-              => out schema: {(7) joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT), joins.supplier_.s_suppkey (INT4)}
-              => in schema: {(7) joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT), joins.supplier_.s_suppkey (INT4)}
+           => Join Cond: default.nation.n_regionkey (INT4) = default.region.r_regionkey (INT4)
+           => target list: default.nation.n_name (TEXT), default.nation.n_nationkey (INT4)
+           => out schema: {(2) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4)}
+           => in schema: {(4) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4), default.region.r_regionkey (INT4)}
+            SCAN(4) on default.region
+              => target list: default.region.r_regionkey (INT4)
+              => out schema: {(1) default.region.r_regionkey (INT4)}
+              => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)}
             SCAN(3) on default.nation
               => target list: default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)
               => out schema: {(3) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)}
diff --git a/tajo-core-tests/src/test/resources/results/TestInnerJoinQuery/testJoinOnMultipleDatabases.Sort_NoBroadcast.plan b/tajo-core-tests/src/test/resources/results/TestInnerJoinQuery/testJoinOnMultipleDatabases.Sort_NoBroadcast.plan
index 7ba3a64..fa85e61 100644
--- a/tajo-core-tests/src/test/resources/results/TestInnerJoinQuery/testJoinOnMultipleDatabases.Sort_NoBroadcast.plan
+++ b/tajo-core-tests/src/test/resources/results/TestInnerJoinQuery/testJoinOnMultipleDatabases.Sort_NoBroadcast.plan
@@ -8,23 +8,23 @@
      => out schema: {(8) default.nation.n_name (TEXT), joins.part_.p_mfgr (TEXT), joins.part_.p_partkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_phone (TEXT)}
      => in schema: {(10) default.nation.n_name (TEXT), default.partsupp.ps_suppkey (INT4), joins.part_.p_mfgr (TEXT), joins.part_.p_partkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_phone (TEXT), joins.supplier_.s_suppkey (INT4)}
       JOIN(15)(INNER)
-        => Join Cond: default.nation.n_regionkey (INT4) = default.region.r_regionkey (INT4)
+        => Join Cond: joins.supplier_.s_nationkey (INT4) = default.nation.n_nationkey (INT4)
         => target list: default.nation.n_name (TEXT), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_phone (TEXT), joins.supplier_.s_suppkey (INT4)
         => out schema: {(7) default.nation.n_name (TEXT), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_phone (TEXT), joins.supplier_.s_suppkey (INT4)}
-        => in schema: {(9) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), default.region.r_regionkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_phone (TEXT), joins.supplier_.s_suppkey (INT4)}
-         SCAN(4) on default.region
-           => target list: default.region.r_regionkey (INT4)
-           => out schema: {(1) default.region.r_regionkey (INT4)}
-           => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)}
+        => in schema: {(9) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT), joins.supplier_.s_suppkey (INT4)}
+         SCAN(1) on joins.supplier_
+           => target list: joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT), joins.supplier_.s_suppkey (INT4)
+           => out schema: {(7) joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT), joins.supplier_.s_suppkey (INT4)}
+           => in schema: {(7) joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT), joins.supplier_.s_suppkey (INT4)}
          JOIN(14)(INNER)
-           => Join Cond: joins.supplier_.s_nationkey (INT4) = default.nation.n_nationkey (INT4)
-           => target list: default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_phone (TEXT), joins.supplier_.s_suppkey (INT4)
-           => out schema: {(8) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_phone (TEXT), joins.supplier_.s_suppkey (INT4)}
-           => in schema: {(10) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT), joins.supplier_.s_suppkey (INT4)}
-            SCAN(1) on joins.supplier_
-              => target list: joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT), joins.supplier_.s_suppkey (INT4)
-              => out schema: {(7) joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT), joins.supplier_.s_suppkey (INT4)}
-              => in schema: {(7) joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT), joins.supplier_.s_suppkey (INT4)}
+           => Join Cond: default.nation.n_regionkey (INT4) = default.region.r_regionkey (INT4)
+           => target list: default.nation.n_name (TEXT), default.nation.n_nationkey (INT4)
+           => out schema: {(2) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4)}
+           => in schema: {(4) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4), default.region.r_regionkey (INT4)}
+            SCAN(4) on default.region
+              => target list: default.region.r_regionkey (INT4)
+              => out schema: {(1) default.region.r_regionkey (INT4)}
+              => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)}
             SCAN(3) on default.nation
               => target list: default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)
               => out schema: {(3) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)}
@@ -103,7 +103,7 @@
 =======================================================
 
 [Outgoing]
-[q_0000000000000_0000] 4 => 6 (type=HASH_SHUFFLE, key=default.nation.n_nationkey (INT4), num=32)
+[q_0000000000000_0000] 4 => 6 (type=HASH_SHUFFLE, key=default.nation.n_regionkey (INT4), num=32)
 
 SCAN(3) on default.nation
   => target list: default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)
@@ -115,12 +115,12 @@
 =======================================================
 
 [Outgoing]
-[q_0000000000000_0000] 5 => 6 (type=HASH_SHUFFLE, key=joins.supplier_.s_nationkey (INT4), num=32)
+[q_0000000000000_0000] 5 => 6 (type=HASH_SHUFFLE, key=default.region.r_regionkey (INT4), num=32)
 
-SCAN(1) on joins.supplier_
-  => target list: joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT), joins.supplier_.s_suppkey (INT4)
-  => out schema: {(7) joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT), joins.supplier_.s_suppkey (INT4)}
-  => in schema: {(7) joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT), joins.supplier_.s_suppkey (INT4)}
+SCAN(4) on default.region
+  => target list: default.region.r_regionkey (INT4)
+  => out schema: {(1) default.region.r_regionkey (INT4)}
+  => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)}
 
 =======================================================
 Block Id: eb_0000000000000_0000_000003 [INTERMEDIATE]
@@ -150,20 +150,20 @@
 =======================================================
 
 [Incoming]
-[q_0000000000000_0000] 4 => 6 (type=HASH_SHUFFLE, key=default.nation.n_nationkey (INT4), num=32)
-[q_0000000000000_0000] 5 => 6 (type=HASH_SHUFFLE, key=joins.supplier_.s_nationkey (INT4), num=32)
+[q_0000000000000_0000] 4 => 6 (type=HASH_SHUFFLE, key=default.nation.n_regionkey (INT4), num=32)
+[q_0000000000000_0000] 5 => 6 (type=HASH_SHUFFLE, key=default.region.r_regionkey (INT4), num=32)
 
 [Outgoing]
-[q_0000000000000_0000] 6 => 8 (type=HASH_SHUFFLE, key=default.nation.n_regionkey (INT4), num=32)
+[q_0000000000000_0000] 6 => 8 (type=HASH_SHUFFLE, key=default.nation.n_nationkey (INT4), num=32)
 
 JOIN(14)(INNER)
-  => Join Cond: joins.supplier_.s_nationkey (INT4) = default.nation.n_nationkey (INT4)
-  => target list: default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_phone (TEXT), joins.supplier_.s_suppkey (INT4)
-  => out schema: {(8) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_phone (TEXT), joins.supplier_.s_suppkey (INT4)}
-  => in schema: {(10) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT), joins.supplier_.s_suppkey (INT4)}
+  => Join Cond: default.nation.n_regionkey (INT4) = default.region.r_regionkey (INT4)
+  => target list: default.nation.n_name (TEXT), default.nation.n_nationkey (INT4)
+  => out schema: {(2) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4)}
+  => in schema: {(4) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4), default.region.r_regionkey (INT4)}
    SCAN(21) on eb_0000000000000_0000_000005
-     => out schema: {(7) joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT), joins.supplier_.s_suppkey (INT4)}
-     => in schema: {(7) joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT), joins.supplier_.s_suppkey (INT4)}
+     => out schema: {(1) default.region.r_regionkey (INT4)}
+     => in schema: {(1) default.region.r_regionkey (INT4)}
    SCAN(20) on eb_0000000000000_0000_000004
      => out schema: {(3) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)}
      => in schema: {(3) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), default.nation.n_regionkey (INT4)}
@@ -173,35 +173,35 @@
 =======================================================
 
 [Outgoing]
-[q_0000000000000_0000] 7 => 8 (type=HASH_SHUFFLE, key=default.region.r_regionkey (INT4), num=32)
+[q_0000000000000_0000] 7 => 8 (type=HASH_SHUFFLE, key=joins.supplier_.s_nationkey (INT4), num=32)
 
-SCAN(4) on default.region
-  => target list: default.region.r_regionkey (INT4)
-  => out schema: {(1) default.region.r_regionkey (INT4)}
-  => in schema: {(3) default.region.r_comment (TEXT), default.region.r_name (TEXT), default.region.r_regionkey (INT4)}
+SCAN(1) on joins.supplier_
+  => target list: joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT), joins.supplier_.s_suppkey (INT4)
+  => out schema: {(7) joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT), joins.supplier_.s_suppkey (INT4)}
+  => in schema: {(7) joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT), joins.supplier_.s_suppkey (INT4)}
 
 =======================================================
 Block Id: eb_0000000000000_0000_000008 [INTERMEDIATE]
 =======================================================
 
 [Incoming]
-[q_0000000000000_0000] 6 => 8 (type=HASH_SHUFFLE, key=default.nation.n_regionkey (INT4), num=32)
-[q_0000000000000_0000] 7 => 8 (type=HASH_SHUFFLE, key=default.region.r_regionkey (INT4), num=32)
+[q_0000000000000_0000] 6 => 8 (type=HASH_SHUFFLE, key=default.nation.n_nationkey (INT4), num=32)
+[q_0000000000000_0000] 7 => 8 (type=HASH_SHUFFLE, key=joins.supplier_.s_nationkey (INT4), num=32)
 
 [Outgoing]
 [q_0000000000000_0000] 8 => 9 (type=HASH_SHUFFLE, key=joins.supplier_.s_suppkey (INT4), num=32)
 
 JOIN(15)(INNER)
-  => Join Cond: default.nation.n_regionkey (INT4) = default.region.r_regionkey (INT4)
+  => Join Cond: joins.supplier_.s_nationkey (INT4) = default.nation.n_nationkey (INT4)
   => target list: default.nation.n_name (TEXT), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_phone (TEXT), joins.supplier_.s_suppkey (INT4)
   => out schema: {(7) default.nation.n_name (TEXT), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_phone (TEXT), joins.supplier_.s_suppkey (INT4)}
-  => in schema: {(9) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), default.region.r_regionkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_phone (TEXT), joins.supplier_.s_suppkey (INT4)}
+  => in schema: {(9) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT), joins.supplier_.s_suppkey (INT4)}
    SCAN(23) on eb_0000000000000_0000_000007
-     => out schema: {(1) default.region.r_regionkey (INT4)}
-     => in schema: {(1) default.region.r_regionkey (INT4)}
+     => out schema: {(7) joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT), joins.supplier_.s_suppkey (INT4)}
+     => in schema: {(7) joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_nationkey (INT4), joins.supplier_.s_phone (TEXT), joins.supplier_.s_suppkey (INT4)}
    SCAN(22) on eb_0000000000000_0000_000006
-     => out schema: {(8) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_phone (TEXT), joins.supplier_.s_suppkey (INT4)}
-     => in schema: {(8) default.nation.n_name (TEXT), default.nation.n_regionkey (INT4), joins.supplier_.s_acctbal (FLOAT8), joins.supplier_.s_address (TEXT), joins.supplier_.s_comment (TEXT), joins.supplier_.s_name (TEXT), joins.supplier_.s_phone (TEXT), joins.supplier_.s_suppkey (INT4)}
+     => out schema: {(2) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4)}
+     => in schema: {(2) default.nation.n_name (TEXT), default.nation.n_nationkey (INT4)}
 
 =======================================================
 Block Id: eb_0000000000000_0000_000009 [INTERMEDIATE]
diff --git a/tajo-core-tests/src/test/resources/results/TestInnerJoinQuery/testJoinWithJson.result b/tajo-core-tests/src/test/resources/results/TestInnerJoinQuery/testJoinWithJson.result
index 23d985e..3525de7 100644
--- a/tajo-core-tests/src/test/resources/results/TestInnerJoinQuery/testJoinWithJson.result
+++ b/tajo-core-tests/src/test/resources/results/TestInnerJoinQuery/testJoinWithJson.result
@@ -1,27 +1,66 @@
 len,c_custkey,c_name,c_address,c_nationkey,c_phone,c_acctbal,c_mktsegment,c_comment,r_regionkey,r_name,r_comment,?multiply
 -------------------------------
+13,1,Customer#000000001,IVhzIApeRb ot,c,E,15,25-989-741-2988,711.56,BUILDING,to the even, regular platelets. regular, ironic epitaphs nag e,null,null,for null test,10
+13,2,Customer#000000002,XSTf4,NCwDVaWNe6tEgvwfmRchLXak,13,23-768-687-3665,121.65,AUTOMOBILE,l accounts. blithely ironic theodolites integrate boldly: caref,null,null,for null test,20
+13,3,Customer#000000003,MG9kdTD2WBHm,1,11-719-748-3364,7498.12,AUTOMOBILE, deposits eat slyly ironic, even instructions. express foxes detect slyly. blithely even accounts abov,null,null,for null test,30
+13,4,Customer#000000004,XxVSJsLAGtn,4,14-128-190-5944,2866.83,MACHINERY, requests. final, regular ideas sleep final accou,null,null,for null test,40
+13,5,Customer#000000005,KvpyuHCplrB84WgAiGV6sYpZq7Tj,3,13-750-942-6364,794.47,HOUSEHOLD,n accounts will have to unwind. foxes cajole accor,null,null,for null test,50
+13,null,null,null,null,null,null,null,for null test,null,null,for null test,null
+13,null,null,null,null,null,null,null,for null test2,null,null,for null test,null
+13,null,null,null,null,null,null,null,for null test3,null,null,for null test,null
+14,1,Customer#000000001,IVhzIApeRb ot,c,E,15,25-989-741-2988,711.56,BUILDING,to the even, regular platelets. regular, ironic epitaphs nag e,null,null,for null test2,10
+14,1,Customer#000000001,IVhzIApeRb ot,c,E,15,25-989-741-2988,711.56,BUILDING,to the even, regular platelets. regular, ironic epitaphs nag e,null,null,for null test3,10
+14,2,Customer#000000002,XSTf4,NCwDVaWNe6tEgvwfmRchLXak,13,23-768-687-3665,121.65,AUTOMOBILE,l accounts. blithely ironic theodolites integrate boldly: caref,null,null,for null test2,20
+14,2,Customer#000000002,XSTf4,NCwDVaWNe6tEgvwfmRchLXak,13,23-768-687-3665,121.65,AUTOMOBILE,l accounts. blithely ironic theodolites integrate boldly: caref,null,null,for null test3,20
+14,3,Customer#000000003,MG9kdTD2WBHm,1,11-719-748-3364,7498.12,AUTOMOBILE, deposits eat slyly ironic, even instructions. express foxes detect slyly. blithely even accounts abov,null,null,for null test2,30
+14,3,Customer#000000003,MG9kdTD2WBHm,1,11-719-748-3364,7498.12,AUTOMOBILE, deposits eat slyly ironic, even instructions. express foxes detect slyly. blithely even accounts abov,null,null,for null test3,30
+14,4,Customer#000000004,XxVSJsLAGtn,4,14-128-190-5944,2866.83,MACHINERY, requests. final, regular ideas sleep final accou,null,null,for null test2,40
+14,4,Customer#000000004,XxVSJsLAGtn,4,14-128-190-5944,2866.83,MACHINERY, requests. final, regular ideas sleep final accou,null,null,for null test3,40
+14,5,Customer#000000005,KvpyuHCplrB84WgAiGV6sYpZq7Tj,3,13-750-942-6364,794.47,HOUSEHOLD,n accounts will have to unwind. foxes cajole accor,null,null,for null test2,50
+14,5,Customer#000000005,KvpyuHCplrB84WgAiGV6sYpZq7Tj,3,13-750-942-6364,794.47,HOUSEHOLD,n accounts will have to unwind. foxes cajole accor,null,null,for null test3,50
+14,null,null,null,null,null,null,null,for null test,null,null,for null test2,null
+14,null,null,null,null,null,null,null,for null test,null,null,for null test3,null
+14,null,null,null,null,null,null,null,for null test2,null,null,for null test2,null
+14,null,null,null,null,null,null,null,for null test2,null,null,for null test3,null
+14,null,null,null,null,null,null,null,for null test3,null,null,for null test2,null
+14,null,null,null,null,null,null,null,for null test3,null,null,for null test3,null
 31,1,Customer#000000001,IVhzIApeRb ot,c,E,15,25-989-741-2988,711.56,BUILDING,to the even, regular platelets. regular, ironic epitaphs nag e,1,AMERICA,hs use ironic, even requests. s,10
 31,2,Customer#000000002,XSTf4,NCwDVaWNe6tEgvwfmRchLXak,13,23-768-687-3665,121.65,AUTOMOBILE,l accounts. blithely ironic theodolites integrate boldly: caref,1,AMERICA,hs use ironic, even requests. s,20
 31,3,Customer#000000003,MG9kdTD2WBHm,1,11-719-748-3364,7498.12,AUTOMOBILE, deposits eat slyly ironic, even instructions. express foxes detect slyly. blithely even accounts abov,1,AMERICA,hs use ironic, even requests. s,30
 31,4,Customer#000000004,XxVSJsLAGtn,4,14-128-190-5944,2866.83,MACHINERY, requests. final, regular ideas sleep final accou,1,AMERICA,hs use ironic, even requests. s,40
 31,5,Customer#000000005,KvpyuHCplrB84WgAiGV6sYpZq7Tj,3,13-750-942-6364,794.47,HOUSEHOLD,n accounts will have to unwind. foxes cajole accor,1,AMERICA,hs use ironic, even requests. s,50
+31,null,null,null,null,null,null,null,for null test,1,AMERICA,hs use ironic, even requests. s,null
+31,null,null,null,null,null,null,null,for null test2,1,AMERICA,hs use ironic, even requests. s,null
+31,null,null,null,null,null,null,null,for null test3,1,AMERICA,hs use ironic, even requests. s,null
 31,1,Customer#000000001,IVhzIApeRb ot,c,E,15,25-989-741-2988,711.56,BUILDING,to the even, regular platelets. regular, ironic epitaphs nag e,2,ASIA,ges. thinly even pinto beans ca,10
 31,2,Customer#000000002,XSTf4,NCwDVaWNe6tEgvwfmRchLXak,13,23-768-687-3665,121.65,AUTOMOBILE,l accounts. blithely ironic theodolites integrate boldly: caref,2,ASIA,ges. thinly even pinto beans ca,20
 31,3,Customer#000000003,MG9kdTD2WBHm,1,11-719-748-3364,7498.12,AUTOMOBILE, deposits eat slyly ironic, even instructions. express foxes detect slyly. blithely even accounts abov,2,ASIA,ges. thinly even pinto beans ca,30
 31,4,Customer#000000004,XxVSJsLAGtn,4,14-128-190-5944,2866.83,MACHINERY, requests. final, regular ideas sleep final accou,2,ASIA,ges. thinly even pinto beans ca,40
 31,5,Customer#000000005,KvpyuHCplrB84WgAiGV6sYpZq7Tj,3,13-750-942-6364,794.47,HOUSEHOLD,n accounts will have to unwind. foxes cajole accor,2,ASIA,ges. thinly even pinto beans ca,50
+31,null,null,null,null,null,null,null,for null test,2,ASIA,ges. thinly even pinto beans ca,null
+31,null,null,null,null,null,null,null,for null test2,2,ASIA,ges. thinly even pinto beans ca,null
+31,null,null,null,null,null,null,null,for null test3,2,ASIA,ges. thinly even pinto beans ca,null
 45,1,Customer#000000001,IVhzIApeRb ot,c,E,15,25-989-741-2988,711.56,BUILDING,to the even, regular platelets. regular, ironic epitaphs nag e,3,EUROPE,ly final courts cajole furiously final excuse,10
 45,2,Customer#000000002,XSTf4,NCwDVaWNe6tEgvwfmRchLXak,13,23-768-687-3665,121.65,AUTOMOBILE,l accounts. blithely ironic theodolites integrate boldly: caref,3,EUROPE,ly final courts cajole furiously final excuse,20
 45,3,Customer#000000003,MG9kdTD2WBHm,1,11-719-748-3364,7498.12,AUTOMOBILE, deposits eat slyly ironic, even instructions. express foxes detect slyly. blithely even accounts abov,3,EUROPE,ly final courts cajole furiously final excuse,30
 45,4,Customer#000000004,XxVSJsLAGtn,4,14-128-190-5944,2866.83,MACHINERY, requests. final, regular ideas sleep final accou,3,EUROPE,ly final courts cajole furiously final excuse,40
 45,5,Customer#000000005,KvpyuHCplrB84WgAiGV6sYpZq7Tj,3,13-750-942-6364,794.47,HOUSEHOLD,n accounts will have to unwind. foxes cajole accor,3,EUROPE,ly final courts cajole furiously final excuse,50
+45,null,null,null,null,null,null,null,for null test,3,EUROPE,ly final courts cajole furiously final excuse,null
+45,null,null,null,null,null,null,null,for null test2,3,EUROPE,ly final courts cajole furiously final excuse,null
+45,null,null,null,null,null,null,null,for null test3,3,EUROPE,ly final courts cajole furiously final excuse,null
 108,1,Customer#000000001,IVhzIApeRb ot,c,E,15,25-989-741-2988,711.56,BUILDING,to the even, regular platelets. regular, ironic epitaphs nag e,4,MIDDLE EAST,uickly special accounts cajole carefully blithely close requests. carefully final asymptotes haggle furiousl,10
 108,2,Customer#000000002,XSTf4,NCwDVaWNe6tEgvwfmRchLXak,13,23-768-687-3665,121.65,AUTOMOBILE,l accounts. blithely ironic theodolites integrate boldly: caref,4,MIDDLE EAST,uickly special accounts cajole carefully blithely close requests. carefully final asymptotes haggle furiousl,20
 108,3,Customer#000000003,MG9kdTD2WBHm,1,11-719-748-3364,7498.12,AUTOMOBILE, deposits eat slyly ironic, even instructions. express foxes detect slyly. blithely even accounts abov,4,MIDDLE EAST,uickly special accounts cajole carefully blithely close requests. carefully final asymptotes haggle furiousl,30
 108,4,Customer#000000004,XxVSJsLAGtn,4,14-128-190-5944,2866.83,MACHINERY, requests. final, regular ideas sleep final accou,4,MIDDLE EAST,uickly special accounts cajole carefully blithely close requests. carefully final asymptotes haggle furiousl,40
 108,5,Customer#000000005,KvpyuHCplrB84WgAiGV6sYpZq7Tj,3,13-750-942-6364,794.47,HOUSEHOLD,n accounts will have to unwind. foxes cajole accor,4,MIDDLE EAST,uickly special accounts cajole carefully blithely close requests. carefully final asymptotes haggle furiousl,50
+108,null,null,null,null,null,null,null,for null test,4,MIDDLE EAST,uickly special accounts cajole carefully blithely close requests. carefully final asymptotes haggle furiousl,null
+108,null,null,null,null,null,null,null,for null test2,4,MIDDLE EAST,uickly special accounts cajole carefully blithely close requests. carefully final asymptotes haggle furiousl,null
+108,null,null,null,null,null,null,null,for null test3,4,MIDDLE EAST,uickly special accounts cajole carefully blithely close requests. carefully final asymptotes haggle furiousl,null
 115,1,Customer#000000001,IVhzIApeRb ot,c,E,15,25-989-741-2988,711.56,BUILDING,to the even, regular platelets. regular, ironic epitaphs nag e,0,AFRICA,lar deposits. blithely final packages cajole. regular waters are final requests. regular accounts are according to ,10
 115,2,Customer#000000002,XSTf4,NCwDVaWNe6tEgvwfmRchLXak,13,23-768-687-3665,121.65,AUTOMOBILE,l accounts. blithely ironic theodolites integrate boldly: caref,0,AFRICA,lar deposits. blithely final packages cajole. regular waters are final requests. regular accounts are according to ,20
 115,3,Customer#000000003,MG9kdTD2WBHm,1,11-719-748-3364,7498.12,AUTOMOBILE, deposits eat slyly ironic, even instructions. express foxes detect slyly. blithely even accounts abov,0,AFRICA,lar deposits. blithely final packages cajole. regular waters are final requests. regular accounts are according to ,30
 115,4,Customer#000000004,XxVSJsLAGtn,4,14-128-190-5944,2866.83,MACHINERY, requests. final, regular ideas sleep final accou,0,AFRICA,lar deposits. blithely final packages cajole. regular waters are final requests. regular accounts are according to ,40
-115,5,Customer#000000005,KvpyuHCplrB84WgAiGV6sYpZq7Tj,3,13-750-942-6364,794.47,HOUSEHOLD,n accounts will have to unwind. foxes cajole accor,0,AFRICA,lar deposits. blithely final packages cajole. regular waters are final requests. regular accounts are according to ,50
\ No newline at end of file
+115,5,Customer#000000005,KvpyuHCplrB84WgAiGV6sYpZq7Tj,3,13-750-942-6364,794.47,HOUSEHOLD,n accounts will have to unwind. foxes cajole accor,0,AFRICA,lar deposits. blithely final packages cajole. regular waters are final requests. regular accounts are according to ,50
+115,null,null,null,null,null,null,null,for null test,0,AFRICA,lar deposits. blithely final packages cajole. regular waters are final requests. regular accounts are according to ,null
+115,null,null,null,null,null,null,null,for null test2,0,AFRICA,lar deposits. blithely final packages cajole. regular waters are final requests. regular accounts are according to ,null
+115,null,null,null,null,null,null,null,for null test3,0,AFRICA,lar deposits. blithely final packages cajole. regular waters are final requests. regular accounts are according to ,null
\ No newline at end of file
diff --git a/tajo-core-tests/src/test/resources/results/TestInsertQuery/testInsertOverwriteWithAsteriskAndMore.result b/tajo-core-tests/src/test/resources/results/TestInsertQuery/testInsertOverwriteWithAsteriskAndMore.result
index bb797ba..4620ce0 100644
--- a/tajo-core-tests/src/test/resources/results/TestInsertQuery/testInsertOverwriteWithAsteriskAndMore.result
+++ b/tajo-core-tests/src/test/resources/results/TestInsertQuery/testInsertOverwriteWithAsteriskAndMore.result
@@ -4,4 +4,7 @@
 3,2,1798,1,45.0,54058.05,0.06,0.0,R,F,1994-02-02,1994-01-04,1994-02-23,NONE,AIR,ongside of the furiously brave acco,1994,02
 1,1,7706,1,17.0,21168.23,0.04,0.02,N,O,1996-03-13,1996-02-12,1996-03-22,DELIVER IN PERSON,TRUCK,egular courts above the,1996,03
 1,1,7311,2,36.0,45983.16,0.09,0.06,N,O,1996-04-12,1996-02-28,1996-04-20,TAKE BACK RETURN,MAIL,ly final dependencies: slyly bold ,1996,04
-2,2,1191,1,38.0,44694.46,0.0,0.05,N,O,1997-01-28,1997-01-14,1997-02-02,TAKE BACK RETURN,RAIL,ven requests. deposits breach a,1997,01
\ No newline at end of file
+2,2,1191,1,38.0,44694.46,0.0,0.05,N,O,1997-01-28,1997-01-14,1997-02-02,TAKE BACK RETURN,RAIL,ven requests. deposits breach a,1997,01
+null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,for null test,null,null
+null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,for null test2,null,null
+null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,for null test3,null,null
\ No newline at end of file
diff --git a/tajo-core-tests/src/test/resources/results/TestInsertQuery/testInsertWithDifferentColumnOrder.result b/tajo-core-tests/src/test/resources/results/TestInsertQuery/testInsertWithDifferentColumnOrder.result
index 4cd3b81..5807a33 100644
--- a/tajo-core-tests/src/test/resources/results/TestInsertQuery/testInsertWithDifferentColumnOrder.result
+++ b/tajo-core-tests/src/test/resources/results/TestInsertQuery/testInsertWithDifferentColumnOrder.result
@@ -24,4 +24,7 @@
 null,VIETNAM,null,hely enticingly express accounts. even, final 
 null,RUSSIA,null, requests against the platelets use never according to the quickly regular pint
 null,UNITED KINGDOM,null,eans boost carefully special requests. accounts are. carefull
-null,UNITED STATES,null,y final packages. slow foxes cajole quickly. quickly silent platelets breach ironic accounts. unusual pinto be
\ No newline at end of file
+null,UNITED STATES,null,y final packages. slow foxes cajole quickly. quickly silent platelets breach ironic accounts. unusual pinto be
+null,null,null,for null test
+null,null,null,for null test2
+null,null,null,for null test3
\ No newline at end of file
diff --git a/tajo-core-tests/src/test/resources/results/TestJoinOnPartitionedTables/testPartialFilterPushDownOuterJoin.result b/tajo-core-tests/src/test/resources/results/TestJoinOnPartitionedTables/testPartialFilterPushDownOuterJoin.result
index 4c58290..e450ffd 100644
--- a/tajo-core-tests/src/test/resources/results/TestJoinOnPartitionedTables/testPartialFilterPushDownOuterJoin.result
+++ b/tajo-core-tests/src/test/resources/results/TestJoinOnPartitionedTables/testPartialFilterPushDownOuterJoin.result
@@ -25,3 +25,6 @@
 22,RUSSIA,null,null,null
 23,UNITED KINGDOM,null,null,null
 24,UNITED STATES,null,null,null
+null,null,null,null,null
+null,null,null,null,null
+null,null,null,null,null
diff --git a/tajo-core-tests/src/test/resources/results/TestJoinOnPartitionedTables/testPartialFilterPushDownOuterJoin2.result b/tajo-core-tests/src/test/resources/results/TestJoinOnPartitionedTables/testPartialFilterPushDownOuterJoin2.result
index d81e058..8d51465 100644
--- a/tajo-core-tests/src/test/resources/results/TestJoinOnPartitionedTables/testPartialFilterPushDownOuterJoin2.result
+++ b/tajo-core-tests/src/test/resources/results/TestJoinOnPartitionedTables/testPartialFilterPushDownOuterJoin2.result
@@ -25,3 +25,6 @@
 22,RUSSIA,null,null,null
 23,UNITED KINGDOM,null,null,null
 24,UNITED STATES,null,null,null
+null,null,null,null,null
+null,null,null,null,null
+null,null,null,null,null
diff --git a/tajo-core-tests/src/test/resources/results/TestOuterJoinQuery/testFullOuterJoin1.result b/tajo-core-tests/src/test/resources/results/TestOuterJoinQuery/testFullOuterJoin1.result
index b4f308a..8530c1f 100644
--- a/tajo-core-tests/src/test/resources/results/TestOuterJoinQuery/testFullOuterJoin1.result
+++ b/tajo-core-tests/src/test/resources/results/TestOuterJoinQuery/testFullOuterJoin1.result
@@ -5,3 +5,9 @@
 3,3
 4,null
 5,null
+null,null
+null,null
+null,null
+null,null
+null,null
+null,null
diff --git a/tajo-core-tests/src/test/resources/results/TestOuterJoinQuery/testFullOuterJoinWithEmptyTable1.result b/tajo-core-tests/src/test/resources/results/TestOuterJoinQuery/testFullOuterJoinWithEmptyTable1.result
index 4475f03..aba341c 100644
--- a/tajo-core-tests/src/test/resources/results/TestOuterJoinQuery/testFullOuterJoinWithEmptyTable1.result
+++ b/tajo-core-tests/src/test/resources/results/TestOuterJoinQuery/testFullOuterJoinWithEmptyTable1.result
@@ -5,3 +5,6 @@
 3,null
 4,null
 5,null
+null,null
+null,null
+null,null
diff --git a/tajo-core-tests/src/test/resources/results/TestOuterJoinQuery/testJoinFilterOfRowPreservedTable1.result b/tajo-core-tests/src/test/resources/results/TestOuterJoinQuery/testJoinFilterOfRowPreservedTable1.result
index 10effef..ed88f1c 100644
--- a/tajo-core-tests/src/test/resources/results/TestOuterJoinQuery/testJoinFilterOfRowPreservedTable1.result
+++ b/tajo-core-tests/src/test/resources/results/TestOuterJoinQuery/testJoinFilterOfRowPreservedTable1.result
@@ -13,3 +13,6 @@
 ASIA,2,VIETNAM,2
 EUROPE,3,null,null
 MIDDLE EAST,4,null,null
+null,null,null,null
+null,null,null,null
+null,null,null,null
diff --git a/tajo-core-tests/src/test/resources/results/TestOuterJoinQuery/testLeftOuterJoin1.result b/tajo-core-tests/src/test/resources/results/TestOuterJoinQuery/testLeftOuterJoin1.result
index 7cb5166..34484a7 100644
--- a/tajo-core-tests/src/test/resources/results/TestOuterJoinQuery/testLeftOuterJoin1.result
+++ b/tajo-core-tests/src/test/resources/results/TestOuterJoinQuery/testLeftOuterJoin1.result
@@ -5,3 +5,6 @@
 3,3,F,1993-10-14
 4,null,null,null
 5,null,null,null
+null,null,null,null
+null,null,null,null
+null,null,null,null
diff --git a/tajo-core-tests/src/test/resources/results/TestOuterJoinQuery/testLeftOuterJoin2.result b/tajo-core-tests/src/test/resources/results/TestOuterJoinQuery/testLeftOuterJoin2.result
index f0f1154..b649c45 100644
--- a/tajo-core-tests/src/test/resources/results/TestOuterJoinQuery/testLeftOuterJoin2.result
+++ b/tajo-core-tests/src/test/resources/results/TestOuterJoinQuery/testLeftOuterJoin2.result
@@ -5,3 +5,6 @@
 2,2,Customer#000000002,13,BRAZIL
 3,3,Customer#000000003,1,CANADA
 3,3,Customer#000000003,1,CANADA
+null,null,null,null,null
+null,null,null,null,null
+null,null,null,null,null
diff --git a/tajo-core-tests/src/test/resources/results/TestOuterJoinQuery/testLeftOuterJoin3.result b/tajo-core-tests/src/test/resources/results/TestOuterJoinQuery/testLeftOuterJoin3.result
index de5c595..d24ecae 100644
--- a/tajo-core-tests/src/test/resources/results/TestOuterJoinQuery/testLeftOuterJoin3.result
+++ b/tajo-core-tests/src/test/resources/results/TestOuterJoinQuery/testLeftOuterJoin3.result
@@ -7,3 +7,6 @@
 3,Customer#000000003,1,3,1993-10-14,1993-10-14,CANADA,spring green yellow purple cornsilk
 4,Customer#000000004,4,null,null,null,null,null
 5,Customer#000000005,3,null,null,null,null,null
+null,null,null,null,null,null,null,null
+null,null,null,null,null,null,null,null
+null,null,null,null,null,null,null,null
diff --git a/tajo-core-tests/src/test/resources/results/TestOuterJoinQuery/testLeftOuterJoinWithConstantExpr1.result b/tajo-core-tests/src/test/resources/results/TestOuterJoinQuery/testLeftOuterJoinWithConstantExpr1.result
index a4a0818..a3c7143 100644
--- a/tajo-core-tests/src/test/resources/results/TestOuterJoinQuery/testLeftOuterJoinWithConstantExpr1.result
+++ b/tajo-core-tests/src/test/resources/results/TestOuterJoinQuery/testLeftOuterJoinWithConstantExpr1.result
@@ -5,3 +5,6 @@
 3,3,val
 4,null,val
 5,null,val
+null,null,val
+null,null,val
+null,null,val
diff --git a/tajo-core-tests/src/test/resources/results/TestOuterJoinQuery/testLeftOuterJoinWithConstantExpr4.result b/tajo-core-tests/src/test/resources/results/TestOuterJoinQuery/testLeftOuterJoinWithConstantExpr4.result
index c8611e2..c2b4bbf 100644
--- a/tajo-core-tests/src/test/resources/results/TestOuterJoinQuery/testLeftOuterJoinWithConstantExpr4.result
+++ b/tajo-core-tests/src/test/resources/results/TestOuterJoinQuery/testLeftOuterJoinWithConstantExpr4.result
@@ -5,3 +5,6 @@
 2,null,201405,5-LOW
 3,3,201405,5-LOW
 3,3,201405,5-LOW
+null,null,201405,5-LOW
+null,null,201405,5-LOW
+null,null,201405,5-LOW
diff --git a/tajo-core-tests/src/test/resources/results/TestOuterJoinQuery/testLeftOuterJoinWithEmptyTable1.result b/tajo-core-tests/src/test/resources/results/TestOuterJoinQuery/testLeftOuterJoinWithEmptyTable1.result
index d367c07..c4cb9f6 100644
--- a/tajo-core-tests/src/test/resources/results/TestOuterJoinQuery/testLeftOuterJoinWithEmptyTable1.result
+++ b/tajo-core-tests/src/test/resources/results/TestOuterJoinQuery/testLeftOuterJoinWithEmptyTable1.result
@@ -5,3 +5,6 @@
 3,null,null,null
 4,null,null,null
 5,null,null,null
+null,null,null,null
+null,null,null,null
+null,null,null,null
diff --git a/tajo-core-tests/src/test/resources/results/TestOuterJoinQuery/testLeftOuterJoinWithEmptyTable2.result b/tajo-core-tests/src/test/resources/results/TestOuterJoinQuery/testLeftOuterJoinWithEmptyTable2.result
index cbcbac0..4398c49 100644
--- a/tajo-core-tests/src/test/resources/results/TestOuterJoinQuery/testLeftOuterJoinWithEmptyTable2.result
+++ b/tajo-core-tests/src/test/resources/results/TestOuterJoinQuery/testLeftOuterJoinWithEmptyTable2.result
@@ -5,3 +5,4 @@
 3,null,null,null
 4,null,null,null
 5,null,null,null
+null,null,null,null
diff --git a/tajo-core-tests/src/test/resources/results/TestOuterJoinQuery/testLeftOuterJoinWithEmptyTable3.result b/tajo-core-tests/src/test/resources/results/TestOuterJoinQuery/testLeftOuterJoinWithEmptyTable3.result
index e9f2528..7ed26f1 100644
--- a/tajo-core-tests/src/test/resources/results/TestOuterJoinQuery/testLeftOuterJoinWithEmptyTable3.result
+++ b/tajo-core-tests/src/test/resources/results/TestOuterJoinQuery/testLeftOuterJoinWithEmptyTable3.result
@@ -5,3 +5,4 @@
 1
 1
 1
+1
diff --git a/tajo-core-tests/src/test/resources/results/TestOuterJoinQuery/testLeftOuterJoinWithEmptyTable5.result b/tajo-core-tests/src/test/resources/results/TestOuterJoinQuery/testLeftOuterJoinWithEmptyTable5.result
index ca202cb..05bc52d 100644
--- a/tajo-core-tests/src/test/resources/results/TestOuterJoinQuery/testLeftOuterJoinWithEmptyTable5.result
+++ b/tajo-core-tests/src/test/resources/results/TestOuterJoinQuery/testLeftOuterJoinWithEmptyTable5.result
@@ -2,3 +2,4 @@
 -------------------------------
 1,null,null,null,33.333333333333336,100.0
 2,null,null,null,42.5,85.0
+null,null,null,null,null,null
diff --git a/tajo-core-tests/src/test/resources/results/TestOuterJoinQuery/testLeftOuterJoinWithNull1.result b/tajo-core-tests/src/test/resources/results/TestOuterJoinQuery/testLeftOuterJoinWithNull1.result
index 299d8c5..c7c33f5 100644
--- a/tajo-core-tests/src/test/resources/results/TestOuterJoinQuery/testLeftOuterJoinWithNull1.result
+++ b/tajo-core-tests/src/test/resources/results/TestOuterJoinQuery/testLeftOuterJoinWithNull1.result
@@ -2,3 +2,6 @@
 -------------------------------
 4,null,N/A,null
 5,null,N/A,null
+null,null,N/A,null
+null,null,N/A,null
+null,null,N/A,null
diff --git a/tajo-core-tests/src/test/resources/results/TestOuterJoinQuery/testMultipleBroadcastDataFileWithZeroLength.Hash.plan b/tajo-core-tests/src/test/resources/results/TestOuterJoinQuery/testMultipleBroadcastDataFileWithZeroLength.Hash.plan
index cad2151..a61d2b2 100644
--- a/tajo-core-tests/src/test/resources/results/TestOuterJoinQuery/testMultipleBroadcastDataFileWithZeroLength.Hash.plan
+++ b/tajo-core-tests/src/test/resources/results/TestOuterJoinQuery/testMultipleBroadcastDataFileWithZeroLength.Hash.plan
@@ -1,7 +1,7 @@
 explain
 -------------------------------
 SELECTION(3)
-  => Search Cond: default.b.n_nationkey (INT4) IS NULL
+  => Search Cond: default.b.n_nationkey (INT4) = 100
    JOIN(6)(LEFT_OUTER)
      => Join Cond: default.a.c_nationkey (INT4) = default.b.n_nationkey (INT4)
      => target list: default.a.c_acctbal (FLOAT8), default.a.c_address (TEXT), default.a.c_comment (TEXT), default.a.c_custkey (INT4), default.a.c_mktsegment (TEXT), default.a.c_name (TEXT), default.a.c_nationkey (INT4), default.a.c_phone (TEXT), default.b.n_comment (TEXT), default.b.n_name (TEXT), default.b.n_nationkey (INT4), default.b.n_regionkey (INT4)
@@ -37,7 +37,7 @@
  0: type=Broadcast, tables=default.b
 
 SELECTION(3)
-  => Search Cond: default.b.n_nationkey (INT4) IS NULL
+  => Search Cond: default.b.n_nationkey (INT4) = 100
    JOIN(6)(LEFT_OUTER)
      => Join Cond: default.a.c_nationkey (INT4) = default.b.n_nationkey (INT4)
      => target list: default.a.c_acctbal (FLOAT8), default.a.c_address (TEXT), default.a.c_comment (TEXT), default.a.c_custkey (INT4), default.a.c_mktsegment (TEXT), default.a.c_name (TEXT), default.a.c_nationkey (INT4), default.a.c_phone (TEXT), default.b.n_comment (TEXT), default.b.n_name (TEXT), default.b.n_nationkey (INT4), default.b.n_regionkey (INT4)
diff --git a/tajo-core-tests/src/test/resources/results/TestOuterJoinQuery/testMultipleBroadcastDataFileWithZeroLength.Hash_NoBroadcast.plan b/tajo-core-tests/src/test/resources/results/TestOuterJoinQuery/testMultipleBroadcastDataFileWithZeroLength.Hash_NoBroadcast.plan
index a708b1d..852ca29 100644
--- a/tajo-core-tests/src/test/resources/results/TestOuterJoinQuery/testMultipleBroadcastDataFileWithZeroLength.Hash_NoBroadcast.plan
+++ b/tajo-core-tests/src/test/resources/results/TestOuterJoinQuery/testMultipleBroadcastDataFileWithZeroLength.Hash_NoBroadcast.plan
@@ -1,7 +1,7 @@
 explain
 -------------------------------
 SELECTION(3)
-  => Search Cond: default.b.n_nationkey (INT4) IS NULL
+  => Search Cond: default.b.n_nationkey (INT4) = 100
    JOIN(6)(LEFT_OUTER)
      => Join Cond: default.a.c_nationkey (INT4) = default.b.n_nationkey (INT4)
      => target list: default.a.c_acctbal (FLOAT8), default.a.c_address (TEXT), default.a.c_comment (TEXT), default.a.c_custkey (INT4), default.a.c_mktsegment (TEXT), default.a.c_name (TEXT), default.a.c_nationkey (INT4), default.a.c_phone (TEXT), default.b.n_comment (TEXT), default.b.n_name (TEXT), default.b.n_nationkey (INT4), default.b.n_regionkey (INT4)
@@ -66,7 +66,7 @@
 [q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.b.n_nationkey (INT4), num=32)
 
 SELECTION(3)
-  => Search Cond: default.b.n_nationkey (INT4) IS NULL
+  => Search Cond: default.b.n_nationkey (INT4) = 100
    JOIN(6)(LEFT_OUTER)
      => Join Cond: default.a.c_nationkey (INT4) = default.b.n_nationkey (INT4)
      => target list: default.a.c_acctbal (FLOAT8), default.a.c_address (TEXT), default.a.c_comment (TEXT), default.a.c_custkey (INT4), default.a.c_mktsegment (TEXT), default.a.c_name (TEXT), default.a.c_nationkey (INT4), default.a.c_phone (TEXT), default.b.n_comment (TEXT), default.b.n_name (TEXT), default.b.n_nationkey (INT4), default.b.n_regionkey (INT4)
diff --git a/tajo-core-tests/src/test/resources/results/TestOuterJoinQuery/testMultipleBroadcastDataFileWithZeroLength.Sort.plan b/tajo-core-tests/src/test/resources/results/TestOuterJoinQuery/testMultipleBroadcastDataFileWithZeroLength.Sort.plan
index cad2151..a61d2b2 100644
--- a/tajo-core-tests/src/test/resources/results/TestOuterJoinQuery/testMultipleBroadcastDataFileWithZeroLength.Sort.plan
+++ b/tajo-core-tests/src/test/resources/results/TestOuterJoinQuery/testMultipleBroadcastDataFileWithZeroLength.Sort.plan
@@ -1,7 +1,7 @@
 explain
 -------------------------------
 SELECTION(3)
-  => Search Cond: default.b.n_nationkey (INT4) IS NULL
+  => Search Cond: default.b.n_nationkey (INT4) = 100
    JOIN(6)(LEFT_OUTER)
      => Join Cond: default.a.c_nationkey (INT4) = default.b.n_nationkey (INT4)
      => target list: default.a.c_acctbal (FLOAT8), default.a.c_address (TEXT), default.a.c_comment (TEXT), default.a.c_custkey (INT4), default.a.c_mktsegment (TEXT), default.a.c_name (TEXT), default.a.c_nationkey (INT4), default.a.c_phone (TEXT), default.b.n_comment (TEXT), default.b.n_name (TEXT), default.b.n_nationkey (INT4), default.b.n_regionkey (INT4)
@@ -37,7 +37,7 @@
  0: type=Broadcast, tables=default.b
 
 SELECTION(3)
-  => Search Cond: default.b.n_nationkey (INT4) IS NULL
+  => Search Cond: default.b.n_nationkey (INT4) = 100
    JOIN(6)(LEFT_OUTER)
      => Join Cond: default.a.c_nationkey (INT4) = default.b.n_nationkey (INT4)
      => target list: default.a.c_acctbal (FLOAT8), default.a.c_address (TEXT), default.a.c_comment (TEXT), default.a.c_custkey (INT4), default.a.c_mktsegment (TEXT), default.a.c_name (TEXT), default.a.c_nationkey (INT4), default.a.c_phone (TEXT), default.b.n_comment (TEXT), default.b.n_name (TEXT), default.b.n_nationkey (INT4), default.b.n_regionkey (INT4)
diff --git a/tajo-core-tests/src/test/resources/results/TestOuterJoinQuery/testMultipleBroadcastDataFileWithZeroLength.Sort_NoBroadcast.plan b/tajo-core-tests/src/test/resources/results/TestOuterJoinQuery/testMultipleBroadcastDataFileWithZeroLength.Sort_NoBroadcast.plan
index a708b1d..852ca29 100644
--- a/tajo-core-tests/src/test/resources/results/TestOuterJoinQuery/testMultipleBroadcastDataFileWithZeroLength.Sort_NoBroadcast.plan
+++ b/tajo-core-tests/src/test/resources/results/TestOuterJoinQuery/testMultipleBroadcastDataFileWithZeroLength.Sort_NoBroadcast.plan
@@ -1,7 +1,7 @@
 explain
 -------------------------------
 SELECTION(3)
-  => Search Cond: default.b.n_nationkey (INT4) IS NULL
+  => Search Cond: default.b.n_nationkey (INT4) = 100
    JOIN(6)(LEFT_OUTER)
      => Join Cond: default.a.c_nationkey (INT4) = default.b.n_nationkey (INT4)
      => target list: default.a.c_acctbal (FLOAT8), default.a.c_address (TEXT), default.a.c_comment (TEXT), default.a.c_custkey (INT4), default.a.c_mktsegment (TEXT), default.a.c_name (TEXT), default.a.c_nationkey (INT4), default.a.c_phone (TEXT), default.b.n_comment (TEXT), default.b.n_name (TEXT), default.b.n_nationkey (INT4), default.b.n_regionkey (INT4)
@@ -66,7 +66,7 @@
 [q_0000000000000_0000] 2 => 3 (type=HASH_SHUFFLE, key=default.b.n_nationkey (INT4), num=32)
 
 SELECTION(3)
-  => Search Cond: default.b.n_nationkey (INT4) IS NULL
+  => Search Cond: default.b.n_nationkey (INT4) = 100
    JOIN(6)(LEFT_OUTER)
      => Join Cond: default.a.c_nationkey (INT4) = default.b.n_nationkey (INT4)
      => target list: default.a.c_acctbal (FLOAT8), default.a.c_address (TEXT), default.a.c_comment (TEXT), default.a.c_custkey (INT4), default.a.c_mktsegment (TEXT), default.a.c_name (TEXT), default.a.c_nationkey (INT4), default.a.c_phone (TEXT), default.b.n_comment (TEXT), default.b.n_name (TEXT), default.b.n_nationkey (INT4), default.b.n_regionkey (INT4)
diff --git a/tajo-core-tests/src/test/resources/results/TestOuterJoinQuery/testRightOuterJoin1.result b/tajo-core-tests/src/test/resources/results/TestOuterJoinQuery/testRightOuterJoin1.result
index b4f308a..2e4b24b 100644
--- a/tajo-core-tests/src/test/resources/results/TestOuterJoinQuery/testRightOuterJoin1.result
+++ b/tajo-core-tests/src/test/resources/results/TestOuterJoinQuery/testRightOuterJoin1.result
@@ -5,3 +5,6 @@
 3,3
 4,null
 5,null
+null,null
+null,null
+null,null
diff --git a/tajo-core-tests/src/test/resources/results/TestOuterJoinQuery/testRightOuterJoinWithEmptyTable1.result b/tajo-core-tests/src/test/resources/results/TestOuterJoinQuery/testRightOuterJoinWithEmptyTable1.result
index 4475f03..aba341c 100644
--- a/tajo-core-tests/src/test/resources/results/TestOuterJoinQuery/testRightOuterJoinWithEmptyTable1.result
+++ b/tajo-core-tests/src/test/resources/results/TestOuterJoinQuery/testRightOuterJoinWithEmptyTable1.result
@@ -5,3 +5,6 @@
 3,null
 4,null
 5,null
+null,null
+null,null
+null,null
diff --git a/tajo-core-tests/src/test/resources/results/TestOuterJoinWithSubQuery/testLeftOuterJoinWithConstantExpr2.result b/tajo-core-tests/src/test/resources/results/TestOuterJoinWithSubQuery/testLeftOuterJoinWithConstantExpr2.result
index a4a0818..a3c7143 100644
--- a/tajo-core-tests/src/test/resources/results/TestOuterJoinWithSubQuery/testLeftOuterJoinWithConstantExpr2.result
+++ b/tajo-core-tests/src/test/resources/results/TestOuterJoinWithSubQuery/testLeftOuterJoinWithConstantExpr2.result
@@ -5,3 +5,6 @@
 3,3,val
 4,null,val
 5,null,val
+null,null,val
+null,null,val
+null,null,val
diff --git a/tajo-core-tests/src/test/resources/results/TestOuterJoinWithSubQuery/testLeftOuterJoinWithConstantExpr3.result b/tajo-core-tests/src/test/resources/results/TestOuterJoinWithSubQuery/testLeftOuterJoinWithConstantExpr3.result
index ab1487b..1210f4f 100644
--- a/tajo-core-tests/src/test/resources/results/TestOuterJoinWithSubQuery/testLeftOuterJoinWithConstantExpr3.result
+++ b/tajo-core-tests/src/test/resources/results/TestOuterJoinWithSubQuery/testLeftOuterJoinWithConstantExpr3.result
@@ -5,3 +5,6 @@
 3,123,Customer#000000003
 4,123,Customer#000000004
 5,123,Customer#000000005
+null,123,null
+null,123,null
+null,123,null
diff --git a/tajo-core-tests/src/test/resources/results/TestQueryOnSelfDescTable/testCrossJoin.result b/tajo-core-tests/src/test/resources/results/TestQueryOnSelfDescTable/testCrossJoin.result
index 52f385a..c53a4c3 100644
--- a/tajo-core-tests/src/test/resources/results/TestQueryOnSelfDescTable/testCrossJoin.result
+++ b/tajo-core-tests/src/test/resources/results/TestQueryOnSelfDescTable/testCrossJoin.result
@@ -5,18 +5,30 @@
 0,1,ven requests. deposits breach a
 0,2, unusual accounts. eve
 0,2,ly final dependencies: slyly bold 
+0,null,for null test
+0,null,for null test2
+0,null,for null test3
 19,1,egular courts above the
 19,1,ongside of the furiously brave acco
 19,1,ven requests. deposits breach a
 19,2, unusual accounts. eve
 19,2,ly final dependencies: slyly bold 
+19,null,for null test
+19,null,for null test2
+19,null,for null test3
 647,1,egular courts above the
 647,1,ongside of the furiously brave acco
 647,1,ven requests. deposits breach a
 647,2, unusual accounts. eve
 647,2,ly final dependencies: slyly bold 
+647,null,for null test
+647,null,for null test2
+647,null,for null test3
 8,1,egular courts above the
 8,1,ongside of the furiously brave acco
 8,1,ven requests. deposits breach a
 8,2, unusual accounts. eve
 8,2,ly final dependencies: slyly bold 
+8,null,for null test
+8,null,for null test2
+8,null,for null test3
diff --git a/tajo-core-tests/src/test/resources/results/TestQueryResult/testTemporalResultOnClose.result b/tajo-core-tests/src/test/resources/results/TestQueryResult/testTemporalResultOnClose.result
index 1378536..14fc054 100644
--- a/tajo-core-tests/src/test/resources/results/TestQueryResult/testTemporalResultOnClose.result
+++ b/tajo-core-tests/src/test/resources/results/TestQueryResult/testTemporalResultOnClose.result
@@ -4,4 +4,7 @@
 1,1
 2,2
 3,2
-3,3
\ No newline at end of file
+3,3
+null,null
+null,null
+null,null
\ No newline at end of file
diff --git a/tajo-core-tests/src/test/resources/results/TestSelectQuery/testCaseWhen.result b/tajo-core-tests/src/test/resources/results/TestSelectQuery/testCaseWhen.result
index 68a5572..7fd1f8d 100644
--- a/tajo-core-tests/src/test/resources/results/TestSelectQuery/testCaseWhen.result
+++ b/tajo-core-tests/src/test/resources/results/TestSelectQuery/testCaseWhen.result
@@ -4,4 +4,7 @@
 1,one
 2,two
 3,three
-4,four
\ No newline at end of file
+4,four
+null,zero
+null,zero
+null,zero
\ No newline at end of file
diff --git a/tajo-core-tests/src/test/resources/results/TestSelectQuery/testCaseWhenWithoutElse.result b/tajo-core-tests/src/test/resources/results/TestSelectQuery/testCaseWhenWithoutElse.result
index bde7df8..c4d39ed 100644
--- a/tajo-core-tests/src/test/resources/results/TestSelectQuery/testCaseWhenWithoutElse.result
+++ b/tajo-core-tests/src/test/resources/results/TestSelectQuery/testCaseWhenWithoutElse.result
@@ -4,4 +4,7 @@
 1,11
 2,12
 3,13
-4,14
\ No newline at end of file
+4,14
+null,null
+null,null
+null,null
\ No newline at end of file
diff --git a/tajo-core-tests/src/test/resources/results/TestSelectQuery/testDatabaseRef.result b/tajo-core-tests/src/test/resources/results/TestSelectQuery/testDatabaseRef.result
index 337de32..3c2104a 100644
--- a/tajo-core-tests/src/test/resources/results/TestSelectQuery/testDatabaseRef.result
+++ b/tajo-core-tests/src/test/resources/results/TestSelectQuery/testDatabaseRef.result
@@ -4,4 +4,7 @@
 1
 2
 3
-3
\ No newline at end of file
+3
+null
+null
+null
\ No newline at end of file
diff --git a/tajo-core-tests/src/test/resources/results/TestSelectQuery/testNonQualifiedNames.result b/tajo-core-tests/src/test/resources/results/TestSelectQuery/testNonQualifiedNames.result
index 1378536..14fc054 100644
--- a/tajo-core-tests/src/test/resources/results/TestSelectQuery/testNonQualifiedNames.result
+++ b/tajo-core-tests/src/test/resources/results/TestSelectQuery/testNonQualifiedNames.result
@@ -4,4 +4,7 @@
 1,1
 2,2
 3,2
-3,3
\ No newline at end of file
+3,3
+null,null
+null,null
+null,null
\ No newline at end of file
diff --git a/tajo-core-tests/src/test/resources/results/TestSelectQuery/testSelect.result b/tajo-core-tests/src/test/resources/results/TestSelectQuery/testSelect.result
index 1378536..14fc054 100644
--- a/tajo-core-tests/src/test/resources/results/TestSelectQuery/testSelect.result
+++ b/tajo-core-tests/src/test/resources/results/TestSelectQuery/testSelect.result
@@ -4,4 +4,7 @@
 1,1
 2,2
 3,2
-3,3
\ No newline at end of file
+3,3
+null,null
+null,null
+null,null
\ No newline at end of file
diff --git a/tajo-core-tests/src/test/resources/results/TestSelectQuery/testSelect2.result b/tajo-core-tests/src/test/resources/results/TestSelectQuery/testSelect2.result
index 934c2c8..9669d2a 100644
--- a/tajo-core-tests/src/test/resources/results/TestSelectQuery/testSelect2.result
+++ b/tajo-core-tests/src/test/resources/results/TestSelectQuery/testSelect2.result
@@ -4,4 +4,7 @@
 1,1,2
 2,2,4
 3,2,5
-3,3,6
\ No newline at end of file
+3,3,6
+null,null,null
+null,null,null
+null,null,null
\ No newline at end of file
diff --git a/tajo-core-tests/src/test/resources/results/TestSelectQuery/testSelect3.result b/tajo-core-tests/src/test/resources/results/TestSelectQuery/testSelect3.result
index 1530637..43a43ca 100644
--- a/tajo-core-tests/src/test/resources/results/TestSelectQuery/testSelect3.result
+++ b/tajo-core-tests/src/test/resources/results/TestSelectQuery/testSelect3.result
@@ -4,4 +4,7 @@
 2
 4
 5
-6
\ No newline at end of file
+6
+null
+null
+null
\ No newline at end of file
diff --git a/tajo-core-tests/src/test/resources/results/TestSelectQuery/testSelectAsterisk1.result b/tajo-core-tests/src/test/resources/results/TestSelectQuery/testSelectAsterisk1.result
index ec6b911..02f2c9b 100644
--- a/tajo-core-tests/src/test/resources/results/TestSelectQuery/testSelectAsterisk1.result
+++ b/tajo-core-tests/src/test/resources/results/TestSelectQuery/testSelectAsterisk1.result
@@ -4,4 +4,7 @@
 1,1,7311,2,36.0,45983.16,0.09,0.06,N,O,1996-04-12,1996-02-28,1996-04-20,TAKE BACK RETURN,MAIL,ly final dependencies: slyly bold 
 2,2,1191,1,38.0,44694.46,0.0,0.05,N,O,1997-01-28,1997-01-14,1997-02-02,TAKE BACK RETURN,RAIL,ven requests. deposits breach a
 3,2,1798,1,45.0,54058.05,0.06,0.0,R,F,1994-02-02,1994-01-04,1994-02-23,NONE,AIR,ongside of the furiously brave acco
-3,3,6540,2,49.0,46796.47,0.1,0.0,R,F,1993-11-09,1993-12-20,1993-11-24,TAKE BACK RETURN,RAIL, unusual accounts. eve
\ No newline at end of file
+3,3,6540,2,49.0,46796.47,0.1,0.0,R,F,1993-11-09,1993-12-20,1993-11-24,TAKE BACK RETURN,RAIL, unusual accounts. eve
+null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,for null test
+null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,for null test2
+null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,for null test3
\ No newline at end of file
diff --git a/tajo-core-tests/src/test/resources/results/TestSelectQuery/testSelectAsterisk4.result b/tajo-core-tests/src/test/resources/results/TestSelectQuery/testSelectAsterisk4.result
index 9c6bcb9..78a204d 100644
--- a/tajo-core-tests/src/test/resources/results/TestSelectQuery/testSelectAsterisk4.result
+++ b/tajo-core-tests/src/test/resources/results/TestSelectQuery/testSelectAsterisk4.result
@@ -4,4 +4,7 @@
 34,4138.4844,1,1,7311,2,36.0,45983.16,0.09,0.06,N,O,1996-04-12,1996-02-28,1996-04-20,TAKE BACK RETURN,MAIL,ly final dependencies: slyly bold ,0.6
 31,0.0,2,2,1191,1,38.0,44694.46,0.0,0.05,N,O,1997-01-28,1997-01-14,1997-02-02,TAKE BACK RETURN,RAIL,ven requests. deposits breach a,0.5
 35,3243.483,3,2,1798,1,45.0,54058.05,0.06,0.0,R,F,1994-02-02,1994-01-04,1994-02-23,NONE,AIR,ongside of the furiously brave acco,0.0
-22,4679.647,3,3,6540,2,49.0,46796.47,0.1,0.0,R,F,1993-11-09,1993-12-20,1993-11-24,TAKE BACK RETURN,RAIL, unusual accounts. eve,0.0
\ No newline at end of file
+22,4679.647,3,3,6540,2,49.0,46796.47,0.1,0.0,R,F,1993-11-09,1993-12-20,1993-11-24,TAKE BACK RETURN,RAIL, unusual accounts. eve,0.0
+13,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,for null test,null
+14,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,for null test2,null
+14,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,for null test3,null
\ No newline at end of file
diff --git a/tajo-core-tests/src/test/resources/results/TestSelectQuery/testSelectColumnAlias1.result b/tajo-core-tests/src/test/resources/results/TestSelectQuery/testSelectColumnAlias1.result
index eecb82a..d6d7b29 100644
--- a/tajo-core-tests/src/test/resources/results/TestSelectQuery/testSelectColumnAlias1.result
+++ b/tajo-core-tests/src/test/resources/results/TestSelectQuery/testSelectColumnAlias1.result
@@ -4,4 +4,7 @@
 1,2
 2,3
 3,4
-3,4
\ No newline at end of file
+3,4
+null,null
+null,null
+null,null
\ No newline at end of file
diff --git a/tajo-core-tests/src/test/resources/results/TestSelectQuery/testSelectColumnAliasExistingInRelation2.result b/tajo-core-tests/src/test/resources/results/TestSelectQuery/testSelectColumnAliasExistingInRelation2.result
index f0cf700..c162803 100644
--- a/tajo-core-tests/src/test/resources/results/TestSelectQuery/testSelectColumnAliasExistingInRelation2.result
+++ b/tajo-core-tests/src/test/resources/results/TestSelectQuery/testSelectColumnAliasExistingInRelation2.result
@@ -4,4 +4,7 @@
 -3
 -2
 -1
--1
\ No newline at end of file
+-1
+null
+null
+null
\ No newline at end of file
diff --git a/tajo-core-tests/src/test/resources/results/TestSelectQuery/testSelectDistinct.result b/tajo-core-tests/src/test/resources/results/TestSelectQuery/testSelectDistinct.result
index 75e7d72..8f208d1 100644
--- a/tajo-core-tests/src/test/resources/results/TestSelectQuery/testSelectDistinct.result
+++ b/tajo-core-tests/src/test/resources/results/TestSelectQuery/testSelectDistinct.result
@@ -4,4 +4,5 @@
 1,2
 2,1
 3,1
-3,2
\ No newline at end of file
+3,2
+null,null
\ No newline at end of file
diff --git a/tajo-core-tests/src/test/resources/results/TestSelectQuery/testSimpleQuery.result b/tajo-core-tests/src/test/resources/results/TestSelectQuery/testSimpleQuery.result
index ec6b911..02f2c9b 100644
--- a/tajo-core-tests/src/test/resources/results/TestSelectQuery/testSimpleQuery.result
+++ b/tajo-core-tests/src/test/resources/results/TestSelectQuery/testSimpleQuery.result
@@ -4,4 +4,7 @@
 1,1,7311,2,36.0,45983.16,0.09,0.06,N,O,1996-04-12,1996-02-28,1996-04-20,TAKE BACK RETURN,MAIL,ly final dependencies: slyly bold 
 2,2,1191,1,38.0,44694.46,0.0,0.05,N,O,1997-01-28,1997-01-14,1997-02-02,TAKE BACK RETURN,RAIL,ven requests. deposits breach a
 3,2,1798,1,45.0,54058.05,0.06,0.0,R,F,1994-02-02,1994-01-04,1994-02-23,NONE,AIR,ongside of the furiously brave acco
-3,3,6540,2,49.0,46796.47,0.1,0.0,R,F,1993-11-09,1993-12-20,1993-11-24,TAKE BACK RETURN,RAIL, unusual accounts. eve
\ No newline at end of file
+3,3,6540,2,49.0,46796.47,0.1,0.0,R,F,1993-11-09,1993-12-20,1993-11-24,TAKE BACK RETURN,RAIL, unusual accounts. eve
+null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,for null test
+null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,for null test2
+null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,for null test3
\ No newline at end of file
diff --git a/tajo-core-tests/src/test/resources/results/TestSimpleQuery/testNoWhere.result b/tajo-core-tests/src/test/resources/results/TestSimpleQuery/testNoWhere.result
index ba5c0ea..a8a1dfc 100644
--- a/tajo-core-tests/src/test/resources/results/TestSimpleQuery/testNoWhere.result
+++ b/tajo-core-tests/src/test/resources/results/TestSimpleQuery/testNoWhere.result
@@ -4,4 +4,7 @@
 N,1,1,36.0
 N,2,2,38.0
 R,3,2,45.0
-R,3,3,49.0
\ No newline at end of file
+R,3,3,49.0
+null,null,null,null
+null,null,null,null
+null,null,null,null
\ No newline at end of file
diff --git a/tajo-core-tests/src/test/resources/results/TestSortQuery/testAsterisk.result b/tajo-core-tests/src/test/resources/results/TestSortQuery/testAsterisk.result
index f2e3c84..7d6643b 100644
--- a/tajo-core-tests/src/test/resources/results/TestSortQuery/testAsterisk.result
+++ b/tajo-core-tests/src/test/resources/results/TestSortQuery/testAsterisk.result
@@ -1,5 +1,8 @@
 l_orderkey,l_partkey,l_suppkey,l_linenumber,l_quantity,l_extendedprice,l_discount,l_tax,l_returnflag,l_linestatus,l_shipdate,l_commitdate,l_receiptdate,l_shipinstruct,l_shipmode,l_comment,len_comment
 -------------------------------
+null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,for null test,13
+null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,for null test2,14
+null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,for null test3,14
 3,3,6540,2,49.0,46796.47,0.1,0.0,R,F,1993-11-09,1993-12-20,1993-11-24,TAKE BACK RETURN,RAIL, unusual accounts. eve,22
 1,1,7706,1,17.0,21168.23,0.04,0.02,N,O,1996-03-13,1996-02-12,1996-03-22,DELIVER IN PERSON,TRUCK,egular courts above the,23
 2,2,1191,1,38.0,44694.46,0.0,0.05,N,O,1997-01-28,1997-01-14,1997-02-02,TAKE BACK RETURN,RAIL,ven requests. deposits breach a,31
diff --git a/tajo-core-tests/src/test/resources/results/TestSortQuery/testSort.result b/tajo-core-tests/src/test/resources/results/TestSortQuery/testSort.result
index a5e9af3..6e662f5 100644
--- a/tajo-core-tests/src/test/resources/results/TestSortQuery/testSort.result
+++ b/tajo-core-tests/src/test/resources/results/TestSortQuery/testSort.result
@@ -4,4 +4,7 @@
 2,1
 1,2
 1,3
-2,3
\ No newline at end of file
+2,3
+null,null
+null,null
+null,null
\ No newline at end of file
diff --git a/tajo-core-tests/src/test/resources/results/TestSortQuery/testSortAfterGroupby.result b/tajo-core-tests/src/test/resources/results/TestSortQuery/testSortAfterGroupby.result
index be89a9f..77a769e 100644
--- a/tajo-core-tests/src/test/resources/results/TestSortQuery/testSortAfterGroupby.result
+++ b/tajo-core-tests/src/test/resources/results/TestSortQuery/testSortAfterGroupby.result
@@ -2,4 +2,5 @@
 -------------------------------
 36.0,1
 38.0,2
-49.0,3
\ No newline at end of file
+49.0,3
+null,null
\ No newline at end of file
diff --git a/tajo-core-tests/src/test/resources/results/TestSortQuery/testSortAfterGroupbyWithAlias.result b/tajo-core-tests/src/test/resources/results/TestSortQuery/testSortAfterGroupbyWithAlias.result
index bc0bf1b..96860f8 100644
--- a/tajo-core-tests/src/test/resources/results/TestSortQuery/testSortAfterGroupbyWithAlias.result
+++ b/tajo-core-tests/src/test/resources/results/TestSortQuery/testSortAfterGroupbyWithAlias.result
@@ -2,4 +2,5 @@
 -------------------------------
 36.0,1
 38.0,2
-49.0,3
\ No newline at end of file
+49.0,3
+null,null
\ No newline at end of file
diff --git a/tajo-core-tests/src/test/resources/results/TestSortQuery/testSortDesc.result b/tajo-core-tests/src/test/resources/results/TestSortQuery/testSortDesc.result
index 6450adf..889dbe6 100644
--- a/tajo-core-tests/src/test/resources/results/TestSortQuery/testSortDesc.result
+++ b/tajo-core-tests/src/test/resources/results/TestSortQuery/testSortDesc.result
@@ -1,5 +1,8 @@
 l_linenumber,l_orderkey
 -------------------------------
+null,null
+null,null
+null,null
 1,3
 2,3
 1,2
diff --git a/tajo-core-tests/src/test/resources/results/TestSortQuery/testSortWithAlias1.result b/tajo-core-tests/src/test/resources/results/TestSortQuery/testSortWithAlias1.result
index 81bb293..e14f042 100644
--- a/tajo-core-tests/src/test/resources/results/TestSortQuery/testSortWithAlias1.result
+++ b/tajo-core-tests/src/test/resources/results/TestSortQuery/testSortWithAlias1.result
@@ -4,4 +4,7 @@
 2,1
 1,2
 1,3
-2,3
\ No newline at end of file
+2,3
+null,null
+null,null
+null,null
\ No newline at end of file
diff --git a/tajo-core-tests/src/test/resources/results/TestSortQuery/testSortWithAlias2.result b/tajo-core-tests/src/test/resources/results/TestSortQuery/testSortWithAlias2.result
index 32c93ed..fe5771a 100644
--- a/tajo-core-tests/src/test/resources/results/TestSortQuery/testSortWithAlias2.result
+++ b/tajo-core-tests/src/test/resources/results/TestSortQuery/testSortWithAlias2.result
@@ -2,4 +2,5 @@
 -------------------------------
 1,2
 2,1
-3,2
\ No newline at end of file
+3,2
+null,0
\ No newline at end of file
diff --git a/tajo-core-tests/src/test/resources/results/TestSortQuery/testSortWithAliasButOriginalName.result b/tajo-core-tests/src/test/resources/results/TestSortQuery/testSortWithAliasButOriginalName.result
index 81bb293..e14f042 100644
--- a/tajo-core-tests/src/test/resources/results/TestSortQuery/testSortWithAliasButOriginalName.result
+++ b/tajo-core-tests/src/test/resources/results/TestSortQuery/testSortWithAliasButOriginalName.result
@@ -4,4 +4,7 @@
 2,1
 1,2
 1,3
-2,3
\ No newline at end of file
+2,3
+null,null
+null,null
+null,null
\ No newline at end of file
diff --git a/tajo-core-tests/src/test/resources/results/TestSortQuery/testSortWithConstKeys.result b/tajo-core-tests/src/test/resources/results/TestSortQuery/testSortWithConstKeys.result
index bfc709f..1ff1fd9 100644
--- a/tajo-core-tests/src/test/resources/results/TestSortQuery/testSortWithConstKeys.result
+++ b/tajo-core-tests/src/test/resources/results/TestSortQuery/testSortWithConstKeys.result
@@ -4,4 +4,7 @@
 1,2,1,2
 2,1,1,2
 3,1,1,2
-3,2,1,2
\ No newline at end of file
+3,2,1,2
+null,null,1,2
+null,null,1,2
+null,null,1,2
\ No newline at end of file
diff --git a/tajo-core-tests/src/test/resources/results/TestSortQuery/testSortWithExpr1.result b/tajo-core-tests/src/test/resources/results/TestSortQuery/testSortWithExpr1.result
index 81bb293..e14f042 100644
--- a/tajo-core-tests/src/test/resources/results/TestSortQuery/testSortWithExpr1.result
+++ b/tajo-core-tests/src/test/resources/results/TestSortQuery/testSortWithExpr1.result
@@ -4,4 +4,7 @@
 2,1
 1,2
 1,3
-2,3
\ No newline at end of file
+2,3
+null,null
+null,null
+null,null
\ No newline at end of file
diff --git a/tajo-core-tests/src/test/resources/results/TestSortQuery/testSortWithExpr2.result b/tajo-core-tests/src/test/resources/results/TestSortQuery/testSortWithExpr2.result
index 0d447c8..2932f6a 100644
--- a/tajo-core-tests/src/test/resources/results/TestSortQuery/testSortWithExpr2.result
+++ b/tajo-core-tests/src/test/resources/results/TestSortQuery/testSortWithExpr2.result
@@ -4,4 +4,7 @@
 1,2
 1,3
 2,1
-2,3
\ No newline at end of file
+2,3
+null,null
+null,null
+null,null
\ No newline at end of file
diff --git a/tajo-core-tests/src/test/resources/results/TestSortQuery/testSortWithJson.result b/tajo-core-tests/src/test/resources/results/TestSortQuery/testSortWithJson.result
index bc0bf1b..96860f8 100644
--- a/tajo-core-tests/src/test/resources/results/TestSortQuery/testSortWithJson.result
+++ b/tajo-core-tests/src/test/resources/results/TestSortQuery/testSortWithJson.result
@@ -2,4 +2,5 @@
 -------------------------------
 36.0,1
 38.0,2
-49.0,3
\ No newline at end of file
+49.0,3
+null,null
\ No newline at end of file
diff --git a/tajo-core-tests/src/test/resources/results/TestSortQuery/testSubQuerySortAfterGroupMultiBlocks.result b/tajo-core-tests/src/test/resources/results/TestSortQuery/testSubQuerySortAfterGroupMultiBlocks.result
index 2b63526..932f0ec 100644
--- a/tajo-core-tests/src/test/resources/results/TestSortQuery/testSubQuerySortAfterGroupMultiBlocks.result
+++ b/tajo-core-tests/src/test/resources/results/TestSortQuery/testSubQuerySortAfterGroupMultiBlocks.result
@@ -3,3 +3,4 @@
 1,4985.2136
 2,0.0
 3,7923.13
+null,null
diff --git a/tajo-core-tests/src/test/resources/results/TestSortQuery/testTopK.result b/tajo-core-tests/src/test/resources/results/TestSortQuery/testTopK.result
index df40678..17e199c 100644
--- a/tajo-core-tests/src/test/resources/results/TestSortQuery/testTopK.result
+++ b/tajo-core-tests/src/test/resources/results/TestSortQuery/testTopK.result
@@ -1,5 +1,7 @@
 l_orderkey,l_linenumber
 -------------------------------
+null,null
+null,null
+null,null
 3,1
-3,2
-2,1
\ No newline at end of file
+3,2
\ No newline at end of file
diff --git a/tajo-core-tests/src/test/resources/results/TestSortQuery/testTopkWithJson.result b/tajo-core-tests/src/test/resources/results/TestSortQuery/testTopkWithJson.result
index df40678..17e199c 100644
--- a/tajo-core-tests/src/test/resources/results/TestSortQuery/testTopkWithJson.result
+++ b/tajo-core-tests/src/test/resources/results/TestSortQuery/testTopkWithJson.result
@@ -1,5 +1,7 @@
 l_orderkey,l_linenumber
 -------------------------------
+null,null
+null,null
+null,null
 3,1
-3,2
-2,1
\ No newline at end of file
+3,2
\ No newline at end of file
diff --git a/tajo-core-tests/src/test/resources/results/TestTPCH/testQ1OrderBy.result b/tajo-core-tests/src/test/resources/results/TestTPCH/testQ1OrderBy.result
index a34b514..6d74ba8 100644
--- a/tajo-core-tests/src/test/resources/results/TestTPCH/testQ1OrderBy.result
+++ b/tajo-core-tests/src/test/resources/results/TestTPCH/testQ1OrderBy.result
@@ -2,3 +2,4 @@
 -------------------------------
 N,O,3
 R,F,2
+null,null,3
diff --git a/tajo-core-tests/src/test/resources/results/TestTablePartitions/case10.result b/tajo-core-tests/src/test/resources/results/TestTablePartitions/case10.result
index a6be56d..9050b9f 100644
--- a/tajo-core-tests/src/test/resources/results/TestTablePartitions/case10.result
+++ b/tajo-core-tests/src/test/resources/results/TestTablePartitions/case10.result
@@ -4,4 +4,7 @@
 1,36.0,-36.0
 2,38.0,-38.0
 3,45.0,-45.0
-3,49.0,-49.0
\ No newline at end of file
+3,49.0,-49.0
+null,null,null
+null,null,null
+null,null,null
\ No newline at end of file
diff --git a/tajo-core-tests/src/test/resources/results/TestTablePartitions/case11.result b/tajo-core-tests/src/test/resources/results/TestTablePartitions/case11.result
index 95750fd..31ea549 100644
--- a/tajo-core-tests/src/test/resources/results/TestTablePartitions/case11.result
+++ b/tajo-core-tests/src/test/resources/results/TestTablePartitions/case11.result
@@ -4,4 +4,7 @@
 36.0
 38.0
 45.0
-49.0
\ No newline at end of file
+49.0
+null
+null
+null
\ No newline at end of file
diff --git a/tajo-core-tests/src/test/resources/results/TestTablePartitions/case12.result b/tajo-core-tests/src/test/resources/results/TestTablePartitions/case12.result
index ac0f9b71..b988915 100644
--- a/tajo-core-tests/src/test/resources/results/TestTablePartitions/case12.result
+++ b/tajo-core-tests/src/test/resources/results/TestTablePartitions/case12.result
@@ -1,5 +1,6 @@
 key_alias,cnt
 -------------------------------
+null,3
 49.0,1
 45.0,1
 38.0,1
diff --git a/tajo-core-tests/src/test/resources/results/TestTablePartitions/case13.result b/tajo-core-tests/src/test/resources/results/TestTablePartitions/case13.result
index 5c92e79..fcabebc 100644
--- a/tajo-core-tests/src/test/resources/results/TestTablePartitions/case13.result
+++ b/tajo-core-tests/src/test/resources/results/TestTablePartitions/case13.result
@@ -1,5 +1,6 @@
 key,cnt
 -------------------------------
+null,3
 49.0,1
 45.0,1
 38.0,1
diff --git a/tajo-core-tests/src/test/resources/results/TestTablePartitions/case4.result b/tajo-core-tests/src/test/resources/results/TestTablePartitions/case4.result
index bcf2197..88d7b15 100644
--- a/tajo-core-tests/src/test/resources/results/TestTablePartitions/case4.result
+++ b/tajo-core-tests/src/test/resources/results/TestTablePartitions/case4.result
@@ -4,4 +4,7 @@
 1296.0
 1444.0
 2025.0
-2401.0
\ No newline at end of file
+2401.0
+null
+null
+null
\ No newline at end of file
diff --git a/tajo-core-tests/src/test/resources/results/TestTablePartitions/case5.result b/tajo-core-tests/src/test/resources/results/TestTablePartitions/case5.result
index 2c2918d..1f38c92 100644
--- a/tajo-core-tests/src/test/resources/results/TestTablePartitions/case5.result
+++ b/tajo-core-tests/src/test/resources/results/TestTablePartitions/case5.result
@@ -4,4 +4,7 @@
 1369
 1521
 2116
-2500
\ No newline at end of file
+2500
+null
+null
+null
\ No newline at end of file
diff --git a/tajo-core-tests/src/test/resources/results/TestTablePartitions/case6.result b/tajo-core-tests/src/test/resources/results/TestTablePartitions/case6.result
index 3c49070..4ec9438 100644
--- a/tajo-core-tests/src/test/resources/results/TestTablePartitions/case6.result
+++ b/tajo-core-tests/src/test/resources/results/TestTablePartitions/case6.result
@@ -1,5 +1,8 @@
 col1,key
 -------------------------------
+null,null
+null,null
+null,null
 3,49.0
 3,45.0
 2,38.0
diff --git a/tajo-core-tests/src/test/resources/results/TestTablePartitions/case8.result b/tajo-core-tests/src/test/resources/results/TestTablePartitions/case8.result
index cb51cd6..668497e 100644
--- a/tajo-core-tests/src/test/resources/results/TestTablePartitions/case8.result
+++ b/tajo-core-tests/src/test/resources/results/TestTablePartitions/case8.result
@@ -4,4 +4,7 @@
 1,36.0
 2,38.0
 3,45.0
-3,49.0
\ No newline at end of file
+3,49.0
+null,null
+null,null
+null,null
\ No newline at end of file
diff --git a/tajo-core-tests/src/test/resources/results/TestTablePartitions/case9.result b/tajo-core-tests/src/test/resources/results/TestTablePartitions/case9.result
index ebfaad2..49c80fe 100644
--- a/tajo-core-tests/src/test/resources/results/TestTablePartitions/case9.result
+++ b/tajo-core-tests/src/test/resources/results/TestTablePartitions/case9.result
@@ -4,4 +4,7 @@
 1,36
 2,38
 3,45
-3,49
\ No newline at end of file
+3,49
+null,null
+null,null
+null,null
\ No newline at end of file
diff --git a/tajo-core-tests/src/test/resources/results/TestTablePartitions/testColumnPartitionedTableWithSmallerExpressions5.result b/tajo-core-tests/src/test/resources/results/TestTablePartitions/testColumnPartitionedTableWithSmallerExpressions5.result
index f972753..33b689e 100644
--- a/tajo-core-tests/src/test/resources/results/TestTablePartitions/testColumnPartitionedTableWithSmallerExpressions5.result
+++ b/tajo-core-tests/src/test/resources/results/TestTablePartitions/testColumnPartitionedTableWithSmallerExpressions5.result
@@ -1,7 +1,10 @@
 col1,col2
 -------------------------------
-N,__TAJO_DEFAULT_PARTITION__
-N,__TAJO_DEFAULT_PARTITION__
-N,__TAJO_DEFAULT_PARTITION__
-R,__TAJO_DEFAULT_PARTITION__
-R,__TAJO_DEFAULT_PARTITION__
\ No newline at end of file
+N,null
+N,null
+N,null
+R,null
+R,null
+null,null
+null,null
+null,null
\ No newline at end of file
diff --git a/tajo-core-tests/src/test/resources/results/TestTablePartitions/testColumnPartitionedTableWithSmallerExpressions6.result b/tajo-core-tests/src/test/resources/results/TestTablePartitions/testColumnPartitionedTableWithSmallerExpressions6.result
index 6b8e2f1..07e3756 100644
--- a/tajo-core-tests/src/test/resources/results/TestTablePartitions/testColumnPartitionedTableWithSmallerExpressions6.result
+++ b/tajo-core-tests/src/test/resources/results/TestTablePartitions/testColumnPartitionedTableWithSmallerExpressions6.result
@@ -1,4 +1,4 @@
 col1,col2
 -------------------------------
-N,__TAJO_DEFAULT_PARTITION__
-N,__TAJO_DEFAULT_PARTITION__
\ No newline at end of file
+N,null
+N,null
\ No newline at end of file
diff --git a/tajo-core-tests/src/test/resources/results/TestTableSubQuery/testTableSubquery1.result b/tajo-core-tests/src/test/resources/results/TestTableSubQuery/testTableSubquery1.result
index 337de32..3c2104a 100644
--- a/tajo-core-tests/src/test/resources/results/TestTableSubQuery/testTableSubquery1.result
+++ b/tajo-core-tests/src/test/resources/results/TestTableSubQuery/testTableSubquery1.result
@@ -4,4 +4,7 @@
 1
 2
 3
-3
\ No newline at end of file
+3
+null
+null
+null
\ No newline at end of file
diff --git a/tajo-core-tests/src/test/resources/results/TestTajoCli/testDescTable1.result b/tajo-core-tests/src/test/resources/results/TestTajoCli/testDescTable1.result
index a1baa09..b8deaf2 100644
--- a/tajo-core-tests/src/test/resources/results/TestTajoCli/testDescTable1.result
+++ b/tajo-core-tests/src/test/resources/results/TestTajoCli/testDescTable1.result
@@ -7,6 +7,7 @@
 volume: 0 B
 Options:
 	'timezone'='${table.timezone}'
+	'text.null'='\\N'
 	'text.delimiter'='|'
 
 schema: 
@@ -22,6 +23,7 @@
 volume: 0 B
 Options:
 	'timezone'='${table.timezone}'
+	'text.null'='\\N'
 	'text.delimiter'='|'
 
 schema: 
diff --git a/tajo-core-tests/src/test/resources/results/TestTajoCli/testDescTable2.result b/tajo-core-tests/src/test/resources/results/TestTajoCli/testDescTable2.result
index 9c0abbf..00fd8a1 100644
--- a/tajo-core-tests/src/test/resources/results/TestTajoCli/testDescTable2.result
+++ b/tajo-core-tests/src/test/resources/results/TestTajoCli/testDescTable2.result
@@ -7,6 +7,7 @@
 volume: 0 B
 Options:
 	'timezone'='${table.timezone}'
+	'text.null'='\\N'
 	'text.delimiter'='|'
 
 schema: 
@@ -22,6 +23,7 @@
 volume: 0 B
 Options:
 	'timezone'='${table.timezone}'
+	'text.null'='\\N'
 	'text.delimiter'='|'
 
 schema: 
diff --git a/tajo-core-tests/src/test/resources/results/TestTajoCli/testDescTableForNestedSchema.result b/tajo-core-tests/src/test/resources/results/TestTajoCli/testDescTableForNestedSchema.result
index 6337edf..f06df4b 100644
--- a/tajo-core-tests/src/test/resources/results/TestTajoCli/testDescTableForNestedSchema.result
+++ b/tajo-core-tests/src/test/resources/results/TestTajoCli/testDescTableForNestedSchema.result
@@ -7,6 +7,7 @@
 volume: 0 B
 Options:
 	'timezone'='${table.timezone}'
+	'text.null'='\\N'
 	'text.delimiter'='|'
 
 schema: 
@@ -23,6 +24,7 @@
 volume: 0 B
 Options:
 	'timezone'='${table.timezone}'
+	'text.null'='\\N'
 	'text.delimiter'='|'
 
 schema: 
diff --git a/tajo-core-tests/src/test/resources/results/TestTajoCli/testSelectResultWithNullFalse.result b/tajo-core-tests/src/test/resources/results/TestTajoCli/testSelectResultWithNullFalse.result
index 6169092..4e01e4b 100644
--- a/tajo-core-tests/src/test/resources/results/TestTajoCli/testSelectResultWithNullFalse.result
+++ b/tajo-core-tests/src/test/resources/results/TestTajoCli/testSelectResultWithNullFalse.result
@@ -3,6 +3,12 @@
 1,  1,  O
 2,  2,  O
 3,  3,  F
-4,  ,  
-5,  ,  
-(5 rows, , 127 B selected)
+4,  testnull,  testnull
+5,  testnull,  testnull
+testnull,  testnull,  testnull
+testnull,  testnull,  testnull
+testnull,  testnull,  testnull
+testnull,  testnull,  testnull
+testnull,  testnull,  testnull
+testnull,  testnull,  testnull
+(11 rows, , 223 B selected)
\ No newline at end of file
diff --git a/tajo-core-tests/src/test/resources/results/TestTajoCli/testSelectResultWithNullTrue.result b/tajo-core-tests/src/test/resources/results/TestTajoCli/testSelectResultWithNullTrue.result
index dfc920b..4e01e4b 100644
--- a/tajo-core-tests/src/test/resources/results/TestTajoCli/testSelectResultWithNullTrue.result
+++ b/tajo-core-tests/src/test/resources/results/TestTajoCli/testSelectResultWithNullTrue.result
@@ -5,4 +5,10 @@
 3,  3,  F
 4,  testnull,  testnull
 5,  testnull,  testnull
-(5 rows, , 127 B selected)
+testnull,  testnull,  testnull
+testnull,  testnull,  testnull
+testnull,  testnull,  testnull
+testnull,  testnull,  testnull
+testnull,  testnull,  testnull
+testnull,  testnull,  testnull
+(11 rows, , 223 B selected)
\ No newline at end of file
diff --git a/tajo-core-tests/src/test/resources/results/TestTajoCli/testSelectResultWithNullTrueDeprecated.result b/tajo-core-tests/src/test/resources/results/TestTajoCli/testSelectResultWithNullTrueDeprecated.result
index 302d80c..4e01e4b 100644
--- a/tajo-core-tests/src/test/resources/results/TestTajoCli/testSelectResultWithNullTrueDeprecated.result
+++ b/tajo-core-tests/src/test/resources/results/TestTajoCli/testSelectResultWithNullTrueDeprecated.result
@@ -5,4 +5,10 @@
 3,  3,  F
 4,  testnull,  testnull
 5,  testnull,  testnull
-(5 rows, , 127 B selected)
\ No newline at end of file
+testnull,  testnull,  testnull
+testnull,  testnull,  testnull
+testnull,  testnull,  testnull
+testnull,  testnull,  testnull
+testnull,  testnull,  testnull
+testnull,  testnull,  testnull
+(11 rows, , 223 B selected)
\ No newline at end of file
diff --git a/tajo-core-tests/src/test/resources/results/TestTajoCli/testStopWhenError.result b/tajo-core-tests/src/test/resources/results/TestTajoCli/testStopWhenError.result
index d480b2b..f3977d5 100644
--- a/tajo-core-tests/src/test/resources/results/TestTajoCli/testStopWhenError.result
+++ b/tajo-core-tests/src/test/resources/results/TestTajoCli/testStopWhenError.result
@@ -1,4 +1,4 @@
 ?count
 -------------------------------
-5
+8
 (1 rows, , 16 B selected)
\ No newline at end of file
diff --git a/tajo-core-tests/src/test/resources/results/TestTajoCli/testStopWhenErrorDeprecated.result b/tajo-core-tests/src/test/resources/results/TestTajoCli/testStopWhenErrorDeprecated.result
index d480b2b..f3977d5 100644
--- a/tajo-core-tests/src/test/resources/results/TestTajoCli/testStopWhenErrorDeprecated.result
+++ b/tajo-core-tests/src/test/resources/results/TestTajoCli/testStopWhenErrorDeprecated.result
@@ -1,4 +1,4 @@
 ?count
 -------------------------------
-5
+8
 (1 rows, , 16 B selected)
\ No newline at end of file
diff --git a/tajo-core-tests/src/test/resources/results/TestTajoClientV2/testExecuteQueryType1.result b/tajo-core-tests/src/test/resources/results/TestTajoClientV2/testExecuteQueryType1.result
index ec6b911..02f2c9b 100644
--- a/tajo-core-tests/src/test/resources/results/TestTajoClientV2/testExecuteQueryType1.result
+++ b/tajo-core-tests/src/test/resources/results/TestTajoClientV2/testExecuteQueryType1.result
@@ -4,4 +4,7 @@
 1,1,7311,2,36.0,45983.16,0.09,0.06,N,O,1996-04-12,1996-02-28,1996-04-20,TAKE BACK RETURN,MAIL,ly final dependencies: slyly bold 
 2,2,1191,1,38.0,44694.46,0.0,0.05,N,O,1997-01-28,1997-01-14,1997-02-02,TAKE BACK RETURN,RAIL,ven requests. deposits breach a
 3,2,1798,1,45.0,54058.05,0.06,0.0,R,F,1994-02-02,1994-01-04,1994-02-23,NONE,AIR,ongside of the furiously brave acco
-3,3,6540,2,49.0,46796.47,0.1,0.0,R,F,1993-11-09,1993-12-20,1993-11-24,TAKE BACK RETURN,RAIL, unusual accounts. eve
\ No newline at end of file
+3,3,6540,2,49.0,46796.47,0.1,0.0,R,F,1993-11-09,1993-12-20,1993-11-24,TAKE BACK RETURN,RAIL, unusual accounts. eve
+null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,for null test
+null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,for null test2
+null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,for null test3
\ No newline at end of file
diff --git a/tajo-core-tests/src/test/resources/results/TestTajoDump/testDump1.result b/tajo-core-tests/src/test/resources/results/TestTajoDump/testDump1.result
index 328b852..741ec4f 100644
--- a/tajo-core-tests/src/test/resources/results/TestTajoDump/testDump1.result
+++ b/tajo-core-tests/src/test/resources/results/TestTajoDump/testDump1.result
@@ -12,5 +12,5 @@
 --
 -- Name: "TestTajoDump"."TableName1"; Type: TABLE; Storage: TEXT
 --
-CREATE TABLE "TestTajoDump"."TableName1" ("Age" INT4, "FirstName" TEXT, lastname TEXT) USING TEXT WITH ('text.delimiter'='|', 'timezone'='${table.timezone}');
+CREATE TABLE "TestTajoDump"."TableName1" ("Age" INT4, "FirstName" TEXT, lastname TEXT) USING TEXT WITH ('text.delimiter'='|', 'text.null'='\\N', 'timezone'='${table.timezone}');
 
diff --git a/tajo-core-tests/src/test/resources/results/TestTajoDump/testDump2.result b/tajo-core-tests/src/test/resources/results/TestTajoDump/testDump2.result
index d84e830..690e8aa 100644
--- a/tajo-core-tests/src/test/resources/results/TestTajoDump/testDump2.result
+++ b/tajo-core-tests/src/test/resources/results/TestTajoDump/testDump2.result
@@ -12,5 +12,5 @@
 --
 -- Name: "TestTajoDump"."TableName2"; Type: TABLE; Storage: TEXT
 --
-CREATE TABLE "TestTajoDump"."TableName2" ("Age" INT4, "Name" RECORD ("FirstName" TEXT, lastname TEXT)) USING TEXT WITH ('text.delimiter'='|', 'timezone'='${table.timezone}');
+CREATE TABLE "TestTajoDump"."TableName2" ("Age" INT4, "Name" RECORD ("FirstName" TEXT, lastname TEXT)) USING TEXT WITH ('text.delimiter'='|', 'text.null'='\\N', 'timezone'='${table.timezone}');
 
diff --git a/tajo-core-tests/src/test/resources/results/TestTajoDump/testDump3.result b/tajo-core-tests/src/test/resources/results/TestTajoDump/testDump3.result
index b3cd13f..e99050d 100644
--- a/tajo-core-tests/src/test/resources/results/TestTajoDump/testDump3.result
+++ b/tajo-core-tests/src/test/resources/results/TestTajoDump/testDump3.result
@@ -12,7 +12,7 @@
 --
 -- Name: "TestTajoDump"."TableName1"; Type: TABLE; Storage: TEXT
 --
-CREATE TABLE "TestTajoDump"."TableName1" ("Age" INT4, "FirstName" TEXT, lastname TEXT) USING TEXT WITH ('text.delimiter'='|', 'timezone'='${table.timezone}');
+CREATE TABLE "TestTajoDump"."TableName1" ("Age" INT4, "FirstName" TEXT, lastname TEXT) USING TEXT WITH ('text.delimiter'='|', 'text.null'='\\N', 'timezone'='${table.timezone}');
 
 --
 -- Name: test_idx; Type: INDEX; Index Method: TWO_LEVEL_BIN_TREE
diff --git a/tajo-core-tests/src/test/resources/results/TestTajoDump/testPartitionsDump.result b/tajo-core-tests/src/test/resources/results/TestTajoDump/testPartitionsDump.result
index e7b1ccd..23b42aa 100644
--- a/tajo-core-tests/src/test/resources/results/TestTajoDump/testPartitionsDump.result
+++ b/tajo-core-tests/src/test/resources/results/TestTajoDump/testPartitionsDump.result
@@ -12,7 +12,7 @@
 --
 -- Name: "TestTajoDump"."TableName3"; Type: TABLE; Storage: TEXT
 --
-CREATE TABLE "TestTajoDump"."TableName3" (col1 INT4, col2 INT4) USING TEXT WITH ('text.delimiter'='|', 'timezone'='${table.timezone}') PARTITION BY COLUMN(col3 INT4, col4 INT4);
+CREATE TABLE "TestTajoDump"."TableName3" (col1 INT4, col2 INT4) USING TEXT WITH ('text.delimiter'='|', 'text.null'='\\N', 'timezone'='${table.timezone}') PARTITION BY COLUMN(col3 INT4, col4 INT4);
 
 --
 -- Table Partitions: TableName3
@@ -24,7 +24,7 @@
 --
 -- Name: "TestTajoDump"."TableName4"; Type: TABLE; Storage: TEXT
 --
-CREATE TABLE "TestTajoDump"."TableName4" (col1 INT4, col2 INT4) USING TEXT WITH ('text.delimiter'='|', 'timezone'='${table.timezone}') PARTITION BY COLUMN(col3 TEXT, col4 DATE);
+CREATE TABLE "TestTajoDump"."TableName4" (col1 INT4, col2 INT4) USING TEXT WITH ('text.delimiter'='|', 'text.null'='\\N', 'timezone'='${table.timezone}') PARTITION BY COLUMN(col3 TEXT, col4 DATE);
 
 --
 -- Table Partitions: TableName4
diff --git a/tajo-core-tests/src/test/resources/results/TestUnionQuery/testTajo1368Case2.result b/tajo-core-tests/src/test/resources/results/TestUnionQuery/testTajo1368Case2.result
index 17f8c54..75b53c6 100644
--- a/tajo-core-tests/src/test/resources/results/TestUnionQuery/testTajo1368Case2.result
+++ b/tajo-core-tests/src/test/resources/results/TestUnionQuery/testTajo1368Case2.result
@@ -5,8 +5,14 @@
 3,1
 4,4
 5,3
+null,null
+null,null
+null,null
 1,15
 2,13
 3,1
 4,4
 5,3
+null,null
+null,null
+null,null
diff --git a/tajo-core-tests/src/test/resources/results/TestUnionQuery/testThreeJoinInUnion.result b/tajo-core-tests/src/test/resources/results/TestUnionQuery/testThreeJoinInUnion.result
index 28fe466..a23ac9f 100644
--- a/tajo-core-tests/src/test/resources/results/TestUnionQuery/testThreeJoinInUnion.result
+++ b/tajo-core-tests/src/test/resources/results/TestUnionQuery/testThreeJoinInUnion.result
@@ -30,3 +30,6 @@
 22
 23
 24
+null
+null
+null
diff --git a/tajo-core-tests/src/test/resources/results/TestUnionQuery/testUnion1.result b/tajo-core-tests/src/test/resources/results/TestUnionQuery/testUnion1.result
index e748798..64d76c1 100644
--- a/tajo-core-tests/src/test/resources/results/TestUnionQuery/testUnion1.result
+++ b/tajo-core-tests/src/test/resources/results/TestUnionQuery/testUnion1.result
@@ -5,3 +5,4 @@
 3
 4
 5
+null
diff --git a/tajo-core-tests/src/test/resources/results/TestUnionQuery/testUnion13.result b/tajo-core-tests/src/test/resources/results/TestUnionQuery/testUnion13.result
index 4a4a2ad..a1d8c7b 100644
--- a/tajo-core-tests/src/test/resources/results/TestUnionQuery/testUnion13.result
+++ b/tajo-core-tests/src/test/resources/results/TestUnionQuery/testUnion13.result
@@ -5,3 +5,4 @@
 LARGE BRUSHED BRASS,90200.0,1993blush thistle blue yellow saddle
 STANDARD POLISHED BRASS,90300.0,1993spring green yellow purple cornsilk
 SMALL PLATED BRASS,90400.0,1993cornflower chocolate smoke green pink
+null,null,1993
diff --git a/tajo-core-tests/src/test/resources/results/TestUnionQuery/testUnion14.result b/tajo-core-tests/src/test/resources/results/TestUnionQuery/testUnion14.result
index bde5eb1..c399c64 100644
--- a/tajo-core-tests/src/test/resources/results/TestUnionQuery/testUnion14.result
+++ b/tajo-core-tests/src/test/resources/results/TestUnionQuery/testUnion14.result
@@ -7,3 +7,4 @@
 4,5
 N,3
 R,2
+null,3
diff --git a/tajo-core-tests/src/test/resources/results/TestUnionQuery/testUnion2.result b/tajo-core-tests/src/test/resources/results/TestUnionQuery/testUnion2.result
index 80d5d1c..898ac16 100644
--- a/tajo-core-tests/src/test/resources/results/TestUnionQuery/testUnion2.result
+++ b/tajo-core-tests/src/test/resources/results/TestUnionQuery/testUnion2.result
@@ -3,3 +3,4 @@
 1
 2
 3
+null
diff --git a/tajo-core-tests/src/test/resources/results/TestUnionQuery/testUnion3.result b/tajo-core-tests/src/test/resources/results/TestUnionQuery/testUnion3.result
index 9df1273..0dfa9f7 100644
--- a/tajo-core-tests/src/test/resources/results/TestUnionQuery/testUnion3.result
+++ b/tajo-core-tests/src/test/resources/results/TestUnionQuery/testUnion3.result
@@ -1,4 +1,4 @@
 total
 -------------------------------
-3
-5
+6
+8
diff --git a/tajo-core-tests/src/test/resources/results/TestUnionQuery/testUnion6.result b/tajo-core-tests/src/test/resources/results/TestUnionQuery/testUnion6.result
index 7044801..5822701 100644
--- a/tajo-core-tests/src/test/resources/results/TestUnionQuery/testUnion6.result
+++ b/tajo-core-tests/src/test/resources/results/TestUnionQuery/testUnion6.result
@@ -1,3 +1,3 @@
 ?count
 -------------------------------
-5
+8
diff --git a/tajo-core-tests/src/test/resources/results/TestUnionQuery/testUnion7.result b/tajo-core-tests/src/test/resources/results/TestUnionQuery/testUnion7.result
index d2c94c7..717c258 100644
--- a/tajo-core-tests/src/test/resources/results/TestUnionQuery/testUnion7.result
+++ b/tajo-core-tests/src/test/resources/results/TestUnionQuery/testUnion7.result
@@ -3,3 +3,4 @@
 1
 2
 3
+null
diff --git a/tajo-core-tests/src/test/resources/results/TestUnionQuery/testUnionAll1.result b/tajo-core-tests/src/test/resources/results/TestUnionQuery/testUnionAll1.result
index a8ca9a8..38e13a7 100644
--- a/tajo-core-tests/src/test/resources/results/TestUnionQuery/testUnionAll1.result
+++ b/tajo-core-tests/src/test/resources/results/TestUnionQuery/testUnionAll1.result
@@ -8,3 +8,9 @@
 4
 4
 5
+null
+null
+null
+null
+null
+null
diff --git a/tajo-core-tests/src/test/resources/results/TestUnionQuery/testUnionAll13.result b/tajo-core-tests/src/test/resources/results/TestUnionQuery/testUnionAll13.result
index 4a4a2ad..d711a1e 100644
--- a/tajo-core-tests/src/test/resources/results/TestUnionQuery/testUnionAll13.result
+++ b/tajo-core-tests/src/test/resources/results/TestUnionQuery/testUnionAll13.result
@@ -5,3 +5,6 @@
 LARGE BRUSHED BRASS,90200.0,1993blush thistle blue yellow saddle
 STANDARD POLISHED BRASS,90300.0,1993spring green yellow purple cornsilk
 SMALL PLATED BRASS,90400.0,1993cornflower chocolate smoke green pink
+null,null,1993
+null,null,1993
+null,null,1993
diff --git a/tajo-core-tests/src/test/resources/results/TestUnionQuery/testUnionAll14.result b/tajo-core-tests/src/test/resources/results/TestUnionQuery/testUnionAll14.result
index bde5eb1..21bd9c7 100644
--- a/tajo-core-tests/src/test/resources/results/TestUnionQuery/testUnionAll14.result
+++ b/tajo-core-tests/src/test/resources/results/TestUnionQuery/testUnionAll14.result
@@ -7,3 +7,5 @@
 4,5
 N,3
 R,2
+null,3
+null,3
diff --git a/tajo-core-tests/src/test/resources/results/TestUnionQuery/testUnionAll2.result b/tajo-core-tests/src/test/resources/results/TestUnionQuery/testUnionAll2.result
index 966974a..d2ae8fa 100644
--- a/tajo-core-tests/src/test/resources/results/TestUnionQuery/testUnionAll2.result
+++ b/tajo-core-tests/src/test/resources/results/TestUnionQuery/testUnionAll2.result
@@ -10,3 +10,9 @@
 3
 3
 3
+null
+null
+null
+null
+null
+null
diff --git a/tajo-core-tests/src/test/resources/results/TestUnionQuery/testUnionAll3.result b/tajo-core-tests/src/test/resources/results/TestUnionQuery/testUnionAll3.result
index 9df1273..0dfa9f7 100644
--- a/tajo-core-tests/src/test/resources/results/TestUnionQuery/testUnionAll3.result
+++ b/tajo-core-tests/src/test/resources/results/TestUnionQuery/testUnionAll3.result
@@ -1,4 +1,4 @@
 total
 -------------------------------
-3
-5
+6
+8
diff --git a/tajo-core-tests/src/test/resources/results/TestUnionQuery/testUnionAll6.result b/tajo-core-tests/src/test/resources/results/TestUnionQuery/testUnionAll6.result
index b6b8744..4438bbc 100644
--- a/tajo-core-tests/src/test/resources/results/TestUnionQuery/testUnionAll6.result
+++ b/tajo-core-tests/src/test/resources/results/TestUnionQuery/testUnionAll6.result
@@ -1,3 +1,3 @@
 ?count
 -------------------------------
-10
+16
diff --git a/tajo-core-tests/src/test/resources/results/TestUnionQuery/testUnionAll7.result b/tajo-core-tests/src/test/resources/results/TestUnionQuery/testUnionAll7.result
index 1566a65..c0025b9 100644
--- a/tajo-core-tests/src/test/resources/results/TestUnionQuery/testUnionAll7.result
+++ b/tajo-core-tests/src/test/resources/results/TestUnionQuery/testUnionAll7.result
@@ -10,3 +10,9 @@
 3
 3
 3
+null
+null
+null
+null
+null
+null
diff --git a/tajo-core-tests/src/test/resources/results/TestUnionQuery/testUnionAllWithSameAliasNames.result b/tajo-core-tests/src/test/resources/results/TestUnionQuery/testUnionAllWithSameAliasNames.result
index 966974a..d2ae8fa 100644
--- a/tajo-core-tests/src/test/resources/results/TestUnionQuery/testUnionAllWithSameAliasNames.result
+++ b/tajo-core-tests/src/test/resources/results/TestUnionQuery/testUnionAllWithSameAliasNames.result
@@ -10,3 +10,9 @@
 3
 3
 3
+null
+null
+null
+null
+null
+null
diff --git a/tajo-core-tests/src/test/resources/results/TestUnionQuery/testUnionWithCrossJoin.result b/tajo-core-tests/src/test/resources/results/TestUnionQuery/testUnionWithCrossJoin.result
index 551dcb4..c383131 100644
--- a/tajo-core-tests/src/test/resources/results/TestUnionQuery/testUnionWithCrossJoin.result
+++ b/tajo-core-tests/src/test/resources/results/TestUnionQuery/testUnionWithCrossJoin.result
@@ -10,21 +10,36 @@
 1,Customer#000000004,lineitem
 1,Customer#000000005,lineitem
 1,Customer#000000005,lineitem
+1,null,lineitem
+1,null,lineitem
+1,null,lineitem
+1,null,lineitem
+1,null,lineitem
+1,null,lineitem
 1,Customer#000000001,order
 1,Customer#000000002,order
 1,Customer#000000003,order
 1,Customer#000000004,order
 1,Customer#000000005,order
+1,null,order
+1,null,order
+1,null,order
 2,Customer#000000001,lineitem
 2,Customer#000000002,lineitem
 2,Customer#000000003,lineitem
 2,Customer#000000004,lineitem
 2,Customer#000000005,lineitem
+2,null,lineitem
+2,null,lineitem
+2,null,lineitem
 2,Customer#000000001,order
 2,Customer#000000002,order
 2,Customer#000000003,order
 2,Customer#000000004,order
 2,Customer#000000005,order
+2,null,order
+2,null,order
+2,null,order
 3,Customer#000000001,lineitem
 3,Customer#000000001,lineitem
 3,Customer#000000002,lineitem
@@ -35,8 +50,65 @@
 3,Customer#000000004,lineitem
 3,Customer#000000005,lineitem
 3,Customer#000000005,lineitem
+3,null,lineitem
+3,null,lineitem
+3,null,lineitem
+3,null,lineitem
+3,null,lineitem
+3,null,lineitem
 3,Customer#000000001,order
 3,Customer#000000002,order
 3,Customer#000000003,order
 3,Customer#000000004,order
 3,Customer#000000005,order
+3,null,order
+3,null,order
+3,null,order
+null,Customer#000000001,lineitem
+null,Customer#000000001,lineitem
+null,Customer#000000001,lineitem
+null,Customer#000000002,lineitem
+null,Customer#000000002,lineitem
+null,Customer#000000002,lineitem
+null,Customer#000000003,lineitem
+null,Customer#000000003,lineitem
+null,Customer#000000003,lineitem
+null,Customer#000000004,lineitem
+null,Customer#000000004,lineitem
+null,Customer#000000004,lineitem
+null,Customer#000000005,lineitem
+null,Customer#000000005,lineitem
+null,Customer#000000005,lineitem
+null,null,lineitem
+null,null,lineitem
+null,null,lineitem
+null,null,lineitem
+null,null,lineitem
+null,null,lineitem
+null,null,lineitem
+null,null,lineitem
+null,null,lineitem
+null,Customer#000000001,order
+null,Customer#000000001,order
+null,Customer#000000001,order
+null,Customer#000000002,order
+null,Customer#000000002,order
+null,Customer#000000002,order
+null,Customer#000000003,order
+null,Customer#000000003,order
+null,Customer#000000003,order
+null,Customer#000000004,order
+null,Customer#000000004,order
+null,Customer#000000004,order
+null,Customer#000000005,order
+null,Customer#000000005,order
+null,Customer#000000005,order
+null,null,order
+null,null,order
+null,null,order
+null,null,order
+null,null,order
+null,null,order
+null,null,order
+null,null,order
+null,null,order
diff --git a/tajo-core-tests/src/test/resources/results/TestUnionQuery/testUnionWithSameAliasNames.result b/tajo-core-tests/src/test/resources/results/TestUnionQuery/testUnionWithSameAliasNames.result
index 80d5d1c..898ac16 100644
--- a/tajo-core-tests/src/test/resources/results/TestUnionQuery/testUnionWithSameAliasNames.result
+++ b/tajo-core-tests/src/test/resources/results/TestUnionQuery/testUnionWithSameAliasNames.result
@@ -3,3 +3,4 @@
 1
 2
 3
+null
diff --git a/tajo-core-tests/src/test/resources/results/TestWindowQuery/testComplexOrderBy1.result b/tajo-core-tests/src/test/resources/results/TestWindowQuery/testComplexOrderBy1.result
index 5fc49ee..2c0f6e6 100644
--- a/tajo-core-tests/src/test/resources/results/TestWindowQuery/testComplexOrderBy1.result
+++ b/tajo-core-tests/src/test/resources/results/TestWindowQuery/testComplexOrderBy1.result
@@ -4,4 +4,7 @@
 1,2
 2,3
 3,4
-3,5
\ No newline at end of file
+3,5
+null,6
+null,7
+null,8
\ No newline at end of file
diff --git a/tajo-core-tests/src/test/resources/results/TestWindowQuery/testFirstValue1.result b/tajo-core-tests/src/test/resources/results/TestWindowQuery/testFirstValue1.result
index 8ca4ea9..3e1bb51 100644
--- a/tajo-core-tests/src/test/resources/results/TestWindowQuery/testFirstValue1.result
+++ b/tajo-core-tests/src/test/resources/results/TestWindowQuery/testFirstValue1.result
@@ -4,4 +4,7 @@
 1,MAIL,1,7311,1996-03-13,1996-02-12 00:00:00,21168.23,0.04
 2,RAIL,1,1191,1997-01-28,1997-01-14 00:00:00,44694.46,0.0
 3,AIR,1,1798,1993-11-09,1993-12-20 00:00:00,46796.47,0.06
-3,AIR,1,1798,1993-11-09,1993-12-20 00:00:00,46796.47,0.06
\ No newline at end of file
+3,AIR,1,1798,1993-11-09,1993-12-20 00:00:00,46796.47,0.06
+null,null,null,null,null,null,null,null
+null,null,null,null,null,null,null,null
+null,null,null,null,null,null,null,null
\ No newline at end of file
diff --git a/tajo-core-tests/src/test/resources/results/TestWindowQuery/testLag1.result b/tajo-core-tests/src/test/resources/results/TestWindowQuery/testLag1.result
index d64725d..fdba8d2 100644
--- a/tajo-core-tests/src/test/resources/results/TestWindowQuery/testLag1.result
+++ b/tajo-core-tests/src/test/resources/results/TestWindowQuery/testLag1.result
@@ -4,4 +4,7 @@
 MAIL,2,7311,1996-04-12,1996-02-28 00:00:00,45983.16,0.09,1
 null,null,null,null,null,null,null,2
 null,null,null,null,null,null,null,3
-AIR,1,1798,1994-02-02,1994-01-04 00:00:00,54058.05,0.06,3
\ No newline at end of file
+AIR,1,1798,1994-02-02,1994-01-04 00:00:00,54058.05,0.06,3
+null,null,null,null,null,null,null,null
+null,null,null,null,null,null,null,null
+null,null,null,null,null,null,null,null
\ No newline at end of file
diff --git a/tajo-core-tests/src/test/resources/results/TestWindowQuery/testLagWithDefault.result b/tajo-core-tests/src/test/resources/results/TestWindowQuery/testLagWithDefault.result
index 2b10477..da86780 100644
--- a/tajo-core-tests/src/test/resources/results/TestWindowQuery/testLagWithDefault.result
+++ b/tajo-core-tests/src/test/resources/results/TestWindowQuery/testLagWithDefault.result
@@ -4,4 +4,7 @@
 MAIL,2,7311,1996-04-12,1996-02-28 00:00:00,45983.16,0.09,1
 default,100,1000,2015-01-01,2015-01-01 12:00:00,1.234,0.11,2
 default,100,1000,2015-01-01,2015-01-01 12:00:00,1.234,0.11,3
-AIR,1,1798,1994-02-02,1994-01-04 00:00:00,54058.05,0.06,3
\ No newline at end of file
+AIR,1,1798,1994-02-02,1994-01-04 00:00:00,54058.05,0.06,3
+default,100,1000,2015-01-01,2015-01-01 12:00:00,1.234,0.11,null
+null,null,null,null,null,null,null,null
+null,null,null,null,null,null,null,null
\ No newline at end of file
diff --git a/tajo-core-tests/src/test/resources/results/TestWindowQuery/testLagWithNoArgs.result b/tajo-core-tests/src/test/resources/results/TestWindowQuery/testLagWithNoArgs.result
index d64725d..fdba8d2 100644
--- a/tajo-core-tests/src/test/resources/results/TestWindowQuery/testLagWithNoArgs.result
+++ b/tajo-core-tests/src/test/resources/results/TestWindowQuery/testLagWithNoArgs.result
@@ -4,4 +4,7 @@
 MAIL,2,7311,1996-04-12,1996-02-28 00:00:00,45983.16,0.09,1
 null,null,null,null,null,null,null,2
 null,null,null,null,null,null,null,3
-AIR,1,1798,1994-02-02,1994-01-04 00:00:00,54058.05,0.06,3
\ No newline at end of file
+AIR,1,1798,1994-02-02,1994-01-04 00:00:00,54058.05,0.06,3
+null,null,null,null,null,null,null,null
+null,null,null,null,null,null,null,null
+null,null,null,null,null,null,null,null
\ No newline at end of file
diff --git a/tajo-core-tests/src/test/resources/results/TestWindowQuery/testLastValue1.result b/tajo-core-tests/src/test/resources/results/TestWindowQuery/testLastValue1.result
index 825f982..b3cdd27 100644
--- a/tajo-core-tests/src/test/resources/results/TestWindowQuery/testLastValue1.result
+++ b/tajo-core-tests/src/test/resources/results/TestWindowQuery/testLastValue1.result
@@ -4,4 +4,7 @@
 1,TRUCK,2,7706,1996-04-12,1996-02-28 00:00:00,45983.16,0.09
 2,RAIL,1,1191,1997-01-28,1997-01-14 00:00:00,44694.46,0.0
 3,RAIL,2,6540,1994-02-02,1994-01-04 00:00:00,54058.05,0.1
-3,RAIL,2,6540,1994-02-02,1994-01-04 00:00:00,54058.05,0.1
\ No newline at end of file
+3,RAIL,2,6540,1994-02-02,1994-01-04 00:00:00,54058.05,0.1
+null,null,null,null,null,null,null,null
+null,null,null,null,null,null,null,null
+null,null,null,null,null,null,null,null
\ No newline at end of file
diff --git a/tajo-core-tests/src/test/resources/results/TestWindowQuery/testLead1.result b/tajo-core-tests/src/test/resources/results/TestWindowQuery/testLead1.result
index a85ead5..267b992 100644
--- a/tajo-core-tests/src/test/resources/results/TestWindowQuery/testLead1.result
+++ b/tajo-core-tests/src/test/resources/results/TestWindowQuery/testLead1.result
@@ -4,4 +4,7 @@
 null,null,null,null,null,null,null,1
 null,null,null,null,null,null,null,2
 RAIL,2,6540,1993-11-09,1993-12-20 00:00:00,46796.47,0.1,3
-null,null,null,null,null,null,null,3
\ No newline at end of file
+null,null,null,null,null,null,null,3
+null,null,null,null,null,null,null,null
+null,null,null,null,null,null,null,null
+null,null,null,null,null,null,null,null
\ No newline at end of file
diff --git a/tajo-core-tests/src/test/resources/results/TestWindowQuery/testLeadWithDefault.result b/tajo-core-tests/src/test/resources/results/TestWindowQuery/testLeadWithDefault.result
index 8298e44..3f3ccb8 100644
--- a/tajo-core-tests/src/test/resources/results/TestWindowQuery/testLeadWithDefault.result
+++ b/tajo-core-tests/src/test/resources/results/TestWindowQuery/testLeadWithDefault.result
@@ -4,4 +4,7 @@
 default,100,1000,2015-01-01,2015-01-01 12:00:00,1.234,0.11,1
 default,100,1000,2015-01-01,2015-01-01 12:00:00,1.234,0.11,2
 RAIL,2,6540,1993-11-09,1993-12-20 00:00:00,46796.47,0.1,3
-default,100,1000,2015-01-01,2015-01-01 12:00:00,1.234,0.11,3
\ No newline at end of file
+default,100,1000,2015-01-01,2015-01-01 12:00:00,1.234,0.11,3
+null,null,null,null,null,null,null,null
+null,null,null,null,null,null,null,null
+default,100,1000,2015-01-01,2015-01-01 12:00:00,1.234,0.11,null
\ No newline at end of file
diff --git a/tajo-core-tests/src/test/resources/results/TestWindowQuery/testLeadWithNoArgs.result b/tajo-core-tests/src/test/resources/results/TestWindowQuery/testLeadWithNoArgs.result
index a85ead5..267b992 100644
--- a/tajo-core-tests/src/test/resources/results/TestWindowQuery/testLeadWithNoArgs.result
+++ b/tajo-core-tests/src/test/resources/results/TestWindowQuery/testLeadWithNoArgs.result
@@ -4,4 +4,7 @@
 null,null,null,null,null,null,null,1
 null,null,null,null,null,null,null,2
 RAIL,2,6540,1993-11-09,1993-12-20 00:00:00,46796.47,0.1,3
-null,null,null,null,null,null,null,3
\ No newline at end of file
+null,null,null,null,null,null,null,3
+null,null,null,null,null,null,null,null
+null,null,null,null,null,null,null,null
+null,null,null,null,null,null,null,null
\ No newline at end of file
diff --git a/tajo-core-tests/src/test/resources/results/TestWindowQuery/testRowNumber1.result b/tajo-core-tests/src/test/resources/results/TestWindowQuery/testRowNumber1.result
index 5fc49ee..2c0f6e6 100644
--- a/tajo-core-tests/src/test/resources/results/TestWindowQuery/testRowNumber1.result
+++ b/tajo-core-tests/src/test/resources/results/TestWindowQuery/testRowNumber1.result
@@ -4,4 +4,7 @@
 1,2
 2,3
 3,4
-3,5
\ No newline at end of file
+3,5
+null,6
+null,7
+null,8
\ No newline at end of file
diff --git a/tajo-core-tests/src/test/resources/results/TestWindowQuery/testRowNumber2.result b/tajo-core-tests/src/test/resources/results/TestWindowQuery/testRowNumber2.result
index db02a76..0e9c8ea 100644
--- a/tajo-core-tests/src/test/resources/results/TestWindowQuery/testRowNumber2.result
+++ b/tajo-core-tests/src/test/resources/results/TestWindowQuery/testRowNumber2.result
@@ -4,4 +4,7 @@
 1,2
 2,1
 3,1
-3,2
\ No newline at end of file
+3,2
+null,1
+null,2
+null,3
\ No newline at end of file
diff --git a/tajo-core-tests/src/test/resources/results/TestWindowQuery/testRowNumber3.result b/tajo-core-tests/src/test/resources/results/TestWindowQuery/testRowNumber3.result
index 1d780ff..b272e14 100644
--- a/tajo-core-tests/src/test/resources/results/TestWindowQuery/testRowNumber3.result
+++ b/tajo-core-tests/src/test/resources/results/TestWindowQuery/testRowNumber3.result
@@ -4,4 +4,7 @@
 1,2,0.09,0.065
 2,1,0.0,0.0
 3,1,0.06,0.08
-3,2,0.1,0.08
\ No newline at end of file
+3,2,0.1,0.08
+null,1,null,null
+null,2,null,null
+null,3,null,null
\ No newline at end of file
diff --git a/tajo-core-tests/src/test/resources/results/TestWindowQuery/testStdDevPop1.result b/tajo-core-tests/src/test/resources/results/TestWindowQuery/testStdDevPop1.result
index a2faac0..882a566 100644
--- a/tajo-core-tests/src/test/resources/results/TestWindowQuery/testStdDevPop1.result
+++ b/tajo-core-tests/src/test/resources/results/TestWindowQuery/testStdDevPop1.result
@@ -4,4 +4,7 @@
 0.5,197.5,12407.465,0.02500000223517418
 0.0,0.0,0.0,0.0
 0.5,2371.0,3630.790000000001,0.020000001415610313
-0.5,2371.0,3630.790000000001,0.020000001415610313
\ No newline at end of file
+0.5,2371.0,3630.790000000001,0.020000001415610313
+null,null,null,null
+null,null,null,null
+null,null,null,null
\ No newline at end of file
diff --git a/tajo-core-tests/src/test/resources/results/TestWindowQuery/testStdDevSamp1.result b/tajo-core-tests/src/test/resources/results/TestWindowQuery/testStdDevSamp1.result
index 625f91b..478e5d6 100644
--- a/tajo-core-tests/src/test/resources/results/TestWindowQuery/testStdDevSamp1.result
+++ b/tajo-core-tests/src/test/resources/results/TestWindowQuery/testStdDevSamp1.result
@@ -4,4 +4,7 @@
 0.7071067811865476,279.30717856868625,17546.805277669493,0.035355342220341014
 null,null,null,null
 0.7071067811865476,3353.1003563866084,5134.7124601286105,0.028284273249437206
-0.7071067811865476,3353.1003563866084,5134.7124601286105,0.028284273249437206
\ No newline at end of file
+0.7071067811865476,3353.1003563866084,5134.7124601286105,0.028284273249437206
+null,null,null,null
+null,null,null,null
+null,null,null,null
\ No newline at end of file
diff --git a/tajo-core-tests/src/test/resources/results/TestWindowQuery/testWindow1.result b/tajo-core-tests/src/test/resources/results/TestWindowQuery/testWindow1.result
index f142256..38cdc5f 100644
--- a/tajo-core-tests/src/test/resources/results/TestWindowQuery/testWindow1.result
+++ b/tajo-core-tests/src/test/resources/results/TestWindowQuery/testWindow1.result
@@ -4,4 +4,7 @@
 185.0
 185.0
 185.0
+185.0
+185.0
+185.0
 185.0
\ No newline at end of file
diff --git a/tajo-core-tests/src/test/resources/results/TestWindowQuery/testWindow2.result b/tajo-core-tests/src/test/resources/results/TestWindowQuery/testWindow2.result
index 136d66c..5fdf4a8 100644
--- a/tajo-core-tests/src/test/resources/results/TestWindowQuery/testWindow2.result
+++ b/tajo-core-tests/src/test/resources/results/TestWindowQuery/testWindow2.result
@@ -4,4 +4,7 @@
 1,36.0,185.0
 2,38.0,185.0
 3,45.0,185.0
-3,49.0,185.0
\ No newline at end of file
+3,49.0,185.0
+null,null,185.0
+null,null,185.0
+null,null,185.0
\ No newline at end of file
diff --git a/tajo-core-tests/src/test/resources/results/TestWindowQuery/testWindow3.result b/tajo-core-tests/src/test/resources/results/TestWindowQuery/testWindow3.result
index 8262c13..dbd16c0 100644
--- a/tajo-core-tests/src/test/resources/results/TestWindowQuery/testWindow3.result
+++ b/tajo-core-tests/src/test/resources/results/TestWindowQuery/testWindow3.result
@@ -4,4 +4,7 @@
 1,36.0,53.0
 2,38.0,38.0
 3,45.0,94.0
-3,49.0,94.0
\ No newline at end of file
+3,49.0,94.0
+null,null,null
+null,null,null
+null,null,null
\ No newline at end of file
diff --git a/tajo-core-tests/src/test/resources/results/TestWindowQuery/testWindow4.result b/tajo-core-tests/src/test/resources/results/TestWindowQuery/testWindow4.result
index 3477c5b..3079b92 100644
--- a/tajo-core-tests/src/test/resources/results/TestWindowQuery/testWindow4.result
+++ b/tajo-core-tests/src/test/resources/results/TestWindowQuery/testWindow4.result
@@ -4,4 +4,7 @@
 1,0.09,0.13,53.0
 2,0.0,0.0,38.0
 3,0.06,0.16,94.0
-3,0.1,0.16,94.0
\ No newline at end of file
+3,0.1,0.16,94.0
+null,null,null,null
+null,null,null,null
+null,null,null,null
\ No newline at end of file
diff --git a/tajo-core-tests/src/test/resources/results/TestWindowQuery/testWindow5.result b/tajo-core-tests/src/test/resources/results/TestWindowQuery/testWindow5.result
index e42b1d3..b17836e 100644
--- a/tajo-core-tests/src/test/resources/results/TestWindowQuery/testWindow5.result
+++ b/tajo-core-tests/src/test/resources/results/TestWindowQuery/testWindow5.result
@@ -4,4 +4,7 @@
 1,0.13,0.09,53.0
 2,0.0,0.0,38.0
 3,0.16,0.06,94.0
-3,0.16,0.1,94.0
\ No newline at end of file
+3,0.16,0.1,94.0
+null,null,null,null
+null,null,null,null
+null,null,null,null
\ No newline at end of file
diff --git a/tajo-core-tests/src/test/resources/results/TestWindowQuery/testWindow6.result b/tajo-core-tests/src/test/resources/results/TestWindowQuery/testWindow6.result
index 7cf7ae1..6b0c744 100644
--- a/tajo-core-tests/src/test/resources/results/TestWindowQuery/testWindow6.result
+++ b/tajo-core-tests/src/test/resources/results/TestWindowQuery/testWindow6.result
@@ -4,4 +4,7 @@
 1,0.09,2,0.13
 2,0.0,1,0.0
 3,0.06,1,0.16
-3,0.1,2,0.16
\ No newline at end of file
+3,0.1,2,0.16
+null,null,1,null
+null,null,2,null
+null,null,3,null
\ No newline at end of file
diff --git a/tajo-core-tests/src/test/resources/results/TestWindowQuery/testWindow7.result b/tajo-core-tests/src/test/resources/results/TestWindowQuery/testWindow7.result
index 0a7de1a..018e3a3 100644
--- a/tajo-core-tests/src/test/resources/results/TestWindowQuery/testWindow7.result
+++ b/tajo-core-tests/src/test/resources/results/TestWindowQuery/testWindow7.result
@@ -4,4 +4,7 @@
 1,36.0,1
 2,38.0,1
 3,45.0,1
-3,49.0,1
\ No newline at end of file
+3,49.0,1
+null,null,1
+null,null,1
+null,null,1
\ No newline at end of file
diff --git a/tajo-core-tests/src/test/resources/results/TestWindowQuery/testWindow8.result b/tajo-core-tests/src/test/resources/results/TestWindowQuery/testWindow8.result
index f371de5..71c9886 100644
--- a/tajo-core-tests/src/test/resources/results/TestWindowQuery/testWindow8.result
+++ b/tajo-core-tests/src/test/resources/results/TestWindowQuery/testWindow8.result
@@ -4,4 +4,7 @@
 1,36.0,1,5
 2,38.0,1,5
 3,45.0,1,5
-3,49.0,1,5
\ No newline at end of file
+3,49.0,1,5
+null,null,1,5
+null,null,1,5
+null,null,1,5
\ No newline at end of file
diff --git a/tajo-core-tests/src/test/resources/results/TestWindowQuery/testWindowWithAggregation2.result b/tajo-core-tests/src/test/resources/results/TestWindowQuery/testWindowWithAggregation2.result
index ba11e16..5b7cac0 100644
--- a/tajo-core-tests/src/test/resources/results/TestWindowQuery/testWindowWithAggregation2.result
+++ b/tajo-core-tests/src/test/resources/results/TestWindowQuery/testWindowWithAggregation2.result
@@ -2,4 +2,5 @@
 -------------------------------
 1,1
 2,1
-3,1
\ No newline at end of file
+3,1
+null,1
\ No newline at end of file
diff --git a/tajo-core-tests/src/test/resources/results/TestWindowQuery/testWindowWithAggregation3.result b/tajo-core-tests/src/test/resources/results/TestWindowQuery/testWindowWithAggregation3.result
index a8b99f6..6e30d22 100644
--- a/tajo-core-tests/src/test/resources/results/TestWindowQuery/testWindowWithAggregation3.result
+++ b/tajo-core-tests/src/test/resources/results/TestWindowQuery/testWindowWithAggregation3.result
@@ -1,3 +1,3 @@
 cnt,row_num
 -------------------------------
-5,1
\ No newline at end of file
+8,1
\ No newline at end of file
diff --git a/tajo-core-tests/src/test/resources/results/TestWindowQuery/testWindowWithAggregation4.result b/tajo-core-tests/src/test/resources/results/TestWindowQuery/testWindowWithAggregation4.result
index fffa2dd..533c7a7 100644
--- a/tajo-core-tests/src/test/resources/results/TestWindowQuery/testWindowWithAggregation4.result
+++ b/tajo-core-tests/src/test/resources/results/TestWindowQuery/testWindowWithAggregation4.result
@@ -1,5 +1,6 @@
 l_orderkey,cnt,row_num
 -------------------------------
-1,2,1
-3,2,2
-2,1,3
\ No newline at end of file
+null,3,1
+1,2,2
+3,2,3
+2,1,4
\ No newline at end of file
diff --git a/tajo-core-tests/src/test/resources/results/TestWindowQuery/testWindowWithAggregation5.result b/tajo-core-tests/src/test/resources/results/TestWindowQuery/testWindowWithAggregation5.result
index 23ff045..798e862 100644
--- a/tajo-core-tests/src/test/resources/results/TestWindowQuery/testWindowWithAggregation5.result
+++ b/tajo-core-tests/src/test/resources/results/TestWindowQuery/testWindowWithAggregation5.result
@@ -2,4 +2,5 @@
 -------------------------------
 1,2,1
 2,1,1
-3,2,1
\ No newline at end of file
+3,2,1
+null,3,1
\ No newline at end of file
diff --git a/tajo-core-tests/src/test/resources/results/TestWindowQuery/testWindowWithAggregation6.result b/tajo-core-tests/src/test/resources/results/TestWindowQuery/testWindowWithAggregation6.result
index c2e02d5..a4621a4 100644
--- a/tajo-core-tests/src/test/resources/results/TestWindowQuery/testWindowWithAggregation6.result
+++ b/tajo-core-tests/src/test/resources/results/TestWindowQuery/testWindowWithAggregation6.result
@@ -1,5 +1,6 @@
 l_orderkey,cnt,row_num
 -------------------------------
-1,2,1
-2,1,3
-3,2,2
\ No newline at end of file
+1,2,2
+2,1,4
+3,2,3
+null,3,1
\ No newline at end of file
diff --git a/tajo-core-tests/src/test/resources/results/TestWindowQuery/testWindowWithOrderBy1.result b/tajo-core-tests/src/test/resources/results/TestWindowQuery/testWindowWithOrderBy1.result
index a44b4e0..ff25a8f 100644
--- a/tajo-core-tests/src/test/resources/results/TestWindowQuery/testWindowWithOrderBy1.result
+++ b/tajo-core-tests/src/test/resources/results/TestWindowQuery/testWindowWithOrderBy1.result
@@ -4,4 +4,7 @@
 1,0.04,2
 3,0.06,3
 1,0.09,4
-3,0.1,5
\ No newline at end of file
+3,0.1,5
+null,null,6
+null,null,6
+null,null,6
\ No newline at end of file
diff --git a/tajo-core-tests/src/test/resources/results/TestWindowQuery/testWindowWithOrderBy2.result b/tajo-core-tests/src/test/resources/results/TestWindowQuery/testWindowWithOrderBy2.result
index b87197a..15baa48 100644
--- a/tajo-core-tests/src/test/resources/results/TestWindowQuery/testWindowWithOrderBy2.result
+++ b/tajo-core-tests/src/test/resources/results/TestWindowQuery/testWindowWithOrderBy2.result
@@ -4,4 +4,7 @@
 1,1,1
 2,2,1
 3,2,1
-3,3,2
\ No newline at end of file
+3,3,2
+null,null,1
+null,null,1
+null,null,1
\ No newline at end of file
diff --git a/tajo-core-tests/src/test/resources/results/TestWindowQuery/testWindowWithOrderBy3.result b/tajo-core-tests/src/test/resources/results/TestWindowQuery/testWindowWithOrderBy3.result
index 68d0f85..7dca033 100644
--- a/tajo-core-tests/src/test/resources/results/TestWindowQuery/testWindowWithOrderBy3.result
+++ b/tajo-core-tests/src/test/resources/results/TestWindowQuery/testWindowWithOrderBy3.result
@@ -4,4 +4,7 @@
 1,1,1
 2,2,1
 3,3,1
-3,2,2
\ No newline at end of file
+3,2,2
+null,null,1
+null,null,1
+null,null,1
\ No newline at end of file
diff --git a/tajo-core-tests/src/test/resources/results/TestWindowQuery/testWindowWithOrderBy4.result b/tajo-core-tests/src/test/resources/results/TestWindowQuery/testWindowWithOrderBy4.result
index 7042fb5..96b2cf9 100644
--- a/tajo-core-tests/src/test/resources/results/TestWindowQuery/testWindowWithOrderBy4.result
+++ b/tajo-core-tests/src/test/resources/results/TestWindowQuery/testWindowWithOrderBy4.result
@@ -1,7 +1,10 @@
 l_orderkey,l_partkey,r1,r2
 -------------------------------
-3,3,4,1
-2,2,3,2
-3,2,4,2
-1,1,1,4
-1,1,1,4
\ No newline at end of file
+null,null,6,1
+null,null,6,1
+null,null,6,1
+3,3,4,4
+2,2,3,5
+3,2,4,5
+1,1,1,7
+1,1,1,7
\ No newline at end of file
diff --git a/tajo-core-tests/src/test/resources/results/TestWindowQuery/testWindowWithSubQuery.result b/tajo-core-tests/src/test/resources/results/TestWindowQuery/testWindowWithSubQuery.result
index bb3d8e6..d1f7fa9 100644
--- a/tajo-core-tests/src/test/resources/results/TestWindowQuery/testWindowWithSubQuery.result
+++ b/tajo-core-tests/src/test/resources/results/TestWindowQuery/testWindowWithSubQuery.result
@@ -4,4 +4,5 @@
 AMERICA,1,2
 ASIA,1,3
 EUROPE,1,4
-MIDDLE EAST,1,5
\ No newline at end of file
+MIDDLE EAST,1,5
+null,3,6
\ No newline at end of file
diff --git a/tajo-core-tests/src/test/resources/results/TestWindowQuery/testWindowWithSubQuery3.result b/tajo-core-tests/src/test/resources/results/TestWindowQuery/testWindowWithSubQuery3.result
index 1a91238..6068c44 100644
--- a/tajo-core-tests/src/test/resources/results/TestWindowQuery/testWindowWithSubQuery3.result
+++ b/tajo-core-tests/src/test/resources/results/TestWindowQuery/testWindowWithSubQuery3.result
@@ -4,4 +4,5 @@
 AMERICA,1,1
 ASIA,2,1
 EUROPE,3,1
-MIDDLE EAST,4,1
\ No newline at end of file
+MIDDLE EAST,4,1
+null,null,1
\ No newline at end of file
diff --git a/tajo-core-tests/src/test/resources/results/TestWindowQuery/testWindowWithSubQuery4.result b/tajo-core-tests/src/test/resources/results/TestWindowQuery/testWindowWithSubQuery4.result
index 1a91238..6068c44 100644
--- a/tajo-core-tests/src/test/resources/results/TestWindowQuery/testWindowWithSubQuery4.result
+++ b/tajo-core-tests/src/test/resources/results/TestWindowQuery/testWindowWithSubQuery4.result
@@ -4,4 +4,5 @@
 AMERICA,1,1
 ASIA,2,1
 EUROPE,3,1
-MIDDLE EAST,4,1
\ No newline at end of file
+MIDDLE EAST,4,1
+null,null,1
\ No newline at end of file
diff --git a/tajo-core-tests/src/test/resources/results/TestWindowQuery/testWindowWithSubQuery5.result b/tajo-core-tests/src/test/resources/results/TestWindowQuery/testWindowWithSubQuery5.result
index 7668823..def5085 100644
--- a/tajo-core-tests/src/test/resources/results/TestWindowQuery/testWindowWithSubQuery5.result
+++ b/tajo-core-tests/src/test/resources/results/TestWindowQuery/testWindowWithSubQuery5.result
@@ -2,4 +2,7 @@
 -------------------------------
 ASIA,3
 EUROPE,4
-MIDDLE EAST,5
\ No newline at end of file
+MIDDLE EAST,5
+null,6
+null,6
+null,6
\ No newline at end of file
diff --git a/tajo-core-tests/src/test/resources/results/testDDLBuilder/testBuildDDLForBaseTable.result b/tajo-core-tests/src/test/resources/results/testDDLBuilder/testBuildDDLForBaseTable.result
index c635e5d..f1ec0c0 100644
--- a/tajo-core-tests/src/test/resources/results/testDDLBuilder/testBuildDDLForBaseTable.result
+++ b/tajo-core-tests/src/test/resources/results/testDDLBuilder/testBuildDDLForBaseTable.result
@@ -1,4 +1,4 @@
 --
 -- Name: db1.table2; Type: TABLE; Storage: TEXT
 --
-CREATE TABLE db1.table2 (name BLOB, addr TEXT) USING TEXT WITH ('compression.codec'='org.apache.hadoop.io.compress.GzipCodec', 'text.delimiter'='|', 'timezone'='Asia/Seoul');
\ No newline at end of file
+CREATE TABLE db1.table2 (name BLOB, addr TEXT) USING TEXT WITH ('compression.codec'='org.apache.hadoop.io.compress.GzipCodec', 'text.delimiter'='|', 'text.null'='\\N', 'timezone'='Asia/Seoul');
\ No newline at end of file
diff --git a/tajo-core-tests/src/test/resources/results/testDDLBuilder/testBuildDDLForExternalTable.result b/tajo-core-tests/src/test/resources/results/testDDLBuilder/testBuildDDLForExternalTable.result
index 011dfc1..02d1607 100644
--- a/tajo-core-tests/src/test/resources/results/testDDLBuilder/testBuildDDLForExternalTable.result
+++ b/tajo-core-tests/src/test/resources/results/testDDLBuilder/testBuildDDLForExternalTable.result
@@ -2,4 +2,4 @@
 -- Name: db1.table1; Type: TABLE; Storage: TEXT
 -- Path: /table1
 --
-CREATE EXTERNAL TABLE db1.table1 (name BLOB, addr TEXT) USING TEXT WITH ('compression.codec'='org.apache.hadoop.io.compress.GzipCodec', 'text.delimiter'='|', 'timezone'='Asia/Seoul') PARTITION BY COLUMN(key INT4, key2 TEXT) LOCATION '/table1';
\ No newline at end of file
+CREATE EXTERNAL TABLE db1.table1 (name BLOB, addr TEXT) USING TEXT WITH ('compression.codec'='org.apache.hadoop.io.compress.GzipCodec', 'text.delimiter'='|', 'text.null'='\\N', 'timezone'='Asia/Seoul') PARTITION BY COLUMN(key INT4, key2 TEXT) LOCATION '/table1';
\ No newline at end of file
diff --git a/tajo-core-tests/src/test/resources/results/testDDLBuilder/testBuildDDLQuotedTableName1.result b/tajo-core-tests/src/test/resources/results/testDDLBuilder/testBuildDDLQuotedTableName1.result
index a432033..c51a68a 100644
--- a/tajo-core-tests/src/test/resources/results/testDDLBuilder/testBuildDDLQuotedTableName1.result
+++ b/tajo-core-tests/src/test/resources/results/testDDLBuilder/testBuildDDLQuotedTableName1.result
@@ -2,4 +2,4 @@
 -- Name: db1."TABLE2"; Type: TABLE; Storage: TEXT
 -- Path: /table1
 --
-CREATE EXTERNAL TABLE db1."TABLE2" (name BLOB, addr TEXT, "FirstName" TEXT, "LastName" TEXT, "with" TEXT) USING TEXT WITH ('compression.codec'='org.apache.hadoop.io.compress.GzipCodec', 'text.delimiter'='|', 'timezone'='Asia/Seoul') PARTITION BY COLUMN("BirthYear" INT4) LOCATION '/table1';
\ No newline at end of file
+CREATE EXTERNAL TABLE db1."TABLE2" (name BLOB, addr TEXT, "FirstName" TEXT, "LastName" TEXT, "with" TEXT) USING TEXT WITH ('compression.codec'='org.apache.hadoop.io.compress.GzipCodec', 'text.delimiter'='|', 'text.null'='\\N', 'timezone'='Asia/Seoul') PARTITION BY COLUMN("BirthYear" INT4) LOCATION '/table1';
\ No newline at end of file
diff --git a/tajo-core-tests/src/test/resources/results/testDDLBuilder/testBuildDDLQuotedTableName2.result b/tajo-core-tests/src/test/resources/results/testDDLBuilder/testBuildDDLQuotedTableName2.result
index 2e175de..80ada63 100644
--- a/tajo-core-tests/src/test/resources/results/testDDLBuilder/testBuildDDLQuotedTableName2.result
+++ b/tajo-core-tests/src/test/resources/results/testDDLBuilder/testBuildDDLQuotedTableName2.result
@@ -1,4 +1,4 @@
 --
 -- Name: db1."TABLE1"; Type: TABLE; Storage: TEXT
 --
-CREATE TABLE db1."TABLE1" (name BLOB, addr TEXT, "FirstName" TEXT, "LastName" TEXT, "with" TEXT) USING TEXT WITH ('compression.codec'='org.apache.hadoop.io.compress.GzipCodec', 'text.delimiter'='|', 'timezone'='Asia/Seoul') PARTITION BY COLUMN("BirthYear" INT4);
\ No newline at end of file
+CREATE TABLE db1."TABLE1" (name BLOB, addr TEXT, "FirstName" TEXT, "LastName" TEXT, "with" TEXT) USING TEXT WITH ('compression.codec'='org.apache.hadoop.io.compress.GzipCodec', 'text.delimiter'='|', 'text.null'='\\N', 'timezone'='Asia/Seoul') PARTITION BY COLUMN("BirthYear" INT4);
\ No newline at end of file
diff --git a/tajo-core/src/main/java/org/apache/tajo/engine/function/window/Rank.java b/tajo-core/src/main/java/org/apache/tajo/engine/function/window/Rank.java
index 9cb95f7..eb5d9b6 100644
--- a/tajo-core/src/main/java/org/apache/tajo/engine/function/window/Rank.java
+++ b/tajo-core/src/main/java/org/apache/tajo/engine/function/window/Rank.java
@@ -48,7 +48,8 @@
 
   public static boolean checkIfDistinctValue(RankContext context, Tuple params) {
     for (int i = 0; i < context.latest.length; i++) {
-      if (!context.latest[i].equalsTo(params.asDatum(i)).isTrue()) {
+      if ((context.latest[i].isNotNull() || params.asDatum(i).isNotNull())
+          && !context.latest[i].equalsTo(params.asDatum(i)).isTrue()) {
         return true;
       }
     }
diff --git a/tajo-core/src/main/java/org/apache/tajo/engine/planner/PhysicalPlannerImpl.java b/tajo-core/src/main/java/org/apache/tajo/engine/planner/PhysicalPlannerImpl.java
index 5ff2067..87a6e74 100644
--- a/tajo-core/src/main/java/org/apache/tajo/engine/planner/PhysicalPlannerImpl.java
+++ b/tajo-core/src/main/java/org/apache/tajo/engine/planner/PhysicalPlannerImpl.java
@@ -251,7 +251,7 @@
   }
 
   @VisibleForTesting
-  public long estimateSizeRecursive(TaskAttemptContext ctx, String [] tableIds) throws IOException {
+  public static long estimateSizeRecursive(TaskAttemptContext ctx, String [] tableIds) {
     long size = 0;
     for (String tableId : tableIds) {
       FragmentProto[] fragmentProtos = ctx.getTables(tableId);
@@ -484,21 +484,23 @@
     }
   }
 
-  private PhysicalExec createBestLeftOuterJoinPlan(TaskAttemptContext context, JoinNode plan,
-                                                   PhysicalExec leftExec, PhysicalExec rightExec) throws IOException {
-    String [] rightLineage = PlannerUtil.getRelationLineage(plan.getRightChild());
-    long rightTableVolume = estimateSizeRecursive(context, rightLineage);
-    boolean hashJoin;
+  private static boolean isHashOuterJoinFeasible(TaskAttemptContext context, LogicalNode innerRelation) {
+    String [] rightLineage = PlannerUtil.getRelationLineage(innerRelation);
+    long estimatedVolume = estimateSizeRecursive(context, rightLineage);
 
     QueryContext queryContext = context.getQueryContext();
 
     if (queryContext.containsKey(SessionVars.OUTER_HASH_JOIN_SIZE_LIMIT)) {
-      hashJoin = rightTableVolume <=  queryContext.getLong(SessionVars.OUTER_HASH_JOIN_SIZE_LIMIT) * StorageUnit.MB;
+      return estimatedVolume <=  queryContext.getLong(SessionVars.OUTER_HASH_JOIN_SIZE_LIMIT) * StorageUnit.MB;
     } else {
-      hashJoin = rightTableVolume <=  queryContext.getLong(SessionVars.HASH_JOIN_SIZE_LIMIT) * StorageUnit.MB;
+      return estimatedVolume <=  queryContext.getLong(SessionVars.HASH_JOIN_SIZE_LIMIT) * StorageUnit.MB;
     }
+  }
 
-    if (hashJoin) {
+  private PhysicalExec createBestLeftOuterJoinPlan(TaskAttemptContext context, JoinNode plan,
+                                                   PhysicalExec leftExec, PhysicalExec rightExec) throws IOException {
+
+    if (isHashOuterJoinFeasible(context, plan.getRightChild())) {
       // we can implement left outer join using hash join, using the right operand as the build relation
       LOG.info("Left Outer Join (" + plan.getPID() +") chooses [Hash Join].");
       return new HashLeftOuterJoinExec(context, plan, leftExec, rightExec);
@@ -514,19 +516,7 @@
                                                PhysicalExec leftExec, PhysicalExec rightExec) throws IOException {
     //if the left operand is small enough => implement it as a left outer hash join with exchanged operators (note:
     // blocking, but merge join is blocking as well)
-    String [] outerLineage4 = PlannerUtil.getRelationLineage(plan.getLeftChild());
-    long leftTableVolume = estimateSizeRecursive(context, outerLineage4);
-    boolean hashJoin;
-
-    QueryContext queryContext = context.getQueryContext();
-
-    if (queryContext.containsKey(SessionVars.OUTER_HASH_JOIN_SIZE_LIMIT)) {
-      hashJoin = leftTableVolume <=  queryContext.getLong(SessionVars.OUTER_HASH_JOIN_SIZE_LIMIT) * StorageUnit.MB;
-    } else {
-      hashJoin = leftTableVolume <=  queryContext.getLong(SessionVars.HASH_JOIN_SIZE_LIMIT)* StorageUnit.MB;
-    }
-
-    if (hashJoin){
+    if (isHashOuterJoinFeasible(context, plan.getLeftChild())){
       LOG.info("Right Outer Join (" + plan.getPID() +") chooses [Hash Join].");
       return new HashLeftOuterJoinExec(context, plan, rightExec, leftExec);
     } else {
@@ -649,12 +639,10 @@
 
   private PhysicalExec createBestFullOuterJoinPlan(TaskAttemptContext context, JoinNode plan,
                                                    PhysicalExec leftExec, PhysicalExec rightExec) throws IOException {
-    String [] leftLineage = PlannerUtil.getRelationLineage(plan.getLeftChild());
-    String [] rightLineage = PlannerUtil.getRelationLineage(plan.getRightChild());
-    long outerSize2 = estimateSizeRecursive(context, leftLineage);
-    long innerSize2 = estimateSizeRecursive(context, rightLineage);
-    final long threshold = 1048576 * 128;
-    if (outerSize2 < threshold || innerSize2 < threshold) {
+    // The inner relation is always expected to be smaller than the outer relation.
+    // (See GreedyHeuristicJoinOrderAlgorithm:::swapLeftAndRightIfNecessary().
+    // Thus, we need to evaluate only that the right table is able to be loaded or not.
+    if (isHashOuterJoinFeasible(context, plan.getRightChild())) {
       return createFullOuterHashJoinPlan(context, plan, leftExec, rightExec);
     } else {
       return createFullOuterMergeJoinPlan(context, plan, leftExec, rightExec);
@@ -676,6 +664,7 @@
           return new HashLeftSemiJoinExec(context, plan, leftExec, rightExec);
 
         default:
+          // TODO: implement sort-based semi join operator
           LOG.error("Invalid Left Semi Join Algorithm Enforcer: " + algorithm.name());
           LOG.error("Choose a fallback inner join algorithm: " + JoinAlgorithm.IN_MEMORY_HASH_JOIN.name());
           return new HashLeftOuterJoinExec(context, plan, leftExec, rightExec);
@@ -701,6 +690,7 @@
           return new HashLeftSemiJoinExec(context, plan, rightExec, leftExec);
 
         default:
+          // TODO: implement sort-based semi join operator
           LOG.error("Invalid Left Semi Join Algorithm Enforcer: " + algorithm.name());
           LOG.error("Choose a fallback inner join algorithm: " + JoinAlgorithm.IN_MEMORY_HASH_JOIN.name());
           return new HashLeftOuterJoinExec(context, plan, rightExec, leftExec);
@@ -726,6 +716,7 @@
           return new HashLeftAntiJoinExec(context, plan, leftExec, rightExec);
 
         default:
+          // TODO: implement sort-based anti join operator
           LOG.error("Invalid Left Semi Join Algorithm Enforcer: " + algorithm.name());
           LOG.error("Choose a fallback inner join algorithm: " + JoinAlgorithm.IN_MEMORY_HASH_JOIN.name());
           return new HashLeftAntiJoinExec(context, plan, leftExec, rightExec);
@@ -751,6 +742,7 @@
           return new HashLeftSemiJoinExec(context, plan, rightExec, leftExec);
 
         default:
+          // TODO: implement sort-based anti join operator
           LOG.error("Invalid Left Semi Join Algorithm Enforcer: " + algorithm.name());
           LOG.error("Choose a fallback inner join algorithm: " + JoinAlgorithm.IN_MEMORY_HASH_JOIN.name());
           return new HashLeftOuterJoinExec(context, plan, rightExec, leftExec);
diff --git a/tajo-core/src/main/java/org/apache/tajo/engine/planner/physical/CommonHashJoinExec.java b/tajo-core/src/main/java/org/apache/tajo/engine/planner/physical/CommonHashJoinExec.java
index 92a68bd..2cda46e 100644
--- a/tajo-core/src/main/java/org/apache/tajo/engine/planner/physical/CommonHashJoinExec.java
+++ b/tajo-core/src/main/java/org/apache/tajo/engine/planner/physical/CommonHashJoinExec.java
@@ -19,21 +19,19 @@
 package org.apache.tajo.engine.planner.physical;
 
 import org.apache.tajo.SessionVars;
-import org.apache.tajo.catalog.Column;
+import org.apache.tajo.algebra.JoinType;
 import org.apache.tajo.catalog.statistics.TableStats;
-import org.apache.tajo.engine.planner.KeyProjector;
+import org.apache.tajo.datum.Datum;
 import org.apache.tajo.engine.utils.CacheHolder;
 import org.apache.tajo.engine.utils.TableCacheKey;
-import org.apache.tajo.exception.TajoInternalError;
 import org.apache.tajo.plan.logical.JoinNode;
-import org.apache.tajo.plan.util.PlannerUtil;
 import org.apache.tajo.storage.Tuple;
 import org.apache.tajo.worker.ExecutionBlockSharedResource;
 import org.apache.tajo.worker.TaskAttemptContext;
 
 import java.io.IOException;
+import java.util.Arrays;
 import java.util.Iterator;
-import java.util.List;
 
 /**
  * common exec for all hash join execs
@@ -45,66 +43,14 @@
   // temporal tuples and states for nested loop join
   protected boolean first = true;
   protected TupleMap<T> tupleSlots;
-
   protected Iterator<Tuple> iterator;
 
-  protected final boolean isCrossJoin;
-  protected final List<Column[]> joinKeyPairs;
-
-  protected final int rightNumCols;
-  protected final int leftNumCols;
-
-  protected final Column[] leftKeyList;
-  protected final Column[] rightKeyList;
-
-  protected final KeyProjector leftKeyExtractor;
-
   protected boolean finished;
 
   protected TableStats tableStatsOfCachedRightChild = null;
 
   public CommonHashJoinExec(TaskAttemptContext context, JoinNode plan, PhysicalExec outer, PhysicalExec inner) {
     super(context, plan, outer, inner);
-
-    switch (plan.getJoinType()) {
-
-      case CROSS:
-        if (hasJoinQual) {
-          throw new TajoInternalError("Cross join cannot evaluate join conditions.");
-        } else {
-          isCrossJoin = true;
-          joinKeyPairs = null;
-          rightNumCols = leftNumCols = -1;
-          leftKeyList = rightKeyList = null;
-          leftKeyExtractor = null;
-        }
-        break;
-
-      case INNER:
-        // Other join types except INNER join can have empty join condition.
-        if (!hasJoinQual) {
-          throw new TajoInternalError("Inner join must have any join conditions.");
-        }
-      default:
-        isCrossJoin = false;
-        // HashJoin only can manage equi join key pairs.
-        this.joinKeyPairs = PlannerUtil.getJoinKeyPairs(joinQual, outer.getSchema(),
-            inner.getSchema(), false);
-
-        leftKeyList = new Column[joinKeyPairs.size()];
-        rightKeyList = new Column[joinKeyPairs.size()];
-
-        for (int i = 0; i < joinKeyPairs.size(); i++) {
-          leftKeyList[i] = outer.getSchema().getColumn(joinKeyPairs.get(i)[0].getQualifiedName());
-          rightKeyList[i] = inner.getSchema().getColumn(joinKeyPairs.get(i)[1].getQualifiedName());
-        }
-
-        leftNumCols = outer.getSchema().size();
-        rightNumCols = inner.getSchema().size();
-
-        leftKeyExtractor = new KeyProjector(leftSchema, leftKeyList);
-        break;
-    }
   }
 
   protected void loadRightToHashTable() throws IOException {
@@ -138,7 +84,7 @@
   }
 
   protected TupleMap<TupleList> buildRightToHashTable() throws IOException {
-    if (isCrossJoin) {
+    if (plan.getJoinType().equals(JoinType.CROSS)) {
       return buildRightToHashTableForCrossJoin();
     } else {
       return buildRightToHashTableForNonCrossJoin();
@@ -160,20 +106,39 @@
   protected TupleMap<TupleList> buildRightToHashTableForNonCrossJoin() throws IOException {
     Tuple tuple;
     TupleMap<TupleList> map = new TupleMap<>(context.getQueryContext().getInt(SessionVars.JOIN_HASH_TABLE_SIZE));
-    KeyProjector keyProjector = new KeyProjector(rightSchema, rightKeyList);
 
     while (!context.isStopped() && (tuple = rightChild.next()) != null) {
-      KeyTuple keyTuple = keyProjector.project(tuple);
-      TupleList newValue = map.get(keyTuple);
-      if (newValue == null) {
-        map.put(keyTuple, newValue = new TupleList());
+      KeyTuple keyTuple = rightKeyExtractor.project(tuple);
+      if (isLoadable(plan, keyTuple)) { // filter out null values
+        TupleList newValue = map.get(keyTuple);
+        if (newValue == null) {
+          map.put(keyTuple, newValue = new TupleList());
+        }
+        // if source is scan or groupby, it needs not to be cloned
+        newValue.add(tuple);
       }
-      // if source is scan or groupby, it needs not to be cloned
-      newValue.add(tuple);
     }
     return map;
   }
 
+  /**
+   * Check the given tuple is able to be loaded into the hash table or not.
+   * When the plan is full outer join, every tuple including null values should be loaded
+   * because both input tables of the join are preserved-row relations as well as null-supplying relations.
+   *
+   * Otherwise, except for anti join, only the tuples not containing null values should be loaded.
+   *
+   * For the case of anti join, the right table is expected to be empty if there are any null values.
+   *
+   * @param plan
+   * @param tuple
+   * @return
+   */
+  private static boolean isLoadable(JoinNode plan, Tuple tuple) {
+    return plan.getJoinType().equals(JoinType.FULL_OUTER)
+        || Arrays.stream(tuple.getValues()).noneMatch(Datum::isNull);
+  }
+
   // todo: convert loaded data to cache condition
   protected abstract TupleMap<T> convert(TupleMap<TupleList> hashed, boolean fromCache)
       throws IOException;
diff --git a/tajo-core/src/main/java/org/apache/tajo/engine/planner/physical/CommonJoinExec.java b/tajo-core/src/main/java/org/apache/tajo/engine/planner/physical/CommonJoinExec.java
index 6653157..96ed0a6 100644
--- a/tajo-core/src/main/java/org/apache/tajo/engine/planner/physical/CommonJoinExec.java
+++ b/tajo-core/src/main/java/org/apache/tajo/engine/planner/physical/CommonJoinExec.java
@@ -20,16 +20,16 @@
 
 import com.google.common.base.Predicate;
 import com.google.common.collect.Iterators;
-import com.google.common.collect.Lists;
 import org.apache.tajo.catalog.Column;
 import org.apache.tajo.catalog.Schema;
 import org.apache.tajo.catalog.SchemaUtil;
+import org.apache.tajo.engine.planner.KeyProjector;
 import org.apache.tajo.engine.planner.Projector;
-import org.apache.tajo.plan.expr.AlgebraicUtil;
-import org.apache.tajo.plan.expr.BinaryEval;
+import org.apache.tajo.exception.TajoInternalError;
 import org.apache.tajo.plan.expr.EvalNode;
 import org.apache.tajo.plan.expr.EvalTreeUtil;
 import org.apache.tajo.plan.logical.JoinNode;
+import org.apache.tajo.plan.util.PlannerUtil;
 import org.apache.tajo.storage.FrameTuple;
 import org.apache.tajo.storage.NullTuple;
 import org.apache.tajo.storage.Tuple;
@@ -38,7 +38,6 @@
 import java.io.IOException;
 import java.util.Collections;
 import java.util.Iterator;
-import java.util.LinkedHashSet;
 import java.util.List;
 
 
@@ -58,6 +57,17 @@
   protected final Schema leftSchema;
   protected final Schema rightSchema;
 
+  protected final KeyProjector leftKeyExtractor;
+  protected final KeyProjector rightKeyExtractor;
+
+  protected final List<Column[]> joinKeyPairs;
+
+  protected final int rightNumCols;
+  protected final int leftNumCols;
+
+  protected final Column[] leftKeyList;
+  protected final Column[] rightKeyList;
+
   protected final FrameTuple frameTuple;
 
   // projection
@@ -70,7 +80,7 @@
     this.leftSchema = outer.getSchema();
     this.rightSchema = inner.getSchema();
     if (plan.hasJoinQual()) {
-      EvalNode[] extracted = extractJoinConditions(plan.getJoinQual(), leftSchema, rightSchema);
+      EvalNode[] extracted = EvalTreeUtil.extractJoinConditions(plan.getJoinQual(), leftSchema, rightSchema);
       joinQual = extracted[0];
       leftJoinFilter = extracted[1];
       rightJoinFilter = extracted[2];
@@ -82,56 +92,46 @@
 
     // for join
     this.frameTuple = new FrameTuple();
-  }
 
-  /**
-   * It separates a singular CNF-formed join condition into a join condition, a left join filter, and
-   * right join filter.
-   *
-   * @param joinQual the original join condition
-   * @param leftSchema Left table schema
-   * @param rightSchema Left table schema
-   * @return Three element EvalNodes, 0 - join condition, 1 - left join filter, 2 - right join filter.
-   */
-  private EvalNode[] extractJoinConditions(EvalNode joinQual, Schema leftSchema, Schema rightSchema) {
-    List<EvalNode> joinQuals = Lists.newArrayList();
-    List<EvalNode> leftFilters = Lists.newArrayList();
-    List<EvalNode> rightFilters = Lists.newArrayList();
-    for (EvalNode eachQual : AlgebraicUtil.toConjunctiveNormalFormArray(joinQual)) {
-      if (!(eachQual instanceof BinaryEval)) {
-        continue; // todo 'between', etc.
-      }
-      BinaryEval binaryEval = (BinaryEval)eachQual;
-      LinkedHashSet<Column> leftColumns = EvalTreeUtil.findUniqueColumns(binaryEval.getLeftExpr());
-      LinkedHashSet<Column> rightColumns = EvalTreeUtil.findUniqueColumns(binaryEval.getRightExpr());
-      boolean leftInLeft = leftSchema.containsAny(leftColumns);
-      boolean rightInLeft = leftSchema.containsAny(rightColumns);
-      boolean leftInRight = rightSchema.containsAny(leftColumns);
-      boolean rightInRight = rightSchema.containsAny(rightColumns);
+    switch (plan.getJoinType()) {
 
-      boolean columnsFromLeft = leftInLeft || rightInLeft;
-      boolean columnsFromRight = leftInRight || rightInRight;
-      if (!columnsFromLeft && !columnsFromRight) {
-        continue; // todo constant expression : this should be done in logical phase
-      }
-      if (columnsFromLeft ^ columnsFromRight) {
-        if (columnsFromLeft) {
-          leftFilters.add(eachQual);
+      case CROSS:
+        if (hasJoinQual) {
+          throw new TajoInternalError("Cross join cannot evaluate join conditions.");
         } else {
-          rightFilters.add(eachQual);
+          joinKeyPairs = null;
+          rightNumCols = leftNumCols = -1;
+          leftKeyList = rightKeyList = null;
+          leftKeyExtractor = null;
+          rightKeyExtractor = null;
         }
-        continue;
-      }
-      if ((leftInLeft && rightInLeft) || (leftInRight && rightInRight)) {
-        continue; // todo not allowed yet : this should be checked in logical phase
-      }
-      joinQuals.add(eachQual);
+        break;
+
+      case INNER:
+        // Other join types except INNER join can have empty join condition.
+        if (!hasJoinQual) {
+          throw new TajoInternalError("Inner join must have any join conditions.");
+        }
+      default:
+        // HashJoin only can manage equi join key pairs.
+        this.joinKeyPairs = PlannerUtil.getJoinKeyPairs(joinQual, outer.getSchema(),
+            inner.getSchema(), false);
+
+        leftKeyList = new Column[joinKeyPairs.size()];
+        rightKeyList = new Column[joinKeyPairs.size()];
+
+        for (int i = 0; i < joinKeyPairs.size(); i++) {
+          leftKeyList[i] = outer.getSchema().getColumn(joinKeyPairs.get(i)[0].getQualifiedName());
+          rightKeyList[i] = inner.getSchema().getColumn(joinKeyPairs.get(i)[1].getQualifiedName());
+        }
+
+        leftNumCols = outer.getSchema().size();
+        rightNumCols = inner.getSchema().size();
+
+        leftKeyExtractor = new KeyProjector(leftSchema, leftKeyList);
+        rightKeyExtractor = new KeyProjector(rightSchema, rightKeyList);
+        break;
     }
-    return new EvalNode[] {
-        joinQuals.isEmpty() ? null : AlgebraicUtil.createSingletonExprFromCNF(joinQuals),
-        leftFilters.isEmpty() ? null : AlgebraicUtil.createSingletonExprFromCNF(leftFilters),
-        rightFilters.isEmpty() ? null : AlgebraicUtil.createSingletonExprFromCNF(rightFilters)
-    };
   }
 
   public JoinNode getPlan() {
@@ -145,7 +145,7 @@
    * @return True if an input tuple is matched to the left join filter
    */
   protected boolean leftFiltered(Tuple left) {
-    return leftJoinFilter != null && !leftJoinFilter.eval(left).asBool();
+    return leftJoinFilter != null && !leftJoinFilter.eval(left).isTrue();
   }
 
   /**
@@ -155,7 +155,7 @@
    * @return True if an input tuple is matched to the right join filter
    */
   protected boolean rightFiltered(Tuple right) {
-    return rightJoinFilter != null && !rightJoinFilter.eval(right).asBool();
+    return rightJoinFilter != null && !rightJoinFilter.eval(right).isTrue();
   }
 
   /**
@@ -175,7 +175,7 @@
     return Iterators.filter(rightTuples.iterator(), new Predicate<Tuple>() {
       @Override
       public boolean apply(Tuple input) {
-        return rightJoinFilter.eval(input).asBool();
+        return rightJoinFilter.eval(input).isTrue();
       }
     });
   }
diff --git a/tajo-core/src/main/java/org/apache/tajo/engine/planner/physical/DistinctGroupbyThirdAggregationExec.java b/tajo-core/src/main/java/org/apache/tajo/engine/planner/physical/DistinctGroupbyThirdAggregationExec.java
index f238ef0..0cfc15f 100644
--- a/tajo-core/src/main/java/org/apache/tajo/engine/planner/physical/DistinctGroupbyThirdAggregationExec.java
+++ b/tajo-core/src/main/java/org/apache/tajo/engine/planner/physical/DistinctGroupbyThirdAggregationExec.java
@@ -264,9 +264,7 @@
       }
 
       if (seq == 0 && nonDistinctAggr != null) {
-        if (!tuple.isBlankOrNull(nonDistinctAggr.inTupleIndex)) {
-          nonDistinctAggr.merge(tuple);
-        }
+        nonDistinctAggr.merge(tuple);
       }
     }
 
diff --git a/tajo-core/src/main/java/org/apache/tajo/engine/planner/physical/HashFullOuterJoinExec.java b/tajo-core/src/main/java/org/apache/tajo/engine/planner/physical/HashFullOuterJoinExec.java
index 7020b9d..ca5bf48 100644
--- a/tajo-core/src/main/java/org/apache/tajo/engine/planner/physical/HashFullOuterJoinExec.java
+++ b/tajo-core/src/main/java/org/apache/tajo/engine/planner/physical/HashFullOuterJoinExec.java
@@ -18,7 +18,10 @@
 
 package org.apache.tajo.engine.planner.physical;
 
+import com.google.common.base.Predicate;
+import com.google.common.collect.Iterators;
 import org.apache.tajo.plan.logical.JoinNode;
+import org.apache.tajo.storage.FrameTuple;
 import org.apache.tajo.storage.NullTuple;
 import org.apache.tajo.storage.Tuple;
 import org.apache.tajo.util.Pair;
@@ -93,7 +96,7 @@
       }
       Tuple leftTuple = leftChild.next();
       if (leftTuple == null) {
-      // if no more tuples in left tuples, a join is completed.
+        // if no more tuples in left tuples, a join is completed.
         // in this stage we can begin outputing tuples from the right operand (which were before in tupleSlots) null padded on the left side
         frameTuple.setLeft(NullTuple.create(leftNumCols));
         iterator = getUnmatchedRight();
@@ -102,17 +105,17 @@
       }
       frameTuple.setLeft(leftTuple);
 
-      if (leftFiltered(leftTuple)) {
-        iterator = nullTupleList.iterator();
-        continue;
-      }
       // getting corresponding right
       Pair<Boolean, TupleList> hashed = tupleSlots.get(leftKeyExtractor.project(leftTuple));
       if (hashed == null) {
-        iterator = nullTupleList.iterator();
+        if (leftFiltered(leftTuple)) {
+          iterator = null;
+        } else {
+          iterator = nullTupleList.iterator();
+        }
         continue;
       }
-      Iterator<Tuple> rightTuples = rightFiltered(hashed.getSecond());
+      Iterator<Tuple> rightTuples = joinQualFiltered(leftTuple, rightFiltered(hashed.getSecond()));
       if (!rightTuples.hasNext()) {
         iterator = nullTupleList.iterator();
         continue;
@@ -124,6 +127,19 @@
     return null;
   }
 
+  private Iterator<Tuple> joinQualFiltered(Tuple leftTuple, Iterator<Tuple> rightTuples) {
+    final FrameTuple frameTuple = new FrameTuple();
+    frameTuple.setLeft(leftTuple);
+
+    return Iterators.filter(rightTuples, new Predicate<Tuple>() {
+      @Override
+      public boolean apply(Tuple input) {
+        frameTuple.setRight(input);
+        return joinQual.eval(frameTuple).isTrue();
+      }
+    });
+  }
+
   @Override
   protected TupleMap<Pair<Boolean, TupleList>> convert(TupleMap<TupleList> hashed,
                                                        boolean fromCache) throws IOException {
diff --git a/tajo-core/src/main/java/org/apache/tajo/engine/planner/physical/HashJoinExec.java b/tajo-core/src/main/java/org/apache/tajo/engine/planner/physical/HashJoinExec.java
index e47e515..6a84de1 100644
--- a/tajo-core/src/main/java/org/apache/tajo/engine/planner/physical/HashJoinExec.java
+++ b/tajo-core/src/main/java/org/apache/tajo/engine/planner/physical/HashJoinExec.java
@@ -18,6 +18,7 @@
 
 package org.apache.tajo.engine.planner.physical;
 
+import org.apache.tajo.algebra.JoinType;
 import org.apache.tajo.plan.logical.JoinNode;
 import org.apache.tajo.storage.Tuple;
 import org.apache.tajo.worker.TaskAttemptContext;
@@ -27,9 +28,12 @@
 
 public class HashJoinExec extends CommonHashJoinExec<TupleList> {
 
+  private final boolean isCrossJoin;
+
   public HashJoinExec(TaskAttemptContext context, JoinNode plan, PhysicalExec leftExec,
       PhysicalExec rightExec) {
     super(context, plan, leftExec, rightExec);
+    isCrossJoin = plan.getJoinType().equals(JoinType.CROSS);
   }
 
   @Override
diff --git a/tajo-core/src/main/java/org/apache/tajo/engine/planner/physical/HashLeftOuterJoinExec.java b/tajo-core/src/main/java/org/apache/tajo/engine/planner/physical/HashLeftOuterJoinExec.java
index b652c3c..1dbca04 100644
--- a/tajo-core/src/main/java/org/apache/tajo/engine/planner/physical/HashLeftOuterJoinExec.java
+++ b/tajo-core/src/main/java/org/apache/tajo/engine/planner/physical/HashLeftOuterJoinExec.java
@@ -18,8 +18,6 @@
 
 package org.apache.tajo.engine.planner.physical;
 
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
 import org.apache.tajo.plan.logical.JoinNode;
 import org.apache.tajo.storage.Tuple;
 import org.apache.tajo.worker.TaskAttemptContext;
@@ -30,7 +28,6 @@
 
 public class HashLeftOuterJoinExec extends HashJoinExec {
 
-  private static final Log LOG = LogFactory.getLog(HashLeftOuterJoinExec.class);
   private final List<Tuple> nullTupleList;
 
   public HashLeftOuterJoinExec(TaskAttemptContext context, JoinNode plan, PhysicalExec leftChild,
diff --git a/tajo-core/src/main/java/org/apache/tajo/engine/planner/physical/MergeFullOuterJoinExec.java b/tajo-core/src/main/java/org/apache/tajo/engine/planner/physical/MergeFullOuterJoinExec.java
index 824fb0e..b1b1f28 100644
--- a/tajo-core/src/main/java/org/apache/tajo/engine/planner/physical/MergeFullOuterJoinExec.java
+++ b/tajo-core/src/main/java/org/apache/tajo/engine/planner/physical/MergeFullOuterJoinExec.java
@@ -40,6 +40,8 @@
   private Tuple prevLeftTuple = null;
   private Tuple prevRightTuple = null;
 
+  private Tuple preservedTuple = null;
+
   private TupleList leftTupleSlots;
   private TupleList rightTupleSlots;
 
@@ -67,6 +69,7 @@
     final int INITIAL_TUPLE_SLOT = context.getQueryContext().getInt(SessionVars.JOIN_HASH_TABLE_SIZE);
     this.leftTupleSlots = new TupleList(INITIAL_TUPLE_SLOT);
     this.rightTupleSlots = new TupleList(INITIAL_TUPLE_SLOT);
+
     SortSpec[][] sortSpecs = new SortSpec[2][];
     sortSpecs[0] = leftSortKey;
     sortSpecs[1] = rightSortKey;
@@ -90,6 +93,12 @@
     Tuple outTuple;
 
     while (!context.isStopped()) {
+      if (preservedTuple != null) {
+        outTuple = preservedTuple;
+        preservedTuple = null;
+        return outTuple;
+      }
+
       boolean newRound = false;
       if((posRightTupleSlots == -1) && (posLeftTupleSlots == -1)) {
         newRound = true;
@@ -98,7 +107,7 @@
         newRound = true;
       }
 
-      if(newRound == true){
+      if(newRound){
 
         if (end) {
 
@@ -113,7 +122,7 @@
           // right side and a right-padded tuple should be built for all remaining
           // left side
 
-          if (initRightDone == false) {
+          if (!initRightDone) {
             // maybe the left operand was empty => the right one didn't have the chance to initialize
             rightTuple = rightChild.next();
             initRightDone = true;
@@ -173,7 +182,7 @@
         ////////////////////////////////////////////////////////////////////////
         // advance alternatively on each side until a match is found
         int cmp;
-        while (!end && ((cmp = joincomparator.compare(leftTuple, rightTuple)) != 0)) {
+        if (!end && ((cmp = joincomparator.compare(leftTuple, rightTuple)) != 0)) {
 
           if (cmp > 0) {
 
@@ -205,9 +214,32 @@
 
             return outTuple;
 
-          } // if (cmp < 0)
-        } //while
+          }
+        }
 
+        // Check null values
+        Tuple leftKey = leftKeyExtractor.project(leftTuple);
+        boolean containNull = false;
+        for (int i = 0; i < leftKey.size(); i++) {
+          if (leftKey.isBlankOrNull(i)) {
+            containNull = true;
+            break;
+          }
+        }
+
+        if (containNull) {
+          frameTuple.set(leftTuple, rightNullTuple);
+          outTuple = projector.eval(frameTuple);
+          frameTuple.set(leftNullTuple, rightTuple);
+          preservedTuple = new VTuple(projector.eval(frameTuple));
+          leftTuple = leftChild.next();
+          rightTuple = rightChild.next();
+
+          if (leftTuple == null || rightTuple == null) {
+            end = true;
+          }
+          return outTuple;
+        }
 
         ////////////////////////////////////////////////////////////////////////
         // SLOTS POPULATION STAGE
@@ -228,8 +260,7 @@
               endLeft = true;
             }
 
-
-          } while ((endLeft != true) && (tupleComparator[0].compare(prevLeftTuple, leftTuple) == 0));
+          } while ((!endLeft) && (tupleComparator[0].compare(prevLeftTuple, leftTuple) == 0));
           posLeftTupleSlots = 0;
 
           prevRightTuple.put(rightTuple.getValues());
@@ -240,10 +271,10 @@
               endRight = true;
             }
 
-          } while ((endRight != true) && (tupleComparator[1].compare(prevRightTuple, rightTuple) == 0) );
+          } while ((!endRight) && (tupleComparator[1].compare(prevRightTuple, rightTuple) == 0) );
           posRightTupleSlots = 0;
 
-          if ((endLeft == true) || (endRight == true)) {
+          if ((endLeft) || (endRight)) {
             end = true;
             endInPopulationStage = true;
           }
@@ -262,12 +293,12 @@
       if(!end || (end && endInPopulationStage)){
         if(posLeftTupleSlots == 0){
           leftNext = leftTupleSlots.get(posLeftTupleSlots);
-          posLeftTupleSlots = posLeftTupleSlots + 1;
+          posLeftTupleSlots++;
         }
 
         if(posRightTupleSlots <= (rightTupleSlots.size() -1)) {
           Tuple aTuple = rightTupleSlots.get(posRightTupleSlots);
-          posRightTupleSlots = posRightTupleSlots + 1;
+          posRightTupleSlots++;
           frameTuple.set(leftNext, aTuple);
           joinQual.eval(frameTuple);
           return projector.eval(frameTuple);
diff --git a/tajo-core/src/main/java/org/apache/tajo/engine/planner/physical/RightOuterMergeJoinExec.java b/tajo-core/src/main/java/org/apache/tajo/engine/planner/physical/RightOuterMergeJoinExec.java
index 706ec3e..40fb9f1 100644
--- a/tajo-core/src/main/java/org/apache/tajo/engine/planner/physical/RightOuterMergeJoinExec.java
+++ b/tajo-core/src/main/java/org/apache/tajo/engine/planner/physical/RightOuterMergeJoinExec.java
@@ -208,6 +208,28 @@
         // END MOVE FORWARDING STAGE
         //////////////////////////////////////////////////////////////////////
 
+        // Check null values
+        Tuple leftKey = rightKeyExtractor.project(rightTuple);
+        boolean containNull = false;
+        for (int i = 0; i < leftKey.size(); i++) {
+          if (leftKey.isBlankOrNull(i)) {
+            containNull = true;
+            break;
+          }
+        }
+
+        if (containNull) {
+          frameTuple.set(nullPaddedTuple, rightTuple);
+          outTuple = projector.eval(frameTuple);
+          leftTuple = leftChild.next();
+          rightTuple = rightChild.next();
+
+          if (leftTuple == null || rightTuple == null) {
+            end = true;
+          }
+          return outTuple;
+        }
+
         // once a match is found, retain all tuples with this key in tuple slots on each side
         if(!end) {
           endInPopulationStage = false;
@@ -282,7 +304,7 @@
           posRightTupleSlots = posRightTupleSlots + 1;
 
           frameTuple.set(nextLeft, aTuple);
-          if (joinQual.eval(frameTuple).asBool()) {
+          if (joinQual.eval(frameTuple).isTrue()) {
             return projector.eval(frameTuple);
           } else {
             // padding null
@@ -301,7 +323,7 @@
 
             frameTuple.set(nextLeft, aTuple);
 
-            if (joinQual.eval(frameTuple).asBool()) {
+            if (joinQual.eval(frameTuple).isTrue()) {
               return projector.eval(frameTuple);
             } else {
               // padding null
diff --git a/tajo-jdbc/src/test/java/org/apache/tajo/jdbc/TestResultSet.java b/tajo-jdbc/src/test/java/org/apache/tajo/jdbc/TestResultSet.java
index c04e3b2..050029e 100644
--- a/tajo-jdbc/src/test/java/org/apache/tajo/jdbc/TestResultSet.java
+++ b/tajo-jdbc/src/test/java/org/apache/tajo/jdbc/TestResultSet.java
@@ -36,7 +36,6 @@
 import org.apache.tajo.tuple.memory.MemoryBlock;
 import org.apache.tajo.tuple.memory.MemoryRowBlock;
 import org.apache.tajo.util.CompressionUtil;
-import org.apache.tajo.util.KeyValueSet;
 import org.junit.AfterClass;
 import org.junit.BeforeClass;
 import org.junit.Test;
@@ -206,11 +205,9 @@
       String [] data = {
           "2014-01-01|01:00:00|2014-01-01 01:00:00"
       };
-      KeyValueSet tableOptions = new KeyValueSet();
-      tableOptions.set(StorageConstants.TEXT_DELIMITER, StorageConstants.DEFAULT_FIELD_DELIMITER);
 
       res = TajoTestingCluster
-          .run(table, schemas, tableOptions, new String[][]{data}, query, client);
+          .run(table, schemas, new String[][]{data}, query, client);
 
       assertTrue(res.next());
 
diff --git a/tajo-jdbc/src/test/java/org/apache/tajo/jdbc/TestTajoJdbc.java b/tajo-jdbc/src/test/java/org/apache/tajo/jdbc/TestTajoJdbc.java
index faaba71..c36b133 100644
--- a/tajo-jdbc/src/test/java/org/apache/tajo/jdbc/TestTajoJdbc.java
+++ b/tajo-jdbc/src/test/java/org/apache/tajo/jdbc/TestTajoJdbc.java
@@ -80,12 +80,17 @@
         Map<String, Integer> result = Maps.newHashMap();
         result.put("NO", 3);
         result.put("RF", 2);
+        result.put(null, 3);
 
         assertNotNull(res);
         assertTrue(res.next());
         assertTrue(result.get(res.getString(1) + res.getString(2)) == res.getInt(3));
         assertTrue(res.next());
         assertTrue(result.get(res.getString(1) + res.getString(2)) == res.getInt(3));
+        assertTrue(res.next());
+        assertNull(res.getString(1));
+        assertNull(res.getString(2));
+        assertTrue(result.get(null) == res.getInt(3));
         assertFalse(res.next());
 
         ResultSetMetaData rsmd = res.getMetaData();
@@ -380,12 +385,17 @@
             Map<String, Integer> result = Maps.newHashMap();
             result.put("NO", 3);
             result.put("RF", 2);
+            result.put(null, 3);
 
             assertNotNull(res);
             assertTrue(res.next());
             assertTrue(result.get(res.getString(1) + res.getString(2)) == res.getInt(3));
             assertTrue(res.next());
             assertTrue(result.get(res.getString(1) + res.getString(2)) == res.getInt(3));
+            assertTrue(res.next());
+            assertNull(res.getString(1));
+            assertNull(res.getString(2));
+            assertTrue(result.get(null) == res.getInt(3));
             assertFalse(res.next());
 
             ResultSetMetaData rsmd = res.getMetaData();
@@ -438,12 +448,17 @@
             Map<String, Integer> result = Maps.newHashMap();
             result.put("NO", 3);
             result.put("RF", 2);
+            result.put(null, 3);
 
             assertNotNull(res);
             assertTrue(res.next());
             assertTrue(result.get(res.getString(1) + res.getString(2)) == res.getInt(3));
             assertTrue(res.next());
             assertTrue(result.get(res.getString(1) + res.getString(2)) == res.getInt(3));
+            assertTrue(res.next());
+            assertNull(res.getString(1));
+            assertNull(res.getString(2));
+            assertTrue(result.get(null) == res.getInt(3));
             assertFalse(res.next());
 
             ResultSetMetaData rsmd = res.getMetaData();
diff --git a/tajo-plan/src/main/java/org/apache/tajo/plan/LogicalPlanner.java b/tajo-plan/src/main/java/org/apache/tajo/plan/LogicalPlanner.java
index 5336906..6495af3 100644
--- a/tajo-plan/src/main/java/org/apache/tajo/plan/LogicalPlanner.java
+++ b/tajo-plan/src/main/java/org/apache/tajo/plan/LogicalPlanner.java
@@ -49,6 +49,7 @@
 import org.apache.tajo.plan.rewrite.rules.ProjectionPushDownRule;
 import org.apache.tajo.plan.util.ExprFinder;
 import org.apache.tajo.plan.util.PlannerUtil;
+import org.apache.tajo.storage.StorageConstants;
 import org.apache.tajo.util.KeyValueSet;
 import org.apache.tajo.util.Pair;
 import org.apache.tajo.util.StringUtils;
@@ -2079,13 +2080,17 @@
    * @param exprs
    * @return
    */
-  private static String[] convertExprsToStrings(Expr[] exprs) {
+  private static String[] convertExprsToPartitionTableStringValues(Expr[] exprs) {
     int exprCount = exprs.length;
     String[] values = new String[exprCount];
 
     for(int i = 0; i < exprCount; i++) {
-      LiteralValue expr = (LiteralValue)exprs[i];
-      values[i] = expr.getValue();
+      if (exprs[i].getType() == OpType.NullLiteral) {
+        values[i] = StorageConstants.DEFAULT_PARTITION_NAME;
+      } else {
+        LiteralValue expr = (LiteralValue) exprs[i];
+        values[i] = expr.getValue();
+      }
     }
 
     return values;
@@ -2160,7 +2165,7 @@
     }
 
     if (alterTable.getValues() != null) {
-      alterTableNode.setPartitionValues(convertExprsToStrings(alterTable.getValues()));
+      alterTableNode.setPartitionValues(convertExprsToPartitionTableStringValues(alterTable.getValues()));
     }
 
     if (alterTable.getLocation() != null) {
diff --git a/tajo-plan/src/main/java/org/apache/tajo/plan/expr/EvalTreeUtil.java b/tajo-plan/src/main/java/org/apache/tajo/plan/expr/EvalTreeUtil.java
index bb48030..a83c5bd 100644
--- a/tajo-plan/src/main/java/org/apache/tajo/plan/expr/EvalTreeUtil.java
+++ b/tajo-plan/src/main/java/org/apache/tajo/plan/expr/EvalTreeUtil.java
@@ -19,6 +19,7 @@
 package org.apache.tajo.plan.expr;
 
 import com.google.common.base.Function;
+import com.google.common.collect.Lists;
 import com.google.common.collect.Maps;
 import com.google.common.collect.Sets;
 import org.apache.tajo.algebra.ColumnReferenceExpr;
@@ -243,6 +244,56 @@
   }
 
   /**
+   * It separates a singular CNF-formed join condition into a join condition, a left join filter, and
+   * right join filter.
+   *
+   * @param joinQual the original join condition
+   * @param leftSchema Left table schema
+   * @param rightSchema Left table schema
+   * @return Three element EvalNodes, 0 - join condition, 1 - left join filter, 2 - right join filter.
+   */
+  public static EvalNode[] extractJoinConditions(EvalNode joinQual, Schema leftSchema, Schema rightSchema) {
+    List<EvalNode> joinQuals = Lists.newArrayList();
+    List<EvalNode> leftFilters = Lists.newArrayList();
+    List<EvalNode> rightFilters = Lists.newArrayList();
+    for (EvalNode eachQual : AlgebraicUtil.toConjunctiveNormalFormArray(joinQual)) {
+      if (!(eachQual instanceof BinaryEval)) {
+        continue; // todo 'between', etc.
+      }
+      BinaryEval binaryEval = (BinaryEval)eachQual;
+      LinkedHashSet<Column> leftColumns = EvalTreeUtil.findUniqueColumns(binaryEval.getLeftExpr());
+      LinkedHashSet<Column> rightColumns = EvalTreeUtil.findUniqueColumns(binaryEval.getRightExpr());
+      boolean leftInLeft = leftSchema.containsAny(leftColumns);
+      boolean rightInLeft = leftSchema.containsAny(rightColumns);
+      boolean leftInRight = rightSchema.containsAny(leftColumns);
+      boolean rightInRight = rightSchema.containsAny(rightColumns);
+
+      boolean columnsFromLeft = leftInLeft || rightInLeft;
+      boolean columnsFromRight = leftInRight || rightInRight;
+      if (!columnsFromLeft && !columnsFromRight) {
+        continue; // todo constant expression : this should be done in logical phase
+      }
+      if (columnsFromLeft ^ columnsFromRight) {
+        if (columnsFromLeft) {
+          leftFilters.add(eachQual);
+        } else {
+          rightFilters.add(eachQual);
+        }
+        continue;
+      }
+      if ((leftInLeft && rightInLeft) || (leftInRight && rightInRight)) {
+        continue; // todo not allowed yet : this should be checked in logical phase
+      }
+      joinQuals.add(eachQual);
+    }
+    return new EvalNode[] {
+        joinQuals.isEmpty() ? null : AlgebraicUtil.createSingletonExprFromCNF(joinQuals),
+        leftFilters.isEmpty() ? null : AlgebraicUtil.createSingletonExprFromCNF(leftFilters),
+        rightFilters.isEmpty() ? null : AlgebraicUtil.createSingletonExprFromCNF(rightFilters)
+    };
+  }
+
+  /**
    * If a given expression is join condition, it returns TRUE. Otherwise, it returns FALSE.
    *
    * If three conditions are satisfied, we can recognize the expression as a equi join condition.
diff --git a/tajo-plan/src/main/java/org/apache/tajo/plan/expr/SignedEval.java b/tajo-plan/src/main/java/org/apache/tajo/plan/expr/SignedEval.java
index 085d82c..2bf8d3e 100644
--- a/tajo-plan/src/main/java/org/apache/tajo/plan/expr/SignedEval.java
+++ b/tajo-plan/src/main/java/org/apache/tajo/plan/expr/SignedEval.java
@@ -51,9 +51,9 @@
   @SuppressWarnings("unchecked")
   public Datum eval(Tuple tuple) {
     super.eval(tuple);
-    NumericDatum result = child.eval(tuple);
-    if (negative) {
-      return result.inverseSign();
+    Datum result = child.eval(tuple);
+    if (result.isNotNull() && negative) {
+      return ((NumericDatum)result).inverseSign();
     }
     return result;
   }
diff --git a/tajo-plan/src/main/java/org/apache/tajo/plan/function/PythonAggFunctionInvoke.java b/tajo-plan/src/main/java/org/apache/tajo/plan/function/PythonAggFunctionInvoke.java
index 6f010ab..70d6348 100644
--- a/tajo-plan/src/main/java/org/apache/tajo/plan/function/PythonAggFunctionInvoke.java
+++ b/tajo-plan/src/main/java/org/apache/tajo/plan/function/PythonAggFunctionInvoke.java
@@ -116,7 +116,8 @@
   public Datum getPartialResult(FunctionContext context) {
     updateContextIfNecessary(context);
     // partial results are stored as json strings.
-    return DatumFactory.createText(scriptEngine.getPartialResult(context));
+    String result = scriptEngine.getPartialResult(context);
+    return DatumFactory.createText(result);
   }
 
   @Override
diff --git a/tajo-plan/src/main/java/org/apache/tajo/plan/rewrite/rules/PartitionedTableRewriter.java b/tajo-plan/src/main/java/org/apache/tajo/plan/rewrite/rules/PartitionedTableRewriter.java
index cf92ea0..32e41d3 100644
--- a/tajo-plan/src/main/java/org/apache/tajo/plan/rewrite/rules/PartitionedTableRewriter.java
+++ b/tajo-plan/src/main/java/org/apache/tajo/plan/rewrite/rules/PartitionedTableRewriter.java
@@ -22,12 +22,16 @@
 import com.google.common.collect.Sets;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
-import org.apache.hadoop.fs.*;
+import org.apache.hadoop.fs.FileStatus;
+import org.apache.hadoop.fs.FileSystem;
+import org.apache.hadoop.fs.Path;
+import org.apache.hadoop.fs.PathFilter;
 import org.apache.tajo.OverridableConf;
+import org.apache.tajo.annotation.Nullable;
 import org.apache.tajo.catalog.*;
 import org.apache.tajo.catalog.partition.PartitionMethodDesc;
-import org.apache.tajo.catalog.proto.CatalogProtos.PartitionsByAlgebraProto;
 import org.apache.tajo.catalog.proto.CatalogProtos.PartitionDescProto;
+import org.apache.tajo.catalog.proto.CatalogProtos.PartitionsByAlgebraProto;
 import org.apache.tajo.datum.DatumFactory;
 import org.apache.tajo.datum.NullDatum;
 import org.apache.tajo.exception.*;
@@ -39,12 +43,15 @@
 import org.apache.tajo.plan.util.EvalNodeToExprConverter;
 import org.apache.tajo.plan.util.PlannerUtil;
 import org.apache.tajo.plan.visitor.BasicLogicalPlanVisitor;
+import org.apache.tajo.storage.StorageConstants;
 import org.apache.tajo.storage.Tuple;
 import org.apache.tajo.storage.VTuple;
 import org.apache.tajo.util.StringUtils;
 
 import java.io.IOException;
-import java.util.*;
+import java.util.List;
+import java.util.Set;
+import java.util.Stack;
 
 public class PartitionedTableRewriter implements LogicalPlanRewriteRule {
   private CatalogService catalog;
@@ -87,11 +94,13 @@
   private static class PartitionPathFilter implements PathFilter {
 
     private Schema schema;
-    private EvalNode partitionFilter;
-    public PartitionPathFilter(Schema schema, EvalNode partitionFilter) {
+    private @Nullable EvalNode partitionFilter;
+    public PartitionPathFilter(Schema schema, @Nullable EvalNode partitionFilter) {
       this.schema = schema;
       this.partitionFilter = partitionFilter;
-      partitionFilter.bind(null, schema);
+      if (this.partitionFilter != null) {
+        this.partitionFilter.bind(null, schema);
+      }
     }
 
     @Override
@@ -101,7 +110,11 @@
         return false;
       }
 
-      return partitionFilter.eval(tuple).asBool();
+      if (partitionFilter != null) {
+        return partitionFilter.eval(tuple).isTrue();
+      } else {
+        return true;
+      }
     }
 
     @Override
@@ -304,16 +317,9 @@
    * @return The array of path filter, accpeting all partition paths.
    */
   public static PathFilter [] buildAllAcceptingPathFilters(Schema partitionColumns) {
-    Column target;
     PathFilter [] filters = new PathFilter[partitionColumns.size()];
-    List<EvalNode> accumulatedFilters = Lists.newArrayList();
     for (int i = 0; i < partitionColumns.size(); i++) { // loop from one to level
-      target = partitionColumns.getColumn(i);
-      accumulatedFilters.add(new IsNullEval(true, new FieldEval(target)));
-
-      EvalNode filterPerLevel = AlgebraicUtil.createSingletonExprFromCNF(
-          accumulatedFilters.toArray(new EvalNode[accumulatedFilters.size()]));
-      filters[i] = new PartitionPathFilter(partitionColumns, filterPerLevel);
+      filters[i] = new PartitionPathFilter(partitionColumns, null);
     }
     return filters;
   }
@@ -463,7 +469,12 @@
       }
       int columnId = partitionColumnSchema.getColumnIdByName(parts[0]);
       Column keyColumn = partitionColumnSchema.getColumn(columnId);
-      tuple.put(columnId, DatumFactory.createFromString(keyColumn.getDataType(), StringUtils.unescapePathName(parts[1])));
+      String pathName = StringUtils.unescapePathName(parts[1]);
+      if (pathName.equals(StorageConstants.DEFAULT_PARTITION_NAME)){
+        tuple.put(columnId, DatumFactory.createNullDatum());
+      } else {
+        tuple.put(columnId, DatumFactory.createFromString(keyColumn.getDataType(), pathName));
+      }
     }
     for (; i < partitionColumnSchema.size(); i++) {
       tuple.put(i, NullDatum.get());
diff --git a/tajo-storage/tajo-storage-common/src/main/java/org/apache/tajo/storage/fragment/FragmentConvertor.java b/tajo-storage/tajo-storage-common/src/main/java/org/apache/tajo/storage/fragment/FragmentConvertor.java
index d9405e2..4ce6928 100644
--- a/tajo-storage/tajo-storage-common/src/main/java/org/apache/tajo/storage/fragment/FragmentConvertor.java
+++ b/tajo-storage/tajo-storage-common/src/main/java/org/apache/tajo/storage/fragment/FragmentConvertor.java
@@ -47,8 +47,7 @@
    */
   private static final Class<?>[] DEFAULT_FRAGMENT_PARAMS = { ByteString.class };
 
-  public static Class<? extends Fragment> getFragmentClass(Configuration conf, String dataFormat)
-  throws IOException {
+  public static Class<? extends Fragment> getFragmentClass(Configuration conf, String dataFormat) {
     Class<? extends Fragment> fragmentClass = CACHED_FRAGMENT_CLASSES.get(dataFormat.toLowerCase());
     if (fragmentClass == null) {
       fragmentClass = conf.getClass(
@@ -57,7 +56,7 @@
     }
 
     if (fragmentClass == null) {
-      throw new IOException("No such a fragment for " + dataFormat.toLowerCase());
+      throw new TajoInternalError("No such a fragment for " + dataFormat.toLowerCase());
     }
 
     return fragmentClass;
@@ -80,11 +79,10 @@
     return result;
   }
 
-  public static <T extends Fragment> T convert(Configuration conf, FragmentProto fragment)
-      throws IOException {
+  public static <T extends Fragment> T convert(Configuration conf, FragmentProto fragment) {
     Class<T> fragmentClass = (Class<T>) getFragmentClass(conf, fragment.getDataFormat().toLowerCase());
     if (fragmentClass == null) {
-      throw new IOException("No such a fragment class for " + fragment.getDataFormat());
+      throw new TajoInternalError("No such a fragment class for " + fragment.getDataFormat());
     }
     return convert(fragmentClass, fragment);
   }
@@ -101,7 +99,7 @@
     return list;
   }
 
-  public static <T extends Fragment> List<T> convert(Configuration conf, FragmentProto...fragments) throws IOException {
+  public static <T extends Fragment> List<T> convert(Configuration conf, FragmentProto...fragments) {
     List<T> list = Lists.newArrayList();
     if (fragments == null) {
       return list;
diff --git a/tajo-storage/tajo-storage-hdfs/src/main/java/org/apache/tajo/storage/text/TextLineSerDe.java b/tajo-storage/tajo-storage-hdfs/src/main/java/org/apache/tajo/storage/text/TextLineSerDe.java
index 0717fae..94a0ba0 100644
--- a/tajo-storage/tajo-storage-hdfs/src/main/java/org/apache/tajo/storage/text/TextLineSerDe.java
+++ b/tajo-storage/tajo-storage-hdfs/src/main/java/org/apache/tajo/storage/text/TextLineSerDe.java
@@ -21,6 +21,7 @@
 import io.netty.buffer.ByteBuf;
 import org.apache.commons.lang.StringEscapeUtils;
 import org.apache.commons.lang.StringUtils;
+import org.apache.tajo.BuiltinStorages;
 import org.apache.tajo.catalog.Column;
 import org.apache.tajo.catalog.Schema;
 import org.apache.tajo.catalog.TableMeta;
@@ -43,7 +44,7 @@
 
   public static ByteBuf getNullChars(TableMeta meta) {
     byte[] nullCharByteArray;
-    if (meta.getDataFormat().equals("SEQUENCEFILE")) {
+    if (meta.getDataFormat().equals(BuiltinStorages.SEQUENCE_FILE)) {
       nullCharByteArray = getNullCharsAsBytes(meta, StorageConstants.SEQUENCEFILE_NULL, "\\");
     } else {
       nullCharByteArray = getNullCharsAsBytes(meta);
@@ -55,6 +56,13 @@
     return nullChars;
   }
 
+  /**
+   * Returns the bytes of null characters.
+   * The default value is '\\N' as in Hive.
+   *
+   * @param meta table meta
+   * @return a byte array of null characters
+   */
   public static byte [] getNullCharsAsBytes(TableMeta meta) {
     return getNullCharsAsBytes(meta, StorageConstants.TEXT_NULL, NullDatum.DEFAULT_TEXT);
   }
diff --git a/tajo-storage/tajo-storage-pgsql/src/test/java/org/apache/tajo/storage/pgsql/PgSQLTestServer.java b/tajo-storage/tajo-storage-pgsql/src/test/java/org/apache/tajo/storage/pgsql/PgSQLTestServer.java
index 0a4f917..6de1573 100644
--- a/tajo-storage/tajo-storage-pgsql/src/test/java/org/apache/tajo/storage/pgsql/PgSQLTestServer.java
+++ b/tajo-storage/tajo-storage-pgsql/src/test/java/org/apache/tajo/storage/pgsql/PgSQLTestServer.java
@@ -136,7 +136,7 @@
 
   private String restoreTableContents(String tableName) throws IOException {
     Path filePath = new Path(testPath, tableName + ".tbl");
-    storeTableContents("tpch/" + tableName + ".tbl", filePath);
+    storeTableContents("dataset/" + tableName + ".tbl", filePath);
     return filePath.toUri().getPath();
   }
 
diff --git a/tajo-storage/tajo-storage-pgsql/src/test/resources/dataset/.marker b/tajo-storage/tajo-storage-pgsql/src/test/resources/dataset/.marker
deleted file mode 100644
index 158780d..0000000
--- a/tajo-storage/tajo-storage-pgsql/src/test/resources/dataset/.marker
+++ /dev/null
@@ -1 +0,0 @@
-// for keeping dataset directory
\ No newline at end of file
diff --git a/tajo-storage/tajo-storage-pgsql/src/test/resources/dataset/customer.tbl b/tajo-storage/tajo-storage-pgsql/src/test/resources/dataset/customer.tbl
new file mode 100644
index 0000000..8721995
--- /dev/null
+++ b/tajo-storage/tajo-storage-pgsql/src/test/resources/dataset/customer.tbl
@@ -0,0 +1,5 @@
+1|Customer#000000001|IVhzIApeRb ot,c,E|15|25-989-741-2988|711.56|BUILDING|to the even, regular platelets. regular, ironic epitaphs nag e
+2|Customer#000000002|XSTf4,NCwDVaWNe6tEgvwfmRchLXak|13|23-768-687-3665|121.65|AUTOMOBILE|l accounts. blithely ironic theodolites integrate boldly: caref
+3|Customer#000000003|MG9kdTD2WBHm|1|11-719-748-3364|7498.12|AUTOMOBILE| deposits eat slyly ironic, even instructions. express foxes detect slyly. blithely even accounts abov
+4|Customer#000000004|XxVSJsLAGtn|4|14-128-190-5944|2866.83|MACHINERY| requests. final, regular ideas sleep final accou
+5|Customer#000000005|KvpyuHCplrB84WgAiGV6sYpZq7Tj|3|13-750-942-6364|794.47|HOUSEHOLD|n accounts will have to unwind. foxes cajole accor
\ No newline at end of file
diff --git a/tajo-storage/tajo-storage-pgsql/src/test/resources/dataset/lineitem.tbl b/tajo-storage/tajo-storage-pgsql/src/test/resources/dataset/lineitem.tbl
new file mode 100644
index 0000000..2dbd027
--- /dev/null
+++ b/tajo-storage/tajo-storage-pgsql/src/test/resources/dataset/lineitem.tbl
@@ -0,0 +1,5 @@
+1|1|7706|1|17|21168.23|0.04|0.02|N|O|1996-03-13|1996-02-12|1996-03-22|DELIVER IN PERSON|TRUCK|egular courts above the
+1|1|7311|2|36|45983.16|0.09|0.06|N|O|1996-04-12|1996-02-28|1996-04-20|TAKE BACK RETURN|MAIL|ly final dependencies: slyly bold
+2|2|1191|1|38|44694.46|0.00|0.05|N|O|1997-01-28|1997-01-14|1997-02-02|TAKE BACK RETURN|RAIL|ven requests. deposits breach a
+3|2|1798|1|45|54058.05|0.06|0.00|R|F|1994-02-02|1994-01-04|1994-02-23|NONE|AIR|ongside of the furiously brave acco
+3|3|6540|2|49|46796.47|0.10|0.00|R|F|1993-11-09|1993-12-20|1993-11-24|TAKE BACK RETURN|RAIL| unusual accounts. eve
\ No newline at end of file
diff --git a/tajo-storage/tajo-storage-pgsql/src/test/resources/dataset/nation.tbl b/tajo-storage/tajo-storage-pgsql/src/test/resources/dataset/nation.tbl
new file mode 100644
index 0000000..4f73be3
--- /dev/null
+++ b/tajo-storage/tajo-storage-pgsql/src/test/resources/dataset/nation.tbl
@@ -0,0 +1,25 @@
+0|ALGERIA|0| haggle. carefully final deposits detect slyly agai|
+1|ARGENTINA|1|al foxes promise slyly according to the regular accounts. bold requests alon|
+2|BRAZIL|1|y alongside of the pending deposits. carefully special packages are about the ironic forges. slyly special |
+3|CANADA|1|eas hang ironic, silent packages. slyly regular packages are furiously over the tithes. fluffily bold|
+4|EGYPT|4|y above the carefully unusual theodolites. final dugouts are quickly across the furiously regular d|
+5|ETHIOPIA|0|ven packages wake quickly. regu|
+6|FRANCE|3|refully final requests. regular, ironi|
+7|GERMANY|3|l platelets. regular accounts x-ray: unusual, regular acco|
+8|INDIA|2|ss excuses cajole slyly across the packages. deposits print aroun|
+9|INDONESIA|2| slyly express asymptotes. regular deposits haggle slyly. carefully ironic hockey players sleep blithely. carefull|
+10|IRAN|4|efully alongside of the slyly final dependencies. |
+11|IRAQ|4|nic deposits boost atop the quickly final requests? quickly regula|
+12|JAPAN|2|ously. final, express gifts cajole a|
+13|JORDAN|4|ic deposits are blithely about the carefully regular pa|
+14|KENYA|0| pending excuses haggle furiously deposits. pending, express pinto beans wake fluffily past t|
+15|MOROCCO|0|rns. blithely bold courts among the closely regular packages use furiously bold platelets?|
+16|MOZAMBIQUE|0|s. ironic, unusual asymptotes wake blithely r|
+17|PERU|1|platelets. blithely pending dependencies use fluffily across the even pinto beans. carefully silent accoun|
+18|CHINA|2|c dependencies. furiously express notornis sleep slyly regular accounts. ideas sleep. depos|
+19|ROMANIA|3|ular asymptotes are about the furious multipliers. express dependencies nag above the ironically ironic account|
+20|SAUDI ARABIA|4|ts. silent requests haggle. closely express packages sleep across the blithely|
+21|VIETNAM|2|hely enticingly express accounts. even, final |
+22|RUSSIA|3| requests against the platelets use never according to the quickly regular pint|
+23|UNITED KINGDOM|3|eans boost carefully special requests. accounts are. carefull|
+24|UNITED STATES|1|y final packages. slow foxes cajole quickly. quickly silent platelets breach ironic accounts. unusual pinto be|
\ No newline at end of file
diff --git a/tajo-storage/tajo-storage-pgsql/src/test/resources/dataset/orders.tbl b/tajo-storage/tajo-storage-pgsql/src/test/resources/dataset/orders.tbl
new file mode 100644
index 0000000..e692cfb
--- /dev/null
+++ b/tajo-storage/tajo-storage-pgsql/src/test/resources/dataset/orders.tbl
@@ -0,0 +1,3 @@
+1|3|O|173665.47|1996-01-02|5-LOW|Clerk#000000951|0|nstructions sleep furiously among |
+2|4|O|46929.18|1996-12-01|1-URGENT|Clerk#000000880|0| foxes. pending accounts at the pending, silent asymptot|
+3|2|F|193846.25|1993-10-14|5-LOW|Clerk#000000955|0|sly final accounts boost. carefully regular ideas cajole carefully. depos|
\ No newline at end of file
diff --git a/tajo-storage/tajo-storage-pgsql/src/test/resources/dataset/part.tbl b/tajo-storage/tajo-storage-pgsql/src/test/resources/dataset/part.tbl
new file mode 100644
index 0000000..6e6fa72
--- /dev/null
+++ b/tajo-storage/tajo-storage-pgsql/src/test/resources/dataset/part.tbl
@@ -0,0 +1,4 @@
+1|goldenrod lavender spring chocolate lace|Manufacturer#1|Brand#13|PROMO BURNISHED COPPER|7|JUMBO PKG|901.00|ly. slyly ironi
+2|blush thistle blue yellow saddle|Manufacturer#1|Brand#13|LARGE BRUSHED BRASS|15|LG CASE|902.00|lar accounts amo
+3|spring green yellow purple cornsilk|Manufacturer#4|Brand#42|STANDARD POLISHED BRASS|21|WRAP CASE|903.00|egular deposits hag
+4|cornflower chocolate smoke green pink|Manufacturer#3|Brand#34|SMALL PLATED BRASS|14|MED DRUM|904.00|p furiously r
\ No newline at end of file
diff --git a/tajo-storage/tajo-storage-pgsql/src/test/resources/dataset/partsupp.tbl b/tajo-storage/tajo-storage-pgsql/src/test/resources/dataset/partsupp.tbl
new file mode 100644
index 0000000..a183389
--- /dev/null
+++ b/tajo-storage/tajo-storage-pgsql/src/test/resources/dataset/partsupp.tbl
@@ -0,0 +1,3 @@
+1|2|3325|771.64|, even theodolites. regular, final theodolites eat after the carefully pending foxes. furiously regular deposits sleep slyly. carefully bold realms above the ironic dependencies haggle careful|
+2|3|8895|1.01|nic accounts. final accounts sleep furiously about the ironic, bold packages. regular, regular accounts|
+3|4|4651|920.92|ilent foxes affix furiously quickly unusual requests. even packages across the carefully even theodolites nag above the sp|
\ No newline at end of file
diff --git a/tajo-storage/tajo-storage-pgsql/src/test/resources/dataset/region.tbl b/tajo-storage/tajo-storage-pgsql/src/test/resources/dataset/region.tbl
new file mode 100644
index 0000000..ef50e31
--- /dev/null
+++ b/tajo-storage/tajo-storage-pgsql/src/test/resources/dataset/region.tbl
@@ -0,0 +1,5 @@
+0|AFRICA|lar deposits. blithely final packages cajole. regular waters are final requests. regular accounts are according to |
+1|AMERICA|hs use ironic, even requests. s|
+2|ASIA|ges. thinly even pinto beans ca|
+3|EUROPE|ly final courts cajole furiously final excuse|
+4|MIDDLE EAST|uickly special accounts cajole carefully blithely close requests. carefully final asymptotes haggle furiousl|
\ No newline at end of file
diff --git a/tajo-storage/tajo-storage-pgsql/src/test/resources/dataset/supplier.tbl b/tajo-storage/tajo-storage-pgsql/src/test/resources/dataset/supplier.tbl
new file mode 100644
index 0000000..c51ce4e
--- /dev/null
+++ b/tajo-storage/tajo-storage-pgsql/src/test/resources/dataset/supplier.tbl
@@ -0,0 +1,3 @@
+2|Supplier#000000002|89eJ5ksX3ImxJQBvxObC,|5|15-679-861-2259|4032.68| slyly bold instructions. idle dependen|
+3|Supplier#000000003|q1,G3Pj6OjIuUYfUoH18BFTKP5aU9bEV3|1|11-383-516-1199|4192.40|blithely silent requests after the express dependencies are sl|
+4|Supplier#000000004|Bk7ah4CK8SYQTepEmvMkkgMwg|15|25-843-787-7479|4641.08|riously even requests above the exp|
\ No newline at end of file