You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tajo.apache.org by ji...@apache.org on 2015/03/11 02:21:57 UTC

[01/12] tajo git commit: TAJO-1135: Implement queryable virtual table for cluster information

Repository: tajo
Updated Branches:
  refs/heads/index_support e38c48aa8 -> 347571584


TAJO-1135: Implement queryable virtual table for cluster information

Closes #366


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

Branch: refs/heads/index_support
Commit: 6e519bcf39a526b64e62d9957404bfd8a3888486
Parents: 1617fa9
Author: Jihun Kang <ji...@apache.org>
Authored: Fri Mar 6 16:32:37 2015 +0900
Committer: Jihun Kang <ji...@apache.org>
Committed: Fri Mar 6 16:32:37 2015 +0900

----------------------------------------------------------------------
 CHANGES                                         |   2 +
 .../dictionary/ClusterTableDescriptor.java      |  56 ++++++++
 .../InfoSchemaMetadataDictionary.java           |   5 +-
 .../NonForwardQueryResultSystemScanner.java     | 142 +++++++++++++++++++
 .../TestNonForwardQueryResultSystemScanner.java |  18 +++
 5 files changed, 222 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tajo/blob/6e519bcf/CHANGES
----------------------------------------------------------------------
diff --git a/CHANGES b/CHANGES
index 1570e42..974e4d7 100644
--- a/CHANGES
+++ b/CHANGES
@@ -4,6 +4,8 @@ Release 0.11.0 - unreleased
 
   NEW FEATURES
 
+    TAJO-1135: Implement queryable virtual table for cluster information.
+    (jihun)
 
   IMPROVEMENT
 

http://git-wip-us.apache.org/repos/asf/tajo/blob/6e519bcf/tajo-catalog/tajo-catalog-server/src/main/java/org/apache/tajo/catalog/dictionary/ClusterTableDescriptor.java
----------------------------------------------------------------------
diff --git a/tajo-catalog/tajo-catalog-server/src/main/java/org/apache/tajo/catalog/dictionary/ClusterTableDescriptor.java b/tajo-catalog/tajo-catalog-server/src/main/java/org/apache/tajo/catalog/dictionary/ClusterTableDescriptor.java
new file mode 100644
index 0000000..e3c830f
--- /dev/null
+++ b/tajo-catalog/tajo-catalog-server/src/main/java/org/apache/tajo/catalog/dictionary/ClusterTableDescriptor.java
@@ -0,0 +1,56 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.tajo.catalog.dictionary;
+
+import org.apache.tajo.common.TajoDataTypes.Type;
+
+class ClusterTableDescriptor extends AbstractTableDescriptor {
+  
+  private static final String TABLENAME = "cluster";
+  private final ColumnDescriptor[] columns = new ColumnDescriptor[] {
+      new ColumnDescriptor("host", Type.TEXT, 0),
+      new ColumnDescriptor("port", Type.INT4, 0),
+      new ColumnDescriptor("type", Type.TEXT, 0),
+      new ColumnDescriptor("status", Type.TEXT, 0),
+      new ColumnDescriptor("total_cpu", Type.INT4, 0),
+      new ColumnDescriptor("used_mem", Type.INT8, 0),
+      new ColumnDescriptor("total_mem", Type.INT8, 0),
+      new ColumnDescriptor("free_heap", Type.INT8, 0),
+      new ColumnDescriptor("max_heap", Type.INT8, 0),
+      new ColumnDescriptor("used_diskslots", Type.FLOAT4, 0),
+      new ColumnDescriptor("total_diskslots", Type.FLOAT4, 0),
+      new ColumnDescriptor("running_tasks", Type.INT4, 0),
+      new ColumnDescriptor("last_heartbeat_ts", Type.TIMESTAMP, 0)
+  };
+
+  public ClusterTableDescriptor(InfoSchemaMetadataDictionary metadataDictionary) {
+    super(metadataDictionary);
+  }
+
+  @Override
+  public String getTableNameString() {
+    return TABLENAME;
+  }
+
+  @Override
+  protected ColumnDescriptor[] getColumnDescriptors() {
+    return columns;
+  }
+
+}

http://git-wip-us.apache.org/repos/asf/tajo/blob/6e519bcf/tajo-catalog/tajo-catalog-server/src/main/java/org/apache/tajo/catalog/dictionary/InfoSchemaMetadataDictionary.java
----------------------------------------------------------------------
diff --git a/tajo-catalog/tajo-catalog-server/src/main/java/org/apache/tajo/catalog/dictionary/InfoSchemaMetadataDictionary.java b/tajo-catalog/tajo-catalog-server/src/main/java/org/apache/tajo/catalog/dictionary/InfoSchemaMetadataDictionary.java
index de79caa..0ac0a54 100644
--- a/tajo-catalog/tajo-catalog-server/src/main/java/org/apache/tajo/catalog/dictionary/InfoSchemaMetadataDictionary.java
+++ b/tajo-catalog/tajo-catalog-server/src/main/java/org/apache/tajo/catalog/dictionary/InfoSchemaMetadataDictionary.java
@@ -24,6 +24,7 @@ import java.util.List;
 
 import org.apache.tajo.catalog.exception.NoSuchTableException;
 import org.apache.tajo.catalog.proto.CatalogProtos;
+import org.apache.tajo.catalog.proto.CatalogProtos.StoreType;
 import org.apache.tajo.util.TUtil;
 
 public class InfoSchemaMetadataDictionary {
@@ -39,6 +40,7 @@ public class InfoSchemaMetadataDictionary {
     TABLEOPTIONS,
     TABLESTATS,
     PARTITIONS,
+    CLUSTER,
     MAX_TABLE;
   }
   
@@ -58,6 +60,7 @@ public class InfoSchemaMetadataDictionary {
     schemaInfoTableDescriptors.set(DEFINED_TABLES.TABLEOPTIONS.ordinal(), new TableOptionsTableDescriptor(this));
     schemaInfoTableDescriptors.set(DEFINED_TABLES.TABLESTATS.ordinal(), new TableStatsTableDescriptor(this));
     schemaInfoTableDescriptors.set(DEFINED_TABLES.PARTITIONS.ordinal(), new PartitionsTableDescriptor(this));
+    schemaInfoTableDescriptors.set(DEFINED_TABLES.CLUSTER.ordinal(), new ClusterTableDescriptor(this));
   }
 
   public boolean isSystemDatabase(String databaseName) {
@@ -119,6 +122,6 @@ public class InfoSchemaMetadataDictionary {
   }
   
   protected String getTablePath() {
-    return "SYSTEM";
+    return StoreType.SYSTEM.name().toUpperCase();
   }
 }

http://git-wip-us.apache.org/repos/asf/tajo/blob/6e519bcf/tajo-core/src/main/java/org/apache/tajo/master/exec/NonForwardQueryResultSystemScanner.java
----------------------------------------------------------------------
diff --git a/tajo-core/src/main/java/org/apache/tajo/master/exec/NonForwardQueryResultSystemScanner.java b/tajo-core/src/main/java/org/apache/tajo/master/exec/NonForwardQueryResultSystemScanner.java
index 93909d1..e44d8be 100644
--- a/tajo-core/src/main/java/org/apache/tajo/master/exec/NonForwardQueryResultSystemScanner.java
+++ b/tajo-core/src/main/java/org/apache/tajo/master/exec/NonForwardQueryResultSystemScanner.java
@@ -20,7 +20,10 @@ package org.apache.tajo.master.exec;
 
 import java.io.IOException;
 import java.util.ArrayList;
+import java.util.Collections;
 import java.util.List;
+import java.util.Map;
+import java.util.Set;
 import java.util.Stack;
 
 import org.apache.commons.logging.Log;
@@ -56,6 +59,8 @@ import org.apache.tajo.engine.planner.global.MasterPlan;
 import org.apache.tajo.engine.planner.physical.PhysicalExec;
 import org.apache.tajo.engine.query.QueryContext;
 import org.apache.tajo.master.TajoMaster.MasterContext;
+import org.apache.tajo.master.rm.Worker;
+import org.apache.tajo.master.rm.WorkerResource;
 import org.apache.tajo.plan.InvalidQueryException;
 import org.apache.tajo.plan.LogicalPlan;
 import org.apache.tajo.plan.PlanningException;
@@ -431,6 +436,141 @@ public class NonForwardQueryResultSystemScanner implements NonForwardQueryResult
     return tuples;
   }
   
+  private Tuple getQueryMasterTuple(Schema outSchema, Worker aWorker) {
+    List<Column> columns = outSchema.getColumns();
+    Tuple aTuple = new VTuple(outSchema.size());
+    WorkerResource aResource = aWorker.getResource();
+    
+    for (int fieldId = 0; fieldId < columns.size(); fieldId++) {
+      Column column = columns.get(fieldId);
+      
+      if ("host".equalsIgnoreCase(column.getSimpleName())) {
+        if (aWorker.getConnectionInfo() != null && aWorker.getConnectionInfo().getHost() != null) {
+          aTuple.put(fieldId, DatumFactory.createText(aWorker.getConnectionInfo().getHost()));
+        } else {
+          aTuple.put(fieldId, DatumFactory.createNullDatum());
+        }
+      } else if ("port".equalsIgnoreCase(column.getSimpleName())) {
+        if (aWorker.getConnectionInfo() != null) {
+          aTuple.put(fieldId, DatumFactory.createInt4(aWorker.getConnectionInfo().getQueryMasterPort()));
+        } else {
+          aTuple.put(fieldId, DatumFactory.createNullDatum());
+        }
+      } else if ("type".equalsIgnoreCase(column.getSimpleName())) {
+        aTuple.put(fieldId, DatumFactory.createText("QueryMaster"));
+      } else if ("status".equalsIgnoreCase(column.getSimpleName())) {
+        aTuple.put(fieldId, DatumFactory.createText(aWorker.getState().toString()));
+      } else if ("RUNNING".equalsIgnoreCase(aWorker.getState().toString())) {
+        if ("running_tasks".equalsIgnoreCase(column.getSimpleName())) {
+          aTuple.put(fieldId, DatumFactory.createInt4(aResource.getNumQueryMasterTasks()));
+        } else if ("free_heap".equalsIgnoreCase(column.getSimpleName())) {
+          aTuple.put(fieldId, DatumFactory.createInt8(aResource.getFreeHeap()));
+        } else if ("max_heap".equalsIgnoreCase(column.getSimpleName())) {
+          aTuple.put(fieldId, DatumFactory.createInt8(aResource.getMaxHeap()));
+        } else if ("last_heartbeat_ts".equalsIgnoreCase(column.getSimpleName())) {
+          if (aWorker.getLastHeartbeatTime() > 0) {
+            aTuple.put(fieldId, DatumFactory.createTimestmpDatumWithJavaMillis(aWorker.getLastHeartbeatTime()));
+          } else {
+            aTuple.put(fieldId, DatumFactory.createNullDatum());
+          }
+        }
+      } else {
+        aTuple.put(fieldId, DatumFactory.createNullDatum());
+      }
+    }
+    
+    return aTuple;
+  }
+  
+  private Tuple getWorkerTuple(Schema outSchema, Worker aWorker) {
+    List<Column> columns = outSchema.getColumns();
+    Tuple aTuple = new VTuple(outSchema.size());
+    WorkerResource aResource = aWorker.getResource();
+    
+    for (int fieldId = 0; fieldId < columns.size(); fieldId++) {
+      Column column = columns.get(fieldId);
+      
+      if ("host".equalsIgnoreCase(column.getSimpleName())) {
+        if (aWorker.getConnectionInfo() != null && aWorker.getConnectionInfo().getHost() != null) {
+          aTuple.put(fieldId, DatumFactory.createText(aWorker.getConnectionInfo().getHost()));
+        } else {
+          aTuple.put(fieldId, DatumFactory.createNullDatum());
+        }
+      } else if ("port".equalsIgnoreCase(column.getSimpleName())) {
+        if (aWorker.getConnectionInfo() != null) {
+          aTuple.put(fieldId, DatumFactory.createInt4(aWorker.getConnectionInfo().getPeerRpcPort()));
+        } else {
+          aTuple.put(fieldId, DatumFactory.createNullDatum());
+        }
+      } else if ("type".equalsIgnoreCase(column.getSimpleName())) {
+        aTuple.put(fieldId, DatumFactory.createText("Worker"));
+      } else if ("status".equalsIgnoreCase(column.getSimpleName())) {
+        aTuple.put(fieldId, DatumFactory.createText(aWorker.getState().toString()));
+      } else if ("RUNNING".equalsIgnoreCase(aWorker.getState().toString())) {
+        if ("total_cpu".equalsIgnoreCase(column.getSimpleName())) {
+          aTuple.put(fieldId, DatumFactory.createInt4(aResource.getCpuCoreSlots()));
+        } else if ("used_mem".equalsIgnoreCase(column.getSimpleName())) {
+          aTuple.put(fieldId, DatumFactory.createInt8(aResource.getUsedMemoryMB()*1048576l));
+        } else if ("total_mem".equalsIgnoreCase(column.getSimpleName())) {
+          aTuple.put(fieldId, DatumFactory.createInt8(aResource.getMemoryMB()*1048576l));
+        } else if ("free_heap".equalsIgnoreCase(column.getSimpleName())) {
+          aTuple.put(fieldId, DatumFactory.createInt8(aResource.getFreeHeap()));
+        } else if ("max_heap".equalsIgnoreCase(column.getSimpleName())) {
+          aTuple.put(fieldId, DatumFactory.createInt8(aResource.getMaxHeap()));
+        } else if ("used_diskslots".equalsIgnoreCase(column.getSimpleName())) {
+          aTuple.put(fieldId, DatumFactory.createFloat4(aResource.getUsedDiskSlots()));
+        } else if ("total_diskslots".equalsIgnoreCase(column.getSimpleName())) {
+          aTuple.put(fieldId, DatumFactory.createFloat4(aResource.getDiskSlots()));
+        } else if ("running_tasks".equalsIgnoreCase(column.getSimpleName())) {
+          aTuple.put(fieldId, DatumFactory.createInt4(aResource.getNumRunningTasks()));
+        } else if ("last_heartbeat_ts".equalsIgnoreCase(column.getSimpleName())) {
+          if (aWorker.getLastHeartbeatTime() > 0) {
+            aTuple.put(fieldId, DatumFactory.createTimestmpDatumWithJavaMillis(aWorker.getLastHeartbeatTime()));
+          } else {
+            aTuple.put(fieldId, DatumFactory.createNullDatum());
+          }
+        }
+      }
+      else {
+        aTuple.put(fieldId, DatumFactory.createNullDatum());
+      }
+    }
+    
+    return aTuple;
+  }
+  
+  private List<Tuple> getClusterInfo(Schema outSchema) {
+    Map<Integer, Worker> workerMap = masterContext.getResourceManager().getWorkers();
+    Set<Integer> keySet = workerMap.keySet();
+    List<Tuple> tuples = Collections.emptyList();
+    List<Worker> queryMasterList = new ArrayList<Worker>();
+    List<Worker> workerList = new ArrayList<Worker>();
+    
+    for (Integer keyId: keySet) {
+      Worker aWorker = workerMap.get(keyId);
+      WorkerResource aResource = aWorker.getResource();
+      
+      if (aResource.isQueryMasterMode()) {
+        queryMasterList.add(aWorker);
+      }
+      
+      if (aResource.isTaskRunnerMode()) {
+        workerList.add(aWorker);
+      }
+    }
+    
+    tuples = new ArrayList<Tuple>(queryMasterList.size() + workerList.size());
+    for (Worker queryMaster: queryMasterList) {
+      tuples.add(getQueryMasterTuple(outSchema, queryMaster));
+    }
+    
+    for (Worker worker: workerList) {
+      tuples.add(getWorkerTuple(outSchema, worker));
+    }
+    
+    return tuples;
+  }
+  
   private List<Tuple> fetchSystemTable(TableDesc tableDesc, Schema inSchema) {
     List<Tuple> tuples = null;
     String tableName = CatalogUtil.extractSimpleName(tableDesc.getName());
@@ -451,6 +591,8 @@ public class NonForwardQueryResultSystemScanner implements NonForwardQueryResult
       tuples = getAllTableStats(inSchema);
     } else if ("partitions".equalsIgnoreCase(tableName)) {
       tuples = getAllPartitions(inSchema);
+    } else if ("cluster".equalsIgnoreCase(tableName)) {
+      tuples = getClusterInfo(inSchema);
     }
     
     return tuples;    

http://git-wip-us.apache.org/repos/asf/tajo/blob/6e519bcf/tajo-core/src/test/java/org/apache/tajo/master/TestNonForwardQueryResultSystemScanner.java
----------------------------------------------------------------------
diff --git a/tajo-core/src/test/java/org/apache/tajo/master/TestNonForwardQueryResultSystemScanner.java b/tajo-core/src/test/java/org/apache/tajo/master/TestNonForwardQueryResultSystemScanner.java
index fa7fdf0..01d4ec4 100644
--- a/tajo-core/src/test/java/org/apache/tajo/master/TestNonForwardQueryResultSystemScanner.java
+++ b/tajo-core/src/test/java/org/apache/tajo/master/TestNonForwardQueryResultSystemScanner.java
@@ -295,4 +295,22 @@ public class TestNonForwardQueryResultSystemScanner {
     assertThat(tuples.size(), is(9));
     assertThat(tuples, hasItem(getTupleMatcher(0, is("lineitem"))));
   }
