public QueryInfo(QueryId queryId, QueryContext queryContext, String sql, String jsonExpr) { this.queryId = queryId; this.queryIdStr = queryId.toString(); this.context = queryContext; this.sql = sql; this.jsonExpr = jsonExpr; this.queryState = TajoProtos.QueryState.QUERY_MASTER_INIT; }
public static QueryId parseQueryId(String idStr) { String[] tokens = idStr.split("_"); return new QueryId(tokens[1], Integer.parseInt(tokens[2])); } }
public boolean isNull() { return this.equals(QueryIdFactory.NULL_QUERY_ID); }
private void getSimpleQueryResult(ClientProtos.SubmitQueryResponse response) { ResultSet res = null; try { QueryId queryId = new QueryId(response.getQueryId()); TableDesc desc = new TableDesc(response.getTableDesc()); if (response.getMaxRowNum() < 0 && queryId.equals(QueryIdFactory.NULL_QUERY_ID)) { // non-forwarded INSERT INTO query does not have any query id. // In this case, it just returns succeeded query information without printing the query results. } else { res = TajoClientUtil.createResultSet(tajoClient, response, sizeLimit); MakeResultText(res, desc); } progress.set(100); } catch (Exception e) { LOG.error(e.getMessage(), e); error = e; } finally { if (res != null) { try { res.close(); } catch (SQLException e) { } } } }
public void executeDistributedQuery(QueryContext queryContext, Session session, LogicalPlan plan, String sql, String jsonExpr, SubmitQueryResponse.Builder responseBuilder) throws Exception { LogicalRootNode rootNode = plan.getRootBlock().getRoot(); prepareForCreateTableOrInsert(catalog, plan); hookManager.doHooks(queryContext, plan); QueryManager queryManager = this.context.getQueryJobManager(); QueryInfo queryInfo; queryInfo = queryManager.scheduleQuery(session, queryContext, sql, jsonExpr, rootNode); responseBuilder.setState(OK); responseBuilder.setQueryId(queryInfo.getQueryId().getProto()); responseBuilder.setResultType(ResultType.FETCH); 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()); }
@Override public void run() { try { AsyncRpcClient rpc = RpcClientManager.getInstance().getClient(worker, TajoWorkerProtocol.class, true, rpcParams); TajoWorkerProtocol.TajoWorkerProtocolService tajoWorkerProtocolService = rpc.getStub(); tajoWorkerProtocolService.stopQuery(null, queryId.getProto(), NullCallback.get()); } catch (Throwable e) { LOG.error(e.getMessage(), e); } } });
@Override public GetQueryResultResponse getResultResponse(QueryId queryId) throws QueryNotFoundException { if (queryId.equals(QueryIdFactory.NULL_QUERY_ID)) { return null; } final BlockingInterface stub = conn.getTMStub(); final GetQueryResultRequest request = GetQueryResultRequest.newBuilder() .setQueryId(queryId.getProto()) .setSessionId(conn.sessionId) .build(); GetQueryResultResponse response; try { response = stub.getQueryResult(null, request); } catch (ServiceException t) { throw new RuntimeException(t); } throwsIfThisError(response.getState(), QueryNotFoundException.class); ensureOk(response.getState()); return response; }
@Test public void testQueryId() { long ts1 = 1315890136000l; long ts2 = 1315890136001l; QueryId j1 = createQueryId(ts1, 2); QueryId j2 = createQueryId(ts1, 1); QueryId j3 = createQueryId(ts2, 1); QueryId j4 = createQueryId(ts1, 2); assertTrue(j1.equals(j4)); assertFalse(j1.equals(j2)); assertFalse(j1.equals(j3)); assertTrue(j1.compareTo(j4) == 0); assertTrue(j1.compareTo(j2) > 0); assertTrue(j1.compareTo(j3) < 0); assertTrue(j1.hashCode() == j4.hashCode()); assertFalse(j1.hashCode() == j2.hashCode()); assertFalse(j1.hashCode() == j3.hashCode()); QueryId j5 = createQueryId(ts1, 231415); assertEquals("q_" + ts1 + "_0002", j1.toString()); assertEquals("q_" + ts1 + "_231415", j5.toString()); }
@Test public void testConstructFromPB() { QueryId qid1 = LocalTajoTestingUtility.newQueryId(); QueryId qid2 = new QueryId(qid1.getProto()); assertEquals(qid1, qid2); MasterPlan plan = new MasterPlan(qid1, null, null); ExecutionBlockId sub1 = plan.newExecutionBlockId(); ExecutionBlockId sub2 = TajoIdUtils.createExecutionBlockId(sub1.toString()); assertEquals(sub1, sub2); TaskId u1 = QueryIdFactory.newTaskId(sub1); TaskId u2 = new TaskId(u1.getProto()); assertEquals(u1, u2); TaskAttemptId attempt1 = new TaskAttemptId(u1, 1); TaskAttemptId attempt2 = new TaskAttemptId(attempt1.getProto()); assertEquals(attempt1, attempt2); }
@Override public int compareTo(ExecutionBlockId executionBlockId) { int result = queryId.compareTo(executionBlockId.queryId); if (result == 0) { return id - executionBlockId.id; } else { return result; } }
private void getSimpleQueryResult(ClientProtos.SubmitQueryResponse response) { ResultSet res = null; try { QueryId queryId = new QueryId(response.getQueryId()); TableDesc desc = new TableDesc(response.getTableDesc()); if (response.getMaxRowNum() < 0 && queryId.equals(QueryIdFactory.NULL_QUERY_ID)) { // non-forwarded INSERT INTO query does not have any query id. // In this case, it just returns succeeded query information without printing the query results. } else { res = TajoClientUtil.createResultSet(tajoClient, response, sizeLimit); MakeResultText(res, desc); } progress.set(100); } catch (Exception e) { LOG.error(e.getMessage(), e); error = e; } finally { if (res != null) { try { res.close(); } catch (SQLException e) { } } } }
public void executeDistributedQuery(QueryContext queryContext, Session session, LogicalPlan plan, String sql, String jsonExpr, SubmitQueryResponse.Builder responseBuilder) throws Exception { LogicalRootNode rootNode = plan.getRootBlock().getRoot(); prepareForCreateTableOrInsert(catalog, plan); hookManager.doHooks(queryContext, plan); QueryManager queryManager = this.context.getQueryJobManager(); QueryInfo queryInfo; queryInfo = queryManager.scheduleQuery(session, queryContext, sql, jsonExpr, rootNode); responseBuilder.setState(OK); responseBuilder.setQueryId(queryInfo.getQueryId().getProto()); responseBuilder.setResultType(ResultType.FETCH); 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()); }
@Override public void run() { try { AsyncRpcClient rpc = RpcClientManager.getInstance().getClient(worker, TajoWorkerProtocol.class, true, rpcParams); TajoWorkerProtocol.TajoWorkerProtocolService tajoWorkerProtocolService = rpc.getStub(); tajoWorkerProtocolService.stopQuery(null, queryId.getProto(), NullCallback.get()); } catch (Throwable e) { LOG.error(e.getMessage(), e); } } });
@Override public GetQueryResultResponse getResultResponse(QueryId queryId) throws QueryNotFoundException { if (queryId.equals(QueryIdFactory.NULL_QUERY_ID)) { return null; } final BlockingInterface stub = conn.getTMStub(); final GetQueryResultRequest request = GetQueryResultRequest.newBuilder() .setQueryId(queryId.getProto()) .setSessionId(conn.sessionId) .build(); GetQueryResultResponse response; try { response = stub.getQueryResult(null, request); } catch (ServiceException t) { throw new RuntimeException(t); } throwsIfThisError(response.getState(), QueryNotFoundException.class); ensureOk(response.getState()); return response; }
@Override public int compareTo(ExecutionBlockId executionBlockId) { int result = queryId.compareTo(executionBlockId.queryId); if (result == 0) { return id - executionBlockId.id; } else { return result; } }