merging master

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

Branch: refs/heads/index_support
Commit: a7c2fd95f3a85420f7cc1dcd6d0d44ac356f70bc
Parents: 6c01a2c
Author: Jihoon Son <[email protected]>
Authored: Wed Jul 22 13:40:51 2015 +0900
Committer: Jihoon Son <[email protected]>
Committed: Wed Jul 22 13:40:51 2015 +0900

----------------------------------------------------------------------
 .../java/org/apache/tajo/cli/tsql/TajoCli.java  |  4 --
 .../org/apache/tajo/client/QueryStatus.java     |  8 ++--
 .../org/apache/tajo/client/TajoClientImpl.java  | 14 +++----
 tajo-client/src/main/proto/ClientProtos.proto   |  6 ++-
 .../tajo/master/TajoMasterClientService.java    | 44 +++++++++++++-------
 .../apache/tajo/master/exec/QueryExecutor.java  | 11 ++---
 .../main/java/org/apache/tajo/util/IPCUtil.java | 44 --------------------
 7 files changed, 46 insertions(+), 85 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tajo/blob/a7c2fd95/tajo-cli/src/main/java/org/apache/tajo/cli/tsql/TajoCli.java
----------------------------------------------------------------------
diff --git a/tajo-cli/src/main/java/org/apache/tajo/cli/tsql/TajoCli.java 
b/tajo-cli/src/main/java/org/apache/tajo/cli/tsql/TajoCli.java
index f5f20c1..bc5fa7a 100644
--- a/tajo-cli/src/main/java/org/apache/tajo/cli/tsql/TajoCli.java
+++ b/tajo-cli/src/main/java/org/apache/tajo/cli/tsql/TajoCli.java
@@ -537,10 +537,6 @@ public class TajoCli {
           onError(response.getState().getMessage(), null);
         }
       }
-    } else {
-      if (response.getResult().hasErrorMessage()) {
-        onError(response.getResult().getErrorMessage(), null);
-      }
     }
 
     return wasError ? -1 : 0;