+  
+  @Test
+  public void testGetClusterDetails() throws Exception {
+    NonForwardQueryResultScanner queryResultScanner =
+        getScanner("SELECT TYPE FROM INFORMATION_SCHEMA.CLUSTER");
+    
+    queryResultScanner.init();
+    
+    List<ByteString> rowBytes = queryResultScanner.getNextRows(100);
+    
+    assertThat(rowBytes.size(), is(2));
+    
+    RowStoreDecoder decoder = RowStoreUtil.createDecoder(queryResultScanner.getLogicalSchema());
+    List<Tuple> tuples = getTupleList(decoder, rowBytes);
+    
+    assertThat(tuples.size(), is(2));
+    assertThat(tuples, hasItem(getTupleMatcher(0, is("QueryMaster"))));
+  }
 }


[07/12] tajo git commit: Updated google analytics tracking js.

Posted by ji...@apache.org.
Updated google analytics tracking js.


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

Branch: refs/heads/index_support
Commit: f9d2fdefe87ad7145f49f287f59e4e18c5a86183
Parents: 14a7f82
Author: Hyunsik Choi <hy...@apache.org>
Authored: Mon Mar 9 02:11:31 2015 -0700
Committer: Hyunsik Choi <hy...@apache.org>
Committed: Mon Mar 9 02:11:31 2015 -0700

----------------------------------------------------------------------
 tajo-project/src/site/markdown/downloads.md |  8 ++---
 tajo-project/src/site/site.xml              | 37 +++++++++++++++++-------
 2 files changed, 30 insertions(+), 15 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tajo/blob/f9d2fdef/tajo-project/src/site/markdown/downloads.md
