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
----------------------------------------------------------------------