http://git-wip-us.apache.org/repos/asf/tajo/blob/a7c2fd95/tajo-client/src/main/java/org/apache/tajo/client/QueryStatus.java
----------------------------------------------------------------------
diff --git a/tajo-client/src/main/java/org/apache/tajo/client/QueryStatus.java 
b/tajo-client/src/main/java/org/apache/tajo/client/QueryStatus.java
index a612226..809c675 100644
--- a/tajo-client/src/main/java/org/apache/tajo/client/QueryStatus.java
+++ b/tajo-client/src/main/java/org/apache/tajo/client/QueryStatus.java
@@ -41,11 +41,11 @@ public class QueryStatus {
     submitTime = proto.getSubmitTime();
     finishTime = proto.getFinishTime();
     hasResult = proto.getHasResult();
-    if (proto.getResult().hasErrorMessage()) {
-      errorText = proto.getResult().getErrorMessage();
+    if (proto.hasErrorMessage()) {
+      errorText = proto.getErrorMessage();
     }
-    if (proto.getResult().hasErrorTrace()) {
-      errorTrace = proto.getResult().getErrorTrace();
+    if (proto.hasErrorTrace()) {
+      errorTrace = proto.getErrorTrace();
     }
 
     queryMasterHost = proto.getQueryMasterHost();

http://git-wip-us.apache.org/repos/asf/tajo/blob/a7c2fd95/tajo-client/src/main/java/org/apache/tajo/client/TajoClientImpl.java
----------------------------------------------------------------------
diff --git 
a/tajo-client/src/main/java/org/apache/tajo/client/TajoClientImpl.java 
b/tajo-client/src/main/java/org/apache/tajo/client/TajoClientImpl.java
index be3c37f..b66d451 100644
--- a/tajo-client/src/main/java/org/apache/tajo/client/TajoClientImpl.java
+++ b/tajo-client/src/main/java/org/apache/tajo/client/TajoClientImpl.java
@@ -230,37 +230,37 @@ public class TajoClientImpl extends SessionConnection 
implements TajoClient, Que
   }
 
   @Override
-  public IndexDescProto getIndex(String indexName) throws ServiceException {
+  public IndexDescProto getIndex(String indexName) throws SQLException {
     return catalogClient.getIndex(indexName);
   }
 
   @Override
-  public boolean existIndex(String indexName) throws ServiceException {
+  public boolean existIndex(String indexName) throws SQLException {
     return catalogClient.existIndex(indexName);
   }
 
   @Override
-  public List<IndexDescProto> getIndexes(String tableName) throws 
ServiceException {
+  public List<IndexDescProto> getIndexes(String tableName) throws SQLException 
{
     return catalogClient.getIndexes(tableName);
   }
 
   @Override
-  public boolean hasIndexes(String tableName) throws ServiceException {
+  public boolean hasIndexes(String tableName) throws SQLException {
     return catalogClient.hasIndexes(tableName);
   }
 
   @Override
-  public IndexDescProto getIndex(String tableName, String[] columnNames) 
throws ServiceException {
+  public IndexDescProto getIndex(String tableName, String[] columnNames) 
throws SQLException {
     return catalogClient.getIndex(tableName, columnNames);
   }
 
   @Override
-  public boolean existIndex(String tableName, String[] columnName) throws 
ServiceException {
+  public boolean existIndex(String tableName, String[] columnName) throws 
SQLException {
     return catalogClient.existIndex(tableName, columnName);
   }
 
   @Override
-  public boolean dropIndex(String indexName) throws ServiceException {
+  public boolean dropIndex(String indexName) throws SQLException {
     return catalogClient.dropIndex(indexName);
   }
 }

http://git-wip-us.apache.org/repos/asf/tajo/blob/a7c2fd95/tajo-client/src/main/proto/ClientProtos.proto
----------------------------------------------------------------------
diff --git a/tajo-client/src/main/proto/ClientProtos.proto 
b/tajo-client/src/main/proto/ClientProtos.proto
index f1aa9c9..e77923e 100644
--- a/tajo-client/src/main/proto/ClientProtos.proto
+++ b/tajo-client/src/main/proto/ClientProtos.proto
@@ -143,8 +143,10 @@ message GetQueryStatusResponse {
   optional int64 submitTime = 5;
   optional int64 finishTime = 7;
   optional bool hasResult = 8;
-  optional string queryMasterHost = 9;
-  optional int32 queryMasterPort = 10;
+  optional string errorMessage = 9;
+  optional string errorTrace = 10;
+  optional string queryMasterHost = 11;
+  optional int32 queryMasterPort = 12;
 }
 
 message GetQueryResultDataRequest {

http://git-wip-us.apache.org/repos/asf/tajo/blob/a7c2fd95/tajo-core/src/main/java/org/apache/tajo/master/TajoMasterClientService.java
----------------------------------------------------------------------
diff --git 
a/tajo-core/src/main/java/org/apache/tajo/master/TajoMasterClientService.java 
b/tajo-core/src/main/java/org/apache/tajo/master/TajoMasterClientService.java
index 5f44839..aee9f01 100644
--- 
a/tajo-core/src/main/java/org/apache/tajo/master/TajoMasterClientService.java
+++ 
b/tajo-core/src/main/java/org/apache/tajo/master/TajoMasterClientService.java
@@ -36,9 +36,7 @@ import org.apache.tajo.catalog.*;
 import org.apache.tajo.catalog.exception.UndefinedDatabaseException;
 import org.apache.tajo.catalog.partition.PartitionMethodDesc;
 import org.apache.tajo.catalog.proto.CatalogProtos;
-import org.apache.tajo.catalog.proto.CatalogProtos.IndexDescProto;
-import org.apache.tajo.catalog.proto.CatalogProtos.FunctionListResponse;
-import org.apache.tajo.catalog.proto.CatalogProtos.TableResponse;
+import org.apache.tajo.catalog.proto.CatalogProtos.*;
 import org.apache.tajo.conf.TajoConf;
 import org.apache.tajo.conf.TajoConf.ConfVars;
 import org.apache.tajo.engine.query.QueryContext;
@@ -904,7 +902,7 @@ public class TajoMasterClientService extends 
AbstractService {
     }
 
     @Override
-    public IndexDescProto getIndexWithName(RpcController controller, 
SessionedStringProto request)
+    public IndexResponse getIndexWithName(RpcController controller, 
SessionedStringProto request)
         throws ServiceException {
       try {
         context.getSessionManager().touch(request.getSessionId().getId());
@@ -919,14 +917,21 @@ public class TajoMasterClientService extends 
AbstractService {
           databaseName = session.getCurrentDatabase();
           indexName = request.getValue();
         }
-        return catalog.getIndexByName(databaseName, indexName).getProto();
+        IndexDescProto indexProto = catalog.getIndexByName(databaseName, 
indexName).getProto();
+        return IndexResponse.newBuilder()
+            .setState(OK)
+            .setIndexDesc(indexProto)
+            .build();
+
       } catch (Throwable t) {
-        throw new ServiceException(t);
+        return IndexResponse.newBuilder()
+            .setState(returnError(t))
+            .build();
       }
     }
 
     @Override
-    public BoolProto existIndexWithName(RpcController controller, 
SessionedStringProto request)
+    public ReturnState existIndexWithName(RpcController controller, 
SessionedStringProto request)
         throws ServiceException {
       try {
         context.getSessionManager().touch(request.getSessionId().getId());
@@ -941,15 +946,19 @@ public class TajoMasterClientService extends 
AbstractService {
           databaseName = session.getCurrentDatabase();
           indexName = request.getValue();
         }
-        return catalog.existIndexByName(databaseName, indexName) ?
-            ProtoUtil.TRUE : ProtoUtil.FALSE;
+
+        if (catalog.existIndexByName(databaseName, indexName)) {
+          return OK;
+        } else {
+          return errUndefinedIndexName(indexName);
+        }
       } catch (Throwable t) {
         throw new ServiceException(t);
       }
     }
 
     @Override
-    public GetIndexesResponse getIndexesForTable(RpcController controller, 
SessionedStringProto request)
+    public IndexListResponse getIndexesForTable(RpcController controller, 
SessionedStringProto request)
         throws ServiceException {
       try {
         context.getSessionManager().touch(request.getSessionId().getId());
@@ -977,7 +986,7 @@ public class TajoMasterClientService extends 
AbstractService {
     }
 
     @Override
-    public BoolProto existIndexesForTable(RpcController controller, 
SessionedStringProto request)
+    public ReturnState existIndexesForTable(RpcController controller, 
SessionedStringProto request)
         throws ServiceException {
       try {
         context.getSessionManager().touch(request.getSessionId().getId());
@@ -992,15 +1001,18 @@ public class TajoMasterClientService extends 
AbstractService {
           databaseName = session.getCurrentDatabase();
           tableName = request.getValue();
         }
-        return catalog.existIndexesByTable(databaseName, tableName) ?
-            ProtoUtil.TRUE : ProtoUtil.FALSE;
+        if (catalog.existIndexesByTable(databaseName, tableName)) {
+          return OK;
+        } else {
+          return errUndefinedIndex(tableName);
+        }
       } catch (Throwable t) {
         throw new ServiceException(t);
       }
     }
 
     @Override
-    public GetIndexWithColumnsResponse getIndexWithColumns(RpcController 
controller, GetIndexWithColumnsRequest request)
+    public IndexResponse getIndexWithColumns(RpcController controller, 
GetIndexWithColumnsRequest request)
         throws ServiceException {
       try {
         context.getSessionManager().touch(request.getSessionId().getId());
@@ -1028,7 +1040,7 @@ public class TajoMasterClientService extends 
AbstractService {
     }
 
     @Override
-    public BoolProto existIndexWithColumns(RpcController controller, 
GetIndexWithColumnsRequest request)
+    public ReturnState existIndexWithColumns(RpcController controller, 
GetIndexWithColumnsRequest request)
         throws ServiceException {
       try {
         context.getSessionManager().touch(request.getSessionId().getId());
@@ -1053,7 +1065,7 @@ public class TajoMasterClientService extends 
AbstractService {
     }
 
     @Override
-    public BoolProto dropIndex(RpcController controller, SessionedStringProto 
request)
+    public ReturnState dropIndex(RpcController controller, 
SessionedStringProto request)
         throws ServiceException {
       try {
         context.getSessionManager().touch(request.getSessionId().getId());

http://git-wip-us.apache.org/repos/asf/tajo/blob/a7c2fd95/tajo-core/src/main/java/org/apache/tajo/master/exec/QueryExecutor.java
----------------------------------------------------------------------
diff --git 
a/tajo-core/src/main/java/org/apache/tajo/master/exec/QueryExecutor.java 
b/tajo-core/src/main/java/org/apache/tajo/master/exec/QueryExecutor.java
index 2487708..a330016 100644
--- a/tajo-core/src/main/java/org/apache/tajo/master/exec/QueryExecutor.java
+++ b/tajo-core/src/main/java/org/apache/tajo/master/exec/QueryExecutor.java
@@ -29,7 +29,7 @@ import org.apache.tajo.QueryIdFactory;
 import org.apache.tajo.SessionVars;
 import org.apache.tajo.TajoConstants;
 import org.apache.tajo.catalog.*;
-import org.apache.tajo.catalog.exception.AlreadyExistsIndexException;
+import org.apache.tajo.catalog.exception.DuplicateIndexException;
 import org.apache.tajo.catalog.proto.CatalogProtos;
 import org.apache.tajo.catalog.statistics.TableStats;
 import org.apache.tajo.common.TajoDataTypes;
@@ -41,7 +41,6 @@ import org.apache.tajo.engine.planner.physical.EvalExprExec;
 import org.apache.tajo.engine.planner.physical.InsertRowsExec;
 import org.apache.tajo.engine.query.QueryContext;
 import org.apache.tajo.ipc.ClientProtos;
-import org.apache.tajo.ipc.ClientProtos.ResultCode;
 import org.apache.tajo.ipc.ClientProtos.SubmitQueryResponse;
 import org.apache.tajo.master.QueryInfo;
 import org.apache.tajo.master.QueryManager;
@@ -62,7 +61,6 @@ import org.apache.tajo.plan.util.PlannerUtil;
 import org.apache.tajo.plan.verifier.VerifyException;
 import org.apache.tajo.session.Session;
 import org.apache.tajo.storage.*;
-import org.apache.tajo.util.IPCUtil;
 import org.apache.tajo.util.ProtoUtil;
 import org.apache.tajo.worker.TaskAttemptContext;
 
@@ -107,9 +105,6 @@ public class QueryExecutor {
 
     } else if (PlannerUtil.checkIfDDLPlan(rootNode)) {
       context.getSystemMetrics().counter("Query", "numDDLQuery").inc();
-      ddlExecutor.execute(queryContext, plan);
-      response.setQueryId(QueryIdFactory.NULL_QUERY_ID.getProto());
-      response.setState(OK);
 
       if (PlannerUtil.isDistExecDDL(rootNode)) {
         if (rootNode.getChild().getType() == NodeType.CREATE_INDEX) {
@@ -118,7 +113,7 @@ public class QueryExecutor {
         executeDistributedQuery(queryContext, session, plan, sql, jsonExpr, 
response);
       } else {
         response.setQueryId(QueryIdFactory.NULL_QUERY_ID.getProto());
-        response.setResult(IPCUtil.buildOkRequestResult());
+        response.setState(OK);
         ddlExecutor.execute(queryContext, plan);
       }
 
@@ -535,7 +530,7 @@ public class QueryExecutor {
     }
 
     if (catalog.existIndexByName(databaseName, simpleIndexName)) {
-      throw new AlreadyExistsIndexException(qualifiedIndexName);
+      throw new DuplicateIndexException(qualifiedIndexName);
     }
   }
 

http://git-wip-us.apache.org/repos/asf/tajo/blob/a7c2fd95/tajo-core/src/main/java/org/apache/tajo/util/IPCUtil.java
----------------------------------------------------------------------
diff --git a/tajo-core/src/main/java/org/apache/tajo/util/IPCUtil.java 
b/tajo-core/src/main/java/org/apache/tajo/util/IPCUtil.java
deleted file mode 100644
index dcffe62..0000000
--- a/tajo-core/src/main/java/org/apache/tajo/util/IPCUtil.java
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.tajo.util;
-
-import org.apache.tajo.annotation.Nullable;
-import org.apache.tajo.ipc.ClientProtos.RequestResult;
-import org.apache.tajo.ipc.ClientProtos.ResultCode;
-
-public class IPCUtil {
-
-  public static RequestResult buildOkRequestResult() {
-    return buildRequestResult(ResultCode.OK, null, null);
-  }
-
-  public static RequestResult buildRequestResult(ResultCode code,
-                                                 @Nullable String errorMessage,
-                                                 @Nullable String errorTrace) {
-    RequestResult.Builder builder = RequestResult.newBuilder();
-    builder.setResultCode(code);
-    if (errorMessage != null) {
-      builder.setErrorMessage(errorMessage);
-    }
-    if (errorTrace != null) {
-      builder.setErrorTrace(errorTrace);
-    }
-    return builder.build();
-  }
-}

Reply via email to