----------------------------------------------------------------------
diff --git a/tajo-project/src/site/markdown/downloads.md b/tajo-project/src/site/markdown/downloads.md
index d79a3b9..44d370b 100644
--- a/tajo-project/src/site/markdown/downloads.md
+++ b/tajo-project/src/site/markdown/downloads.md
@@ -23,9 +23,9 @@
  * [Announcement] (releases/0.10.0/announcement.html)
  * [Release Notes] (releases/0.10.0/relnotes.html)
  * [User Documentation] (http://tajo.apache.org/docs/0.10.0/index.html)
- * Source: [tajo-0.10.0-src.tar.gz](http://apache.org/dyn/closer.cgi/tajo/tajo-0.10.0/tajo-0.10.0-src.tar.gz) ([MD5](http://www.apache.org/dist/tajo/tajo-0.10.0/tajo-0.10.0-src.tar.gz.md5)) ([SHA](http://www.apache.org/dist/tajo/tajo-0.10.0/tajo-0.10.0-src.tar.gz.sha)) ([SIGN](http://www.apache.org/dist/tajo/tajo-0.10.0/tajo-0.10.0-src.tar.gz.asc)) ([KEYS](http://www.apache.org/dist/tajo/KEYS))
- * Binary Tarball: [tajo-0.10.0.tar.gz] (http://apache.org/dyn/closer.cgi/tajo/tajo-0.10.0/tajo-0.10.0.tar.gz) ([MD5](http://www.apache.org/dist/tajo/tajo-0.10.0/tajo-0.10.0.tar.gz.md5)) ([SHA](http://www.apache.org/dist/tajo/tajo-0.10.0/tajo-0.10.0.tar.gz.sha)) ([SIGN](http://www.apache.org/dist/tajo/tajo-0.10.0/tajo-0.10.0.tar.gz.asc)) ([KEYS](http://www.apache.org/dist/tajo/KEYS))
- * JDBC Driver: [tajo-jdbc-0.10.0.jar] (http://apache.org/dyn/closer.cgi/tajo/tajo-0.10.0/tajo-jdbc-0.10.0.jar) ([MD5](http://www.apache.org/dist/tajo/tajo-0.10.0/tajo-jdbc-0.10.0.jar.md5)) ([SHA](http://www.apache.org/dist/tajo/tajo-0.10.0/tajo-jdbc-0.10.0.jar.sha)) ([SIGN](http://www.apache.org/dist/tajo/tajo-0.10.0/tajo-jdbc-0.10.0.jar.asc)) ([KEYS](http://www.apache.org/dist/tajo/KEYS))
+ * Source: <a href='http://apache.org/dyn/closer.cgi/tajo/tajo-0.10.0/tajo-0.10.0-src.tar.gz' id='tajo-0.10.0-src'>tajo-0.10.0-src.tar.gz</a> ([MD5](http://www.apache.org/dist/tajo/tajo-0.10.0/tajo-0.10.0-src.tar.gz.md5)) ([SHA](http://www.apache.org/dist/tajo/tajo-0.10.0/tajo-0.10.0-src.tar.gz.sha)) ([SIGN](http://www.apache.org/dist/tajo/tajo-0.10.0/tajo-0.10.0-src.tar.gz.asc)) ([KEYS](http://www.apache.org/dist/tajo/KEYS))
+ * Binary Tarball: <a href='http://apache.org/dyn/closer.cgi/tajo/tajo-0.10.0/tajo-0.10.0.tar.gz' id='tajo-0.10.0-bin'>tajo-0.10.0.tar.gz</a> ([MD5](http://www.apache.org/dist/tajo/tajo-0.10.0/tajo-0.10.0.tar.gz.md5)) ([SHA](http://www.apache.org/dist/tajo/tajo-0.10.0/tajo-0.10.0.tar.gz.sha)) ([SIGN](http://www.apache.org/dist/tajo/tajo-0.10.0/tajo-0.10.0.tar.gz.asc)) ([KEYS](http://www.apache.org/dist/tajo/KEYS))
+ * JDBC Driver: <a href='http://apache.org/dyn/closer.cgi/tajo/tajo-0.10.0/tajo-jdbc-0.10.0.jar' id='tajo-jdbc-0.10.0'>tajo-jdbc-0.10.0.jar</a> ([MD5](http://www.apache.org/dist/tajo/tajo-0.10.0/tajo-jdbc-0.10.0.jar.md5)) ([SHA](http://www.apache.org/dist/tajo/tajo-0.10.0/tajo-jdbc-0.10.0.jar.sha)) ([SIGN](http://www.apache.org/dist/tajo/tajo-0.10.0/tajo-jdbc-0.10.0.jar.asc)) ([KEYS](http://www.apache.org/dist/tajo/KEYS))
 
 ## Previous Releases
 ### Release 0.9.0 (Oct 21, 2014)
@@ -106,4 +106,4 @@ or
 
 ```
 sha1sum -c tajo-0.x.0.tar.gz.sha1
-```
\ No newline at end of file
+```

http://git-wip-us.apache.org/repos/asf/tajo/blob/f9d2fdef/tajo-project/src/site/site.xml
----------------------------------------------------------------------
diff --git a/tajo-project/src/site/site.xml b/tajo-project/src/site/site.xml
index aec60ac..65968c7 100644
--- a/tajo-project/src/site/site.xml
+++ b/tajo-project/src/site/site.xml
@@ -57,17 +57,32 @@
     <head>
       <meta name="description" content="Apache Tajo,SQL-on-Hadoop,big data warehouse system on Hadoop,relational and distributed query engine" />
       <script type="text/javascript">
-
-        var _gaq = _gaq || [];
-        _gaq.push(['_setAccount', 'UA-38152529-1']);
-        _gaq.push(['_trackPageview']);
-
-        (function() {
-        var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
-        ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
-        var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
-        })();
-
+(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
+
+ga('create', 'UA-38152529-1', 'auto');
+ga('send', 'pageview');
+
+var dn_src_0_10_0 = document.getElementById('tajo-0.10.0-src');
+var dn_bin_0_10_0 = document.getElementById('tajo-0.10.0-bin');
+var dn_jdbc_0_10_0 = document.getElementById('tajo-jdbc-0.10.0');
+
+addListener(dn_src_0_10_0, 'click', function() {
+  ga('send', 'event', 'download', 'click', 'tajo-0.10.0-src');
+});
+addListener(dn_bin_0_10_0, 'click', function() {
+  ga('send', 'event', 'download', 'click', 'tajo-0.10.0-bin');
+});
+addListener(dn_jdbc_0_10_0, 'click', function() {
+  ga('send', 'event', 'download', 'click', 'tajo-jdbc-0.10.0');
+});
+
+function addListener(element, type, callback) {
+ if (element.addEventListener) element.addEventListener(type, callback);
+ else if (element.attachEvent) element.attachEvent('on' + type, callback);
+}
       </script>
       <style>
         a.externalLink[href^=http] {


[06/12] tajo git commit: TAJO-1378: Incorrect version(0.8.0) info in tajo-doc. (Contributed by Dongjoon Hyun, Committed by jihoon)

Posted by ji...@apache.org.
TAJO-1378: Incorrect version(0.8.0) info in tajo-doc. (Contributed by Dongjoon Hyun, Committed by jihoon)


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

Branch: refs/heads/index_support
Commit: 14a7f82418d4169a43b35587f2b1154a13461806
Parents: b839d37
Author: Jihoon Son <ji...@apache.org>
Authored: Mon Mar 9 14:25:12 2015 +0900
Committer: Jihoon Son <ji...@apache.org>
Committed: Mon Mar 9 14:25:12 2015 +0900

----------------------------------------------------------------------
 CHANGES                           | 5 ++++-
 tajo-docs/src/main/sphinx/conf.py | 4 ++--
 2 files changed, 6 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tajo/blob/14a7f824/CHANGES
----------------------------------------------------------------------
diff --git a/CHANGES b/CHANGES
index 9d986f1..d132eb5 100644
--- a/CHANGES
+++ b/CHANGES
@@ -16,7 +16,10 @@ Release 0.11.0 - unreleased
 
   BUG FIXES
 
-    TAJO-1370 TUtils.checkEquals() is not consistent with description 
+    TAJO-1378: Incorrect version(0.8.0) info in tajo-doc. 
+    (Contributed by Dongjoon Hyun, Committed by jihoon)
+
+    TAJO-1370: TUtils.checkEquals() is not consistent with description 
     in javadoc. (Contributed by navis, Committed by hyunsik)
 
     TAJO-1362: Resolve findbug warnings on Tajo Core Module. (jihun)

http://git-wip-us.apache.org/repos/asf/tajo/blob/14a7f824/tajo-docs/src/main/sphinx/conf.py
----------------------------------------------------------------------
diff --git a/tajo-docs/src/main/sphinx/conf.py b/tajo-docs/src/main/sphinx/conf.py
index 9695ed1..f6a2d96 100644
--- a/tajo-docs/src/main/sphinx/conf.py
+++ b/tajo-docs/src/main/sphinx/conf.py
@@ -65,9 +65,9 @@ copyright = u'2014, Apache Tajo Team'
 # built documents.
 #
 # The short X.Y version.
-version = '0.8'
+version = '0.11'
 # The full version, including alpha/beta/rc tags.
-release = '0.8.0'
+release = '0.11.0'
 
 # The language for content autogenerated by Sphinx. Refer to documentation
 # for a list of supported languages.


[09/12] tajo git commit: TAJO-1387: Correct error message for EXISTS clause.

Posted by ji...@apache.org.
TAJO-1387: Correct error message for EXISTS clause.

closes #409

Signed-off-by: Hyunsik Choi <hy...@apache.org>


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

Branch: refs/heads/index_support
Commit: 13316bd26cbd7eedcc97c74f317ca743bd2eba5b
Parents: 69fd8d2
Author: Dongjoon Hyun <do...@apache.org>
Authored: Tue Mar 10 22:41:50 2015 +0900
Committer: Hyunsik Choi <hy...@apache.org>
Committed: Tue Mar 10 12:43:08 2015 -0700

----------------------------------------------------------------------
 CHANGES                                                           | 3 +++
 .../src/main/java/org/apache/tajo/algebra/ExistsPredicate.java    | 2 +-
 2 files changed, 4 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tajo/blob/13316bd2/CHANGES
----------------------------------------------------------------------
diff --git a/CHANGES b/CHANGES
index d132eb5..630417f 100644
--- a/CHANGES
+++ b/CHANGES
@@ -16,6 +16,9 @@ Release 0.11.0 - unreleased
 
   BUG FIXES
 
+    TAJO-1387: Correct error message for EXISTS clause.
+    (Contributed by Dongjoon Hyun, Committed by hyunsik)
+
     TAJO-1378: Incorrect version(0.8.0) info in tajo-doc. 
     (Contributed by Dongjoon Hyun, Committed by jihoon)
 

http://git-wip-us.apache.org/repos/asf/tajo/blob/13316bd2/tajo-algebra/src/main/java/org/apache/tajo/algebra/ExistsPredicate.java
----------------------------------------------------------------------
diff --git a/tajo-algebra/src/main/java/org/apache/tajo/algebra/ExistsPredicate.java b/tajo-algebra/src/main/java/org/apache/tajo/algebra/ExistsPredicate.java
index 389fd74..fa8b3d4 100644
--- a/tajo-algebra/src/main/java/org/apache/tajo/algebra/ExistsPredicate.java
+++ b/tajo-algebra/src/main/java/org/apache/tajo/algebra/ExistsPredicate.java
@@ -27,7 +27,7 @@ public class ExistsPredicate extends UnaryOperator {
   private boolean not;
 
   public ExistsPredicate(SimpleTableSubQuery simpleTableSubQuery, boolean not) {
-    super(OpType.InPredicate);
+    super(OpType.ExistsPredicate);
     this.not = not;
     setChild(simpleTableSubQuery);
   }


[10/12] tajo git commit: TAJO-1386: CURRENT_DATE generates parsing errors sometimes.

Posted by ji...@apache.org.
TAJO-1386: CURRENT_DATE generates parsing errors sometimes.

Closes #408

Signed-off-by: Hyunsik Choi <hy...@apache.org>


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

Branch: refs/heads/index_support
Commit: 3b9a2e5f287db3fcfdf6b0578c8184c47b8b3ebd
Parents: 13316bd
Author: navis.ryu <na...@apache.org>
Authored: Tue Mar 10 20:32:26 2015 +0900
Committer: Hyunsik Choi <hy...@apache.org>
Committed: Tue Mar 10 14:09:22 2015 -0700

----------------------------------------------------------------------
 CHANGES                                            |  3 +++
 .../org/apache/tajo/engine/parser/SQLParser.g4     |  1 +
 .../org/apache/tajo/engine/parser/SQLAnalyzer.java |  4 +++-
 .../apache/tajo/engine/parser/SQLSyntaxError.java  | 17 +++++++----------
 .../engine/function/TestDateTimeFunctions.java     |  5 +++++
 .../apache/tajo/plan/InvalidQueryException.java    |  4 ++--
 6 files changed, 21 insertions(+), 13 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tajo/blob/3b9a2e5f/CHANGES
----------------------------------------------------------------------
diff --git a/CHANGES b/CHANGES
index 630417f..dc1a5f7 100644
--- a/CHANGES
+++ b/CHANGES
@@ -16,6 +16,9 @@ Release 0.11.0 - unreleased
 
   BUG FIXES
 
+    TAJO-1386: CURRENT_DATE generates parsing errors sometimes.
+    (Contributed by navis, Committed by hyunsik)
+
     TAJO-1387: Correct error message for EXISTS clause.
     (Contributed by Dongjoon Hyun, Committed by hyunsik)
 

http://git-wip-us.apache.org/repos/asf/tajo/blob/3b9a2e5f/tajo-core/src/main/antlr4/org/apache/tajo/engine/parser/SQLParser.g4
----------------------------------------------------------------------
diff --git a/tajo-core/src/main/antlr4/org/apache/tajo/engine/parser/SQLParser.g4 b/tajo-core/src/main/antlr4/org/apache/tajo/engine/parser/SQLParser.g4
index 420bf46..a05a060 100644
--- a/tajo-core/src/main/antlr4/org/apache/tajo/engine/parser/SQLParser.g4
+++ b/tajo-core/src/main/antlr4/org/apache/tajo/engine/parser/SQLParser.g4
@@ -770,6 +770,7 @@ sign
 
 numeric_value_function
   : extract_expression
+  | datetime_value_function
   ;
 
 extract_expression

http://git-wip-us.apache.org/repos/asf/tajo/blob/3b9a2e5f/tajo-core/src/main/java/org/apache/tajo/engine/parser/SQLAnalyzer.java
----------------------------------------------------------------------
diff --git a/tajo-core/src/main/java/org/apache/tajo/engine/parser/SQLAnalyzer.java b/tajo-core/src/main/java/org/apache/tajo/engine/parser/SQLAnalyzer.java
index 5b4054f..869c0eb 100644
--- a/tajo-core/src/main/java/org/apache/tajo/engine/parser/SQLAnalyzer.java
+++ b/tajo-core/src/main/java/org/apache/tajo/engine/parser/SQLAnalyzer.java
@@ -1155,7 +1155,9 @@ public class SQLAnalyzer extends SQLParserBaseVisitor<Expr> {
     if (checkIfExist(ctx.extract_expression())) {
       return visitExtract_expression(ctx.extract_expression());
     }
-
+    if (checkIfExist(ctx.datetime_value_function())) {
+      return visitDatetime_value_function(ctx.datetime_value_function());
+    }
     return null;
   }
 

http://git-wip-us.apache.org/repos/asf/tajo/blob/3b9a2e5f/tajo-core/src/main/java/org/apache/tajo/engine/parser/SQLSyntaxError.java
----------------------------------------------------------------------
diff --git a/tajo-core/src/main/java/org/apache/tajo/engine/parser/SQLSyntaxError.java b/tajo-core/src/main/java/org/apache/tajo/engine/parser/SQLSyntaxError.java
index e4bfc7c..4c3b0fd 100644
--- a/tajo-core/src/main/java/org/apache/tajo/engine/parser/SQLSyntaxError.java
+++ b/tajo-core/src/main/java/org/apache/tajo/engine/parser/SQLSyntaxError.java
@@ -22,28 +22,25 @@ package org.apache.tajo.engine.parser;
 import org.apache.tajo.plan.InvalidQueryException;
 
 public class SQLSyntaxError extends InvalidQueryException {
-  private static final long serialVersionUID = 5388279335175632066L;
+  private static final long serialVersionUID = 5388279335175632067L;
 
-  private String errorMessage;
-  private String detailedMessage;
-  private SQLParseError parseError;
+  private transient String detailedMessage;
 
   public SQLSyntaxError(String errorMessage) {
-    this.errorMessage = errorMessage;
+    super(errorMessage);
   }
 
   public SQLSyntaxError(SQLParseError e) {
-    this.errorMessage = e.getMessageHeader();
-    this.parseError = e;
+    super(e.getMessageHeader(), e);
   }
 
   @Override
   public String getMessage() {
     if (detailedMessage == null) {
-      if (parseError != null) {
-        detailedMessage = parseError.getMessage();
+      if (getCause() != null) {
+        detailedMessage = getCause().getMessage();
       } else {
-        detailedMessage = String.format("ERROR: %s\n", errorMessage);
+        detailedMessage = String.format("ERROR: %s\n", super.getMessage());
       }
     }
     return detailedMessage;

http://git-wip-us.apache.org/repos/asf/tajo/blob/3b9a2e5f/tajo-core/src/test/java/org/apache/tajo/engine/function/TestDateTimeFunctions.java
----------------------------------------------------------------------
diff --git a/tajo-core/src/test/java/org/apache/tajo/engine/function/TestDateTimeFunctions.java b/tajo-core/src/test/java/org/apache/tajo/engine/function/TestDateTimeFunctions.java
index 6c708fb..25a10fd 100644
--- a/tajo-core/src/test/java/org/apache/tajo/engine/function/TestDateTimeFunctions.java
+++ b/tajo-core/src/test/java/org/apache/tajo/engine/function/TestDateTimeFunctions.java
@@ -443,6 +443,11 @@ public class TestDateTimeFunctions extends ExprTestBase {
           new String[]{dateFormat(expectedDate, "yyyy-MM-dd")});
       testSimpleEval(context, "select cast(extract(hour from current_time()) as INT4);",
           new String[]{String.valueOf(Integer.parseInt(dateFormat(expectedDate, "HH")))});
+
+      expectedDate.setDate(expectedDate.getDate() + 1);
+
+      testSimpleEval(context, "select current_date() + 1;",
+          new String[]{dateFormat(expectedDate, "yyyy-MM-dd")});
     } finally {
       TimeZone.setDefault(originalTimezone);
     }

http://git-wip-us.apache.org/repos/asf/tajo/blob/3b9a2e5f/tajo-plan/src/main/java/org/apache/tajo/plan/InvalidQueryException.java
----------------------------------------------------------------------
diff --git a/tajo-plan/src/main/java/org/apache/tajo/plan/InvalidQueryException.java b/tajo-plan/src/main/java/org/apache/tajo/plan/InvalidQueryException.java
index db986e1..a6b677f 100644
--- a/tajo-plan/src/main/java/org/apache/tajo/plan/InvalidQueryException.java
+++ b/tajo-plan/src/main/java/org/apache/tajo/plan/InvalidQueryException.java
@@ -29,7 +29,7 @@ public class InvalidQueryException extends RuntimeException {
     super(message);
   }
 	
-	public InvalidQueryException(Throwable t) {
-		super(t);
+	public InvalidQueryException(String message, Throwable t) {
+		super(message, t);
 	}
 }


[04/12] tajo git commit: Site update for 0.10.0 release.

Posted by ji...@apache.org.
Site update for 0.10.0 release.


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

Branch: refs/heads/index_support
Commit: 42ef0dc665db7bb806624b7fad0be9e943c1adfd
Parents: 6ba51c3
Author: Hyunsik Choi <hy...@apache.org>
Authored: Sun Mar 8 20:23:53 2015 -0700
Committer: Hyunsik Choi <hy...@apache.org>
Committed: Sun Mar 8 20:23:53 2015 -0700

----------------------------------------------------------------------
 tajo-project/src/site/apt/index.apt             |   4 +-
 tajo-project/src/site/markdown/downloads.md     |  12 +-
 .../markdown/releases/0.10.0/announcement.md    |  57 +++
 .../resources/releases/0.10.0/relnotes.html     | 370 +++++++++++++++++++
 tajo-project/src/site/site.xml                  |   4 +-
 5 files changed, 443 insertions(+), 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tajo/blob/42ef0dc6/tajo-project/src/site/apt/index.apt
----------------------------------------------------------------------
diff --git a/tajo-project/src/site/apt/index.apt b/tajo-project/src/site/apt/index.apt
index b18ca2d..42e524f 100644
--- a/tajo-project/src/site/apt/index.apt
+++ b/tajo-project/src/site/apt/index.apt
@@ -47,7 +47,7 @@ Features
 
     * JDBC driver support
 
-    * Various file formats support, such as CSV, RCFile, RowFile, SequenceFile and Parquet
+    * Various file formats support, such as CSV, JSON, RCFile, SequenceFile and Parquet
 
   * <<Easy>>
 
@@ -61,6 +61,8 @@ Features
 
 Releases
 
+  * <<[2015-03-08]>> {{{./downloads.html}Tajo 0.10.0}} ({{{./releases/0.10.0/announcement.html}Announcement}}, {{{./releases/0.10.0/relnotes.html}Release Notes}})
+
   * <<[2014-10-21]>> {{{./downloads.html}Tajo 0.9.0}} ({{{./releases/0.9.0/announcement.html}Announcement}}, {{{./releases/0.9.0/relnotes.html}Release Notes}})
 
   * <<[2014-05-01]>> {{{./downloads.html}Tajo 0.8.0}} ({{{./releases/0.8.0/announcement.html}Announcement}}, {{{./releases/0.8.0/relnotes.html}Release Notes}})

http://git-wip-us.apache.org/repos/asf/tajo/blob/42ef0dc6/tajo-project/src/site/markdown/downloads.md
----------------------------------------------------------------------
diff --git a/tajo-project/src/site/markdown/downloads.md b/tajo-project/src/site/markdown/downloads.md
index 0af73ac..d79a3b9 100644
--- a/tajo-project/src/site/markdown/downloads.md
+++ b/tajo-project/src/site/markdown/downloads.md
@@ -18,7 +18,17 @@
 
 ## Most Recent Releases
 
-### Latest Release 0.9.0 (Oct 21, 2014)
+### Latest Release 0.10.0 (Mar 8, 2015)
+
+ * [Announcement] (releases/0.10.0/announcement.html)
+ * [Release Notes] (releases/0.10.0/relnotes.html)
+ * [User Documentation] (http://tajo.apache.org/docs/0.10.0/index.html)
+ * Source: [tajo-0.10.0-src.tar.gz](http://apache.org/dyn/closer.cgi/tajo/tajo-0.10.0/tajo-0.10.0-src.tar.gz) ([MD5](http://www.apache.org/dist/tajo/tajo-0.10.0/tajo-0.10.0-src.tar.gz.md5)) ([SHA](http://www.apache.org/dist/tajo/tajo-0.10.0/tajo-0.10.0-src.tar.gz.sha)) ([SIGN](http://www.apache.org/dist/tajo/tajo-0.10.0/tajo-0.10.0-src.tar.gz.asc)) ([KEYS](http://www.apache.org/dist/tajo/KEYS))
+ * Binary Tarball: [tajo-0.10.0.tar.gz] (http://apache.org/dyn/closer.cgi/tajo/tajo-0.10.0/tajo-0.10.0.tar.gz) ([MD5](http://www.apache.org/dist/tajo/tajo-0.10.0/tajo-0.10.0.tar.gz.md5)) ([SHA](http://www.apache.org/dist/tajo/tajo-0.10.0/tajo-0.10.0.tar.gz.sha)) ([SIGN](http://www.apache.org/dist/tajo/tajo-0.10.0/tajo-0.10.0.tar.gz.asc)) ([KEYS](http://www.apache.org/dist/tajo/KEYS))
+ * JDBC Driver: [tajo-jdbc-0.10.0.jar] (http://apache.org/dyn/closer.cgi/tajo/tajo-0.10.0/tajo-jdbc-0.10.0.jar) ([MD5](http://www.apache.org/dist/tajo/tajo-0.10.0/tajo-jdbc-0.10.0.jar.md5)) ([SHA](http://www.apache.org/dist/tajo/tajo-0.10.0/tajo-jdbc-0.10.0.jar.sha)) ([SIGN](http://www.apache.org/dist/tajo/tajo-0.10.0/tajo-jdbc-0.10.0.jar.asc)) ([KEYS](http://www.apache.org/dist/tajo/KEYS))
+
+## Previous Releases
+### Release 0.9.0 (Oct 21, 2014)
 
  * [Announcement] (releases/0.9.0/announcement.html)
  * [Release Notes] (releases/0.9.0/relnotes.html)

http://git-wip-us.apache.org/repos/asf/tajo/blob/42ef0dc6/tajo-project/src/site/markdown/releases/0.10.0/announcement.md
----------------------------------------------------------------------
diff --git a/tajo-project/src/site/markdown/releases/0.10.0/announcement.md b/tajo-project/src/site/markdown/releases/0.10.0/announcement.md
new file mode 100644
index 0000000..41df74e
--- /dev/null
+++ b/tajo-project/src/site/markdown/releases/0.10.0/announcement.md
@@ -0,0 +1,57 @@
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one
+  or more contributor license agreements.  See the NOTICE file
+  distributed with this work for additional information
+  regarding copyright ownership.  The ASF licenses this file
+  to you under the Apache License, Version 2.0 (the
+  "License"); you may not use this file except in compliance
+  with the License.  You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+-->
+
+# Apache Tajo™ 0.10.0 Release Announcement
+
+The Apache Tajo team is pleased to announce the release of Apache 0.10.0.
+Apache Tajo provides low-latency and scalable SQL analytical 
+processing on Hadoop.
+
+The release is available for immediate download:
+
+ * http://tajo.apache.org/downloads.html 
+
+This is a major release. Apache Tajo team resolved about 160 issues including 
+lots of new features, bug fixes, and improvements. Apache Tajo 0.10.0 mainly 
+focuses on lightweight Tajo client dependencies, HBase storage integration, direct JSON support (flat schema only), and better Amazon S3 support. Also, this release publishes a single JDBC driver jar file separately.
+
+### Some of highlights
+
+#### SQL features
+ * Add FIRST_VALUE and LAST_VALUE window functions (TAJO-920)
+ * Better TIMEZONE support for TIMESTAMP and TIME types. (TAJO-1185, TAJO-1191, TAJO-1234, and TAJO-1186)
+ * Add SET SESSION and RESET statement (TAJO-1238)
+
+#### Performance Improvements
+ * Improved performance of delimited text files (TAJO-1100, TAJO-1149, and TAJO-1151)
+
+#### Eco-system Integration
+ * Hadoop 2.6.0 support
+ * HBase storage integration (TAJO-1118)
+ * Better Amazon S3 support ([TAJO-1166, TAJO-1211)
+
+#### Other important improvements 
+ * Lightweight Tajo client dependencies - Thin JDBC driver (TAJO-1160, TAJO-1228, and TAJO-1260)
+ * Support PostgreSQL CatalogStore (TAJO-233)
+ * Support Oracle CatalogStore (TAJO-235)
+ * Implement Query history persistency manager (TAJO-1026)
+ * Implement Json file scanner (TAJO-1095)
+
+For a complete list of new features and fixed problems, please see the release notes:
+
+ * http://tajo.apache.org/releases/0.10.0/relnotes.html
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tajo/blob/42ef0dc6/tajo-project/src/site/resources/releases/0.10.0/relnotes.html
----------------------------------------------------------------------
diff --git a/tajo-project/src/site/resources/releases/0.10.0/relnotes.html b/tajo-project/src/site/resources/releases/0.10.0/relnotes.html
new file mode 100644
index 0000000..8958a51
--- /dev/null
+++ b/tajo-project/src/site/resources/releases/0.10.0/relnotes.html
@@ -0,0 +1,370 @@
+<html>
+<head>
+<title>Release Notes - Tajo - Version 0.10.0</title>
+</head>
+
+<body>
+<h1>Release Notes - Tajo - Version 0.10.0</h1>
+
+<h2>Changes since Tajo 0.9.0</h2>
+    
+<h2>        Sub-task
+</h2>
+
+<ul>
+<li>[<a href='https://issues.apache.org/jira/browse/TAJO-324'>TAJO-324</a>] -         Rename the prefix &#39;QueryUnit&#39; to Task
+</li>
+<li>[<a href='https://issues.apache.org/jira/browse/TAJO-920'>TAJO-920</a>] -         Add FIRST_VALUE and LAST_VALUE window functions
+</li>
+<li>[<a href='https://issues.apache.org/jira/browse/TAJO-1149'>TAJO-1149</a>] -         Implement direct read of DelimitedTextFile
+</li>
+<li>[<a href='https://issues.apache.org/jira/browse/TAJO-1151'>TAJO-1151</a>] -         Implement the ByteBuffer-based De/Serializer 
+</li>
+<li>[<a href='https://issues.apache.org/jira/browse/TAJO-1152'>TAJO-1152</a>] -         RawFile ByteBuffer should be reuse
+</li>
+<li>[<a href='https://issues.apache.org/jira/browse/TAJO-1233'>TAJO-1233</a>] -         Merge hbase_storage branch to the master branch
+</li>
+<li>[<a href='https://issues.apache.org/jira/browse/TAJO-1260'>TAJO-1260</a>] -         Add ALTER TABLE ADD/DROP PARTITION statement to parser
+</li>
+<li>[<a href='https://issues.apache.org/jira/browse/TAJO-1262'>TAJO-1262</a>] -         Rename the prefix &#39;SubQuery&#39; to &#39;Stage&#39;
+</li>
+<li>[<a href='https://issues.apache.org/jira/browse/TAJO-1287'>TAJO-1287</a>] -         Repeated using of  the same order by key in multiple window clauses should be supported
+</li>
+</ul>
+            
+<h2>        Bug
+</h2>
+<ul>
+<li>[<a href='https://issues.apache.org/jira/browse/TAJO-831'>TAJO-831</a>] -         Project wrong column in the case of having same alias in subquery.
+</li>
+<li>[<a href='https://issues.apache.org/jira/browse/TAJO-930'>TAJO-930</a>] -         Could not initialize class org.apache.tajo.QueryTestCaseBase during building
+</li>
+<li>[<a href='https://issues.apache.org/jira/browse/TAJO-1003'>TAJO-1003</a>] -         wrong converting to_timestamp(text, text)
+</li>
+<li>[<a href='https://issues.apache.org/jira/browse/TAJO-1063'>TAJO-1063</a>] -         Current_time() always returns UTC time
+</li>
+<li>[<a href='https://issues.apache.org/jira/browse/TAJO-1064'>TAJO-1064</a>] -         The hour values are different between current_time() and extract from current_time()
+</li>
+<li>[<a href='https://issues.apache.org/jira/browse/TAJO-1108'>TAJO-1108</a>] -         RawFile tableStats does not update in query processing
+</li>
+<li>[<a href='https://issues.apache.org/jira/browse/TAJO-1119'>TAJO-1119</a>] -         JDBC driver should support TIMESTAMP type.
+</li>
+<li>[<a href='https://issues.apache.org/jira/browse/TAJO-1126'>TAJO-1126</a>] -         Join condition including functions throws IllegalArgumentException.
+</li>
+<li>[<a href='https://issues.apache.org/jira/browse/TAJO-1139'>TAJO-1139</a>] -         ExternalSortExec should delete the intermediate files
+</li>
+<li>[<a href='https://issues.apache.org/jira/browse/TAJO-1150'>TAJO-1150</a>] -         Some weird methods in QueryClientImpl should be fixed
+</li>
+<li>[<a href='https://issues.apache.org/jira/browse/TAJO-1154'>TAJO-1154</a>] -         TajoCli doesn&#39;t pause while running the non-forwarded query.
+</li>
+<li>[<a href='https://issues.apache.org/jira/browse/TAJO-1157'>TAJO-1157</a>] -         Required Java version in tutorial doc needs to be updated
+</li>
+<li>[<a href='https://issues.apache.org/jira/browse/TAJO-1158'>TAJO-1158</a>] -         Max Hadoop version in tutorial doc needs to be updated
+</li>
+<li>[<a href='https://issues.apache.org/jira/browse/TAJO-1162'>TAJO-1162</a>] -         to_char() returns &quot;-00&quot; second.
+</li>
+<li>[<a href='https://issues.apache.org/jira/browse/TAJO-1166'>TAJO-1166</a>] -         S3 related storage causes compilation error in Hadoop 2.6.0-SNAPSHOT
+</li>
+<li>[<a href='https://issues.apache.org/jira/browse/TAJO-1179'>TAJO-1179</a>] -         Integration tests in TravisCI are occasionally failed due to log size.
+</li>
+<li>[<a href='https://issues.apache.org/jira/browse/TAJO-1180'>TAJO-1180</a>] -         digitValue should throw Exception when char is not in valid range
+</li>
+<li>[<a href='https://issues.apache.org/jira/browse/TAJO-1181'>TAJO-1181</a>] -         Avro schema URL should support various protocols.
+</li>
+<li>[<a href='https://issues.apache.org/jira/browse/TAJO-1183'>TAJO-1183</a>] -         Keep command execution even with errors.
+</li>
+<li>[<a href='https://issues.apache.org/jira/browse/TAJO-1185'>TAJO-1185</a>] -         Default timezone should be UTC+0 instead of depending on JVM
+</li>
+<li>[<a href='https://issues.apache.org/jira/browse/TAJO-1188'>TAJO-1188</a>] -         Fix testcase testTimestampConstructor in TestTimestampDatum
+</li>
+<li>[<a href='https://issues.apache.org/jira/browse/TAJO-1190'>TAJO-1190</a>] -         INSERT INTO to partition tables may cause NPE.
+</li>
+<li>[<a href='https://issues.apache.org/jira/browse/TAJO-1191'>TAJO-1191</a>] -         Change DateDatum timezone to UTC
+</li>
+<li>[<a href='https://issues.apache.org/jira/browse/TAJO-1192'>TAJO-1192</a>] -         testTimestampConstructor incorrectly compares a local time with a UTC time
+</li>
+<li>[<a href='https://issues.apache.org/jira/browse/TAJO-1194'>TAJO-1194</a>] -         &#39;INSERT OVERWRITE .. SELECT&#39; does not remove existing data when result is empty.
+</li>
+<li>[<a href='https://issues.apache.org/jira/browse/TAJO-1197'>TAJO-1197</a>] -         Unit test failed: unable to create new native thread 
+</li>
+<li>[<a href='https://issues.apache.org/jira/browse/TAJO-1200'>TAJO-1200</a>] -         Invalid shuffle data of multiple worker in same server
+</li>
+<li>[<a href='https://issues.apache.org/jira/browse/TAJO-1205'>TAJO-1205</a>] -         Remove possible memory leak in TajoMaster
+</li>
+<li>[<a href='https://issues.apache.org/jira/browse/TAJO-1208'>TAJO-1208</a>] -         Failure of create table using textfile on hivemeta
+</li>
+<li>[<a href='https://issues.apache.org/jira/browse/TAJO-1210'>TAJO-1210</a>] -         ByteBufLineReader does not handle the end of file, if newline is not appeared
+</li>
+<li>[<a href='https://issues.apache.org/jira/browse/TAJO-1211'>TAJO-1211</a>] -         Staging directory for CTAS and INSERT should be in the output dir.
+</li>
+<li>[<a href='https://issues.apache.org/jira/browse/TAJO-1219'>TAJO-1219</a>] -         Files located in intermediate directories of partitioned table should be ignored
+</li>
+<li>[<a href='https://issues.apache.org/jira/browse/TAJO-1220'>TAJO-1220</a>] -         Implement createStatement() and setEscapeProcessing() in JdbcConnection
+</li>
+<li>[<a href='https://issues.apache.org/jira/browse/TAJO-1223'>TAJO-1223</a>] -         Wrong query verification against asterisk and more expressions in select list
+</li>
+<li>[<a href='https://issues.apache.org/jira/browse/TAJO-1224'>TAJO-1224</a>] -         When there is no projected column, json scan can be hang.
+</li>
+<li>[<a href='https://issues.apache.org/jira/browse/TAJO-1225'>TAJO-1225</a>] -         Fix wrong schema name in JDBC driver
+</li>
+<li>[<a href='https://issues.apache.org/jira/browse/TAJO-1231'>TAJO-1231</a>] -         Implicit table properties in session are not stored in table property.
+</li>
+<li>[<a href='https://issues.apache.org/jira/browse/TAJO-1232'>TAJO-1232</a>] -         Implicit groupby queries with LIMIT lead to wrong results.
+</li>
+<li>[<a href='https://issues.apache.org/jira/browse/TAJO-1234'>TAJO-1234</a>] -         Rearrange timezone in date/time types
+</li>
+<li>[<a href='https://issues.apache.org/jira/browse/TAJO-1235'>TAJO-1235</a>] -         ByteBufLineReader can not read text line with CRLF
+</li>
+<li>[<a href='https://issues.apache.org/jira/browse/TAJO-1237'>TAJO-1237</a>] -         Fix missing maven-module for pullserver
+</li>
+<li>[<a href='https://issues.apache.org/jira/browse/TAJO-1239'>TAJO-1239</a>] -         ORDER BY with null column desc miss some data.
+</li>
+<li>[<a href='https://issues.apache.org/jira/browse/TAJO-1242'>TAJO-1242</a>] -         Json scanner can not read some case of truncated text
+</li>
+<li>[<a href='https://issues.apache.org/jira/browse/TAJO-1244'>TAJO-1244</a>] -         tajo.worker.tmpdir.locations should use a validator for a list of paths.
+</li>
+<li>[<a href='https://issues.apache.org/jira/browse/TAJO-1246'>TAJO-1246</a>] -         HBase info port conflict occasionally causes unit test failures in Jenkins CI 
+</li>
+<li>[<a href='https://issues.apache.org/jira/browse/TAJO-1249'>TAJO-1249</a>] -         Tajo should check if a file format given in DDL is supported.
+</li>
+<li>[<a href='https://issues.apache.org/jira/browse/TAJO-1250'>TAJO-1250</a>] -         RawFileAppender occasionally causes BufferOverflowException
+</li>
+<li>[<a href='https://issues.apache.org/jira/browse/TAJO-1251'>TAJO-1251</a>] -         Query is hanging occasionally by shuffle report
+</li>
+<li>[<a href='https://issues.apache.org/jira/browse/TAJO-1252'>TAJO-1252</a>] -         PathValidator should allow hdfs paths which contain IP addresses
+</li>
+<li>[<a href='https://issues.apache.org/jira/browse/TAJO-1254'>TAJO-1254</a>] -         Fix getProgress race conditions in Query
+</li>
+<li>[<a href='https://issues.apache.org/jira/browse/TAJO-1257'>TAJO-1257</a>] -         ORDER BY with NULL FIRST misses some data
+</li>
+<li>[<a href='https://issues.apache.org/jira/browse/TAJO-1259'>TAJO-1259</a>] -         A title in catalog configuration document is different from others
+</li>
+<li>[<a href='https://issues.apache.org/jira/browse/TAJO-1265'>TAJO-1265</a>] -         min(), max() does not handle null properly
+</li>
+<li>[<a href='https://issues.apache.org/jira/browse/TAJO-1270'>TAJO-1270</a>] -         Fix typos
+</li>
+<li>[<a href='https://issues.apache.org/jira/browse/TAJO-1275'>TAJO-1275</a>] -         Optimizer pushs down non-equi filter as theta join qualifier
+</li>
+<li>[<a href='https://issues.apache.org/jira/browse/TAJO-1277'>TAJO-1277</a>] -         GreedyHeuristicJoinOrderAlgorithm sometimes wrongly assumes associativity of joins
+</li>
+<li>[<a href='https://issues.apache.org/jira/browse/TAJO-1278'>TAJO-1278</a>] -         Unit tests occasionally hang due to the invalid query status
+</li>
+<li>[<a href='https://issues.apache.org/jira/browse/TAJO-1283'>TAJO-1283</a>] -         ORDER BY with the first descending order causes wrong results
+</li>
+<li>[<a href='https://issues.apache.org/jira/browse/TAJO-1289'>TAJO-1289</a>] -         History reader fails to get the query information after a successful query execution
+</li>
+<li>[<a href='https://issues.apache.org/jira/browse/TAJO-1297'>TAJO-1297</a>] -         Tajo Web UI does not work after TAJO-1291
+</li>
+<li>[<a href='https://issues.apache.org/jira/browse/TAJO-1299'>TAJO-1299</a>] -         TB and PB representations in StorageUnit are overflow
+</li>
+<li>[<a href='https://issues.apache.org/jira/browse/TAJO-1303'>TAJO-1303</a>] -         CDH cannot pass hadoop version check test
+</li>
+<li>[<a href='https://issues.apache.org/jira/browse/TAJO-1304'>TAJO-1304</a>] -         Can not found TextFile in catalog
+</li>
+<li>[<a href='https://issues.apache.org/jira/browse/TAJO-1305'>TAJO-1305</a>] -         With metadata storage of MySQL, columns with the same character but difference case are not allowed
+</li>
+<li>[<a href='https://issues.apache.org/jira/browse/TAJO-1308'>TAJO-1308</a>] -         QueryInprogress can not release when query is QUERY_ERROR
+</li>
+<li>[<a href='https://issues.apache.org/jira/browse/TAJO-1312'>TAJO-1312</a>] -         Stage causes Invalid event error: SQ_SHUFFLE_REPORT at KILLED
+</li>
+<li>[<a href='https://issues.apache.org/jira/browse/TAJO-1313'>TAJO-1313</a>] -         Tajo-dump creates DDLs for information_schema tables
+</li>
+<li>[<a href='https://issues.apache.org/jira/browse/TAJO-1315'>TAJO-1315</a>] -         Invalid results are returned when a source table consists of multiple csv files
+</li>
+<li>[<a href='https://issues.apache.org/jira/browse/TAJO-1316'>TAJO-1316</a>] -         NPE occurs when performing window functions after join
+</li>
+<li>[<a href='https://issues.apache.org/jira/browse/TAJO-1318'>TAJO-1318</a>] -         Unit test failure after miniDFS cluster restart
+</li>
+<li>[<a href='https://issues.apache.org/jira/browse/TAJO-1319'>TAJO-1319</a>] -         Tajo can&#39;t find HBase configuration file.
+</li>
+<li>[<a href='https://issues.apache.org/jira/browse/TAJO-1321'>TAJO-1321</a>] -         Cli prints wrong response time
+</li>
+<li>[<a href='https://issues.apache.org/jira/browse/TAJO-1322'>TAJO-1322</a>] -         Invalid stored caching on StorageManager
+</li>
+<li>[<a href='https://issues.apache.org/jira/browse/TAJO-1324'>TAJO-1324</a>] -         Remove warehouse directory rewriting in Unit Test
+</li>
+<li>[<a href='https://issues.apache.org/jira/browse/TAJO-1325'>TAJO-1325</a>] -         Invalid history cleaner timeout
+</li>
+<li>[<a href='https://issues.apache.org/jira/browse/TAJO-1336'>TAJO-1336</a>] -         Fix task failure of stopped task
+</li>
+</ul>
+                
+<h2>        Improvement
+</h2>
+<ul>
+<li>[<a href='https://issues.apache.org/jira/browse/TAJO-269'>TAJO-269</a>] -         Protocol buffer De/Serialization for LogicalNode
+</li>
+<li>[<a href='https://issues.apache.org/jira/browse/TAJO-784'>TAJO-784</a>] -         Improve TpchTestBase to be more general.
+</li>
+<li>[<a href='https://issues.apache.org/jira/browse/TAJO-1035'>TAJO-1035</a>] -         Add default TAJO_PULLSERVER_HEAPSIZE
+</li>
+<li>[<a href='https://issues.apache.org/jira/browse/TAJO-1053'>TAJO-1053</a>] -         ADD PARTITIONS for HCatalogStore
+</li>
+<li>[<a href='https://issues.apache.org/jira/browse/TAJO-1092'>TAJO-1092</a>] -         Improve the function system to allow other function implementation types
+</li>
+<li>[<a href='https://issues.apache.org/jira/browse/TAJO-1109'>TAJO-1109</a>] -         Separate SQL Statements from Catalog Stores
+</li>
+<li>[<a href='https://issues.apache.org/jira/browse/TAJO-1114'>TAJO-1114</a>] -         Improve ConfVars (SessionVar) to take a validator interface to check its input.
+</li>
+<li>[<a href='https://issues.apache.org/jira/browse/TAJO-1125'>TAJO-1125</a>] -         Separate logical plan and optimizer into a maven module
+</li>
+<li>[<a href='https://issues.apache.org/jira/browse/TAJO-1128'>TAJO-1128</a>] -         Implement a select box for database at web interface
+</li>
+<li>[<a href='https://issues.apache.org/jira/browse/TAJO-1132'>TAJO-1132</a>] -         More detailed version info in tsql
+</li>
+<li>[<a href='https://issues.apache.org/jira/browse/TAJO-1133'>TAJO-1133</a>] -         Add &#39;bin/tajo version&#39; command
+</li>
+<li>[<a href='https://issues.apache.org/jira/browse/TAJO-1140'>TAJO-1140</a>] -         Separate TajoClient into fine grained parts.
+</li>
+<li>[<a href='https://issues.apache.org/jira/browse/TAJO-1143'>TAJO-1143</a>] -         TajoMaster, TajoWorker, and TajoClient should have diagnosis phase at startup
+</li>
+<li>[<a href='https://issues.apache.org/jira/browse/TAJO-1145'>TAJO-1145</a>] -         Add &#39;bin/tajo --help&#39; command
+</li>
+<li>[<a href='https://issues.apache.org/jira/browse/TAJO-1159'>TAJO-1159</a>] -         Change tsql history behavior
+</li>
+<li>[<a href='https://issues.apache.org/jira/browse/TAJO-1160'>TAJO-1160</a>] -         Remove Hadoop dependency from tajo-client module
+</li>
+<li>[<a href='https://issues.apache.org/jira/browse/TAJO-1161'>TAJO-1161</a>] -         Remove joda time dependency from tajo-core
+</li>
+<li>[<a href='https://issues.apache.org/jira/browse/TAJO-1163'>TAJO-1163</a>] -         TableDesc should use URI instead of Path.
+</li>
+<li>[<a href='https://issues.apache.org/jira/browse/TAJO-1165'>TAJO-1165</a>] -         Needs to show error messages on query_executor.jsp
+</li>
+<li>[<a href='https://issues.apache.org/jira/browse/TAJO-1169'>TAJO-1169</a>] -         Some older version of OpenJDK 1.6 does not get default timezone id
+</li>
+<li>[<a href='https://issues.apache.org/jira/browse/TAJO-1172'>TAJO-1172</a>] -         Remove Trevni storage type and its related classes
+</li>
+<li>[<a href='https://issues.apache.org/jira/browse/TAJO-1174'>TAJO-1174</a>] -         remove unnessary codes for blobdatum
+</li>
+<li>[<a href='https://issues.apache.org/jira/browse/TAJO-1176'>TAJO-1176</a>] -         Implements queryable virtual tables for catalog information
+</li>
+<li>[<a href='https://issues.apache.org/jira/browse/TAJO-1177'>TAJO-1177</a>] -         Reduce the use of Sun proprietary API
+</li>
+<li>[<a href='https://issues.apache.org/jira/browse/TAJO-1184'>TAJO-1184</a>] -         Upgrade netty-buffer to 4.0.24.Final
+</li>
+<li>[<a href='https://issues.apache.org/jira/browse/TAJO-1186'>TAJO-1186</a>] -         Table should have timezone as an table property
+</li>
+<li>[<a href='https://issues.apache.org/jira/browse/TAJO-1187'>TAJO-1187</a>] -         TajoCli should print time/timestamp values with timezone
+</li>
+<li>[<a href='https://issues.apache.org/jira/browse/TAJO-1189'>TAJO-1189</a>] -         *-site.xml.template should contain commented out default settings.
+</li>
+<li>[<a href='https://issues.apache.org/jira/browse/TAJO-1195'>TAJO-1195</a>] -         Remove unused CachedDNSResolver Class
+</li>
+<li>[<a href='https://issues.apache.org/jira/browse/TAJO-1204'>TAJO-1204</a>] -         Remove unused ServerName class
+</li>
+<li>[<a href='https://issues.apache.org/jira/browse/TAJO-1209'>TAJO-1209</a>] -         Pluggable line (de)serializer for DelimitedTextFile
+</li>
+<li>[<a href='https://issues.apache.org/jira/browse/TAJO-1213'>TAJO-1213</a>] -         Implement CatalogStore::updateTableStats
+</li>
+<li>[<a href='https://issues.apache.org/jira/browse/TAJO-1221'>TAJO-1221</a>] -         HA TajoClient should not connect TajoMaster at the first.
+</li>
+<li>[<a href='https://issues.apache.org/jira/browse/TAJO-1227'>TAJO-1227</a>] -         When a task is failed, ParquetAppender::close causes NPE.
+</li>
+<li>[<a href='https://issues.apache.org/jira/browse/TAJO-1228'>TAJO-1228</a>] -         TajoClient should communicate with only TajoMaster without TajoWorker
+</li>
+<li>[<a href='https://issues.apache.org/jira/browse/TAJO-1230'>TAJO-1230</a>] -         Disable ipv6 support on JVM
+</li>
+<li>[<a href='https://issues.apache.org/jira/browse/TAJO-1236'>TAJO-1236</a>] -         Remove slow &#39;new String&#39; operation in parquet format
+</li>
+<li>[<a href='https://issues.apache.org/jira/browse/TAJO-1241'>TAJO-1241</a>] -         Change default client and table time zone behavior
+</li>
+<li>[<a href='https://issues.apache.org/jira/browse/TAJO-1243'>TAJO-1243</a>] -         *-site.xml.template should have default configs commented out.
+</li>
+<li>[<a href='https://issues.apache.org/jira/browse/TAJO-1245'>TAJO-1245</a>] -         Add documentation about PostgreSQL and Oracle Catalog driver
+</li>
+<li>[<a href='https://issues.apache.org/jira/browse/TAJO-1247'>TAJO-1247</a>] -         Store type &#39;TEXTFILE&#39; should be TEXT while keeping enum &#39;TEXTFILE&#39; in protobuf
+</li>
+<li>[<a href='https://issues.apache.org/jira/browse/TAJO-1258'>TAJO-1258</a>] -         Close() for classes derived from FileAppender should be robust
+</li>
+<li>[<a href='https://issues.apache.org/jira/browse/TAJO-1261'>TAJO-1261</a>] -         Separate query and ddl execution codes from GlobalEngine
+</li>
+<li>[<a href='https://issues.apache.org/jira/browse/TAJO-1268'>TAJO-1268</a>] -         tajo-client module should not use UserGroupInformation
+</li>
+<li>[<a href='https://issues.apache.org/jira/browse/TAJO-1269'>TAJO-1269</a>] -         Separate cli from tajo-client
+</li>
+<li>[<a href='https://issues.apache.org/jira/browse/TAJO-1279'>TAJO-1279</a>] -         Cleanup TajoAsyncDispatcher and interrupt stop events
+</li>
+<li>[<a href='https://issues.apache.org/jira/browse/TAJO-1281'>TAJO-1281</a>] -         Remove hadoop-common dependency from tajo-rpc
+</li>
+<li>[<a href='https://issues.apache.org/jira/browse/TAJO-1282'>TAJO-1282</a>] -         Cleanup the relationship of QueryInProgress and QueryJobManager
+</li>
+<li>[<a href='https://issues.apache.org/jira/browse/TAJO-1285'>TAJO-1285</a>] -         Refactoring Magic Number to HAConstants
+</li>
+<li>[<a href='https://issues.apache.org/jira/browse/TAJO-1286'>TAJO-1286</a>] -         Remove netty dependency from tajo-jdbc
+</li>
+<li>[<a href='https://issues.apache.org/jira/browse/TAJO-1288'>TAJO-1288</a>] -         Refactoring org.apache.tajo.master package
+</li>
+<li>[<a href='https://issues.apache.org/jira/browse/TAJO-1290'>TAJO-1290</a>] -         Add HBase Storage Integration Documentation
+</li>
+<li>[<a href='https://issues.apache.org/jira/browse/TAJO-1291'>TAJO-1291</a>] -         Rename TajoMasterProtocol to QueryCoordinatorProtocol
+</li>
+<li>[<a href='https://issues.apache.org/jira/browse/TAJO-1293'>TAJO-1293</a>] -         Tajo have to accept hostname beginning with digits.
+</li>
+<li>[<a href='https://issues.apache.org/jira/browse/TAJO-1306'>TAJO-1306</a>] -         HAServiceUtil should not directly use HDFS.
+</li>
+<li>[<a href='https://issues.apache.org/jira/browse/TAJO-1307'>TAJO-1307</a>] -         HBaseStorageManager need to support for users to use hbase-site.xml file.
+</li>
+<li>[<a href='https://issues.apache.org/jira/browse/TAJO-1309'>TAJO-1309</a>] -         Add missing break point in physical operator
+</li>
+<li>[<a href='https://issues.apache.org/jira/browse/TAJO-1317'>TAJO-1317</a>] -         Parallel Test Executions on Tajo Core Project
+</li>
+<li>[<a href='https://issues.apache.org/jira/browse/TAJO-1320'>TAJO-1320</a>] -         HBaseStorageManager need to support Zookeeper Client Port.
+</li>
+<li>[<a href='https://issues.apache.org/jira/browse/TAJO-1328'>TAJO-1328</a>] -         Fix deprecated property names in the catalog configuration document
+</li>
+</ul>
+    
+<h2>        New Feature
+</h2>
+<ul>
+<li>[<a href='https://issues.apache.org/jira/browse/TAJO-233'>TAJO-233</a>] -         Support PostgreSQL CatalogStore
+</li>
+<li>[<a href='https://issues.apache.org/jira/browse/TAJO-235'>TAJO-235</a>] -         Support Oracle CatalogStore
+</li>
+<li>[<a href='https://issues.apache.org/jira/browse/TAJO-1026'>TAJO-1026</a>] -         Implement Query history persistency manager.
+</li>
+<li>[<a href='https://issues.apache.org/jira/browse/TAJO-1095'>TAJO-1095</a>] -         Implement Json file scanner
+</li>
+<li>[<a href='https://issues.apache.org/jira/browse/TAJO-1100'>TAJO-1100</a>] -         Refactor CSVFile to DelimitedLineTextFile
+</li>
+<li>[<a href='https://issues.apache.org/jira/browse/TAJO-1118'>TAJO-1118</a>] -         (Umbrella) HBase Storage Integration
+</li>
+<li>[<a href='https://issues.apache.org/jira/browse/TAJO-1199'>TAJO-1199</a>] -         EMR bootstrap script for Tajo
+</li>
+<li>[<a href='https://issues.apache.org/jira/browse/TAJO-1222'>TAJO-1222</a>] -         DelimitedTextFile should be tolerant against parsing errors.
+</li>
+<li>[<a href='https://issues.apache.org/jira/browse/TAJO-1238'>TAJO-1238</a>] -         Add SET SESSION and RESET statement
+</li>
+</ul>
+                                
+<h2>        Task
+</h2>
+<ul>
+<li>[<a href='https://issues.apache.org/jira/browse/TAJO-1032'>TAJO-1032</a>] -         Improve TravisCI scripts to adjust log4j log level
+</li>
+<li>[<a href='https://issues.apache.org/jira/browse/TAJO-1129'>TAJO-1129</a>] -         Remove hadoop 2.2.0 support
+</li>
+<li>[<a href='https://issues.apache.org/jira/browse/TAJO-1141'>TAJO-1141</a>] -         Refactor the packages hierarchy of tajo-client
+</li>
+<li>[<a href='https://issues.apache.org/jira/browse/TAJO-1153'>TAJO-1153</a>] -         Merge off-heap package in block_iteration branch to master branch
+</li>
+<li>[<a href='https://issues.apache.org/jira/browse/TAJO-1229'>TAJO-1229</a>] -         rename tajo-yarn-pullserver to tajo-pullserver
+</li>
+<li>[<a href='https://issues.apache.org/jira/browse/TAJO-1267'>TAJO-1267</a>] -         Remove LazyTaskScheduler
+</li>
+<li>[<a href='https://issues.apache.org/jira/browse/TAJO-1274'>TAJO-1274</a>] -         Merge separate pages of getting started document into a single page
+</li>
+<li>[<a href='https://issues.apache.org/jira/browse/TAJO-1280'>TAJO-1280</a>] -         Update the roles of Hyoungjun and Jihun in web site 
+</li>
+<li>[<a href='https://issues.apache.org/jira/browse/TAJO-1294'>TAJO-1294</a>] -         Add index documents
+</li>
+<li>[<a href='https://issues.apache.org/jira/browse/TAJO-1295'>TAJO-1295</a>] -         Remove legacy worker.dataserver package and its unit tests.
+</li>
+<li>[<a href='https://issues.apache.org/jira/browse/TAJO-1296'>TAJO-1296</a>] -         Remove obsolete classes from tajo.master.container package.
+</li>
+<li>[<a href='https://issues.apache.org/jira/browse/TAJO-1323'>TAJO-1323</a>] -         Cleanup the unstable test case
+</li>
+</ul>
+                
+</body>
+</html>

http://git-wip-us.apache.org/repos/asf/tajo/blob/42ef0dc6/tajo-project/src/site/site.xml
----------------------------------------------------------------------
diff --git a/tajo-project/src/site/site.xml b/tajo-project/src/site/site.xml
index 2441d2e..aec60ac 100644
--- a/tajo-project/src/site/site.xml
+++ b/tajo-project/src/site/site.xml
@@ -105,9 +105,9 @@
 
     <menu name="Documentation">
       <item name="Devel" href="http://tajo.apache.org/docs/devel/index.html" />
-      <item name="Current (0.9.0)" href="http://tajo.apache.org/docs/current/index.html" />
+      <item name="Current (0.10.0)" href="http://tajo.apache.org/docs/current/index.html" />
+      <item name="0.9.0" href="http://tajo.apache.org/docs/0.9.0/index.html" />
       <item name="0.8.0" href="http://tajo.apache.org/docs/0.8.0/index.html" />
-      <item name="0.2.0-incubating release" href="http://tajo.apache.org/tajo-0.2.0-doc.html" />
     </menu>
 
     <menu name="Contributes">


[12/12] tajo git commit: Merge branch 'master' of https://git-wip-us.apache.org/repos/asf/tajo into index_support

Posted by ji...@apache.org.
Merge branch 'master' of https://git-wip-us.apache.org/repos/asf/tajo into index_support


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

Branch: refs/heads/index_support
Commit: 347571584fa9878bd0615dcfb6a4e0dfdf78c47f
Parents: e38c48a 513a8c3
Author: Jihoon Son <ji...@apache.org>
Authored: Wed Mar 11 10:21:40 2015 +0900
Committer: Jihoon Son <ji...@apache.org>
Committed: Wed Mar 11 10:21:40 2015 +0900

----------------------------------------------------------------------
 CHANGES                                         |  19 +
 .../apache/tajo/algebra/ExistsPredicate.java    |   2 +-
 .../tajo/catalog/AbstractCatalogClient.java     |   4 +-
 .../org/apache/tajo/catalog/CatalogServer.java  |   6 +-
 .../dictionary/ClusterTableDescriptor.java      |  56 +++
 .../InfoSchemaMetadataDictionary.java           |   5 +-
 .../tajo/catalog/store/AbstractDBStore.java     |  18 +-
 .../main/java/org/apache/tajo/util/TUtil.java   |   6 +-
 .../org/apache/tajo/engine/parser/SQLParser.g4  |   1 +
 .../engine/codegen/ExecutorPreCompiler.java     |   2 +-
 .../tajo/engine/function/FunctionLoader.java    |   2 +-
 .../apache/tajo/engine/parser/SQLAnalyzer.java  |   4 +-
 .../tajo/engine/parser/SQLSyntaxError.java      |  17 +-
 .../engine/planner/global/GlobalPlanner.java    |   2 +-
 .../tajo/master/QueryCoordinatorService.java    |   2 +-
 .../org/apache/tajo/master/QueryInProgress.java |   2 +-
 .../org/apache/tajo/master/QueryManager.java    |   2 +-
 .../java/org/apache/tajo/master/TajoMaster.java |   4 +-
 .../NonForwardQueryResultSystemScanner.java     | 142 +++++++
 .../master/rm/TajoWorkerResourceManager.java    |   4 +-
 .../apache/tajo/querymaster/QueryMaster.java    |   4 +-
 .../java/org/apache/tajo/querymaster/Task.java  |   2 +-
 .../org/apache/tajo/session/SessionManager.java |   2 +-
 .../apache/tajo/util/history/HistoryWriter.java |   2 +-
 .../tajo/webapp/QueryExecutorServlet.java       |   4 +-
 .../org/apache/tajo/worker/DeletionService.java |   4 +-
 .../tajo/worker/ExecutionBlockContext.java      |   2 +-
 .../worker/ExecutionBlockSharedResource.java    |   2 +-
 .../java/org/apache/tajo/worker/Fetcher.java    |   6 +-
 .../tajo/worker/TajoResourceAllocator.java      |   2 +-
 .../main/java/org/apache/tajo/worker/Task.java  |   2 +-
 .../java/org/apache/tajo/worker/TaskRunner.java |   2 +-
 .../tajo/worker/WorkerHeartbeatService.java     |   2 +-
 .../tajo/worker/rule/WorkerRuleProvider.java    |   2 +-
 .../engine/function/TestDateTimeFunctions.java  |   5 +
 .../TestNonForwardQueryResultSystemScanner.java |  18 +
 tajo-docs/src/main/sphinx/conf.py               |   4 +-
 .../org/apache/tajo/jdbc/JdbcConnection.java    |   4 +-
 .../apache/tajo/plan/InvalidQueryException.java |   4 +-
 .../org/apache/tajo/plan/LogicalPlanner.java    |   2 +-
 .../plan/exprrewrite/EvalTreeOptimizer.java     |   2 +-
 tajo-project/src/site/apt/index.apt             |   4 +-
 tajo-project/src/site/markdown/downloads.md     |  14 +-
 .../markdown/releases/0.10.0/announcement.md    |  57 +++
 .../resources/releases/0.10.0/relnotes.html     | 388 +++++++++++++++++++
 tajo-project/src/site/site.xml                  |  45 ++-
 .../tajo/pullserver/PullServerAuxService.java   |   4 +-
 .../apache/tajo/pullserver/PullServerUtil.java  |   2 +-
 .../tajo/pullserver/TajoPullServerService.java  |   4 +-
 .../org/apache/tajo/rpc/NettyServerBase.java    |   2 +-
 .../org/apache/tajo/rpc/RpcConnectionPool.java  |   2 +-
 .../org/apache/tajo/storage/StorageUtil.java    |  30 +-
 .../apache/tajo/storage/TestStorageUtil.java    |  58 +++
 53 files changed, 879 insertions(+), 108 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tajo/blob/34757158/tajo-catalog/tajo-catalog-client/src/main/java/org/apache/tajo/catalog/AbstractCatalogClient.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/tajo/blob/34757158/tajo-catalog/tajo-catalog-server/src/main/java/org/apache/tajo/catalog/CatalogServer.java
----------------------------------------------------------------------
diff --cc tajo-catalog/tajo-catalog-server/src/main/java/org/apache/tajo/catalog/CatalogServer.java
index a2b8eaf,c34b4d2..f31efda
--- a/tajo-catalog/tajo-catalog-server/src/main/java/org/apache/tajo/catalog/CatalogServer.java
+++ b/tajo-catalog/tajo-catalog-server/src/main/java/org/apache/tajo/catalog/CatalogServer.java
@@@ -913,28 -913,10 +913,28 @@@ public class CatalogServer extends Abst
  
        rlock.lock();
        try {
 -        return store.existIndexByColumn(databaseName, tableName, columnName) ?
 +        return store.existIndexByColumns(databaseName, tableName,
 +            columnNames.toArray(new String[columnNames.size()])) ?
 +            ProtoUtil.TRUE : ProtoUtil.FALSE;
 +      } catch (Exception e) {
 +        LOG.error(e);
 +        return BoolProto.newBuilder().setValue(false).build();
 +      } finally {
 +        rlock.unlock();
 +      }
 +    }
 +
 +    @Override
 +    public BoolProto existIndexesByTable(RpcController controller, TableIdentifierProto request) throws ServiceException {
 +      String databaseName = request.getDatabaseName();
 +      String tableName = request.getTableName();
 +
 +      rlock.lock();
 +      try {
 +        return store.existIndexesByTable(databaseName, tableName) ?
              ProtoUtil.TRUE : ProtoUtil.FALSE;
        } catch (Exception e) {
-         LOG.error(e);
+         LOG.error(e, e);
          return BoolProto.newBuilder().setValue(false).build();
        } finally {
          rlock.unlock();

http://git-wip-us.apache.org/repos/asf/tajo/blob/34757158/tajo-catalog/tajo-catalog-server/src/main/java/org/apache/tajo/catalog/store/AbstractDBStore.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/tajo/blob/34757158/tajo-common/src/main/java/org/apache/tajo/util/TUtil.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/tajo/blob/34757158/tajo-core/src/main/antlr4/org/apache/tajo/engine/parser/SQLParser.g4
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/tajo/blob/34757158/tajo-core/src/main/java/org/apache/tajo/engine/codegen/ExecutorPreCompiler.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/tajo/blob/34757158/tajo-core/src/main/java/org/apache/tajo/engine/parser/SQLAnalyzer.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/tajo/blob/34757158/tajo-core/src/main/java/org/apache/tajo/engine/planner/global/GlobalPlanner.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/tajo/blob/34757158/tajo-core/src/main/java/org/apache/tajo/master/exec/NonForwardQueryResultSystemScanner.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/tajo/blob/34757158/tajo-core/src/main/java/org/apache/tajo/webapp/QueryExecutorServlet.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/tajo/blob/34757158/tajo-core/src/main/java/org/apache/tajo/worker/Task.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/tajo/blob/34757158/tajo-plan/src/main/java/org/apache/tajo/plan/LogicalPlanner.java
----------------------------------------------------------------------


[08/12] tajo git commit: Update the event names for google analytics download tracking.

Posted by ji...@apache.org.
Update the event names for google analytics download tracking.


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

Branch: refs/heads/index_support
Commit: 69fd8d2a08ce7ec0d69c4f98a338f979a13aafd1
Parents: f9d2fde
Author: Hyunsik Choi <hy...@apache.org>
Authored: Mon Mar 9 03:11:36 2015 -0700
Committer: Hyunsik Choi <hy...@apache.org>
Committed: Mon Mar 9 03:11:36 2015 -0700

----------------------------------------------------------------------
 tajo-project/src/site/site.xml | 32 ++++++++++++++++++--------------
 1 file changed, 18 insertions(+), 14 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tajo/blob/69fd8d2a/tajo-project/src/site/site.xml
----------------------------------------------------------------------
diff --git a/tajo-project/src/site/site.xml b/tajo-project/src/site/site.xml
index 65968c7..fd3bb6f 100644
--- a/tajo-project/src/site/site.xml
+++ b/tajo-project/src/site/site.xml
@@ -65,24 +65,28 @@ m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
 ga('create', 'UA-38152529-1', 'auto');
 ga('send', 'pageview');
 
-var dn_src_0_10_0 = document.getElementById('tajo-0.10.0-src');
-var dn_bin_0_10_0 = document.getElementById('tajo-0.10.0-bin');
-var dn_jdbc_0_10_0 = document.getElementById('tajo-jdbc-0.10.0');
-
-addListener(dn_src_0_10_0, 'click', function() {
-  ga('send', 'event', 'download', 'click', 'tajo-0.10.0-src');
-});
-addListener(dn_bin_0_10_0, 'click', function() {
-  ga('send', 'event', 'download', 'click', 'tajo-0.10.0-bin');
-});
-addListener(dn_jdbc_0_10_0, 'click', function() {
-  ga('send', 'event', 'download', 'click', 'tajo-jdbc-0.10.0');
-});
-
 function addListener(element, type, callback) {
  if (element.addEventListener) element.addEventListener(type, callback);
  else if (element.attachEvent) element.attachEvent('on' + type, callback);
 }
+
+function ga_event_load() {
+        var dn_src_0_10_0 = document.getElementById('tajo-0.10.0-src');
+        var dn_bin_0_10_0 = document.getElementById('tajo-0.10.0-bin');
+        var dn_jdbc_0_10_0 = document.getElementById('tajo-jdbc-0.10.0');
+
+        addListener(dn_src_0_10_0, 'click', function() {
+          ga('send', 'event', 'tajo-0.10.0-src', 'click', 'tajo-0.10.0-src');
+        });
+        addListener(dn_bin_0_10_0, 'click', function() {
+          ga('send', 'event', 'tajo-0.10.0-bin', 'click', 'tajo-0.10.0-bin');
+        });
+        addListener(dn_jdbc_0_10_0, 'click', function() {
+          ga('send', 'event', 'tajo-jdbc-0.10.0', 'click', 'tajo-jdbc-0.10.0');
+        });
+}
+
+window.onload = ga_event_load;
       </script>
       <style>
         a.externalLink[href^=http] {


[02/12] tajo git commit: TAJO-1369: Some stack trace information is missed in error/fail logging. (Contributed by navis, Committed by hyunsik)

Posted by ji...@apache.org.
TAJO-1369: Some stack trace information is missed in error/fail logging. (Contributed by navis, Committed by hyunsik)

Closes #396


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

Branch: refs/heads/index_support
Commit: f1aeb734a42dfe0ab756069e5380bb253e09b45c
Parents: 6e519bc
Author: Hyunsik Choi <hy...@apache.org>
Authored: Fri Mar 6 00:32:23 2015 -0800
Committer: Hyunsik Choi <hy...@apache.org>
Committed: Fri Mar 6 00:36:13 2015 -0800

----------------------------------------------------------------------
 CHANGES                                           |  3 +++
 .../tajo/catalog/AbstractCatalogClient.java       |  4 ++--
 .../org/apache/tajo/catalog/CatalogServer.java    |  6 +++---
 .../tajo/catalog/store/AbstractDBStore.java       | 18 +++++++++---------
 .../tajo/engine/codegen/ExecutorPreCompiler.java  |  2 +-
 .../tajo/engine/function/FunctionLoader.java      |  2 +-
 .../tajo/engine/planner/global/GlobalPlanner.java |  2 +-
 .../tajo/master/QueryCoordinatorService.java      |  2 +-
 .../org/apache/tajo/master/QueryInProgress.java   |  2 +-
 .../java/org/apache/tajo/master/QueryManager.java |  2 +-
 .../java/org/apache/tajo/master/TajoMaster.java   |  4 ++--
 .../tajo/master/rm/TajoWorkerResourceManager.java |  4 ++--
 .../org/apache/tajo/querymaster/QueryMaster.java  |  4 ++--
 .../java/org/apache/tajo/querymaster/Task.java    |  2 +-
 .../org/apache/tajo/session/SessionManager.java   |  2 +-
 .../apache/tajo/util/history/HistoryWriter.java   |  2 +-
 .../apache/tajo/webapp/QueryExecutorServlet.java  |  4 ++--
 .../org/apache/tajo/worker/DeletionService.java   |  4 ++--
 .../apache/tajo/worker/ExecutionBlockContext.java |  2 +-
 .../tajo/worker/ExecutionBlockSharedResource.java |  2 +-
 .../main/java/org/apache/tajo/worker/Fetcher.java |  6 +++---
 .../apache/tajo/worker/TajoResourceAllocator.java |  2 +-
 .../main/java/org/apache/tajo/worker/Task.java    |  2 +-
 .../java/org/apache/tajo/worker/TaskRunner.java   |  2 +-
 .../tajo/worker/WorkerHeartbeatService.java       |  2 +-
 .../tajo/worker/rule/WorkerRuleProvider.java      |  2 +-
 .../java/org/apache/tajo/jdbc/JdbcConnection.java |  4 ++--
 .../java/org/apache/tajo/plan/LogicalPlanner.java |  2 +-
 .../tajo/plan/exprrewrite/EvalTreeOptimizer.java  |  2 +-
 .../tajo/pullserver/PullServerAuxService.java     |  4 ++--
 .../apache/tajo/pullserver/PullServerUtil.java    |  2 +-
 .../tajo/pullserver/TajoPullServerService.java    |  4 ++--
 .../java/org/apache/tajo/rpc/NettyServerBase.java |  2 +-
 .../org/apache/tajo/rpc/RpcConnectionPool.java    |  2 +-
 34 files changed, 57 insertions(+), 54 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tajo/blob/f1aeb734/CHANGES
----------------------------------------------------------------------
diff --git a/CHANGES b/CHANGES
index 974e4d7..003ae1a 100644
--- a/CHANGES
+++ b/CHANGES
@@ -11,6 +11,9 @@ Release 0.11.0 - unreleased
 
     TAJO-527: Upgrade to Netty 4. (jihun)
 
+    TAJO-1369: Some stack trace information is missed in error/fail logging. 
+    (Contributed by navis, Committed by hyunsik)
+
   BUG FIXES
 
     TAJO-1362: Resolve findbug warnings on Tajo Core Module. (jihun)

http://git-wip-us.apache.org/repos/asf/tajo/blob/f1aeb734/tajo-catalog/tajo-catalog-client/src/main/java/org/apache/tajo/catalog/AbstractCatalogClient.java
----------------------------------------------------------------------
diff --git a/tajo-catalog/tajo-catalog-client/src/main/java/org/apache/tajo/catalog/AbstractCatalogClient.java b/tajo-catalog/tajo-catalog-client/src/main/java/org/apache/tajo/catalog/AbstractCatalogClient.java
index 718f7d6..d8350a3 100644
--- a/tajo-catalog/tajo-catalog-client/src/main/java/org/apache/tajo/catalog/AbstractCatalogClient.java
+++ b/tajo-catalog/tajo-catalog-client/src/main/java/org/apache/tajo/catalog/AbstractCatalogClient.java
@@ -459,7 +459,7 @@ public abstract class AbstractCatalogClient implements CatalogService {
             try {
               list.add(new FunctionDesc(response.getFunctionDesc(i)));
             } catch (ClassNotFoundException e) {
-              LOG.error(e);
+              LOG.error(e, e);
               return null;
             }
           }
@@ -753,7 +753,7 @@ public abstract class AbstractCatalogClient implements CatalogService {
     try {
       return new FunctionDesc(descProto);
     } catch (ClassNotFoundException e) {
-      LOG.error(e);
+      LOG.error(e, e);
       throw new NoSuchFunctionException(signature, paramTypes);
     }
   }

http://git-wip-us.apache.org/repos/asf/tajo/blob/f1aeb734/tajo-catalog/tajo-catalog-server/src/main/java/org/apache/tajo/catalog/CatalogServer.java
----------------------------------------------------------------------
diff --git a/tajo-catalog/tajo-catalog-server/src/main/java/org/apache/tajo/catalog/CatalogServer.java b/tajo-catalog/tajo-catalog-server/src/main/java/org/apache/tajo/catalog/CatalogServer.java
index 30b1767..c34b4d2 100644
--- a/tajo-catalog/tajo-catalog-server/src/main/java/org/apache/tajo/catalog/CatalogServer.java
+++ b/tajo-catalog/tajo-catalog-server/src/main/java/org/apache/tajo/catalog/CatalogServer.java
@@ -895,7 +895,7 @@ public class CatalogServer extends AbstractService {
       try {
         return store.existIndexByName(databaseName, indexName) ? ProtoUtil.TRUE : ProtoUtil.FALSE;
       } catch (Exception e) {
-        LOG.error(e);
+        LOG.error(e, e);
         return BoolProto.newBuilder().setValue(false).build();
       } finally {
         rlock.unlock();
@@ -916,7 +916,7 @@ public class CatalogServer extends AbstractService {
         return store.existIndexByColumn(databaseName, tableName, columnName) ?
             ProtoUtil.TRUE : ProtoUtil.FALSE;
       } catch (Exception e) {
-        LOG.error(e);
+        LOG.error(e, e);
         return BoolProto.newBuilder().setValue(false).build();
       } finally {
         rlock.unlock();
@@ -981,7 +981,7 @@ public class CatalogServer extends AbstractService {
         }
         store.dropIndex(databaseName, indexName);
       } catch (Exception e) {
-        LOG.error(e);
+        LOG.error(e, e);
       } finally {
         wlock.unlock();
       }

http://git-wip-us.apache.org/repos/asf/tajo/blob/f1aeb734/tajo-catalog/tajo-catalog-server/src/main/java/org/apache/tajo/catalog/store/AbstractDBStore.java
----------------------------------------------------------------------
diff --git a/tajo-catalog/tajo-catalog-server/src/main/java/org/apache/tajo/catalog/store/AbstractDBStore.java b/tajo-catalog/tajo-catalog-server/src/main/java/org/apache/tajo/catalog/store/AbstractDBStore.java
index 04694b0..5c78f82 100644
--- a/tajo-catalog/tajo-catalog-server/src/main/java/org/apache/tajo/catalog/store/AbstractDBStore.java
+++ b/tajo-catalog/tajo-catalog-server/src/main/java/org/apache/tajo/catalog/store/AbstractDBStore.java
@@ -154,7 +154,7 @@ public abstract class AbstractDBStore extends CatalogConstants implements Catalo
           try {
             dropBaseTable();
           } catch (Throwable t) {
-            LOG.error(t);
+            LOG.error(t, t);
           }
           throw ce;
         }
@@ -299,7 +299,7 @@ public abstract class AbstractDBStore extends CatalogConstants implements Catalo
         try {
           conn.rollback();
         } catch (SQLException e) {
-          LOG.error(e);
+          LOG.error(e, e);
         }
       }
       throw new CatalogException(se);
@@ -363,7 +363,7 @@ public abstract class AbstractDBStore extends CatalogConstants implements Catalo
         try {
           conn.rollback();
         } catch (SQLException e) {
-          LOG.error(e);
+          LOG.error(e, e);
         }
       }
       throw new CatalogException(String.format("Failed to drop tablespace \"%s\"", tableSpaceName), se);
@@ -523,7 +523,7 @@ public abstract class AbstractDBStore extends CatalogConstants implements Catalo
         try {
           conn.rollback();
         } catch (SQLException e) {
-          LOG.error(e);
+          LOG.error(e, e);
         }
       }
       throw new CatalogException(se);
@@ -584,7 +584,7 @@ public abstract class AbstractDBStore extends CatalogConstants implements Catalo
         try {
           conn.rollback();
         } catch (SQLException e) {
-          LOG.error(e);
+          LOG.error(e, e);
         }
       }
       throw new CatalogException(String.format("Failed to drop database \"%s\"", databaseName), se);
@@ -878,7 +878,7 @@ public abstract class AbstractDBStore extends CatalogConstants implements Catalo
         try {
           conn.rollback();
         } catch (SQLException e) {
-          LOG.error(e);
+          LOG.error(e, e);
         }
       }
       throw new CatalogException(se);
@@ -946,7 +946,7 @@ public abstract class AbstractDBStore extends CatalogConstants implements Catalo
         try {
           conn.rollback();
         } catch (SQLException e) {
-          LOG.error(e);
+          LOG.error(e, e);
         }
       }
       throw new CatalogException(se);
@@ -1292,7 +1292,7 @@ public abstract class AbstractDBStore extends CatalogConstants implements Catalo
       try {
         conn.rollback();
       } catch (SQLException e) {
-        LOG.error(e);
+        LOG.error(e, e);
       }
     } finally {
       CatalogUtil.closeQuietly(conn);
@@ -1708,7 +1708,7 @@ public abstract class AbstractDBStore extends CatalogConstants implements Catalo
         try {
           conn.rollback();
         } catch (SQLException e) {
-          LOG.error(e);
+          LOG.error(e, e);
         }
       }
       throw new CatalogException(se);

http://git-wip-us.apache.org/repos/asf/tajo/blob/f1aeb734/tajo-core/src/main/java/org/apache/tajo/engine/codegen/ExecutorPreCompiler.java
----------------------------------------------------------------------
diff --git a/tajo-core/src/main/java/org/apache/tajo/engine/codegen/ExecutorPreCompiler.java b/tajo-core/src/main/java/org/apache/tajo/engine/codegen/ExecutorPreCompiler.java
index 79513dc..e472ee1 100644
--- a/tajo-core/src/main/java/org/apache/tajo/engine/codegen/ExecutorPreCompiler.java
+++ b/tajo-core/src/main/java/org/apache/tajo/engine/codegen/ExecutorPreCompiler.java
@@ -85,7 +85,7 @@ public class ExecutorPreCompiler extends BasicLogicalPlanVisitor<ExecutorPreComp
         // If any compilation error occurs, it works in a fallback mode. This mode just uses EvalNode objects
         // instead of a compiled EvalNode.
         context.compiledEval.put(key, eval);
-        LOG.warn(t);
+        LOG.warn(t, t);
       }
     }
   }

http://git-wip-us.apache.org/repos/asf/tajo/blob/f1aeb734/tajo-core/src/main/java/org/apache/tajo/engine/function/FunctionLoader.java
----------------------------------------------------------------------
diff --git a/tajo-core/src/main/java/org/apache/tajo/engine/function/FunctionLoader.java b/tajo-core/src/main/java/org/apache/tajo/engine/function/FunctionLoader.java
index 334a92b..3b3e7c7 100644
--- a/tajo-core/src/main/java/org/apache/tajo/engine/function/FunctionLoader.java
+++ b/tajo-core/src/main/java/org/apache/tajo/engine/function/FunctionLoader.java
@@ -177,7 +177,7 @@ public class FunctionLoader {
       try {
         function = (Function)eachClass.newInstance();
       } catch (Exception e) {
-        LOG.warn(eachClass + " cannot instantiate Function class because of " + e.getMessage());
+        LOG.warn(eachClass + " cannot instantiate Function class because of " + e.getMessage(), e);
         continue;
       }
       String functionName = function.getClass().getAnnotation(Description.class).functionName();

http://git-wip-us.apache.org/repos/asf/tajo/blob/f1aeb734/tajo-core/src/main/java/org/apache/tajo/engine/planner/global/GlobalPlanner.java
----------------------------------------------------------------------
diff --git a/tajo-core/src/main/java/org/apache/tajo/engine/planner/global/GlobalPlanner.java b/tajo-core/src/main/java/org/apache/tajo/engine/planner/global/GlobalPlanner.java
index f3dcf86..15d8034 100644
--- a/tajo-core/src/main/java/org/apache/tajo/engine/planner/global/GlobalPlanner.java
+++ b/tajo-core/src/main/java/org/apache/tajo/engine/planner/global/GlobalPlanner.java
@@ -660,7 +660,7 @@ public class GlobalPlanner {
         throw new PlanningException("Cannot support a mix of other functions");
       }
     } catch (InternalException e) {
-      LOG.error(e);
+      LOG.error(e, e);
     }
 
     return rewritten;

http://git-wip-us.apache.org/repos/asf/tajo/blob/f1aeb734/tajo-core/src/main/java/org/apache/tajo/master/QueryCoordinatorService.java
----------------------------------------------------------------------
diff --git a/tajo-core/src/main/java/org/apache/tajo/master/QueryCoordinatorService.java b/tajo-core/src/main/java/org/apache/tajo/master/QueryCoordinatorService.java
index 1cb3842..1b1d49e 100644
--- a/tajo-core/src/main/java/org/apache/tajo/master/QueryCoordinatorService.java
+++ b/tajo-core/src/main/java/org/apache/tajo/master/QueryCoordinatorService.java
@@ -66,7 +66,7 @@ public class QueryCoordinatorService extends AbstractService {
     try {
       server = new AsyncRpcServer(QueryCoordinatorProtocol.class, masterHandler, initIsa, workerNum);
     } catch (Exception e) {
-      LOG.error(e);
+      LOG.error(e, e);
     }
     server.start();
     bindAddress = NetUtils.getConnectAddress(server.getListenAddress());

http://git-wip-us.apache.org/repos/asf/tajo/blob/f1aeb734/tajo-core/src/main/java/org/apache/tajo/master/QueryInProgress.java
----------------------------------------------------------------------
diff --git a/tajo-core/src/main/java/org/apache/tajo/master/QueryInProgress.java b/tajo-core/src/main/java/org/apache/tajo/master/QueryInProgress.java
index 9e50797..bfc7b9f 100644
--- a/tajo-core/src/main/java/org/apache/tajo/master/QueryInProgress.java
+++ b/tajo-core/src/main/java/org/apache/tajo/master/QueryInProgress.java
@@ -118,7 +118,7 @@ public class QueryInProgress {
     try {
       masterContext.getHistoryWriter().appendAndFlush(queryInfo);
     } catch (Throwable e) {
-      LOG.warn(e);
+      LOG.warn(e, e);
     }
   }
 

http://git-wip-us.apache.org/repos/asf/tajo/blob/f1aeb734/tajo-core/src/main/java/org/apache/tajo/master/QueryManager.java
----------------------------------------------------------------------
diff --git a/tajo-core/src/main/java/org/apache/tajo/master/QueryManager.java b/tajo-core/src/main/java/org/apache/tajo/master/QueryManager.java
index a502e4b..3c81540 100644
--- a/tajo-core/src/main/java/org/apache/tajo/master/QueryManager.java
+++ b/tajo-core/src/main/java/org/apache/tajo/master/QueryManager.java
@@ -135,7 +135,7 @@ public class QueryManager extends CompositeService {
       }
       return result;
     } catch (Throwable e) {
-      LOG.error(e);
+      LOG.error(e, e);
       return Lists.newArrayList();
     }
   }

http://git-wip-us.apache.org/repos/asf/tajo/blob/f1aeb734/tajo-core/src/main/java/org/apache/tajo/master/TajoMaster.java
----------------------------------------------------------------------
diff --git a/tajo-core/src/main/java/org/apache/tajo/master/TajoMaster.java b/tajo-core/src/main/java/org/apache/tajo/master/TajoMaster.java
index 6f7c5a9..371dfb4 100644
--- a/tajo-core/src/main/java/org/apache/tajo/master/TajoMaster.java
+++ b/tajo-core/src/main/java/org/apache/tajo/master/TajoMaster.java
@@ -372,7 +372,7 @@ public class TajoMaster extends CompositeService {
       try {
         haService.delete();
       } catch (Exception e) {
-        LOG.error(e);
+        LOG.error(e, e);
       }
     }
 
@@ -380,7 +380,7 @@ public class TajoMaster extends CompositeService {
       try {
         webServer.stop();
       } catch (Exception e) {
-        LOG.error(e);
+        LOG.error(e, e);
       }
     }
 

http://git-wip-us.apache.org/repos/asf/tajo/blob/f1aeb734/tajo-core/src/main/java/org/apache/tajo/master/rm/TajoWorkerResourceManager.java
----------------------------------------------------------------------
diff --git a/tajo-core/src/main/java/org/apache/tajo/master/rm/TajoWorkerResourceManager.java b/tajo-core/src/main/java/org/apache/tajo/master/rm/TajoWorkerResourceManager.java
index e5cf66c..0d830ea 100644
--- a/tajo-core/src/main/java/org/apache/tajo/master/rm/TajoWorkerResourceManager.java
+++ b/tajo-core/src/main/java/org/apache/tajo/master/rm/TajoWorkerResourceManager.java
@@ -221,7 +221,7 @@ public class TajoWorkerResourceManager extends CompositeService implements Worke
     try {
       response = callFuture.get(3, TimeUnit.SECONDS);
     } catch (Throwable t) {
-      LOG.error(t);
+      LOG.error(t, t);
       return null;
     }
 
@@ -345,7 +345,7 @@ public class TajoWorkerResourceManager extends CompositeService implements Worke
         } catch(InterruptedException ie) {
           LOG.error(ie);
         } catch (Throwable t) {
-          LOG.error(t);
+          LOG.error(t, t);
         }
       }
     }

http://git-wip-us.apache.org/repos/asf/tajo/blob/f1aeb734/tajo-core/src/main/java/org/apache/tajo/querymaster/QueryMaster.java
----------------------------------------------------------------------
diff --git a/tajo-core/src/main/java/org/apache/tajo/querymaster/QueryMaster.java b/tajo-core/src/main/java/org/apache/tajo/querymaster/QueryMaster.java
index bfaaca8..bf23133 100644
--- a/tajo-core/src/main/java/org/apache/tajo/querymaster/QueryMaster.java
+++ b/tajo-core/src/main/java/org/apache/tajo/querymaster/QueryMaster.java
@@ -220,7 +220,7 @@ public class QueryMaster extends CompositeService implements EventHandler {
 
         tajoWorkerProtocolService.cleanup(null, queryId.getProto(), NullCallback.get());
       } catch (Exception e) {
-        LOG.error(e.getMessage());
+        LOG.error(e.getMessage(), e);
       } finally {
         connPool.releaseConnection(rpc);
       }
@@ -375,7 +375,7 @@ public class QueryMaster extends CompositeService implements EventHandler {
             query.context.getQueryMasterContext().getWorkerContext().
                 getTaskHistoryWriter().appendAndFlush(queryHisory);
           } catch (Throwable e) {
-            LOG.warn(e);
+            LOG.warn(e, e);
           }
         }
       }

http://git-wip-us.apache.org/repos/asf/tajo/blob/f1aeb734/tajo-core/src/main/java/org/apache/tajo/querymaster/Task.java
----------------------------------------------------------------------
diff --git a/tajo-core/src/main/java/org/apache/tajo/querymaster/Task.java b/tajo-core/src/main/java/org/apache/tajo/querymaster/Task.java
index 92f4b20..1da623e 100644
--- a/tajo-core/src/main/java/org/apache/tajo/querymaster/Task.java
+++ b/tajo-core/src/main/java/org/apache/tajo/querymaster/Task.java
@@ -272,7 +272,7 @@ public class Task implements EventHandler<TaskEvent> {
         Fragment fragment = FragmentConvertor.convert(systemConf, eachFragment);
         fragmentList.add(fragment.toString());
       } catch (Exception e) {
-        LOG.error(e.getMessage());
+        LOG.error(e.getMessage(), e);
         fragmentList.add("ERROR: " + eachFragment.getStoreType() + "," + eachFragment.getId() + ": " + e.getMessage());
       }
     }

http://git-wip-us.apache.org/repos/asf/tajo/blob/f1aeb734/tajo-core/src/main/java/org/apache/tajo/session/SessionManager.java
----------------------------------------------------------------------
diff --git a/tajo-core/src/main/java/org/apache/tajo/session/SessionManager.java b/tajo-core/src/main/java/org/apache/tajo/session/SessionManager.java
index 571144b..5d66b2b 100644
--- a/tajo-core/src/main/java/org/apache/tajo/session/SessionManager.java
+++ b/tajo-core/src/main/java/org/apache/tajo/session/SessionManager.java
@@ -131,7 +131,7 @@ public class SessionManager extends CompositeService implements EventHandler<Ses
       assertSessionExistence(event.getSessionId());
       touch(event.getSessionId());
     } catch (InvalidSessionException e) {
-      LOG.error(e);
+      LOG.error(e, e);
     }
 
     if (event.getType() == SessionEventType.EXPIRE) {

http://git-wip-us.apache.org/repos/asf/tajo/blob/f1aeb734/tajo-core/src/main/java/org/apache/tajo/util/history/HistoryWriter.java
----------------------------------------------------------------------
diff --git a/tajo-core/src/main/java/org/apache/tajo/util/history/HistoryWriter.java b/tajo-core/src/main/java/org/apache/tajo/util/history/HistoryWriter.java
index b06c7e8..f0c6c11 100644
--- a/tajo-core/src/main/java/org/apache/tajo/util/history/HistoryWriter.java
+++ b/tajo-core/src/main/java/org/apache/tajo/util/history/HistoryWriter.java
@@ -436,7 +436,7 @@ public class HistoryWriter extends AbstractService {
           try {
             holder.flush();
           } catch (IOException e) {
-            LOG.warn(e);
+            LOG.warn(e, e);
           }
         }
       }

http://git-wip-us.apache.org/repos/asf/tajo/blob/f1aeb734/tajo-core/src/main/java/org/apache/tajo/webapp/QueryExecutorServlet.java
----------------------------------------------------------------------
diff --git a/tajo-core/src/main/java/org/apache/tajo/webapp/QueryExecutorServlet.java b/tajo-core/src/main/java/org/apache/tajo/webapp/QueryExecutorServlet.java
index e9b6230..da7981c 100644
--- a/tajo-core/src/main/java/org/apache/tajo/webapp/QueryExecutorServlet.java
+++ b/tajo-core/src/main/java/org/apache/tajo/webapp/QueryExecutorServlet.java
@@ -95,7 +95,7 @@ public class QueryExecutorServlet extends HttpServlet {
 
       new QueryRunnerCleaner().start();
     } catch (IOException e) {
-      LOG.error(e.getMessage());
+      LOG.error(e.getMessage(), e);
     }
   }
 
@@ -469,7 +469,7 @@ public class QueryExecutorServlet extends HttpServlet {
               try {
                 tajoClient.closeQuery(queryId);
               } catch (Exception e) {
-                LOG.warn(e);
+                LOG.warn(e, e);
               }
             }
           }

http://git-wip-us.apache.org/repos/asf/tajo/blob/f1aeb734/tajo-core/src/main/java/org/apache/tajo/worker/DeletionService.java
----------------------------------------------------------------------
diff --git a/tajo-core/src/main/java/org/apache/tajo/worker/DeletionService.java b/tajo-core/src/main/java/org/apache/tajo/worker/DeletionService.java
index 42ea71f..b09d8d5 100644
--- a/tajo-core/src/main/java/org/apache/tajo/worker/DeletionService.java
+++ b/tajo-core/src/main/java/org/apache/tajo/worker/DeletionService.java
@@ -97,7 +97,7 @@ public class DeletionService {
         try {
           lfs.delete(subDir, true);
         } catch (IOException e) {
-          LOG.warn("Failed to delete " + subDir);
+          LOG.warn("Failed to delete " + subDir, e);
         }
         return;
       }
@@ -107,7 +107,7 @@ public class DeletionService {
         try {
           lfs.delete(del, true);
         } catch (IOException e) {
-          LOG.warn("Failed to delete " + subDir);
+          LOG.warn("Failed to delete " + subDir, e);
         }
       }
     }

http://git-wip-us.apache.org/repos/asf/tajo/blob/f1aeb734/tajo-core/src/main/java/org/apache/tajo/worker/ExecutionBlockContext.java
----------------------------------------------------------------------
diff --git a/tajo-core/src/main/java/org/apache/tajo/worker/ExecutionBlockContext.java b/tajo-core/src/main/java/org/apache/tajo/worker/ExecutionBlockContext.java
index 813c502..a645689 100644
--- a/tajo-core/src/main/java/org/apache/tajo/worker/ExecutionBlockContext.java
+++ b/tajo-core/src/main/java/org/apache/tajo/worker/ExecutionBlockContext.java
@@ -178,7 +178,7 @@ public class ExecutionBlockContext {
         try{
           task.abort();
         } catch (Throwable e){
-          LOG.error(e);
+          LOG.error(e, e);
         }
       }
     }

http://git-wip-us.apache.org/repos/asf/tajo/blob/f1aeb734/tajo-core/src/main/java/org/apache/tajo/worker/ExecutionBlockSharedResource.java
----------------------------------------------------------------------
diff --git a/tajo-core/src/main/java/org/apache/tajo/worker/ExecutionBlockSharedResource.java b/tajo-core/src/main/java/org/apache/tajo/worker/ExecutionBlockSharedResource.java
index 67114a3..b193b24 100644
--- a/tajo-core/src/main/java/org/apache/tajo/worker/ExecutionBlockSharedResource.java
+++ b/tajo-core/src/main/java/org/apache/tajo/worker/ExecutionBlockSharedResource.java
@@ -99,7 +99,7 @@ public class ExecutionBlockSharedResource {
           LOG.warn(eval.toString() + " does not exists. Immediately compile it: " + eval);
           return compileEval(schema, eval);
         } catch (Throwable t) {
-          LOG.warn(t);
+          LOG.warn(t, t);
           return eval;
         }
       }

http://git-wip-us.apache.org/repos/asf/tajo/blob/f1aeb734/tajo-core/src/main/java/org/apache/tajo/worker/Fetcher.java
----------------------------------------------------------------------
diff --git a/tajo-core/src/main/java/org/apache/tajo/worker/Fetcher.java b/tajo-core/src/main/java/org/apache/tajo/worker/Fetcher.java
index fc57a96..31599a3 100644
--- a/tajo-core/src/main/java/org/apache/tajo/worker/Fetcher.java
+++ b/tajo-core/src/main/java/org/apache/tajo/worker/Fetcher.java
@@ -243,7 +243,7 @@ public class Fetcher {
             return;
           }
         } catch (Exception e) {
-          LOG.error(e.getMessage());
+          LOG.error(e.getMessage(), e);
         } finally {
           ReferenceCountUtil.release(msg);
         }
@@ -272,7 +272,7 @@ public class Fetcher {
             }
           }
         } catch (Exception e) {
-          LOG.error(e.getMessage());
+          LOG.error(e.getMessage(), e);
         } finally {
           ReferenceCountUtil.release(msg);
         }
@@ -283,7 +283,7 @@ public class Fetcher {
     public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause)
         throws Exception {
       if (cause instanceof ReadTimeoutException) {
-        LOG.warn(cause);
+        LOG.warn(cause, cause);
       } else {
         LOG.error("Fetch failed :", cause);
       }

http://git-wip-us.apache.org/repos/asf/tajo/blob/f1aeb734/tajo-core/src/main/java/org/apache/tajo/worker/TajoResourceAllocator.java
----------------------------------------------------------------------
diff --git a/tajo-core/src/main/java/org/apache/tajo/worker/TajoResourceAllocator.java b/tajo-core/src/main/java/org/apache/tajo/worker/TajoResourceAllocator.java
index 827c860..47a9fda 100644
--- a/tajo-core/src/main/java/org/apache/tajo/worker/TajoResourceAllocator.java
+++ b/tajo-core/src/main/java/org/apache/tajo/worker/TajoResourceAllocator.java
@@ -133,7 +133,7 @@ public class TajoResourceAllocator extends AbstractResourceAllocator {
       try {
         eachProxy.stopContainer();
       } catch (Throwable e) {
-        LOG.warn(e.getMessage());
+        LOG.warn(e.getMessage(), e);
       }
     }
 

http://git-wip-us.apache.org/repos/asf/tajo/blob/f1aeb734/tajo-core/src/main/java/org/apache/tajo/worker/Task.java
----------------------------------------------------------------------
diff --git a/tajo-core/src/main/java/org/apache/tajo/worker/Task.java b/tajo-core/src/main/java/org/apache/tajo/worker/Task.java
index ef94337..524b09b 100644
--- a/tajo-core/src/main/java/org/apache/tajo/worker/Task.java
+++ b/tajo-core/src/main/java/org/apache/tajo/worker/Task.java
@@ -417,7 +417,7 @@ public class Task {
           executor.close();
           reloadInputStats();
         } catch (IOException e) {
-          LOG.error(e);
+          LOG.error(e, e);
         }
         this.executor = null;
       }

http://git-wip-us.apache.org/repos/asf/tajo/blob/f1aeb734/tajo-core/src/main/java/org/apache/tajo/worker/TaskRunner.java
----------------------------------------------------------------------
diff --git a/tajo-core/src/main/java/org/apache/tajo/worker/TaskRunner.java b/tajo-core/src/main/java/org/apache/tajo/worker/TaskRunner.java
index 2cdebc8..79725f6 100644
--- a/tajo-core/src/main/java/org/apache/tajo/worker/TaskRunner.java
+++ b/tajo-core/src/main/java/org/apache/tajo/worker/TaskRunner.java
@@ -126,7 +126,7 @@ public class TaskRunner extends AbstractService {
       LOG.info("TaskRunner basedir is created (" + baseDirPath +")");
     } catch (Throwable t) {
       t.printStackTrace();
-      LOG.error(t);
+      LOG.error(t, t);
     }
     super.init(conf);
     this.history.setState(getServiceState());

http://git-wip-us.apache.org/repos/asf/tajo/blob/f1aeb734/tajo-core/src/main/java/org/apache/tajo/worker/WorkerHeartbeatService.java
----------------------------------------------------------------------
diff --git a/tajo-core/src/main/java/org/apache/tajo/worker/WorkerHeartbeatService.java b/tajo-core/src/main/java/org/apache/tajo/worker/WorkerHeartbeatService.java
index 462f95d..5493b37 100644
--- a/tajo-core/src/main/java/org/apache/tajo/worker/WorkerHeartbeatService.java
+++ b/tajo-core/src/main/java/org/apache/tajo/worker/WorkerHeartbeatService.java
@@ -204,7 +204,7 @@ public class WorkerHeartbeatService extends AbstractService {
         } catch (InterruptedException e) {
           break;
         } catch (TimeoutException te) {
-          LOG.warn("Heartbeat response is being delayed.");
+          LOG.warn("Heartbeat response is being delayed.", te);
         } catch (Exception e) {
           LOG.error(e.getMessage(), e);
         } finally {

http://git-wip-us.apache.org/repos/asf/tajo/blob/f1aeb734/tajo-core/src/main/java/org/apache/tajo/worker/rule/WorkerRuleProvider.java
----------------------------------------------------------------------
diff --git a/tajo-core/src/main/java/org/apache/tajo/worker/rule/WorkerRuleProvider.java b/tajo-core/src/main/java/org/apache/tajo/worker/rule/WorkerRuleProvider.java
index 4094efd..81c2522 100644
--- a/tajo-core/src/main/java/org/apache/tajo/worker/rule/WorkerRuleProvider.java
+++ b/tajo-core/src/main/java/org/apache/tajo/worker/rule/WorkerRuleProvider.java
@@ -43,7 +43,7 @@ public class WorkerRuleProvider implements SelfDiagnosisRuleProvider {
       try {
         ruleList.add(ruleClazz.newInstance());
       } catch (Exception e) {
-        LOG.warn("Cannot instantiate " + ruleClazz.getName() + " class.");
+        LOG.warn("Cannot instantiate " + ruleClazz.getName() + " class.", e);
         continue;
       }
     }

http://git-wip-us.apache.org/repos/asf/tajo/blob/f1aeb734/tajo-jdbc/src/main/java/org/apache/tajo/jdbc/JdbcConnection.java
----------------------------------------------------------------------
diff --git a/tajo-jdbc/src/main/java/org/apache/tajo/jdbc/JdbcConnection.java b/tajo-jdbc/src/main/java/org/apache/tajo/jdbc/JdbcConnection.java
index 0919eee..2879540 100644
--- a/tajo-jdbc/src/main/java/org/apache/tajo/jdbc/JdbcConnection.java
+++ b/tajo-jdbc/src/main/java/org/apache/tajo/jdbc/JdbcConnection.java
@@ -276,10 +276,10 @@ public class JdbcConnection implements Connection {
         return false;
       }
     } catch (ServiceException e) {
-      LOG.error("TajoMaster is not available.");
+      LOG.error("TajoMaster is not available.", e);
       return false;
     } catch (IOException e) {
-      LOG.error("JDBC connection is not valid.");
+      LOG.error("JDBC connection is not valid.", e);
       return false;
     }
   }

http://git-wip-us.apache.org/repos/asf/tajo/blob/f1aeb734/tajo-plan/src/main/java/org/apache/tajo/plan/LogicalPlanner.java
----------------------------------------------------------------------
diff --git a/tajo-plan/src/main/java/org/apache/tajo/plan/LogicalPlanner.java b/tajo-plan/src/main/java/org/apache/tajo/plan/LogicalPlanner.java
index babcb1e..14fea08 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
@@ -1328,7 +1328,7 @@ public class LogicalPlanner extends BaseAlgebraVisitor<LogicalPlanner.PlanContex
           }
         }
       } catch (Throwable t) {
-        LOG.warn(t);
+        LOG.warn(t, t);
       }
     }
   }

http://git-wip-us.apache.org/repos/asf/tajo/blob/f1aeb734/tajo-plan/src/main/java/org/apache/tajo/plan/exprrewrite/EvalTreeOptimizer.java
----------------------------------------------------------------------
diff --git a/tajo-plan/src/main/java/org/apache/tajo/plan/exprrewrite/EvalTreeOptimizer.java b/tajo-plan/src/main/java/org/apache/tajo/plan/exprrewrite/EvalTreeOptimizer.java
index 3bea6a4..a8a3ff3 100644
--- a/tajo-plan/src/main/java/org/apache/tajo/plan/exprrewrite/EvalTreeOptimizer.java
+++ b/tajo-plan/src/main/java/org/apache/tajo/plan/exprrewrite/EvalTreeOptimizer.java
@@ -50,7 +50,7 @@ public class EvalTreeOptimizer {
       try {
         rule = (EvalTreeOptimizationRule)eachRule.newInstance();
       } catch (Exception e) {
-        LOG.warn(eachRule + " cannot instantiate EvalTreeOptimizerRule class because of " + e.getMessage());
+        LOG.warn(eachRule + " cannot instantiate EvalTreeOptimizerRule class because of " + e.getMessage(), e);
         continue;
       }
       rules.add(rule);

http://git-wip-us.apache.org/repos/asf/tajo/blob/f1aeb734/tajo-pullserver/src/main/java/org/apache/tajo/pullserver/PullServerAuxService.java
----------------------------------------------------------------------
diff --git a/tajo-pullserver/src/main/java/org/apache/tajo/pullserver/PullServerAuxService.java b/tajo-pullserver/src/main/java/org/apache/tajo/pullserver/PullServerAuxService.java
index ce4018b..fba0593 100644
--- a/tajo-pullserver/src/main/java/org/apache/tajo/pullserver/PullServerAuxService.java
+++ b/tajo-pullserver/src/main/java/org/apache/tajo/pullserver/PullServerAuxService.java
@@ -214,7 +214,7 @@ public class PullServerAuxService extends AuxiliaryService {
       localFS = new LocalFileSystem();
       super.init(new Configuration(conf));
     } catch (Throwable t) {
-      LOG.error(t);
+      LOG.error(t, t);
     }
   }
 
@@ -269,7 +269,7 @@ public class PullServerAuxService extends AuxiliaryService {
 
       localFS.close();
     } catch (Throwable t) {
-      LOG.error(t);
+      LOG.error(t, t);
     } finally {
       super.stop();
     }

http://git-wip-us.apache.org/repos/asf/tajo/blob/f1aeb734/tajo-pullserver/src/main/java/org/apache/tajo/pullserver/PullServerUtil.java
----------------------------------------------------------------------
diff --git a/tajo-pullserver/src/main/java/org/apache/tajo/pullserver/PullServerUtil.java b/tajo-pullserver/src/main/java/org/apache/tajo/pullserver/PullServerUtil.java
index 564950f..c90f1aa 100644
--- a/tajo-pullserver/src/main/java/org/apache/tajo/pullserver/PullServerUtil.java
+++ b/tajo-pullserver/src/main/java/org/apache/tajo/pullserver/PullServerUtil.java
@@ -79,7 +79,7 @@ public class PullServerUtil {
       posixFadviseIfPossible = MethodUtils.getAccessibleMethod(posixClass, "posixFadviseIfPossible", parameters);
     } catch (Throwable e) {
       loaded = false;
-      LOG.warn("Failed to access posixFadviseIfPossible :" + e.getMessage());
+      LOG.warn("Failed to access posixFadviseIfPossible :" + e.getMessage(), e);
     }
 
     if (posixFadviseIfPossible == null) {

http://git-wip-us.apache.org/repos/asf/tajo/blob/f1aeb734/tajo-pullserver/src/main/java/org/apache/tajo/pullserver/TajoPullServerService.java
----------------------------------------------------------------------
diff --git a/tajo-pullserver/src/main/java/org/apache/tajo/pullserver/TajoPullServerService.java b/tajo-pullserver/src/main/java/org/apache/tajo/pullserver/TajoPullServerService.java
index f0dcd26..0744b9f 100644
--- a/tajo-pullserver/src/main/java/org/apache/tajo/pullserver/TajoPullServerService.java
+++ b/tajo-pullserver/src/main/java/org/apache/tajo/pullserver/TajoPullServerService.java
@@ -223,7 +223,7 @@ public class TajoPullServerService extends AbstractService {
       super.init(conf);
       LOG.info("Tajo PullServer initialized: readaheadLength=" + readaheadLength);
     } catch (Throwable t) {
-      LOG.error(t);
+      LOG.error(t, t);
     }
   }
 
@@ -335,7 +335,7 @@ public class TajoPullServerService extends AbstractService {
 
       localFS.close();
     } catch (Throwable t) {
-      LOG.error(t);
+      LOG.error(t, t);
     } finally {
       super.stop();
     }

http://git-wip-us.apache.org/repos/asf/tajo/blob/f1aeb734/tajo-rpc/src/main/java/org/apache/tajo/rpc/NettyServerBase.java
----------------------------------------------------------------------
diff --git a/tajo-rpc/src/main/java/org/apache/tajo/rpc/NettyServerBase.java b/tajo-rpc/src/main/java/org/apache/tajo/rpc/NettyServerBase.java
index 1b45ac9..024108b 100644
--- a/tajo-rpc/src/main/java/org/apache/tajo/rpc/NettyServerBase.java
+++ b/tajo-rpc/src/main/java/org/apache/tajo/rpc/NettyServerBase.java
@@ -96,7 +96,7 @@ public class NettyServerBase {
         int port = getUnusedPort();
         serverAddr = new InetSocketAddress(initIsa.getHostName(), port);
       } catch (IOException e) {
-        LOG.error(e);
+        LOG.error(e, e);
       }
     } else {
       serverAddr = initIsa;

http://git-wip-us.apache.org/repos/asf/tajo/blob/f1aeb734/tajo-rpc/src/main/java/org/apache/tajo/rpc/RpcConnectionPool.java
----------------------------------------------------------------------
diff --git a/tajo-rpc/src/main/java/org/apache/tajo/rpc/RpcConnectionPool.java b/tajo-rpc/src/main/java/org/apache/tajo/rpc/RpcConnectionPool.java
index 4ad9771..43feeb1 100644
--- a/tajo-rpc/src/main/java/org/apache/tajo/rpc/RpcConnectionPool.java
+++ b/tajo-rpc/src/main/java/org/apache/tajo/rpc/RpcConnectionPool.java
@@ -151,7 +151,7 @@ public class RpcConnectionPool {
     try {
       accepted.close();
     } catch (Throwable t) {
-      LOG.error(t);
+      LOG.error(t, t);
     }
   }
 


[11/12] tajo git commit: TAJO-1384: Duplicated output file path problem. (jihoon)

Posted by ji...@apache.org.
TAJO-1384: Duplicated output file path problem. (jihoon)

Closes #406


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

Branch: refs/heads/index_support
Commit: 513a8c3086b889d9b701d5c97eda3fb8c5453834
Parents: 3b9a2e5
Author: Jihoon Son <ji...@apache.org>
Authored: Wed Mar 11 10:07:01 2015 +0900
Committer: Jihoon Son <ji...@apache.org>
Committed: Wed Mar 11 10:07:40 2015 +0900

----------------------------------------------------------------------
 CHANGES                                         |  2 +
 .../org/apache/tajo/storage/StorageUtil.java    | 30 ++++------
 .../apache/tajo/storage/TestStorageUtil.java    | 58 ++++++++++++++++++++
 3 files changed, 72 insertions(+), 18 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tajo/blob/513a8c30/CHANGES
----------------------------------------------------------------------
diff --git a/CHANGES b/CHANGES
index dc1a5f7..68aabf5 100644
--- a/CHANGES
+++ b/CHANGES
@@ -16,6 +16,8 @@ Release 0.11.0 - unreleased
 
   BUG FIXES
 
+    TAJO-1384: Duplicated output file path problem. (jihoon)
+
     TAJO-1386: CURRENT_DATE generates parsing errors sometimes.
     (Contributed by navis, Committed by hyunsik)
 

http://git-wip-us.apache.org/repos/asf/tajo/blob/513a8c30/tajo-storage/tajo-storage-common/src/main/java/org/apache/tajo/storage/StorageUtil.java
----------------------------------------------------------------------
diff --git a/tajo-storage/tajo-storage-common/src/main/java/org/apache/tajo/storage/StorageUtil.java b/tajo-storage/tajo-storage-common/src/main/java/org/apache/tajo/storage/StorageUtil.java
index 68e96d8..926b5d3 100644
--- a/tajo-storage/tajo-storage-common/src/main/java/org/apache/tajo/storage/StorageUtil.java
+++ b/tajo-storage/tajo-storage-common/src/main/java/org/apache/tajo/storage/StorageUtil.java
@@ -18,15 +18,10 @@
 
 package org.apache.tajo.storage;
 
-import org.apache.hadoop.conf.Configuration;
-import org.apache.hadoop.fs.FSDataOutputStream;
 import org.apache.hadoop.fs.FileStatus;
 import org.apache.hadoop.fs.FileSystem;
 import org.apache.hadoop.fs.Path;
 import org.apache.tajo.catalog.Column;
-import org.apache.tajo.catalog.Schema;
-import org.apache.tajo.catalog.TableMeta;
-import org.apache.tajo.util.FileUtil;
 import sun.nio.ch.DirectBuffer;
 
 import java.io.DataInput;
@@ -34,8 +29,6 @@ import java.io.EOFException;
 import java.io.IOException;
 import java.io.InputStream;
 import java.nio.ByteBuffer;
-import java.util.ArrayList;
-import java.util.List;
 
 public class StorageUtil extends StorageConstants {
 
@@ -119,32 +112,33 @@ public class StorageUtil extends StorageConstants {
     }
 
     int maxValue = -1;
-    List<Path> fileNamePatternMatchedList = new ArrayList<Path>();
 
     for (FileStatus eachFile: files) {
       // In the case of partition table, return largest value within all partition dirs.
+      int value;
       if (eachFile.isDirectory() && recursive) {
-        int value = getMaxFileSequence(fs, eachFile.getPath(), recursive);
+        value = getMaxFileSequence(fs, eachFile.getPath(), recursive);
         if (value > maxValue) {
           maxValue = value;
         }
       } else {
         if (eachFile.getPath().getName().matches(fileNamePatternV08) ||
             eachFile.getPath().getName().matches(fileNamePatternV09)) {
-          fileNamePatternMatchedList.add(eachFile.getPath());
+          value = getSequence(eachFile.getPath().getName());
+          if (value > maxValue) {
+            maxValue = value;
+          }
         }
       }
     }
 
-    if (fileNamePatternMatchedList.isEmpty()) {
-      return maxValue;
-    }
-    Path lastFile = fileNamePatternMatchedList.get(fileNamePatternMatchedList.size() - 1);
-    String pathName = lastFile.getName();
+    return maxValue;
+  }
 
-    // 0.8: pathName = part-<ExecutionBlockId.seq>-<TaskId.seq>
-    // 0.9: pathName = part-<ExecutionBlockId.seq>-<TaskId.seq>-<Sequence>
-    String[] pathTokens = pathName.split("-");
+  // 0.8: pathName = part-<ExecutionBlockId.seq>-<TaskId.seq>
+  // 0.9: pathName = part-<ExecutionBlockId.seq>-<TaskId.seq>-<Sequence>
+  private static int getSequence(String name) {
+    String[] pathTokens = name.split("-");
     if (pathTokens.length == 3) {
       return -1;
     } else if(pathTokens.length == 4) {

http://git-wip-us.apache.org/repos/asf/tajo/blob/513a8c30/tajo-storage/tajo-storage-hdfs/src/test/java/org/apache/tajo/storage/TestStorageUtil.java
----------------------------------------------------------------------
diff --git a/tajo-storage/tajo-storage-hdfs/src/test/java/org/apache/tajo/storage/TestStorageUtil.java b/tajo-storage/tajo-storage-hdfs/src/test/java/org/apache/tajo/storage/TestStorageUtil.java
new file mode 100644
index 0000000..4b7c929
--- /dev/null
+++ b/tajo-storage/tajo-storage-hdfs/src/test/java/org/apache/tajo/storage/TestStorageUtil.java
@@ -0,0 +1,58 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.tajo.storage;
+
+import org.apache.hadoop.fs.FileSystem;
+import org.apache.hadoop.fs.Path;
+import org.apache.tajo.conf.TajoConf;
+import org.apache.tajo.util.CommonTestingUtil;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+
+import java.io.IOException;
+
+import static org.junit.Assert.assertEquals;
+
+public class TestStorageUtil {
+  private TajoConf conf;
+  private static String TEST_PATH = "target/test-data/TestStorageUtil";
+  private Path testDir;
+  private FileSystem fs;
+
+  @Before
+  public void setUp() throws Exception {
+    conf = new TajoConf();
+    testDir = CommonTestingUtil.getTestDir(TEST_PATH);
+    fs = testDir.getFileSystem(conf);
+  }
+
+  @After
+  public void tearDown() throws Exception {
+  }
+
+  @Test
+  public final void testGetMaxFileSequence() throws IOException {
+    for (int i = 0; i < 7; i++) {
+      fs.create(new Path(testDir, "part-00-00000-00"+i), false);
+    }
+
+    assertEquals(6, StorageUtil.getMaxFileSequence(fs, testDir, true));
+  }
+}


[05/12] tajo git commit: Add missed ASF license to relnotes.html.

Posted by ji...@apache.org.
Add missed ASF license to relnotes.html.


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

Branch: refs/heads/index_support
Commit: b839d372a46bf653854288872de5ce78bac586ef
Parents: 42ef0dc
Author: Hyunsik Choi <hy...@apache.org>
Authored: Sun Mar 8 20:35:55 2015 -0700
Committer: Hyunsik Choi <hy...@apache.org>
Committed: Sun Mar 8 20:35:55 2015 -0700

----------------------------------------------------------------------
 .../site/resources/releases/0.10.0/relnotes.html  | 18 ++++++++++++++++++
 1 file changed, 18 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tajo/blob/b839d372/tajo-project/src/site/resources/releases/0.10.0/relnotes.html
----------------------------------------------------------------------
diff --git a/tajo-project/src/site/resources/releases/0.10.0/relnotes.html b/tajo-project/src/site/resources/releases/0.10.0/relnotes.html
index 8958a51..6641a9f 100644
--- a/tajo-project/src/site/resources/releases/0.10.0/relnotes.html
+++ b/tajo-project/src/site/resources/releases/0.10.0/relnotes.html
@@ -1,3 +1,21 @@
+<!DOCTYPE html>
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one
+  or more contributor license agreements.  See the NOTICE file
+  distributed with this work for additional information
+  regarding copyright ownership.  The ASF licenses this file
+  to you under the Apache License, Version 2.0 (the
+  "License"); you may not use this file except in compliance
+  with the License.  You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+-->
 <html>
 <head>
 <title>Release Notes - Tajo - Version 0.10.0</title>


[03/12] tajo git commit: TAJO-1370: TUtils.checkEquals() is not consistent with description in javadoc.

Posted by ji...@apache.org.
TAJO-1370: TUtils.checkEquals() is not consistent with description in javadoc.

Closes #397

Signed-off-by: Hyunsik Choi <hy...@apache.org>


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

Branch: refs/heads/index_support
Commit: 6ba51c3cd3f20ce9c7e945d78b0cd2c4eaefc362
Parents: f1aeb73
Author: navis.ryu <na...@apache.org>
Authored: Thu Mar 5 14:23:09 2015 +0900
Committer: Hyunsik Choi <hy...@apache.org>
Committed: Sun Mar 8 14:54:11 2015 -0700

----------------------------------------------------------------------
 CHANGES                                                   | 3 +++
 tajo-common/src/main/java/org/apache/tajo/util/TUtil.java | 6 +++---
 2 files changed, 6 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tajo/blob/6ba51c3c/CHANGES
----------------------------------------------------------------------
diff --git a/CHANGES b/CHANGES
index 003ae1a..9d986f1 100644
--- a/CHANGES
+++ b/CHANGES
@@ -16,6 +16,9 @@ Release 0.11.0 - unreleased
 
   BUG FIXES
 
+    TAJO-1370 TUtils.checkEquals() is not consistent with description 
+    in javadoc. (Contributed by navis, Committed by hyunsik)
+
     TAJO-1362: Resolve findbug warnings on Tajo Core Module. (jihun)
 
     TAJO-1366: The timestamp type conversion occasionally leads to wrong 

http://git-wip-us.apache.org/repos/asf/tajo/blob/6ba51c3c/tajo-common/src/main/java/org/apache/tajo/util/TUtil.java
----------------------------------------------------------------------
diff --git a/tajo-common/src/main/java/org/apache/tajo/util/TUtil.java b/tajo-common/src/main/java/org/apache/tajo/util/TUtil.java
index 30ad04f..75f3e2a 100644
--- a/tajo-common/src/main/java/org/apache/tajo/util/TUtil.java
+++ b/tajo-common/src/main/java/org/apache/tajo/util/TUtil.java
@@ -50,10 +50,10 @@ public class TUtil {
    * @return true if they are equal or all null
    */
   public static boolean checkEquals(Collection<?> s1, Collection<?> s2) {
-    if (s1 == null || s2 == null) {
-      return false;
-    } else if (s1 == null && s2 == null) {
+    if (s1 == null && s2 == null) {
       return true;
+    } else if (s1 == null || s2 == null) {
+      return false;
     } else {
       if (s1.size() == 0 && s2.size() == 0) {
         return true;