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(); - } -}
