You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tajo.apache.org by ji...@apache.org on 2015/03/12 14:24:36 UTC
[3/4] tajo git commit: Merge branch 'master' of
https://git-wip-us.apache.org/repos/asf/tajo into index_support
Merge branch 'master' of https://git-wip-us.apache.org/repos/asf/tajo into index_support
Conflicts:
tajo-cli/src/main/java/org/apache/tajo/cli/tsql/TajoCli.java
Project: http://git-wip-us.apache.org/repos/asf/tajo/repo
Commit: http://git-wip-us.apache.org/repos/asf/tajo/commit/9bce0513
Tree: http://git-wip-us.apache.org/repos/asf/tajo/tree/9bce0513
Diff: http://git-wip-us.apache.org/repos/asf/tajo/diff/9bce0513
Branch: refs/heads/index_support
Commit: 9bce051354f14be8abc7c3f25f9fdd38766b1523
Parents: e38c48a 4a9da73
Author: Jihoon Son <ji...@apache.org>
Authored: Thu Mar 12 22:23:10 2015 +0900
Committer: Jihoon Son <ji...@apache.org>
Committed: Thu Mar 12 22:23:10 2015 +0900
----------------------------------------------------------------------
CHANGES | 25 ++
.../apache/tajo/algebra/ExistsPredicate.java | 2 +-
.../tajo/catalog/AbstractCatalogClient.java | 4 +-
.../org/apache/tajo/catalog/CatalogServer.java | 6 +-
.../dictionary/ClusterTableDescriptor.java | 56 +++
.../InfoSchemaMetadataDictionary.java | 5 +-
.../tajo/catalog/store/AbstractDBStore.java | 18 +-
.../java/org/apache/tajo/cli/tsql/TajoCli.java | 61 +--
.../apache/tajo/client/SessionConnection.java | 60 +++
.../main/java/org/apache/tajo/util/TUtil.java | 6 +-
.../org/apache/tajo/engine/parser/SQLParser.g4 | 1 +
.../engine/codegen/ExecutorPreCompiler.java | 2 +-
.../tajo/engine/function/FunctionLoader.java | 2 +-
.../apache/tajo/engine/parser/SQLAnalyzer.java | 4 +-
.../tajo/engine/parser/SQLSyntaxError.java | 17 +-
.../engine/planner/global/GlobalPlanner.java | 2 +-
.../tajo/master/QueryCoordinatorService.java | 2 +-
.../org/apache/tajo/master/QueryInProgress.java | 2 +-
.../org/apache/tajo/master/QueryManager.java | 2 +-
.../java/org/apache/tajo/master/TajoMaster.java | 4 +-
.../NonForwardQueryResultSystemScanner.java | 142 +++++++
.../master/rm/TajoWorkerResourceManager.java | 4 +-
.../apache/tajo/querymaster/QueryMaster.java | 4 +-
.../java/org/apache/tajo/querymaster/Task.java | 2 +-
.../org/apache/tajo/session/SessionManager.java | 2 +-
.../apache/tajo/util/history/HistoryWriter.java | 2 +-
.../tajo/webapp/QueryExecutorServlet.java | 4 +-
.../org/apache/tajo/worker/DeletionService.java | 4 +-
.../tajo/worker/ExecutionBlockContext.java | 2 +-
.../worker/ExecutionBlockSharedResource.java | 2 +-
.../java/org/apache/tajo/worker/Fetcher.java | 6 +-
.../tajo/worker/TajoResourceAllocator.java | 2 +-
.../main/java/org/apache/tajo/worker/Task.java | 2 +-
.../java/org/apache/tajo/worker/TaskRunner.java | 2 +-
.../tajo/worker/WorkerHeartbeatService.java | 2 +-
.../tajo/worker/rule/WorkerRuleProvider.java | 2 +-
.../engine/function/TestDateTimeFunctions.java | 5 +
.../TestNonForwardQueryResultSystemScanner.java | 18 +
tajo-docs/src/main/sphinx/conf.py | 4 +-
tajo-docs/src/main/sphinx/jdbc_driver.rst | 34 +-
.../org/apache/tajo/jdbc/JdbcConnection.java | 4 +-
.../apache/tajo/plan/InvalidQueryException.java | 4 +-
.../org/apache/tajo/plan/LogicalPlanner.java | 2 +-
.../plan/exprrewrite/EvalTreeOptimizer.java | 2 +-
tajo-project/src/site/apt/index.apt | 4 +-
tajo-project/src/site/markdown/downloads.md | 14 +-
.../markdown/releases/0.10.0/announcement.md | 57 +++
.../resources/releases/0.10.0/relnotes.html | 388 +++++++++++++++++++
tajo-project/src/site/site.xml | 45 ++-
.../tajo/pullserver/PullServerAuxService.java | 4 +-
.../apache/tajo/pullserver/PullServerUtil.java | 2 +-
.../tajo/pullserver/TajoPullServerService.java | 4 +-
.../org/apache/tajo/rpc/NettyServerBase.java | 2 +-
.../org/apache/tajo/rpc/RpcConnectionPool.java | 2 +-
.../org/apache/tajo/storage/StorageUtil.java | 30 +-
.../apache/tajo/storage/TestStorageUtil.java | 58 +++
56 files changed, 988 insertions(+), 160 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/tajo/blob/9bce0513/tajo-catalog/tajo-catalog-client/src/main/java/org/apache/tajo/catalog/AbstractCatalogClient.java
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/tajo/blob/9bce0513/tajo-catalog/tajo-catalog-server/src/main/java/org/apache/tajo/catalog/CatalogServer.java
----------------------------------------------------------------------
diff --cc tajo-catalog/tajo-catalog-server/src/main/java/org/apache/tajo/catalog/CatalogServer.java
index a2b8eaf,c34b4d2..f31efda
--- a/tajo-catalog/tajo-catalog-server/src/main/java/org/apache/tajo/catalog/CatalogServer.java
+++ b/tajo-catalog/tajo-catalog-server/src/main/java/org/apache/tajo/catalog/CatalogServer.java
@@@ -913,28 -913,10 +913,28 @@@ public class CatalogServer extends Abst
rlock.lock();
try {
- return store.existIndexByColumn(databaseName, tableName, columnName) ?
+ return store.existIndexByColumns(databaseName, tableName,
+ columnNames.toArray(new String[columnNames.size()])) ?
+ ProtoUtil.TRUE : ProtoUtil.FALSE;
+ } catch (Exception e) {
+ LOG.error(e);
+ return BoolProto.newBuilder().setValue(false).build();
+ } finally {
+ rlock.unlock();
+ }
+ }
+
+ @Override
+ public BoolProto existIndexesByTable(RpcController controller, TableIdentifierProto request) throws ServiceException {
+ String databaseName = request.getDatabaseName();
+ String tableName = request.getTableName();
+
+ rlock.lock();
+ try {
+ return store.existIndexesByTable(databaseName, tableName) ?
ProtoUtil.TRUE : ProtoUtil.FALSE;
} catch (Exception e) {
- LOG.error(e);
+ LOG.error(e, e);
return BoolProto.newBuilder().setValue(false).build();
} finally {
rlock.unlock();
http://git-wip-us.apache.org/repos/asf/tajo/blob/9bce0513/tajo-catalog/tajo-catalog-server/src/main/java/org/apache/tajo/catalog/store/AbstractDBStore.java
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/tajo/blob/9bce0513/tajo-cli/src/main/java/org/apache/tajo/cli/tsql/TajoCli.java
----------------------------------------------------------------------
diff --cc tajo-cli/src/main/java/org/apache/tajo/cli/tsql/TajoCli.java
index 1d3682c,354f60d..77d4a9c
--- 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
@@@ -492,9 -489,8 +489,8 @@@ public class TajoCli
long startTime = System.currentTimeMillis();
ClientProtos.SubmitQueryResponse response = client.executeQueryWithJson(json);
if (response == null) {
- displayFormatter.printErrorMessage(sout, "response is null");
- wasError = true;
+ onError("response is null", null);
- } else if (response.getResultCode() == ClientProtos.ResultCode.OK) {
+ } else if (response.getResult().getResultCode() == ClientProtos.ResultCode.OK) {
if (response.getIsForwarded()) {
QueryId queryId = new QueryId(response.getQueryId());
waitForQueryCompleted(queryId);
@@@ -507,9 -503,8 +503,8 @@@
}
}
} else {
- if (response.hasErrorMessage()) {
- onError(response.getErrorMessage(), null);
+ if (response.getResult().hasErrorMessage()) {
- displayFormatter.printErrorMessage(sout, response.getResult().getErrorMessage());
- wasError = true;
++ onError(response.getResult().getErrorMessage(), null);
}
}
}
@@@ -529,9 -520,8 +520,8 @@@
}
if (response == null) {
- displayFormatter.printErrorMessage(sout, "response is null");
- wasError = true;
+ onError("response is null", null);
- } else if (response.getResultCode() == ClientProtos.ResultCode.OK) {
+ } else if (response.getResult().getResultCode() == ClientProtos.ResultCode.OK) {
if (response.getIsForwarded()) {
QueryId queryId = new QueryId(response.getQueryId());
waitForQueryCompleted(queryId);
@@@ -543,9 -533,8 +533,8 @@@
}
}
} else {
- if (response.hasErrorMessage()) {
- onError(response.getErrorMessage(), null);
+ if (response.getResult().hasErrorMessage()) {
- displayFormatter.printErrorMessage(sout, response.getResult().getErrorMessage());
- wasError = true;
++ onError(response.getResult().getErrorMessage(), null);
}
}
http://git-wip-us.apache.org/repos/asf/tajo/blob/9bce0513/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 4710397,d05d3b1..6052244
--- a/tajo-client/src/main/java/org/apache/tajo/client/SessionConnection.java
+++ b/tajo-client/src/main/java/org/apache/tajo/client/SessionConnection.java
@@@ -319,6 -320,65 +320,65 @@@ public class SessionConnection implemen
}
}
+ public boolean reconnect() throws Exception {
+ return new ServerCallable<Boolean>(connPool, getTajoMasterAddr(), TajoMasterClientProtocol.class, false, true) {
+
+ public Boolean call(NettyClientBase client) throws ServiceException {
+ CreateSessionRequest.Builder builder = CreateSessionRequest.newBuilder();
+ builder.setUsername(userInfo.getUserName()).build();
+ if (baseDatabase != null) {
+ builder.setBaseDatabaseName(baseDatabase);
+ }
+
+
+ // create new session
+ TajoMasterClientProtocolService.BlockingInterface tajoMasterService = client.getStub();
+ CreateSessionResponse response = tajoMasterService.createSession(null, builder.build());
- if (response.getResultCode() != ResultCode.OK) {
++ if (response.getResult().getResultCode() != ResultCode.OK) {
+ return false;
+ }
+
+ // Invalidate some session variables in client cache
+ sessionId = response.getSessionId();
+ Map<String, String> sessionVars = ProtoUtil.convertToMap(response.getSessionVars());
+ synchronized (sessionVarsCache) {
+ for (SessionVars var : UPDATE_ON_RECONNECT) {
+ String value = sessionVars.get(var.keyname());
+ if (value != null) {
+ sessionVarsCache.put(var.keyname(), value);
+ }
+ }
+ }
+
+ // Update the session variables in server side
+ try {
+ KeyValueSet keyValueSet = new KeyValueSet();
+ keyValueSet.putAll(sessionVarsCache);
+ ClientProtos.UpdateSessionVariableRequest request = ClientProtos.UpdateSessionVariableRequest.newBuilder()
+ .setSessionId(sessionId)
+ .setSessionVars(keyValueSet.getProto()).build();
+
- if (tajoMasterService.updateSessionVariables(null, request).getResultCode() != ResultCode.OK) {
++ if (tajoMasterService.updateSessionVariables(null, request).getResult().getResultCode() != ResultCode.OK) {
+ tajoMasterService.removeSession(null, sessionId);
+ return false;
+ }
+ LOG.info(String.format("Reconnected to session %s as a user '%s'.", sessionId.getId(), userInfo.getUserName()));
+ return true;
+ } catch (ServiceException e) {
+ tajoMasterService.removeSession(null, sessionId);
+ return false;
+ }
+ }
+ }.withRetries();
+ }
+
+ /**
+ * Session variables which should be updated upon reconnecting
+ */
+ private static final SessionVars[] UPDATE_ON_RECONNECT = new SessionVars[] {
+ SessionVars.SESSION_ID, SessionVars.SESSION_LAST_ACCESS_TIME, SessionVars.CLIENT_HOST
+ };
+
ClientProtos.SessionedStringProto convertSessionedString(String str) {
ClientProtos.SessionedStringProto.Builder builder = ClientProtos.SessionedStringProto.newBuilder();
builder.setSessionId(sessionId);
http://git-wip-us.apache.org/repos/asf/tajo/blob/9bce0513/tajo-common/src/main/java/org/apache/tajo/util/TUtil.java
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/tajo/blob/9bce0513/tajo-core/src/main/antlr4/org/apache/tajo/engine/parser/SQLParser.g4
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/tajo/blob/9bce0513/tajo-core/src/main/java/org/apache/tajo/engine/codegen/ExecutorPreCompiler.java
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/tajo/blob/9bce0513/tajo-core/src/main/java/org/apache/tajo/engine/parser/SQLAnalyzer.java
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/tajo/blob/9bce0513/tajo-core/src/main/java/org/apache/tajo/engine/planner/global/GlobalPlanner.java
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/tajo/blob/9bce0513/tajo-core/src/main/java/org/apache/tajo/master/exec/NonForwardQueryResultSystemScanner.java
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/tajo/blob/9bce0513/tajo-core/src/main/java/org/apache/tajo/webapp/QueryExecutorServlet.java
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/tajo/blob/9bce0513/tajo-core/src/main/java/org/apache/tajo/worker/Task.java
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/tajo/blob/9bce0513/tajo-plan/src/main/java/org/apache/tajo/plan/LogicalPlanner.java
----------------------------------------------------------------------