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/07/22 15:01:00 UTC
[27/52] [abbrv] tajo git commit: Merge branch 'master' of
https://git-wip-us.apache.org/repos/asf/tajo into index_support
http://git-wip-us.apache.org/repos/asf/tajo/blob/0028d7aa/tajo-client/src/main/java/org/apache/tajo/client/CatalogAdminClientImpl.java
----------------------------------------------------------------------
diff --cc tajo-client/src/main/java/org/apache/tajo/client/CatalogAdminClientImpl.java
index e6566dc,e73a032..79ba71f
--- a/tajo-client/src/main/java/org/apache/tajo/client/CatalogAdminClientImpl.java
+++ b/tajo-client/src/main/java/org/apache/tajo/client/CatalogAdminClientImpl.java
@@@ -26,12 -26,13 +26,20 @@@ import org.apache.tajo.catalog.TableDes
import org.apache.tajo.catalog.TableMeta;
import org.apache.tajo.catalog.partition.PartitionMethodDesc;
import org.apache.tajo.catalog.proto.CatalogProtos;
++<<<<<<< HEAD
+import org.apache.tajo.catalog.proto.CatalogProtos.IndexDescProto;
+import org.apache.tajo.ipc.ClientProtos;
+import org.apache.tajo.ipc.ClientProtos.*;
+import org.apache.tajo.jdbc.SQLStates;
++=======
+ import org.apache.tajo.catalog.proto.CatalogProtos.FunctionDescProto;
+ import org.apache.tajo.catalog.proto.CatalogProtos.TableResponse;
+ import org.apache.tajo.exception.SQLExceptionUtil;
+ import org.apache.tajo.ipc.ClientProtos;
+ import org.apache.tajo.ipc.ClientProtos.DropTableRequest;
++>>>>>>> c50a5dadff90fa90709abbce59856e834baa4867
import org.apache.tajo.rpc.NettyClientBase;
- import org.apache.tajo.rpc.protocolrecords.PrimitiveProtos;
+ import org.apache.tajo.rpc.protocolrecords.PrimitiveProtos.StringListResponse;
import java.io.IOException;
import java.net.URI;
@@@ -113,11 -133,18 +140,26 @@@ public class CatalogAdminClientImpl imp
if (partitionMethodDesc != null) {
builder.setPartition(partitionMethodDesc.getProto());
}
++<<<<<<< HEAD
+ ClientProtos.TableResponse res = tajoMasterService.createExternalTable(null, builder.build());
+ if (res.getResult().getResultCode() == ClientProtos.ResultCode.OK) {
+ return CatalogUtil.newTableDesc(res.getTableDesc());
+ } else {
+ throw new SQLException(res.getResult().getErrorMessage(), SQLStates.ER_NO_SUCH_TABLE.getState());
++=======
+
+ TableResponse res;
+ try {
+ res = tajoMasterService.createExternalTable(null, builder.build());
+ } catch (ServiceException e) {
+ throw new RuntimeException(e);
+ }
+
+ if (isSuccess(res.getState())) {
+ return CatalogUtil.newTableDesc(res.getTable());
+ } else {
+ throw SQLExceptionUtil.toSQLException(res.getState());
++>>>>>>> c50a5dadff90fa90709abbce59856e834baa4867
}
}
@@@ -158,120 -187,36 +202,152 @@@
}
@Override
++<<<<<<< HEAD
+ public TableDesc getTableDesc(final String tableName) throws ServiceException {
+ NettyClientBase client = connection.getTajoMasterConnection();
+ connection.checkSessionAndGet(client);
+ BlockingInterface tajoMasterService = client.getStub();
+
+ SessionedStringProto.Builder builder = SessionedStringProto.newBuilder();
+ builder.setSessionId(connection.sessionId);
+ builder.setValue(tableName);
+ ClientProtos.TableResponse res = tajoMasterService.getTableDesc(null, builder.build());
+ if (res.getResult().getResultCode() == ClientProtos.ResultCode.OK) {
+ return CatalogUtil.newTableDesc(res.getTableDesc());
+ } else {
+ throw new ServiceException(new SQLException(res.getResult().getErrorMessage(),
+ SQLStates.ER_NO_SUCH_TABLE.getState()));
++=======
+ public TableDesc getTableDesc(final String tableName) throws SQLException {
+
+ final BlockingInterface stub = conn.getTMStub();
+
+ TableResponse res;
+ try {
+ res = stub.getTableDesc(null, conn.getSessionedString(tableName));
+ } catch (ServiceException e) {
+ throw new RuntimeException(e);
++>>>>>>> c50a5dadff90fa90709abbce59856e834baa4867
}
+
+ throwIfError(res.getState());
+ return CatalogUtil.newTableDesc(res.getTable());
}
@Override
++<<<<<<< HEAD
+ public List<CatalogProtos.FunctionDescProto> getFunctions(final String functionName) throws ServiceException {
+ NettyClientBase client = connection.getTajoMasterConnection();
+ connection.checkSessionAndGet(client);
+ BlockingInterface tajoMasterService = client.getStub();
+
+ String paramFunctionName = functionName == null ? "" : functionName;
+ ClientProtos.FunctionResponse res = tajoMasterService.getFunctionList(null,
+ connection.convertSessionedString(paramFunctionName));
+ if (res.getResult().getResultCode() == ClientProtos.ResultCode.OK) {
+ return res.getFunctionsList();
+ } else {
+ throw new ServiceException(res.getResult().getErrorMessage());
+ }
+ }
+
+ @Override
+ public IndexDescProto getIndex(final String indexName) throws ServiceException {
+ NettyClientBase client = connection.getTajoMasterConnection();
+ connection.checkSessionAndGet(client);
+ BlockingInterface tajoMasterService = client.getStub();
+ return tajoMasterService.getIndexWithName(null,
+ connection.convertSessionedString(indexName));
+ }
+
+ @Override
+ public boolean existIndex(final String indexName) throws ServiceException {
+ NettyClientBase client = connection.getTajoMasterConnection();
+ connection.checkSessionAndGet(client);
+ BlockingInterface tajoMasterService = client.getStub();
+ return tajoMasterService.existIndexWithName(null,
+ connection.convertSessionedString(indexName)).getValue();
+ }
+
+ @Override
+ public List<IndexDescProto> getIndexes(final String tableName) throws ServiceException {
+ NettyClientBase client = connection.getTajoMasterConnection();
+ connection.checkSessionAndGet(client);
+ BlockingInterface tajoMasterService = client.getStub();
+ GetIndexesResponse response = tajoMasterService.getIndexesForTable(null,
+ connection.convertSessionedString(tableName));
+ if (response.getResult().getResultCode() == ResultCode.OK) {
+ return response.getIndexesList();
+ } else {
+ throw new ServiceException(response.getResult().getErrorMessage());
+ }
+ }
+
+ @Override
+ public boolean hasIndexes(final String tableName) throws ServiceException {
+ NettyClientBase client = connection.getTajoMasterConnection();
+ connection.checkSessionAndGet(client);
+ BlockingInterface tajoMasterService = client.getStub();
+ return tajoMasterService.existIndexesForTable(null,
+ connection.convertSessionedString(tableName)).getValue();
+ }
+
+ @Override
+ public IndexDescProto getIndex(final String tableName, final String[] columnNames) throws ServiceException {
+ NettyClientBase client = connection.getTajoMasterConnection();
+ connection.checkSessionAndGet(client);
+ BlockingInterface tajoMasterService = client.getStub();
+ GetIndexWithColumnsRequest.Builder builder = GetIndexWithColumnsRequest.newBuilder();
+ builder.setSessionId(connection.sessionId);
+ builder.setTableName(tableName);
+ for (String eachColumnName : columnNames) {
+ builder.addColumnNames(eachColumnName);
+ }
+ GetIndexWithColumnsResponse response = tajoMasterService.getIndexWithColumns(null, builder.build());
+ if (response.getResult().getResultCode() == ResultCode.OK) {
+ return response.getIndexDesc();
+ } else {
+ throw new ServiceException(response.getResult().getErrorMessage());
+ }
+ }
+
+ @Override
+ public boolean existIndex(final String tableName, final String[] columnName) throws ServiceException {
+ NettyClientBase client = connection.getTajoMasterConnection();
+ connection.checkSessionAndGet(client);
+ BlockingInterface tajoMasterService = client.getStub();
+ GetIndexWithColumnsRequest.Builder builder = GetIndexWithColumnsRequest.newBuilder();
+ builder.setSessionId(connection.sessionId);
+ builder.setTableName(tableName);
+ for (String eachColumnName : columnName) {
+ builder.addColumnNames(eachColumnName);
+ }
+ return tajoMasterService.existIndexWithColumns(null, builder.build()).getValue();
+ }
+
+ @Override
+ public boolean dropIndex(final String indexName) throws ServiceException {
+ NettyClientBase client = connection.getTajoMasterConnection();
+ connection.checkSessionAndGet(client);
+ BlockingInterface tajoMasterService = client.getStub();
+ return tajoMasterService.dropIndex(null,
+ connection.convertSessionedString(indexName)).getValue();
++=======
+ public List<FunctionDescProto> getFunctions(final String functionName) throws SQLException {
+
+ final BlockingInterface stub = conn.getTMStub();
+
+ String paramFunctionName = functionName == null ? "" : functionName;
+ CatalogProtos.FunctionListResponse res;
+ try {
+ res = stub.getFunctionList(null, conn.getSessionedString(paramFunctionName));
+ } catch (ServiceException e) {
+ throw new RuntimeException(e);
+ }
+
+ throwIfError(res.getState());
+ return res.getFunctionList();
++>>>>>>> c50a5dadff90fa90709abbce59856e834baa4867
}
@Override
http://git-wip-us.apache.org/repos/asf/tajo/blob/0028d7aa/tajo-client/src/main/java/org/apache/tajo/client/QueryClientImpl.java
----------------------------------------------------------------------
diff --cc tajo-client/src/main/java/org/apache/tajo/client/QueryClientImpl.java
index 71e3179,80a49c2..04098fc
--- a/tajo-client/src/main/java/org/apache/tajo/client/QueryClientImpl.java
+++ b/tajo-client/src/main/java/org/apache/tajo/client/QueryClientImpl.java
@@@ -152,41 -144,23 +144,55 @@@ public class QueryClientImpl implement
}
@Override
- public ClientProtos.SubmitQueryResponse executeQuery(final String sql) throws ServiceException {
- NettyClientBase client = connection.getTajoMasterConnection();
- connection.checkSessionAndGet(client);
+ public ClientProtos.SubmitQueryResponse executeQuery(final String sql) throws SQLException {
++<<<<<<< HEAD
+ final QueryRequest.Builder builder = QueryRequest.newBuilder();
+ builder.setSessionId(connection.sessionId);
+ builder.setQuery(sql);
+ builder.setIsJson(false);
+ TajoMasterClientProtocolService.BlockingInterface tajoMasterService = client.getStub();
+ SubmitQueryResponse response = tajoMasterService.submitQuery(null, builder.build());
+ if (response.getResult().getResultCode() == ResultCode.OK) {
+ connection.updateSessionVarsCache(ProtoUtil.convertToMap(response.getSessionVars()));
++=======
+ final BlockingInterface stub = conn.getTMStub();
+ final QueryRequest request = buildQueryRequest(sql, false);
+
+ SubmitQueryResponse response;
+ try {
+ response = stub.submitQuery(null, request);
+ } catch (ServiceException e) {
+ throw new RuntimeException(e);
+ }
+
+ if (isSuccess(response.getState())) {
+ conn.updateSessionVarsCache(ProtoUtil.convertToMap(response.getSessionVars()));
++>>>>>>> c50a5dadff90fa90709abbce59856e834baa4867
}
+
return response;
+
+//<<<<<<< HEAD
+// connection.checkSessionAndGet(client);
+//
+// final QueryRequest.Builder builder = QueryRequest.newBuilder();
+// builder.setSessionId(connection.sessionId);
+// builder.setQuery(sql);
+// builder.setIsJson(false);
+// TajoMasterClientProtocolService.BlockingInterface tajoMasterService = client.getStub();
+//
+//
+//
+// }
+// }.withRetries();
+//=======
+// SubmitQueryResponse response = tajoMasterService.submitQuery(null, builder.build());
+// if (response.getResultCode() == ResultCode.OK) {
+// connection.updateSessionVarsCache(ProtoUtil.convertToMap(response.getSessionVars()));
+// }
+// return response;
+//>>>>>>> 9b3824b5f0c64af42bfcf0a6bb8d3555c22c5746
}
@Override
@@@ -206,17 -176,10 +208,21 @@@
}
@Override
- public ResultSet executeQueryAndGetResult(String sql) throws ServiceException, IOException {
+ public ResultSet executeQueryAndGetResult(String sql) throws SQLException {
ClientProtos.SubmitQueryResponse response = executeQuery(sql);
++<<<<<<< HEAD
+
+ if (response.getResult().getResultCode() == ClientProtos.ResultCode.ERROR) {
+ if (response.getResult().hasErrorMessage()) {
+ throw new ServiceException(response.getResult().getErrorMessage());
+ } else if (response.getResult().hasErrorTrace()) {
+ throw new ServiceException(response.getResult().getErrorTrace());
+ }
+ }
++=======
+ throwIfError(response.getState());
++>>>>>>> c50a5dadff90fa90709abbce59856e834baa4867
QueryId queryId = new QueryId(response.getQueryId());
@@@ -242,16 -205,12 +248,19 @@@
}
@Override
- public ResultSet executeJsonQueryAndGetResult(final String json) throws ServiceException, IOException {
+ public ResultSet executeJsonQueryAndGetResult(final String json) throws SQLException {
ClientProtos.SubmitQueryResponse response = executeQueryWithJson(json);
++<<<<<<< HEAD
+
+ if (response.getResult().getResultCode() == ClientProtos.ResultCode.ERROR) {
+ throw new ServiceException(response.getResult().getErrorTrace());
+ }
++=======
+ throwIfError(response.getState());
++>>>>>>> c50a5dadff90fa90709abbce59856e834baa4867
QueryId queryId = new QueryId(response.getQueryId());
-
if (response.getIsForwarded()) {
if (queryId.equals(QueryIdFactory.NULL_QUERY_ID)) {
@@@ -361,161 -315,67 +365,195 @@@
}
@Override
- public TajoMemoryResultSet fetchNextQueryResult(final QueryId queryId, final int fetchRowNum)
- throws ServiceException {
+ public TajoMemoryResultSet fetchNextQueryResult(final QueryId queryId, final int fetchRowNum) throws SQLException {
++<<<<<<< HEAD
+ try {
+//<<<<<<< HEAD
+// final ServerCallable<ClientProtos.SerializedResultSet> callable =
+// new ServerCallable<ClientProtos.SerializedResultSet>(connection.manager, connection.getTajoMasterAddr(),
+// TajoMasterClientProtocol.class, false) {
+//
+// public ClientProtos.SerializedResultSet call(NettyClientBase client) throws ServiceException {
+//
+// connection.checkSessionAndGet(client);
+// TajoMasterClientProtocolService.BlockingInterface tajoMasterService = client.getStub();
+//
+// GetQueryResultDataRequest.Builder builder = GetQueryResultDataRequest.newBuilder();
+// builder.setSessionId(connection.sessionId);
+// builder.setQueryId(queryId.getProto());
+// builder.setFetchRowNum(fetchRowNum);
+// try {
+// GetQueryResultDataResponse response = tajoMasterService.getQueryResultData(null, builder.build());
+// if (response.getResult().getResultCode() == ClientProtos.ResultCode.ERROR) {
+// abort();
+// throw new ServiceException(response.getResult().getErrorMessage());
+// }
+//
+// return response.getResultSet();
+// } catch (ServiceException e) {
+// abort();
+// throw e;
+// } catch (Throwable t) {
+// throw new ServiceException(t.getMessage(), t);
+// }
+// }
+// };
+//
+// ClientProtos.SerializedResultSet serializedResultSet = callable.withRetries();
+//=======
+ NettyClientBase client = connection.getTajoMasterConnection();
+ connection.checkSessionAndGet(client);
+ TajoMasterClientProtocolService.BlockingInterface tajoMasterService = client.getStub();
+
+ GetQueryResultDataRequest.Builder builder = GetQueryResultDataRequest.newBuilder();
+ builder.setSessionId(connection.sessionId);
+ builder.setQueryId(queryId.getProto());
+ builder.setFetchRowNum(fetchRowNum);
+
+ GetQueryResultDataResponse response = tajoMasterService.getQueryResultData(null, builder.build());
+ if (response.getResult().getResultCode() == ClientProtos.ResultCode.ERROR) {
+ throw new ServiceException(response.getResult().getErrorMessage());
+ }
+
+ ClientProtos.SerializedResultSet resultSet = response.getResultSet();
+//>>>>>>> 9b3824b5f0c64af42bfcf0a6bb8d3555c22c5746
++=======
+ final BlockingInterface stub = conn.getTMStub();
+ final GetQueryResultDataRequest request = GetQueryResultDataRequest.newBuilder()
+ .setSessionId(conn.sessionId)
+ .setQueryId(queryId.getProto())
+ .setFetchRowNum(fetchRowNum)
+ .build();
+
++>>>>>>> c50a5dadff90fa90709abbce59856e834baa4867
- return new TajoMemoryResultSet(queryId,
- new Schema(resultSet.getSchema()),
- resultSet.getSerializedTuplesList(),
- resultSet.getSerializedTuplesCount(),
- getClientSideSessionVars());
+ GetQueryResultDataResponse response;
+ try {
+ response = stub.getQueryResultData(null, request);
} catch (ServiceException e) {
- throw e;
- } catch (Throwable e) {
- throw new ServiceException(e.getMessage(), e);
+ throw new RuntimeException(e);
}
+
+ throwIfError(response.getState());
+
+ ClientProtos.SerializedResultSet resultSet = response.getResultSet();
+ return new TajoMemoryResultSet(queryId,
+ new Schema(resultSet.getSchema()),
+ resultSet.getSerializedTuplesList(),
+ resultSet.getSerializedTuplesCount(),
+ getClientSideSessionVars());
}
@Override
- public boolean updateQuery(final String sql) throws ServiceException {
+ public boolean updateQuery(final String sql) throws SQLException {
- NettyClientBase client = connection.getTajoMasterConnection();
- connection.checkSessionAndGet(client);
- TajoMasterClientProtocolService.BlockingInterface tajoMasterService = client.getStub();
-
- QueryRequest.Builder builder = QueryRequest.newBuilder();
- builder.setSessionId(connection.sessionId);
- builder.setQuery(sql);
- builder.setIsJson(false);
- ClientProtos.UpdateQueryResponse response = tajoMasterService.updateQuery(null, builder.build());
+ final BlockingInterface stub = conn.getTMStub();
+ final QueryRequest request = buildQueryRequest(sql, false);
++<<<<<<< HEAD
+//<<<<<<< HEAD
+// connection.checkSessionAndGet(client);
+// TajoMasterClientProtocolService.BlockingInterface tajoMasterService = client.getStub();
+//
+// QueryRequest.Builder builder = QueryRequest.newBuilder();
+// builder.setSessionId(connection.sessionId);
+// builder.setQuery(sql);
+// builder.setIsJson(false);
+// ClientProtos.UpdateQueryResponse response = tajoMasterService.updateQuery(null, builder.build());
+//
+// if (response.getResult().getResultCode() == ClientProtos.ResultCode.OK) {
+// connection.updateSessionVarsCache(ProtoUtil.convertToMap(response.getSessionVars()));
+// return true;
+// } else {
+// if (response.getResult().hasErrorMessage()) {
+// System.err.println("ERROR: " + response.getResult().getErrorMessage());
+// }
+// return false;
+// }
+//=======
+ if (response.getResult().getResultCode() == ClientProtos.ResultCode.OK) {
+ connection.updateSessionVarsCache(ProtoUtil.convertToMap(response.getSessionVars()));
+ return true;
+ } else {
+ if (response.getResult().hasErrorMessage()) {
+ LOG.error("ERROR: " + response.getResult().getErrorMessage());
+//>>>>>>> 9b3824b5f0c64af42bfcf0a6bb8d3555c22c5746
+ }
+ return false;
++=======
+ UpdateQueryResponse response;
+ try {
+ response = stub.updateQuery(null, request);
+ } catch (ServiceException e) {
+ throw new RuntimeException(e);
++>>>>>>> c50a5dadff90fa90709abbce59856e834baa4867
}
+
+ throwIfError(response.getState());
+ conn.updateSessionVarsCache(ProtoUtil.convertToMap(response.getSessionVars()));
+
+ return true;
}
@Override
- public boolean updateQueryWithJson(final String json) throws ServiceException {
+ public boolean updateQueryWithJson(final String json) throws SQLException {
++<<<<<<< HEAD
+//<<<<<<< HEAD
+// return new ServerCallable<Boolean>(connection.manager, connection.getTajoMasterAddr(),
+// TajoMasterClientProtocol.class, false) {
+//
+// public Boolean call(NettyClientBase client) throws ServiceException {
+//
+// connection.checkSessionAndGet(client);
+// TajoMasterClientProtocolService.BlockingInterface tajoMasterService = client.getStub();
+//
+// QueryRequest.Builder builder = QueryRequest.newBuilder();
+// builder.setSessionId(connection.sessionId);
+// builder.setQuery(json);
+// builder.setIsJson(true);
+// ClientProtos.UpdateQueryResponse response = tajoMasterService.updateQuery(null, builder.build());
+// if (response.getResult().getResultCode() == ClientProtos.ResultCode.OK) {
+// return true;
+// } else {
+// if (response.getResult().hasErrorMessage()) {
+// System.err.println("ERROR: " + response.getResult().getErrorMessage());
+// }
+// return false;
+// }
+//=======
+ NettyClientBase client = connection.getTajoMasterConnection();
+ connection.checkSessionAndGet(client);
+ TajoMasterClientProtocolService.BlockingInterface tajoMasterService = client.getStub();
+
+ QueryRequest.Builder builder = QueryRequest.newBuilder();
+ builder.setSessionId(connection.sessionId);
+ builder.setQuery(json);
+ builder.setIsJson(true);
+ ClientProtos.UpdateQueryResponse response = tajoMasterService.updateQuery(null, builder.build());
+ if (response.getResult().getResultCode() == ClientProtos.ResultCode.OK) {
+ return true;
+ } else {
+ if (response.getResult().hasErrorMessage()) {
+ LOG.error("ERROR: " + response.getResult().getErrorMessage());
+//>>>>>>> 9b3824b5f0c64af42bfcf0a6bb8d3555c22c5746
+ }
+ return false;
++=======
+ final BlockingInterface stub = conn.getTMStub();
+ final QueryRequest request = buildQueryRequest(json, true);
+
+ UpdateQueryResponse response;
+ try {
+ response = stub.updateQuery(null, request);
+ } catch (ServiceException e) {
+ throw new RuntimeException(e);
++>>>>>>> c50a5dadff90fa90709abbce59856e834baa4867
}
+
+ throwIfError(response.getState());
+ return true;
}
@Override
@@@ -606,46 -471,23 +649,63 @@@
return this.maxRows;
}
++<<<<<<< HEAD
+ public QueryInfoProto getQueryInfo(final QueryId queryId) throws ServiceException {
+//<<<<<<< HEAD
+// return new ServerCallable<QueryInfoProto>(connection.manager, connection.getTajoMasterAddr(),
+// TajoMasterClientProtocol.class, false) {
+// public QueryInfoProto call(NettyClientBase client) throws ServiceException {
+// connection.checkSessionAndGet(client);
+//
+// QueryIdRequest.Builder builder = QueryIdRequest.newBuilder();
+// builder.setSessionId(connection.sessionId);
+// builder.setQueryId(queryId.getProto());
+//
+// TajoMasterClientProtocolService.BlockingInterface tajoMasterService = client.getStub();
+// GetQueryInfoResponse res = tajoMasterService.getQueryInfo(null,builder.build());
+// if (res.getResult().getResultCode() == ResultCode.OK) {
+// return res.getQueryInfo();
+// } else {
+// abort();
+// throw new ServiceException(res.getResult().getErrorMessage());
+// }
+// }
+// }.withRetries();
+//=======
+ NettyClientBase client = connection.getTajoMasterConnection();
+ connection.checkSessionAndGet(client);
+
+ QueryIdRequest.Builder builder = QueryIdRequest.newBuilder();
+ builder.setSessionId(connection.sessionId);
+ builder.setQueryId(queryId.getProto());
+
+ TajoMasterClientProtocolService.BlockingInterface tajoMasterService = client.getStub();
+ GetQueryInfoResponse res = tajoMasterService.getQueryInfo(null,builder.build());
+ if (res.getResult().getResultCode() == ResultCode.OK) {
+ return res.getQueryInfo();
+ } else {
+ throw new ServiceException(res.getResult().getErrorMessage());
+ }
+//>>>>>>> 9b3824b5f0c64af42bfcf0a6bb8d3555c22c5746
++=======
+ public QueryInfoProto getQueryInfo(final QueryId queryId) throws SQLException {
+
+ final BlockingInterface stub = conn.getTMStub();
+ final QueryIdRequest request = buildQueryIdRequest(queryId);
+
+ GetQueryInfoResponse res;
+ try {
+ res = stub.getQueryInfo(null, request);
+ } catch (ServiceException e) {
+ throw new RuntimeException(e);
+ }
+
+ throwIfError(res.getState());
+ return res.getQueryInfo();
++>>>>>>> c50a5dadff90fa90709abbce59856e834baa4867
}
- public QueryHistoryProto getQueryHistory(final QueryId queryId) throws ServiceException {
+ public QueryHistoryProto getQueryHistory(final QueryId queryId) throws SQLException {
final QueryInfoProto queryInfo = getQueryInfo(queryId);
if (queryInfo.getHostNameOfQM() == null || queryInfo.getQueryMasterClientPort() == 0) {
@@@ -655,41 -498,63 +716,89 @@@
queryInfo.getHostNameOfQM(), queryInfo.getQueryMasterClientPort());
RpcClientManager manager = RpcClientManager.getInstance();
- NettyClientBase queryMasterClient;
- try {
- queryMasterClient = manager.newClient(qmAddress, QueryMasterClientProtocol.class, false,
- manager.getRetries(), manager.getTimeoutSeconds(), TimeUnit.SECONDS, false);
- } catch (Exception e) {
- throw new ServiceException(e);
- }
+ NettyClientBase qmClient = null;
try {
++<<<<<<< HEAD
+ connection.checkSessionAndGet(connection.getTajoMasterConnection());
+
+//<<<<<<< HEAD
+// QueryMasterClientProtocolService.BlockingInterface queryMasterService = client.getStub();
+// GetQueryHistoryResponse res = queryMasterService.getQueryHistory(null,builder.build());
+// if (res.getResult().getResultCode() == ResultCode.OK) {
+// return res.getQueryHistory();
+// } else {
+// abort();
+// throw new ServiceException(res.getResult().getErrorMessage());
+// }
+//=======
+ QueryIdRequest.Builder builder = QueryIdRequest.newBuilder();
+ builder.setSessionId(connection.sessionId);
+ builder.setQueryId(queryId.getProto());
+
+ QueryMasterClientProtocolService.BlockingInterface queryMasterService = queryMasterClient.getStub();
+ GetQueryHistoryResponse res = queryMasterService.getQueryHistory(null, builder.build());
+ if (res.getResult().getResultCode() == ResultCode.OK) {
+ return res.getQueryHistory();
+ } else {
+ throw new ServiceException(res.getResult().getErrorMessage());
+//>>>>>>> 9b3824b5f0c64af42bfcf0a6bb8d3555c22c5746
++=======
+
+ qmClient = manager.newClient(
+ qmAddress,
+ QueryMasterClientProtocol.class,
+ false,
+ manager.getRetries(),
+ manager.getTimeoutSeconds(),
+ TimeUnit.SECONDS,
+ false
+ );
+
+ conn.checkSessionAndGet(conn.getTajoMasterConnection());
+
+ QueryIdRequest request = QueryIdRequest.newBuilder()
+ .setSessionId(conn.sessionId)
+ .setQueryId(queryId.getProto())
+ .build();
+
+ QueryMasterClientProtocolService.BlockingInterface stub = qmClient.getStub();
+ GetQueryHistoryResponse res;
+ try {
+ res = stub.getQueryHistory(null, request);
+ } catch (ServiceException e) {
+ throw new RuntimeException(e);
++>>>>>>> c50a5dadff90fa90709abbce59856e834baa4867
}
+
+ throwIfError(res.getState());
+ return res.getQueryHistory();
+
+ } catch (ConnectException e) {
+ throw SQLExceptionUtil.makeUnableToEstablishConnection(e);
+ } catch (ClassNotFoundException e) {
+ throw SQLExceptionUtil.makeUnableToEstablishConnection(e);
+ } catch (NoSuchMethodException e) {
+ throw SQLExceptionUtil.makeUnableToEstablishConnection(e);
+ } catch (SQLException e) {
+ throw e;
} finally {
- queryMasterClient.close();
+ qmClient.close();
}
}
+
+ private QueryIdRequest buildQueryIdRequest(QueryId queryId) {
+ return ClientProtos.QueryIdRequest.newBuilder()
+ .setSessionId(SessionIdProto.newBuilder().setId(getSessionId()))
+ .setQueryId(queryId.getProto())
+ .build();
+ }
+
+ private QueryRequest buildQueryRequest(String query, boolean json) {
+ return QueryRequest.newBuilder()
+ .setSessionId(conn.sessionId)
+ .setQuery(query)
+ .setIsJson(json)
+ .build();
+ }
}
http://git-wip-us.apache.org/repos/asf/tajo/blob/0028d7aa/tajo-client/src/main/java/org/apache/tajo/client/QueryStatus.java
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/tajo/blob/0028d7aa/tajo-client/src/main/java/org/apache/tajo/client/SessionConnection.java
----------------------------------------------------------------------
diff --cc tajo-client/src/main/java/org/apache/tajo/client/SessionConnection.java
index fece670,788d193..ad6dbd5
--- a/tajo-client/src/main/java/org/apache/tajo/client/SessionConnection.java
+++ b/tajo-client/src/main/java/org/apache/tajo/client/SessionConnection.java
@@@ -161,86 -185,67 +185,130 @@@ public class SessionConnection implemen
NettyClientBase client = getTajoMasterConnection();
checkSessionAndGet(client);
- TajoMasterClientProtocolService.BlockingInterface tajoMasterService = client.getStub();
- return tajoMasterService.getCurrentDatabase(null, sessionId).getValue();
+ BlockingInterface tajoMasterService = client.getStub();
+
+ StringResponse response;
+ try {
+ response = tajoMasterService.getCurrentDatabase(null, sessionId);
+ } catch (ServiceException e) {
+ throw new RuntimeException(e);
+ }
+
+ throwIfError(response.getState());
+ return response.getValue();
}
++<<<<<<< HEAD
+ public Map<String, String> updateSessionVariables(final Map<String, String> variables) throws ServiceException {
+//<<<<<<< HEAD
+// return new ServerCallable<Map<String, String>>(manager, getTajoMasterAddr(),
+// TajoMasterClientProtocol.class, false) {
+//
+// public Map<String, String> call(NettyClientBase client) throws ServiceException {
+// checkSessionAndGet(client);
+//
+// TajoMasterClientProtocolService.BlockingInterface tajoMasterService = client.getStub();
+// KeyValueSet keyValueSet = new KeyValueSet();
+// keyValueSet.putAll(variables);
+// ClientProtos.UpdateSessionVariableRequest request = ClientProtos.UpdateSessionVariableRequest.newBuilder()
+// .setSessionId(sessionId)
+// .setSessionVars(keyValueSet.getProto()).build();
+//
+// SessionUpdateResponse response = tajoMasterService.updateSessionVariables(null, request);
+//
+// if (response.getResult().getResultCode() == ResultCode.OK) {
+// updateSessionVarsCache(ProtoUtil.convertToMap(response.getSessionVars()));
+// return Collections.unmodifiableMap(sessionVarsCache);
+// } else {
+// throw new ServiceException(response.getResult().getErrorMessage());
+// }
+// }
+// }.withRetries();
+// }
+//=======
++=======
+ public Map<String, String> updateSessionVariables(final Map<String, String> variables) throws SQLException {
++>>>>>>> c50a5dadff90fa90709abbce59856e834baa4867
NettyClientBase client = getTajoMasterConnection();
checkSessionAndGet(client);
+//>>>>>>> 9b3824b5f0c64af42bfcf0a6bb8d3555c22c5746
- TajoMasterClientProtocolService.BlockingInterface tajoMasterService = client.getStub();
+ BlockingInterface tajoMasterService = client.getStub();
KeyValueSet keyValueSet = new KeyValueSet();
keyValueSet.putAll(variables);
- ClientProtos.UpdateSessionVariableRequest request = ClientProtos.UpdateSessionVariableRequest.newBuilder()
+ UpdateSessionVariableRequest request = UpdateSessionVariableRequest.newBuilder()
.setSessionId(sessionId)
.setSessionVars(keyValueSet.getProto()).build();
- SessionUpdateResponse response = tajoMasterService.updateSessionVariables(null, request);
+ SessionUpdateResponse response;
++<<<<<<< HEAD
+ if (response.getResult().getResultCode() == ResultCode.OK) {
+ updateSessionVarsCache(ProtoUtil.convertToMap(response.getSessionVars()));
+ return Collections.unmodifiableMap(sessionVarsCache);
+ } else {
+ throw new ServiceException(response.getResult().getErrorMessage());
++=======
+ try {
+ response = tajoMasterService.updateSessionVariables(null, request);
+ } catch (ServiceException e) {
+ throw new RuntimeException(e);
+ }
+
+ if (isSuccess(response.getState())) {
+ updateSessionVarsCache(ProtoUtil.convertToMap(response.getSessionVars()));
+ return Collections.unmodifiableMap(sessionVarsCache);
+ } else {
+ throw toSQLException(response.getState());
++>>>>>>> c50a5dadff90fa90709abbce59856e834baa4867
}
}
- public Map<String, String> unsetSessionVariables(final List<String> variables) throws ServiceException {
- NettyClientBase client = getTajoMasterConnection();
- checkSessionAndGet(client);
+ public Map<String, String> unsetSessionVariables(final List<String> variables) throws SQLException {
++<<<<<<< HEAD
+//<<<<<<< HEAD
+// if (response.getResult().getResultCode() == ResultCode.OK) {
+// updateSessionVarsCache(ProtoUtil.convertToMap(response.getSessionVars()));
+// return Collections.unmodifiableMap(sessionVarsCache);
+// } else {
+// throw new ServiceException(response.getResult().getErrorMessage());
+// }
+// }
+// }.withRetries();
+//=======
+ TajoMasterClientProtocolService.BlockingInterface tajoMasterService = client.getStub();
+ ClientProtos.UpdateSessionVariableRequest request = ClientProtos.UpdateSessionVariableRequest.newBuilder()
++=======
+ final BlockingInterface stub = getTMStub();
+ final UpdateSessionVariableRequest request = UpdateSessionVariableRequest.newBuilder()
++>>>>>>> c50a5dadff90fa90709abbce59856e834baa4867
.setSessionId(sessionId)
- .addAllUnsetVariables(variables).build();
+ .addAllUnsetVariables(variables)
+ .build();
- SessionUpdateResponse response = tajoMasterService.updateSessionVariables(null, request);
+ SessionUpdateResponse response;
+ try {
+ response = stub.updateSessionVariables(null, request);
+ } catch (ServiceException e) {
+ throw new RuntimeException(e);
+ }
++<<<<<<< HEAD
+ if (response.getResult().getResultCode() == ResultCode.OK) {
+ updateSessionVarsCache(ProtoUtil.convertToMap(response.getSessionVars()));
+ return Collections.unmodifiableMap(sessionVarsCache);
+ } else {
+ throw new ServiceException(response.getResult().getErrorMessage());
++=======
+ if (isSuccess(response.getState())) {
+ updateSessionVarsCache(ProtoUtil.convertToMap(response.getSessionVars()));
+ return Collections.unmodifiableMap(sessionVarsCache);
+ } else {
+ throw toSQLException(response.getState());
++>>>>>>> c50a5dadff90fa90709abbce59856e834baa4867
}
+//>>>>>>> 9b3824b5f0c64af42bfcf0a6bb8d3555c22c5746
}
void updateSessionVarsCache(Map<String, String> variables) {
@@@ -343,18 -361,24 +424,32 @@@
builder.setBaseDatabaseName(baseDatabase);
}
- CreateSessionResponse response = tajoMasterService.createSession(null, builder.build());
++<<<<<<< HEAD
+ if (response.getResult().getResultCode() == ResultCode.OK) {
++=======
+ CreateSessionResponse response = null;
+
+ try {
+ response = tajoMasterService.createSession(null, builder.build());
+ } catch (ServiceException se) {
+ throw new RuntimeException(se);
+ }
+
+ if (isSuccess(response.getState())) {
++>>>>>>> c50a5dadff90fa90709abbce59856e834baa4867
sessionId = response.getSessionId();
updateSessionVarsCache(ProtoUtil.convertToMap(response.getSessionVars()));
if (LOG.isDebugEnabled()) {
LOG.debug(String.format("Got session %s as a user '%s'.", sessionId.getId(), userInfo.getUserName()));
}
-
} else {
++<<<<<<< HEAD
+ throw new InvalidClientSessionException(response.getResult().getErrorMessage());
++=======
+ throw SQLExceptionUtil.toSQLException(response.getState());
++>>>>>>> c50a5dadff90fa90709abbce59856e834baa4867
}
}
}
@@@ -368,21 -392,12 +463,25 @@@
NettyClientBase client = getTajoMasterConnection();
+//<<<<<<< HEAD
+// // create new session
+// TajoMasterClientProtocolService.BlockingInterface tajoMasterService = client.getStub();
+// CreateSessionResponse response = tajoMasterService.createSession(null, builder.build());
+// if (response.getResult().getResultCode() != ResultCode.OK) {
+// return false;
+// }
+//=======
// create new session
- TajoMasterClientProtocolService.BlockingInterface tajoMasterService = client.getStub();
+ BlockingInterface tajoMasterService = client.getStub();
CreateSessionResponse response = tajoMasterService.createSession(null, builder.build());
++<<<<<<< HEAD
+ if (response.getResult().getResultCode() != ResultCode.OK) {
++=======
+ if (isError(response.getState())) {
++>>>>>>> c50a5dadff90fa90709abbce59856e834baa4867
return false;
}
+//>>>>>>> 9b3824b5f0c64af42bfcf0a6bb8d3555c22c5746
// Invalidate some session variables in client cache
sessionId = response.getSessionId();
@@@ -424,10 -419,9 +523,14 @@@
.setSessionId(sessionId)
.setSessionVars(keyValueSet.getProto()).build();
++<<<<<<< HEAD
+ if (tajoMasterService.updateSessionVariables(null, request).getResult().getResultCode() != ResultCode.OK) {
++=======
+ if (isError(tajoMasterService.updateSessionVariables(null, request).getState())) {
++>>>>>>> c50a5dadff90fa90709abbce59856e834baa4867
tajoMasterService.removeSession(null, sessionId);
return false;
+//>>>>>>> 9b3824b5f0c64af42bfcf0a6bb8d3555c22c5746
}
LOG.info(String.format("Reconnected to session %s as a user '%s'.", sessionId.getId(), userInfo.getUserName()));
return true;
http://git-wip-us.apache.org/repos/asf/tajo/blob/0028d7aa/tajo-client/src/main/java/org/apache/tajo/client/TajoClientImpl.java
----------------------------------------------------------------------
diff --cc tajo-client/src/main/java/org/apache/tajo/client/TajoClientImpl.java
index a7e94aa,c81fafc..be3c37f
--- a/tajo-client/src/main/java/org/apache/tajo/client/TajoClientImpl.java
+++ b/tajo-client/src/main/java/org/apache/tajo/client/TajoClientImpl.java
@@@ -226,42 -224,7 +225,42 @@@ public class TajoClientImpl extends Ses
return catalogClient.getTableDesc(tableName);
}
- public List<CatalogProtos.FunctionDescProto> getFunctions(final String functionName) throws ServiceException {
+ public List<CatalogProtos.FunctionDescProto> getFunctions(final String functionName) throws SQLException {
return catalogClient.getFunctions(functionName);
}
+
+ @Override
+ public IndexDescProto getIndex(String indexName) throws ServiceException {
+ return catalogClient.getIndex(indexName);
+ }
+
+ @Override
+ public boolean existIndex(String indexName) throws ServiceException {
+ return catalogClient.existIndex(indexName);
+ }
+
+ @Override
+ public List<IndexDescProto> getIndexes(String tableName) throws ServiceException {
+ return catalogClient.getIndexes(tableName);
+ }
+
+ @Override
+ public boolean hasIndexes(String tableName) throws ServiceException {
+ return catalogClient.hasIndexes(tableName);
+ }
+
+ @Override
+ public IndexDescProto getIndex(String tableName, String[] columnNames) throws ServiceException {
+ return catalogClient.getIndex(tableName, columnNames);
+ }
+
+ @Override
+ public boolean existIndex(String tableName, String[] columnName) throws ServiceException {
+ return catalogClient.existIndex(tableName, columnName);
+ }
+
+ @Override
+ public boolean dropIndex(String indexName) throws ServiceException {
+ return catalogClient.dropIndex(indexName);
+ }
}
http://git-wip-us.apache.org/repos/asf/tajo/blob/0028d7aa/tajo-client/src/main/proto/ClientProtos.proto
----------------------------------------------------------------------
diff --cc tajo-client/src/main/proto/ClientProtos.proto
index 59ff63f,021cfe7..ed5939c
--- a/tajo-client/src/main/proto/ClientProtos.proto
+++ b/tajo-client/src/main/proto/ClientProtos.proto
@@@ -206,16 -194,6 +192,19 @@@ message DropTableRequest
optional bool purge = 3 [default = false];
}
- message TableResponse {
- required RequestResult result = 1;
- optional TableDescProto tableDesc = 2;
- }
-
- message FunctionResponse {
- required RequestResult result = 1;
- repeated FunctionDescProto functions = 2;
- }
-
++//<<<<<<< HEAD
++//message TableResponse {
++// required RequestResult result = 1;
++// optional TableDescProto tableDesc = 2;
++//}
++//
++//message FunctionResponse {
++// required RequestResult result = 1;
++// repeated FunctionDescProto functions = 2;
++//}
++//
++//=======
++//>>>>>>> c50a5dadff90fa90709abbce59856e834baa4867
message QueryInfoProto {
required string queryId = 1;
optional string sql = 2;
http://git-wip-us.apache.org/repos/asf/tajo/blob/0028d7aa/tajo-client/src/main/proto/TajoMasterClientProtocol.proto
----------------------------------------------------------------------
diff --cc tajo-client/src/main/proto/TajoMasterClientProtocol.proto
index 9c7755a,1dcf1ac..edf98cd
--- a/tajo-client/src/main/proto/TajoMasterClientProtocol.proto
+++ b/tajo-client/src/main/proto/TajoMasterClientProtocol.proto
@@@ -63,18 -65,9 +65,18 @@@ service TajoMasterClientProtocolServic
// Table Management APIs
rpc createExternalTable(CreateTableRequest) returns (TableResponse);
- rpc existTable(SessionedStringProto) returns (BoolProto);
- rpc dropTable(DropTableRequest) returns (BoolProto);
- rpc getTableList(SessionedStringProto) returns (StringListProto);
+ rpc existTable(SessionedStringProto) returns (ReturnState);
+ rpc dropTable(DropTableRequest) returns (ReturnState);
+ rpc getTableList(SessionedStringProto) returns (StringListResponse);
rpc getTableDesc(SessionedStringProto) returns (TableResponse);
- rpc getFunctionList(SessionedStringProto) returns (FunctionResponse);
+ rpc getFunctionList(SessionedStringProto) returns (FunctionListResponse);
+
+ // Index Management APIs
+ rpc getIndexWithName(SessionedStringProto) returns (IndexDescProto);
+ rpc existIndexWithName(SessionedStringProto) returns (BoolProto);
+ rpc getIndexesForTable(SessionedStringProto) returns (GetIndexesResponse);
+ rpc existIndexesForTable(SessionedStringProto) returns (BoolProto);
+ rpc getIndexWithColumns(GetIndexWithColumnsRequest) returns (GetIndexWithColumnsResponse);
+ rpc existIndexWithColumns(GetIndexWithColumnsRequest) returns (BoolProto);
+ rpc dropIndex(SessionedStringProto) returns (BoolProto);
}
http://git-wip-us.apache.org/repos/asf/tajo/blob/0028d7aa/tajo-common/src/main/java/org/apache/tajo/SessionVars.java
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/tajo/blob/0028d7aa/tajo-common/src/main/java/org/apache/tajo/conf/TajoConf.java
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/tajo/blob/0028d7aa/tajo-common/src/main/java/org/apache/tajo/util/TUtil.java
----------------------------------------------------------------------
diff --cc tajo-common/src/main/java/org/apache/tajo/util/TUtil.java
index bbd78dd,66e8acc..f24be61
--- a/tajo-common/src/main/java/org/apache/tajo/util/TUtil.java
+++ b/tajo-common/src/main/java/org/apache/tajo/util/TUtil.java
@@@ -270,11 -268,12 +270,20 @@@ public class TUtil
return element.getClassName() + ":" + element.getMethodName() + "(" + element.getLineNumber() +")";
}
+ public static URI stringToURI(String str) {
+ try {
+ return new URI(str);
+ } catch (URISyntaxException e) {
+ throw new RuntimeException("Cannot convert " + str + " to the URI type", e);
+ }
+ }
++
+ public static <T> T checkTypeAndGet(Object instance, Class<T> type) {
+ if (!type.isInstance(instance)) {
+ throw new IllegalArgumentException(instance.getClass().getSimpleName()
+ + " must be a " + type.getSimpleName() + " type");
+
+ }
+ return (T) instance;
+ }
}
http://git-wip-us.apache.org/repos/asf/tajo/blob/0028d7aa/tajo-core/src/main/java/org/apache/tajo/engine/parser/SQLAnalyzer.java
----------------------------------------------------------------------
diff --cc tajo-core/src/main/java/org/apache/tajo/engine/parser/SQLAnalyzer.java
index 20e8bb8,e433e4f..0b1e585
--- 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
@@@ -27,12 -27,8 +27,14 @@@ import org.antlr.v4.runtime.tree.Termin
import org.apache.tajo.SessionVars;
import org.apache.tajo.algebra.*;
import org.apache.tajo.algebra.Aggregation.GroupType;
+import org.apache.tajo.algebra.CreateIndex.IndexMethodSpec;
import org.apache.tajo.algebra.LiteralValue.LiteralType;
++<<<<<<< HEAD
+import org.apache.tajo.algebra.Sort.SortSpec;
+import org.apache.tajo.catalog.CatalogUtil;
++=======
++>>>>>>> c50a5dadff90fa90709abbce59856e834baa4867
import org.apache.tajo.engine.parser.SQLParser.*;
- import org.apache.tajo.plan.util.PlannerUtil;
import org.apache.tajo.storage.StorageConstants;
import org.apache.tajo.util.StringUtils;
http://git-wip-us.apache.org/repos/asf/tajo/blob/0028d7aa/tajo-core/src/main/java/org/apache/tajo/engine/planner/PhysicalPlannerImpl.java
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/tajo/blob/0028d7aa/tajo-core/src/main/java/org/apache/tajo/master/GlobalEngine.java
----------------------------------------------------------------------
diff --cc tajo-core/src/main/java/org/apache/tajo/master/GlobalEngine.java
index 91fce57,00d346a..6bec409
--- a/tajo-core/src/main/java/org/apache/tajo/master/GlobalEngine.java
+++ b/tajo-core/src/main/java/org/apache/tajo/master/GlobalEngine.java
@@@ -39,7 -39,7 +39,11 @@@ import org.apache.tajo.conf.TajoConf
import org.apache.tajo.engine.parser.SQLAnalyzer;
import org.apache.tajo.engine.parser.SQLSyntaxError;
import org.apache.tajo.engine.query.QueryContext;
++<<<<<<< HEAD
+import org.apache.tajo.ipc.ClientProtos.ResultCode;
++=======
+ import org.apache.tajo.exception.ExceptionUtil;
++>>>>>>> c50a5dadff90fa90709abbce59856e834baa4867
import org.apache.tajo.master.TajoMaster.MasterContext;
import org.apache.tajo.master.exec.DDLExecutor;
import org.apache.tajo.master.exec.QueryExecutor;
@@@ -48,10 -48,7 +52,14 @@@ import org.apache.tajo.plan.logical.Ins
import org.apache.tajo.plan.logical.LogicalRootNode;
import org.apache.tajo.plan.logical.NodeType;
import org.apache.tajo.plan.util.PlannerUtil;
++<<<<<<< HEAD
+import org.apache.tajo.plan.verifier.LogicalPlanVerifier;
+import org.apache.tajo.plan.verifier.PreLogicalPlanVerifier;
+import org.apache.tajo.plan.verifier.VerificationState;
+import org.apache.tajo.plan.verifier.VerifyException;
++=======
+ import org.apache.tajo.plan.verifier.*;
++>>>>>>> c50a5dadff90fa90709abbce59856e834baa4867
import org.apache.tajo.session.Session;
import org.apache.tajo.storage.TablespaceManager;
import org.apache.tajo.util.CommonTestingUtil;
@@@ -196,12 -195,7 +208,16 @@@ public class GlobalEngine extends Abstr
responseBuilder.setUserName(queryContext.get(SessionVars.USERNAME));
responseBuilder.setQueryId(QueryIdFactory.NULL_QUERY_ID.getProto());
responseBuilder.setIsForwarded(true);
++<<<<<<< HEAD
+ String errorMessage = t.getMessage();
+ if (t.getMessage() == null) {
+ errorMessage = t.getClass().getName();
+ }
+ responseBuilder.setResult(IPCUtil.buildRequestResult(ResultCode.ERROR,
+ errorMessage, StringUtils.stringifyException(t)));
++=======
+ responseBuilder.setState(ReturnStateUtil.returnError(t));
++>>>>>>> c50a5dadff90fa90709abbce59856e834baa4867
return responseBuilder.build();
}
}
http://git-wip-us.apache.org/repos/asf/tajo/blob/0028d7aa/tajo-core/src/main/java/org/apache/tajo/master/TajoMasterClientService.java
----------------------------------------------------------------------
diff --cc tajo-core/src/main/java/org/apache/tajo/master/TajoMasterClientService.java
index 76bfb95,6fbe968..7d88b34
--- a/tajo-core/src/main/java/org/apache/tajo/master/TajoMasterClientService.java
+++ b/tajo-core/src/main/java/org/apache/tajo/master/TajoMasterClientService.java
@@@ -32,12 -31,13 +31,17 @@@ import org.apache.hadoop.service.Abstra
import org.apache.tajo.QueryId;
import org.apache.tajo.QueryIdFactory;
import org.apache.tajo.TajoIdProtos;
- import org.apache.tajo.TajoProtos;
+ import org.apache.tajo.TajoProtos.QueryState;
import org.apache.tajo.catalog.*;
- import org.apache.tajo.catalog.exception.NoSuchDatabaseException;
+ import org.apache.tajo.catalog.exception.UndefinedDatabaseException;
import org.apache.tajo.catalog.partition.PartitionMethodDesc;
import org.apache.tajo.catalog.proto.CatalogProtos;
++<<<<<<< HEAD
+import org.apache.tajo.catalog.proto.CatalogProtos.IndexDescProto;
++=======
+ import org.apache.tajo.catalog.proto.CatalogProtos.FunctionListResponse;
+ import org.apache.tajo.catalog.proto.CatalogProtos.TableResponse;
++>>>>>>> c50a5dadff90fa90709abbce59856e834baa4867
import org.apache.tajo.conf.TajoConf;
import org.apache.tajo.conf.TajoConf.ConfVars;
import org.apache.tajo.engine.query.QueryContext;
@@@ -55,13 -54,8 +58,9 @@@ import org.apache.tajo.plan.logical.Par
import org.apache.tajo.plan.logical.ScanNode;
import org.apache.tajo.querymaster.QueryJobEvent;
import org.apache.tajo.rpc.BlockingRpcServer;
- import org.apache.tajo.rpc.protocolrecords.PrimitiveProtos.BoolProto;
- import org.apache.tajo.rpc.protocolrecords.PrimitiveProtos.StringListProto;
- import org.apache.tajo.rpc.protocolrecords.PrimitiveProtos.StringProto;
- import org.apache.tajo.session.InvalidSessionException;
- import org.apache.tajo.session.NoSuchSessionVariableException;
+ import org.apache.tajo.rpc.protocolrecords.PrimitiveProtos.*;
import org.apache.tajo.session.Session;
+import org.apache.tajo.util.IPCUtil;
import org.apache.tajo.util.KeyValueSet;
import org.apache.tajo.util.NetUtils;
import org.apache.tajo.util.ProtoUtil;
@@@ -148,17 -134,14 +139,28 @@@ public class TajoMasterClientService ex
String sessionId =
context.getSessionManager().createSession(request.getUsername(), databaseName);
CreateSessionResponse.Builder builder = CreateSessionResponse.newBuilder();
++<<<<<<< HEAD
+ builder.setResult(IPCUtil.buildOkRequestResult());
+ builder.setSessionId(TajoIdProtos.SessionIdProto.newBuilder().setId(sessionId).build());
+ builder.setSessionVars(ProtoUtil.convertFromMap(context.getSessionManager().getAllVariables(sessionId)));
+ return builder.build();
+ } catch (NoSuchDatabaseException nsde) {
+ CreateSessionResponse.Builder builder = CreateSessionResponse.newBuilder();
+ builder.setResult(IPCUtil.buildRequestResult(ResultCode.ERROR, nsde.getMessage(), null));
+ return builder.build();
+ } catch (InvalidSessionException e) {
+ CreateSessionResponse.Builder builder = CreateSessionResponse.newBuilder();
+ builder.setResult(IPCUtil.buildRequestResult(ResultCode.ERROR, e.getMessage(), null));
++=======
+ builder.setState(OK);
+ builder.setSessionId(TajoIdProtos.SessionIdProto.newBuilder().setId(sessionId).build());
+ builder.setSessionVars(ProtoUtil.convertFromMap(context.getSessionManager().getAllVariables(sessionId)));
+ return builder.build();
+
+ } catch (Throwable t) {
+ CreateSessionResponse.Builder builder = CreateSessionResponse.newBuilder();
+ builder.setState(returnError(t));
++>>>>>>> c50a5dadff90fa90709abbce59856e834baa4867
return builder.build();
}
}
@@@ -171,25 -154,16 +173,31 @@@
context.getSessionManager().removeSession(request.getId());
}
- return BOOL_TRUE;
+ return OK;
}
++<<<<<<< HEAD
+ public SessionUpdateResponse buildSessionUpdateOnSuccess(Map<String, String> variables) {
+ SessionUpdateResponse.Builder builder = SessionUpdateResponse.newBuilder();
+ builder.setResult(IPCUtil.buildOkRequestResult());
+ builder.setSessionVars(new KeyValueSet(variables).getProto());
+ return builder.build();
+ }
++=======
+ @Override
+ public SessionUpdateResponse updateSessionVariables(RpcController controller,
+ UpdateSessionVariableRequest request)
+ throws ServiceException {
++>>>>>>> c50a5dadff90fa90709abbce59856e834baa4867
- public SessionUpdateResponse buildSessionUpdateOnError(String message) {
SessionUpdateResponse.Builder builder = SessionUpdateResponse.newBuilder();
++<<<<<<< HEAD
+ builder.setResult(IPCUtil.buildRequestResult(ResultCode.ERROR, message, null));
+ return builder.build();
+ }
++=======
++>>>>>>> c50a5dadff90fa90709abbce59856e834baa4867
- @Override
- public SessionUpdateResponse updateSessionVariables(RpcController controller, UpdateSessionVariableRequest request)
- throws ServiceException {
try {
String sessionId = request.getSessionId().getId();
for (KeyValueProto kv : request.getSessionVars().getKeyvalList()) {
@@@ -283,16 -274,18 +308,29 @@@
if(LOG.isDebugEnabled()) {
LOG.debug("Query [" + request.getQuery() + "] is submitted");
}
+
return context.getGlobalEngine().executeQuery(session, request.getQuery(), request.getIsJson());
+
} catch (Exception e) {
++<<<<<<< HEAD
+ LOG.error(e.getMessage(), e);
+ SubmitQueryResponse.Builder responseBuilder = ClientProtos.SubmitQueryResponse.newBuilder();
+ responseBuilder.setQueryId(QueryIdFactory.NULL_QUERY_ID.getProto());
+ responseBuilder.setIsForwarded(true);
+ responseBuilder.setUserName(context.getConf().getVar(ConfVars.USERNAME));
+ responseBuilder.setResult(IPCUtil.buildRequestResult(ResultCode.ERROR,
+ e.getMessage() == null ? "Internal Error" : ExceptionUtils.getStackTrace(e), null));
+ return responseBuilder.build();
++=======
+
+ return ClientProtos.SubmitQueryResponse.newBuilder()
+ .setState(returnError(e))
+ .setQueryId(QueryIdFactory.NULL_QUERY_ID.getProto())
+ .setIsForwarded(true)
+ .setUserName(context.getConf().getVar(ConfVars.USERNAME))
+ .build();
+
++>>>>>>> c50a5dadff90fa90709abbce59856e834baa4867
}
}
@@@ -302,19 -296,13 +341,25 @@@
try {
Session session = context.getSessionManager().getSession(request.getSessionId().getId());
QueryContext queryContext = new QueryContext(conf, session);
+ context.getGlobalEngine().updateQuery(queryContext, request.getQuery(), request.getIsJson());
+ builder.setState(OK);
++<<<<<<< HEAD
+ UpdateQueryResponse.Builder responseBuilder = UpdateQueryResponse.newBuilder();
+ try {
+ context.getGlobalEngine().updateQuery(queryContext, request.getQuery(), request.getIsJson());
+ return responseBuilder.setResult(IPCUtil.buildOkRequestResult()).build();
+ } catch (Exception e) {
+ responseBuilder.setResult(IPCUtil.buildRequestResult(ResultCode.ERROR,
+ e.getMessage() == null ? ExceptionUtils.getStackTrace(e) : null, null));
+ return responseBuilder.build();
+ }
++=======
++>>>>>>> c50a5dadff90fa90709abbce59856e834baa4867
} catch (Throwable t) {
- throw new ServiceException(t);
+ builder.setState(returnError(t));
}
+ return builder.build();
}
@Override
@@@ -450,8 -443,8 +500,13 @@@
builder.setQueryId(request.getQueryId());
if (queryId.equals(QueryIdFactory.NULL_QUERY_ID)) {
++<<<<<<< HEAD
+ builder.setResult(IPCUtil.buildOkRequestResult());
+ builder.setState(TajoProtos.QueryState.QUERY_SUCCEEDED);
++=======
+ builder.setState(OK);
+ builder.setQueryState(QueryState.QUERY_SUCCEEDED);
++>>>>>>> c50a5dadff90fa90709abbce59856e834baa4867
} else {
QueryInProgress queryInProgress = context.getQueryJobManager().getQueryInProgress(queryId);
@@@ -464,8 -457,8 +519,13 @@@
}
if (queryInfo != null) {
++<<<<<<< HEAD
+ builder.setResult(IPCUtil.buildOkRequestResult());
+ builder.setState(queryInfo.getQueryState());
++=======
+ builder.setState(OK);
+ builder.setQueryState(queryInfo.getQueryState());
++>>>>>>> c50a5dadff90fa90709abbce59856e834baa4867
boolean isCreateTable = queryInfo.getQueryContext().isCreateTable();
boolean isInsert = queryInfo.getQueryContext().isInsert();
@@@ -485,11 -478,10 +545,18 @@@
} else {
Session session = context.getSessionManager().getSession(request.getSessionId().getId());
if (session.getNonForwardQueryResultScanner(queryId) != null) {
++<<<<<<< HEAD
+ builder.setResult(IPCUtil.buildOkRequestResult());
+ builder.setState(TajoProtos.QueryState.QUERY_SUCCEEDED);
+ } else {
+ builder.setResult(IPCUtil.buildRequestResult(ResultCode.ERROR,
+ "No such query: " + queryId.toString(), null));
++=======
+ builder.setState(OK);
+ builder.setQueryState(QueryState.QUERY_SUCCEEDED);
+ } else {
+ builder.setState(errNoSuchQueryId(queryId));
++>>>>>>> c50a5dadff90fa90709abbce59856e834baa4867
}
}
}
@@@ -541,18 -533,16 +608,26 @@@
resultSetBuilder.addAllSerializedTuples(rows);
builder.setResultSet(resultSetBuilder.build());
++<<<<<<< HEAD
+ builder.setResult(IPCUtil.buildOkRequestResult());
++=======
+ builder.setState(OK);
++>>>>>>> c50a5dadff90fa90709abbce59856e834baa4867
LOG.info("Send result to client for " +
request.getSessionId().getId() + "," + queryId + ", " + rows.size() + " rows");
} catch (Throwable t) {
- LOG.error(t.getMessage(), t);
builder.setResultSet(resultSetBuilder.build()); // required field
++<<<<<<< HEAD
+ String errorMessage = t.getMessage() == null ? t.getClass().getName() : t.getMessage();
+ builder.setResult(IPCUtil.buildRequestResult(ResultCode.ERROR,
+ errorMessage, org.apache.hadoop.util.StringUtils.stringifyException(t)));
++=======
+ builder.setState(returnError(t));
++>>>>>>> c50a5dadff90fa90709abbce59856e834baa4867
}
+
return builder.build();
}
@@@ -591,11 -584,10 +669,18 @@@
if (queryInfo != null) {
builder.setQueryInfo(queryInfo.getProto());
}
++<<<<<<< HEAD
+ builder.setResult(IPCUtil.buildOkRequestResult());
+ } catch (Throwable t) {
+ LOG.warn(t.getMessage(), t);
+ builder.setResult(IPCUtil.buildRequestResult(ResultCode.ERROR,
+ org.apache.hadoop.util.StringUtils.stringifyException(t), null));
++=======
+ builder.setState(OK);
+
+ } catch (Throwable t) {
+ builder.setState(returnError(t));
++>>>>>>> c50a5dadff90fa90709abbce59856e834baa4867
}
return builder.build();
@@@ -777,9 -779,8 +872,14 @@@
if (!request.hasValue()) {
return TableResponse.newBuilder()
++<<<<<<< HEAD
+ .setResult(
+ IPCUtil.buildRequestResult(ResultCode.ERROR, "table name is required.", null)
+ ).build();
++=======
+ .setState(errInvalidRpcCall("Table name is required"))
+ .build();
++>>>>>>> c50a5dadff90fa90709abbce59856e834baa4867
}
Session session = context.getSessionManager().getSession(request.getSessionId().getId());
@@@ -797,13 -798,12 +897,22 @@@
if (catalog.existsTable(databaseName, tableName)) {
return TableResponse.newBuilder()
++<<<<<<< HEAD
+ .setResult(IPCUtil.buildOkRequestResult())
+ .setTableDesc(catalog.getTableDesc(databaseName, tableName).getProto())
+ .build();
+ } else {
+ return TableResponse.newBuilder()
+ .setResult(IPCUtil.buildRequestResult(ResultCode.ERROR,
+ "ERROR: no such a table: " + request.getValue(), null))
++=======
+ .setState(OK)
+ .setTable(catalog.getTableDesc(databaseName, tableName).getProto())
+ .build();
+ } else {
+ return TableResponse.newBuilder()
+ .setState(errUndefinedTable(request.getValue()))
++>>>>>>> c50a5dadff90fa90709abbce59856e834baa4867
.build();
}
} catch (Throwable t) {
@@@ -832,26 -832,26 +941,49 @@@
partitionDesc = new PartitionMethodDesc(request.getPartition());
}
++<<<<<<< HEAD
+ TableDesc desc;
+ try {
+ desc = context.getGlobalEngine().getDDLExecutor().createTable(queryContext, request.getName(),
+ null, meta.getStoreType(), schema, meta, path.toUri(), true, partitionDesc, false);
+ } catch (Exception e) {
+ return TableResponse.newBuilder()
+ .setResult(IPCUtil.buildRequestResult(ResultCode.ERROR, e.getMessage(), null))
+ .build();
+ }
+
+ return TableResponse.newBuilder()
+ .setResult(IPCUtil.buildOkRequestResult())
+ .setTableDesc(desc.getProto()).build();
+ } catch (InvalidSessionException ise) {
+ return TableResponse.newBuilder()
+ .setResult(IPCUtil.buildRequestResult(ResultCode.ERROR, ise.getMessage(), null))
+ .build();
+ } catch (IOException ioe) {
+ return TableResponse.newBuilder()
+ .setResult(IPCUtil.buildRequestResult(ResultCode.ERROR, ioe.getMessage(), null))
++=======
+ TableDesc desc = context.getGlobalEngine().getDDLExecutor().createTable(
+ queryContext,
+ request.getName(),
+ null,
+ meta.getStoreType(),
+ schema,
+ meta,
+ path.toUri(),
+ true,
+ partitionDesc,
+ false
+ );
+
+ return TableResponse.newBuilder()
+ .setState(OK)
+ .setTable(desc.getProto()).build();
+
+ } catch (Throwable t) {
+ return TableResponse.newBuilder()
+ .setState(returnError(t))
++>>>>>>> c50a5dadff90fa90709abbce59856e834baa4867
.build();
}
}
@@@ -891,185 -892,14 +1024,192 @@@
}
}
}
++<<<<<<< HEAD
+ return FunctionResponse.newBuilder()
+ .setResult(IPCUtil.buildOkRequestResult())
+ .addAllFunctions(functionProtos)
++=======
+ return FunctionListResponse.newBuilder()
+ .setState(OK)
+ .addAllFunction(functionProtos)
++>>>>>>> c50a5dadff90fa90709abbce59856e834baa4867
.build();
+
} catch (Throwable t) {
- throw new ServiceException(t);
+ return FunctionListResponse.newBuilder().setState(returnError(t)).build();
}
}
+
+ @Override
+ public IndexDescProto getIndexWithName(RpcController controller, SessionedStringProto request)
+ throws ServiceException {
+ try {
+ context.getSessionManager().touch(request.getSessionId().getId());
+ Session session = context.getSessionManager().getSession(request.getSessionId().getId());
+
+ String indexName, databaseName;
+ if (CatalogUtil.isFQTableName(request.getValue())) {
+ String [] splitted = CatalogUtil.splitFQTableName(request.getValue());
+ databaseName = splitted[0];
+ indexName = splitted[1];
+ } else {
+ databaseName = session.getCurrentDatabase();
+ indexName = request.getValue();
+ }
+ return catalog.getIndexByName(databaseName, indexName).getProto();
+ } catch (Throwable t) {
+ throw new ServiceException(t);
+ }
+ }
+
+ @Override
+ public BoolProto existIndexWithName(RpcController controller, SessionedStringProto request)
+ throws ServiceException {
+ try {
+ context.getSessionManager().touch(request.getSessionId().getId());
+ Session session = context.getSessionManager().getSession(request.getSessionId().getId());
+
+ String indexName, databaseName;
+ if (CatalogUtil.isFQTableName(request.getValue())) {
+ String [] splitted = CatalogUtil.splitFQTableName(request.getValue());
+ databaseName = splitted[0];
+ indexName = splitted[1];
+ } else {
+ databaseName = session.getCurrentDatabase();
+ indexName = request.getValue();
+ }
+ return catalog.existIndexByName(databaseName, indexName) ?
+ ProtoUtil.TRUE : ProtoUtil.FALSE;
+ } catch (Throwable t) {
+ throw new ServiceException(t);
+ }
+ }
+
+ @Override
+ public GetIndexesResponse getIndexesForTable(RpcController controller, SessionedStringProto request)
+ throws ServiceException {
+ try {
+ context.getSessionManager().touch(request.getSessionId().getId());
+ Session session = context.getSessionManager().getSession(request.getSessionId().getId());
+
+ String tableName, databaseName;
+ if (CatalogUtil.isFQTableName(request.getValue())) {
+ String [] splitted = CatalogUtil.splitFQTableName(request.getValue());
+ databaseName = splitted[0];
+ tableName = splitted[1];
+ } else {
+ databaseName = session.getCurrentDatabase();
+ tableName = request.getValue();
+ }
+
+ GetIndexesResponse.Builder builder = GetIndexesResponse.newBuilder();
+ for (IndexDesc index : catalog.getAllIndexesByTable(databaseName, tableName)) {
+ builder.addIndexes(index.getProto());
+ }
+ builder.setResult(IPCUtil.buildOkRequestResult());
+ return builder.build();
+ } catch (Throwable t) {
+ throw new ServiceException(t);
+ }
+ }
+
+ @Override
+ public BoolProto existIndexesForTable(RpcController controller, SessionedStringProto request)
+ throws ServiceException {
+ try {
+ context.getSessionManager().touch(request.getSessionId().getId());
+ Session session = context.getSessionManager().getSession(request.getSessionId().getId());
+
+ String tableName, databaseName;
+ if (CatalogUtil.isFQTableName(request.getValue())) {
+ String [] splitted = CatalogUtil.splitFQTableName(request.getValue());
+ databaseName = splitted[0];
+ tableName = splitted[1];
+ } else {
+ databaseName = session.getCurrentDatabase();
+ tableName = request.getValue();
+ }
+ return catalog.existIndexesByTable(databaseName, tableName) ?
+ ProtoUtil.TRUE : ProtoUtil.FALSE;
+ } catch (Throwable t) {
+ throw new ServiceException(t);
+ }
+ }
+
+ @Override
+ public GetIndexWithColumnsResponse getIndexWithColumns(RpcController controller, GetIndexWithColumnsRequest request)
+ throws ServiceException {
+ try {
+ context.getSessionManager().touch(request.getSessionId().getId());
+ Session session = context.getSessionManager().getSession(request.getSessionId().getId());
+
+ String tableName, databaseName;
+ if (CatalogUtil.isFQTableName(request.getTableName())) {
+ String [] splitted = CatalogUtil.splitFQTableName(request.getTableName());
+ databaseName = splitted[0];
+ tableName = splitted[1];
+ } else {
+ databaseName = session.getCurrentDatabase();
+ tableName = request.getTableName();
+ }
+ String[] columnNames = new String[request.getColumnNamesCount()];
+ columnNames = request.getColumnNamesList().toArray(columnNames);
+
+ GetIndexWithColumnsResponse.Builder builder = GetIndexWithColumnsResponse.newBuilder();
+ builder.setResult(IPCUtil.buildOkRequestResult());
+ builder.setIndexDesc(catalog.getIndexByColumnNames(databaseName, tableName, columnNames).getProto());
+ return builder.build();
+ } catch (Throwable t) {
+ throw new ServiceException(t);
+ }
+ }
+
+ @Override
+ public BoolProto existIndexWithColumns(RpcController controller, GetIndexWithColumnsRequest request)
+ throws ServiceException {
+ try {
+ context.getSessionManager().touch(request.getSessionId().getId());
+ Session session = context.getSessionManager().getSession(request.getSessionId().getId());
+
+ String tableName, databaseName;
+ if (CatalogUtil.isFQTableName(request.getTableName())) {
+ String [] splitted = CatalogUtil.splitFQTableName(request.getTableName());
+ databaseName = splitted[0];
+ tableName = splitted[1];
+ } else {
+ databaseName = session.getCurrentDatabase();
+ tableName = request.getTableName();
+ }
+ String[] columnNames = new String[request.getColumnNamesCount()];
+ columnNames = request.getColumnNamesList().toArray(columnNames);
+ return catalog.existIndexByColumnNames(databaseName, tableName, columnNames) ?
+ ProtoUtil.TRUE : ProtoUtil.FALSE;
+ } catch (Throwable t) {
+ throw new ServiceException(t);
+ }
+ }
+
+ @Override
+ public BoolProto dropIndex(RpcController controller, SessionedStringProto request)
+ throws ServiceException {
+ try {
+ context.getSessionManager().touch(request.getSessionId().getId());
+ Session session = context.getSessionManager().getSession(request.getSessionId().getId());
+
+ String indexName, databaseName;
+ if (CatalogUtil.isFQTableName(request.getValue())) {
+ String [] splitted = CatalogUtil.splitFQTableName(request.getValue());
+ databaseName = splitted[0];
+ indexName = splitted[1];
+ } else {
+ databaseName = session.getCurrentDatabase();
+ indexName = request.getValue();
+ }
+ return catalog.dropIndex(databaseName, indexName) ?
+ ProtoUtil.TRUE : ProtoUtil.FALSE;
+ } catch (Throwable t) {
+ throw new ServiceException(t);
+ }
+ }
}
}
http://git-wip-us.apache.org/repos/asf/tajo/blob/0028d7aa/tajo-core/src/main/java/org/apache/tajo/master/exec/DDLExecutor.java
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/tajo/blob/0028d7aa/tajo-core/src/main/java/org/apache/tajo/master/exec/NonForwardQueryResultSystemScanner.java
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/tajo/blob/0028d7aa/tajo-core/src/main/java/org/apache/tajo/master/exec/QueryExecutor.java
----------------------------------------------------------------------
diff --cc tajo-core/src/main/java/org/apache/tajo/master/exec/QueryExecutor.java
index 2e5584c,d3530a0..1e35d6e
--- 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
@@@ -104,17 -107,10 +107,23 @@@ public class QueryExecutor
} else if (PlannerUtil.checkIfDDLPlan(rootNode)) {
context.getSystemMetrics().counter("Query", "numDDLQuery").inc();
++<<<<<<< HEAD
++=======
+ ddlExecutor.execute(queryContext, plan);
+ response.setQueryId(QueryIdFactory.NULL_QUERY_ID.getProto());
+ response.setState(OK);
++>>>>>>> c50a5dadff90fa90709abbce59856e834baa4867
+ if (PlannerUtil.isDistExecDDL(rootNode)) {
+ if (rootNode.getChild().getType() == NodeType.CREATE_INDEX) {
+ checkIndexExistence(queryContext, (CreateIndexNode) rootNode.getChild());
+ }
+ executeDistributedQuery(queryContext, session, plan, sql, jsonExpr, response);
+ } else {
+ response.setQueryId(QueryIdFactory.NULL_QUERY_ID.getProto());
+ response.setResult(IPCUtil.buildOkRequestResult());
+ ddlExecutor.execute(queryContext, plan);
+ }
} else if (plan.isExplain()) { // explain query
execExplain(plan, queryContext, plan.isExplainGlobal(), response);
@@@ -153,8 -149,7 +162,12 @@@
session.selectDatabase(setSessionNode.getValue());
} else {
response.setQueryId(QueryIdFactory.NULL_QUERY_ID.getProto());
++<<<<<<< HEAD
+ response.setResult(IPCUtil.buildRequestResult(ResultCode.ERROR,
+ "database \"" + databaseName + "\" does not exists.", null));
++=======
+ response.setState(errUndefinedDatabase(databaseName));
++>>>>>>> c50a5dadff90fa90709abbce59856e834baa4867
}
// others
@@@ -168,7 -163,7 +181,11 @@@
context.getSystemMetrics().counter("Query", "numDDLQuery").inc();
response.setQueryId(QueryIdFactory.NULL_QUERY_ID.getProto());
++<<<<<<< HEAD
+ response.setResult(IPCUtil.buildOkRequestResult());
++=======
+ response.setState(OK);
++>>>>>>> c50a5dadff90fa90709abbce59856e834baa4867
}
public void execExplain(LogicalPlan plan, QueryContext queryContext, boolean isGlobal,
@@@ -211,9 -206,9 +228,13 @@@
serializedResBuilder.setSchema(schema.getProto());
serializedResBuilder.setBytesNum(bytesNum);
+ response.setState(OK);
response.setResultSet(serializedResBuilder.build());
response.setMaxRowNum(lines.length);
++<<<<<<< HEAD
+ response.setResult(IPCUtil.buildOkRequestResult());
++=======
++>>>>>>> c50a5dadff90fa90709abbce59856e834baa4867
response.setQueryId(QueryIdFactory.NULL_QUERY_ID.getProto());
}
@@@ -235,7 -231,6 +257,10 @@@
response.setQueryId(queryId.getProto());
response.setMaxRowNum(maxRow);
response.setTableDesc(queryResultScanner.getTableDesc().getProto());
++<<<<<<< HEAD
+ response.setResult(IPCUtil.buildOkRequestResult());
++=======
++>>>>>>> c50a5dadff90fa90709abbce59856e834baa4867
}
public void execSimpleQuery(QueryContext queryContext, Session session, String query, LogicalPlan plan,
@@@ -271,7 -267,6 +297,10 @@@
response.setQueryId(queryInfo.getQueryId().getProto());
response.setMaxRowNum(maxRow);
response.setTableDesc(desc.getProto());
++<<<<<<< HEAD
+ response.setResult(IPCUtil.buildOkRequestResult());
++=======
++>>>>>>> c50a5dadff90fa90709abbce59856e834baa4867
}
public void execNonFromQuery(QueryContext queryContext, LogicalPlan plan, SubmitQueryResponse.Builder responseBuilder)
@@@ -308,7 -304,6 +338,10 @@@
responseBuilder.setResultSet(serializedResBuilder);
responseBuilder.setMaxRowNum(1);
responseBuilder.setQueryId(QueryIdFactory.NULL_QUERY_ID.getProto());
++<<<<<<< HEAD
+ responseBuilder.setResult(IPCUtil.buildOkRequestResult());
++=======
++>>>>>>> c50a5dadff90fa90709abbce59856e834baa4867
}
} finally {
// stop script executor
@@@ -470,7 -465,7 +503,11 @@@
// If queryId == NULL_QUERY_ID and MaxRowNum == -1, TajoCli prints only number of inserted rows.
responseBuilder.setMaxRowNum(-1);
responseBuilder.setQueryId(QueryIdFactory.NULL_QUERY_ID.getProto());
++<<<<<<< HEAD
+ responseBuilder.setResult(IPCUtil.buildOkRequestResult());
++=======
+ responseBuilder.setState(OK);
++>>>>>>> c50a5dadff90fa90709abbce59856e834baa4867
} catch (Throwable t) {
throw new RuntimeException(t);
}
@@@ -504,43 -499,17 +541,54 @@@
queryInfo = queryManager.scheduleQuery(session, queryContext, sql, jsonExpr, rootNode);
++<<<<<<< HEAD
+ if(queryInfo == null) {
+ responseBuilder.setQueryId(QueryIdFactory.NULL_QUERY_ID.getProto());
+ responseBuilder.setResult(IPCUtil.buildRequestResult(ResultCode.ERROR,
+ "Fail starting QueryMaster.", null));
+ LOG.error("Fail starting QueryMaster: " + sql);
+ } else {
+ responseBuilder.setIsForwarded(true);
+ responseBuilder.setQueryId(queryInfo.getQueryId().getProto());
+ responseBuilder.setResult(IPCUtil.buildOkRequestResult());
+ if(queryInfo.getQueryMasterHost() != null) {
+ responseBuilder.setQueryMasterHost(queryInfo.getQueryMasterHost());
+ }
+ responseBuilder.setQueryMasterPort(queryInfo.getQueryMasterClientPort());
+ LOG.info("Query " + queryInfo.getQueryId().toString() + "," + queryInfo.getSql() + "," +
+ " is forwarded to " + queryInfo.getQueryMasterHost() + ":" + queryInfo.getQueryMasterPort());
++=======
+ responseBuilder.setIsForwarded(true);
+ responseBuilder.setQueryId(queryInfo.getQueryId().getProto());
+ responseBuilder.setState(OK);
+ if (queryInfo.getQueryMasterHost() != null) {
+ responseBuilder.setQueryMasterHost(queryInfo.getQueryMasterHost());
++>>>>>>> c50a5dadff90fa90709abbce59856e834baa4867
}
+ responseBuilder.setQueryMasterPort(queryInfo.getQueryMasterClientPort());
+ LOG.info("Query " + queryInfo.getQueryId().toString() + "," + queryInfo.getSql() + "," +
+ " is forwarded to " + queryInfo.getQueryMasterHost() + ":" + queryInfo.getQueryMasterPort());
}
+ private void checkIndexExistence(final QueryContext queryContext, final CreateIndexNode createIndexNode)
+ throws IOException {
+ String databaseName, simpleIndexName, qualifiedIndexName;
+ if (CatalogUtil.isFQTableName(createIndexNode.getIndexName())) {
+ String[] splits = CatalogUtil.splitFQTableName(createIndexNode.getIndexName());
+ databaseName = splits[0];
+ simpleIndexName = splits[1];
+ qualifiedIndexName = createIndexNode.getIndexName();
+ } else {
+ databaseName = queryContext.getCurrentDatabase();
+ simpleIndexName = createIndexNode.getIndexName();
+ qualifiedIndexName = CatalogUtil.buildFQName(databaseName, simpleIndexName);
+ }
+
+ if (catalog.existIndexByName(databaseName, simpleIndexName)) {
+ throw new AlreadyExistsIndexException(qualifiedIndexName);
+ }
+ }
+
public MasterPlan compileMasterPlan(LogicalPlan plan, QueryContext context, GlobalPlanner planner)
throws Exception {
http://git-wip-us.apache.org/repos/asf/tajo/blob/0028d7aa/tajo-core/src/main/java/org/apache/tajo/querymaster/Query.java
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/tajo/blob/0028d7aa/tajo-core/src/main/java/org/apache/tajo/querymaster/QueryMasterTask.java
----------------------------------------------------------------------
diff --cc tajo-core/src/main/java/org/apache/tajo/querymaster/QueryMasterTask.java
index 550b1ee,61e2dea..a1662e6
--- a/tajo-core/src/main/java/org/apache/tajo/querymaster/QueryMasterTask.java
+++ b/tajo-core/src/main/java/org/apache/tajo/querymaster/QueryMasterTask.java
@@@ -52,15 -55,18 +55,21 @@@ import org.apache.tajo.session.Session
import org.apache.tajo.storage.FormatProperty;
import org.apache.tajo.storage.Tablespace;
import org.apache.tajo.storage.TablespaceManager;
++<<<<<<< HEAD
++=======
+ import org.apache.tajo.util.TUtil;
++>>>>>>> c50a5dadff90fa90709abbce59856e834baa4867
import org.apache.tajo.util.metrics.TajoMetrics;
import org.apache.tajo.util.metrics.reporter.MetricsConsoleReporter;
- import org.apache.tajo.worker.AbstractResourceAllocator;
- import org.apache.tajo.worker.TajoResourceAllocator;
+ import org.apache.tajo.worker.event.NodeResourceDeallocateEvent;
+ import org.apache.tajo.worker.event.NodeResourceEvent;
+ import org.apache.tajo.worker.event.NodeStatusEvent;
import java.io.IOException;
+ import java.net.InetSocketAddress;
import java.net.URI;
import java.util.*;
- import java.util.concurrent.atomic.AtomicBoolean;
+ import java.util.concurrent.ConcurrentMap;
import java.util.concurrent.atomic.AtomicLong;
import static org.apache.tajo.TajoProtos.QueryState;
http://git-wip-us.apache.org/repos/asf/tajo/blob/0028d7aa/tajo-core/src/main/java/org/apache/tajo/webapp/QueryExecutorServlet.java
----------------------------------------------------------------------
diff --cc tajo-core/src/main/java/org/apache/tajo/webapp/QueryExecutorServlet.java
index 2486272,1df8e7a..5b13342
--- a/tajo-core/src/main/java/org/apache/tajo/webapp/QueryExecutorServlet.java
+++ b/tajo-core/src/main/java/org/apache/tajo/webapp/QueryExecutorServlet.java
@@@ -320,7 -319,7 +319,11 @@@ public class QueryExecutorServlet exten
LOG.error("Internal Error: SubmissionResponse is NULL");
error = new Exception("Internal Error: SubmissionResponse is NULL");
++<<<<<<< HEAD
+ } else if (response.getResult().getResultCode() == ClientProtos.ResultCode.OK) {
++=======
+ } else if (isSuccess(response.getState())) {
++>>>>>>> c50a5dadff90fa90709abbce59856e834baa4867
if (response.getIsForwarded()) {
queryId = new QueryId(response.getQueryId());
getQueryResult(queryId);
@@@ -332,22 -331,20 +335,27 @@@
progress.set(100);
}
++<<<<<<< HEAD
+ } else if (response.getResult().getResultCode() == ClientProtos.ResultCode.ERROR) {
+ if (response.getResult().hasErrorMessage()) {
+ StringBuffer errorMessage = new StringBuffer(response.getResult().getErrorMessage());
+ String modifiedMessage;
++=======
+ } else if (isError(response.getState())) {
+ StringBuffer errorMessage = new StringBuffer(response.getState().getMessage());
+ String modifiedMessage;
++>>>>>>> c50a5dadff90fa90709abbce59856e834baa4867
+
+ if (errorMessage.length() > 200) {
+ modifiedMessage = errorMessage.substring(0, 200);
+ } else {
+ modifiedMessage = errorMessage.toString();
+ }
- if (errorMessage.length() > 200) {
- modifiedMessage = errorMessage.substring(0, 200);
- } else {
- modifiedMessage = errorMessage.toString();
- }
-
- String lineSeparator = System.getProperty("line.separator");
- modifiedMessage = modifiedMessage.replaceAll(lineSeparator, "<br/>");
+ String lineSeparator = System.getProperty("line.separator");
+ modifiedMessage = modifiedMessage.replaceAll(lineSeparator, "<br/>");
- error = new Exception(modifiedMessage);
- }
+ error = new Exception(modifiedMessage);
}
} catch (Exception e) {
LOG.error(e.getMessage(), e);
http://git-wip-us.apache.org/repos/asf/tajo/blob/0028d7aa/tajo-core/src/main/java/org/apache/tajo/worker/TajoWorkerClientService.java
----------------------------------------------------------------------
diff --cc tajo-core/src/main/java/org/apache/tajo/worker/TajoWorkerClientService.java
index 48f4f40,edb5703..77481ae
--- a/tajo-core/src/main/java/org/apache/tajo/worker/TajoWorkerClientService.java
+++ b/tajo-core/src/main/java/org/apache/tajo/worker/TajoWorkerClientService.java
@@@ -25,14 -25,11 +25,21 @@@ import org.apache.commons.logging.Log
import org.apache.commons.logging.LogFactory;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.service.AbstractService;
+import org.apache.hadoop.util.StringUtils;
import org.apache.tajo.QueryId;
++<<<<<<< HEAD
+import org.apache.tajo.annotation.Nullable;
+import org.apache.tajo.conf.TajoConf;
+import org.apache.tajo.ipc.ClientProtos.GetQueryHistoryResponse;
+import org.apache.tajo.ipc.ClientProtos.QueryIdRequest;
+import org.apache.tajo.ipc.ClientProtos.RequestResult;
+import org.apache.tajo.ipc.ClientProtos.ResultCode;
++=======
+ import org.apache.tajo.exception.ReturnStateUtil;
+ import org.apache.tajo.conf.TajoConf;
+ import org.apache.tajo.ipc.ClientProtos.GetQueryHistoryResponse;
+ import org.apache.tajo.ipc.ClientProtos.QueryIdRequest;
++>>>>>>> c50a5dadff90fa90709abbce59856e834baa4867
import org.apache.tajo.ipc.QueryMasterClientProtocol;
import org.apache.tajo.querymaster.QueryMasterTask;
import org.apache.tajo.rpc.BlockingRpcServer;
@@@ -132,11 -129,10 +139,18 @@@ public class TajoWorkerClientService ex
if (queryHistory != null) {
builder.setQueryHistory(queryHistory.getProto());
}
++<<<<<<< HEAD
+ builder.setResult(buildOkRequestResult());
+ } catch (Throwable t) {
+ LOG.warn(t.getMessage(), t);
+ builder.setResult(buildRequestResult(ResultCode.ERROR,
+ StringUtils.stringifyException(t), null));
++=======
+ builder.setState(ReturnStateUtil.OK);
+ } catch (Throwable t) {
+ LOG.error(t.getMessage(), t);
+ builder.setState(ReturnStateUtil.returnError(t));
++>>>>>>> c50a5dadff90fa90709abbce59856e834baa4867
}
return builder.build();