while (client.isRunning()) { resultsSession.addResults(client.currentStatusInfo(), client.currentData()); client.advance(); checkState(client.isFinished()); QueryError error = client.finalStatusInfo().getError(); QueryStatusInfo results = client.finalStatusInfo(); if (results.getUpdateType() != null) { resultsSession.setUpdateType(results.getUpdateType()); T result = resultsSession.build(client.getSetSessionProperties(), client.getResetSessionProperties()); return new ResultWithQueryId<>(new QueryId(results.getId()), result);
try { WarningsPrinter warningsPrinter = new ConsoleWarningsPrinter(console); while (client.isRunning()) { try { if (client.currentData().getData() != null) { return; client.cancelLeafStage(); client.close(); client.advance();
private void processInitialStatusUpdates(WarningsPrinter warningsPrinter) { while (client.isRunning() && (client.currentData().getData() == null)) { warningsPrinter.print(client.currentStatusInfo().getWarnings(), true, false); client.advance(); } List<PrestoWarning> warnings; if (client.isRunning()) { warnings = client.currentStatusInfo().getWarnings(); } else { warnings = client.finalStatusInfo().getWarnings(); } warningsPrinter.print(warnings, false, true); }
private StatementStats execute(ClientSession session, String query, Consumer<QueryData> queryDataConsumer, Consumer<QueryError> queryErrorConsumer) { // start query try (StatementClient client = newStatementClient(okHttpClient, session, query)) { // read query output while (client.isRunning()) { queryDataConsumer.accept(client.currentData()); if (!client.advance()) { break; } } // verify final state if (client.isClientAborted()) { throw new IllegalStateException("Query aborted by user"); } if (client.isClientError()) { throw new IllegalStateException("Query is gone (server restarted?)"); } verify(client.isFinished()); QueryError resultsError = client.finalStatusInfo().getError(); if (resultsError != null) { queryErrorConsumer.accept(resultsError); } return client.finalStatusInfo().getStats(); } }
private List<String> queryMetadata(String query) { ImmutableList.Builder<String> cache = ImmutableList.builder(); try (StatementClient client = queryRunner.startInternalQuery(query)) { while (client.isRunning() && !Thread.currentThread().isInterrupted()) { QueryData results = client.currentData(); if (results.getData() != null) { for (List<Object> row : results.getData()) { cache.add((String) row.get(0)); } } client.advance(); } } return cache.build(); }
@Override protected Iterable<List<Object>> computeNext() { while (client.isValid()) { Iterable<List<Object>> data = client.current().getData(); client.advance(); if (data != null) { return data; } } if (client.isFailed()) { throw internalServerError(failureMessage(client.finalResults())); } return endOfData(); } }
if (client.isRunning() || (client.isFinished() && client.finalStatusInfo().getError() == null)) { QueryStatusInfo results = client.isRunning() ? client.currentStatusInfo() : client.finalStatusInfo(); if (results.getUpdateType() != null) { renderUpdate(errorChannel, results); checkState(!client.isRunning()); new PrintStreamWarningsPrinter(System.err).print(client.finalStatusInfo().getWarnings(), true, true); statusPrinter.printFinalInfo(); warningsPrinter.print(client.finalStatusInfo().getWarnings(), true, true); if (client.isClientAborted()) { errorChannel.println("Query aborted by user"); return false; if (client.isClientError()) { errorChannel.println("Query is gone (server restarted?)"); return false; verify(client.isFinished()); if (client.finalStatusInfo().getError() != null) { renderFailure(errorChannel); return false;
while (client.isRunning() && !client.currentStatusInfo().getStats().isScheduled()) { client.advance(); return new QueryId(client.currentStatusInfo().getId());
if ((!client.isFailed()) && (!client.isGone()) && (!client.isClosed())) { QueryResults results = client.isValid() ? client.current() : client.finalResults(); if (results.getUpdateType() != null) { renderUpdate(errorChannel, results); if (client.isClosed()) { errorChannel.println("Query aborted by user"); else if (client.isGone()) { errorChannel.println("Query is gone (server restarted?)"); else if (client.isFailed()) { renderFailure(errorChannel);
@Override public void run() { try { client = new StatementClient(HTTP_CLIENT, session, query); } catch (RuntimeException e) { String message = SERVER_NOT_ACTIVE + " " + e.getMessage(); waitForQuery(); if (client.isClosed()) { QueryError queryError = QueryError.create("Query aborted by user"); result.complete(QueryResult.errorResult(queryError, query)); } else if (client.isGone()) { QueryError queryError = QueryError.create("Query is gone (server restarted?)"); result.complete(QueryResult.errorResult(queryError, query)); } else if (client.isFailed()) { com.facebook.presto.client.QueryError error = client.finalStatusInfo().getError(); com.facebook.presto.client.ErrorLocation errorLocation = error.getErrorLocation(); QueryError queryError = new QueryError(
private void transformAndAdd() { QueryStatusInfo queryStatusInfo = client.isValid() ? client.currentStatusInfo() : client.finalStatusInfo(); if (queryStatusInfo.getError() != null || queryStatusInfo.getColumns() == null || !client.isValid()) { return; QueryData queryData = client.currentData(); if (queryData == null || queryData.getData() == null) { return;
public boolean renderOutput(PrintStream out, OutputFormat outputFormat, boolean interactive) { Thread clientThread = Thread.currentThread(); SignalHandler oldHandler = Signal.handle(SIGINT, signal -> { if (ignoreUserInterrupt.get() || client.isClientAborted()) { return; } client.close(); clientThread.interrupt(); }); try { return renderQueryOutput(out, outputFormat, interactive); } finally { Signal.handle(SIGINT, oldHandler); Thread.interrupted(); // clear interrupt status } }
public boolean advance() URI nextUri = current().getNextUri(); if (isClosed() || (nextUri == null)) { valid.set(false); return false; close(); processResponse(response); return true; throw requestFailedException("fetching next", request, response); while (((System.nanoTime() - start) < requestTimeoutNanos) && !isClosed());
@Override public void close() { client.close(); }
public void renderFailure(PrintStream out) { QueryStatusInfo results = client.finalStatusInfo(); QueryError error = results.getError(); checkState(error != null); out.printf("Query %s failed: %s%n", results.getId(), error.getMessage()); if (debug && (error.getFailureInfo() != null)) { error.getFailureInfo().toException().printStackTrace(out); } if (error.getErrorLocation() != null) { renderErrorLocation(client.getQuery(), error.getErrorLocation(), out); } out.println(); }
public void renderOutput(PrintStream out, OutputFormat outputFormat, boolean interactive) { Thread clientThread = Thread.currentThread(); SignalHandler oldHandler = Signal.handle(SIGINT, signal -> { if (ignoreUserInterrupt.get() || client.isClosed()) { return; } userAbortedQuery.set(true); client.close(); clientThread.interrupt(); }); try { renderQueryOutput(out, outputFormat, interactive); } finally { Signal.handle(SIGINT, oldHandler); Thread.interrupted(); // clear interrupt status } }