private void processInitialStatusUpdates(WarningsPrinter warningsPrinter) { while (client.isRunning() && (client.currentData().getData() == null)) { warningsPrinter.print(client.currentStatusInfo().getWarnings(), true, false); client.advance(); } List<Warning> 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(); } }
void updateSession(StatementClient client) { client.getSetSessionProperties().forEach(sessionProperties::put); client.getResetSessionProperties().forEach(sessionProperties::remove); client.getAddedPreparedStatements().forEach(preparedStatements::put); client.getDeallocatedPreparedStatements().forEach(preparedStatements::remove); client.getSetCatalog().ifPresent(catalog::set); client.getSetSchema().ifPresent(schema::set); client.getSetPath().ifPresent(path::set); if (client.getStartedTransactionId() != null) { transactionId.set(client.getStartedTransactionId()); } if (client.isClearTransactionId()) { transactionId.set(null); } }
private static boolean isQuery(StatementClient client) { String updateType; if (client.isRunning()) { updateType = client.currentStatusInfo().getUpdateType(); } else { updateType = client.finalStatusInfo().getUpdateType(); } return updateType == null; }
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);
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;
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(); }
try { WarningsPrinter warningsPrinter = new ConsoleWarningsPrinter(console); while (client.isRunning()) { try { if (client.currentData().getData() != null) { return; client.cancelLeafStage(); client.close(); client.advance();
try { client = connection().startQuery(sql, getStatementSessionProperties()); if (client.isFinished()) { QueryStatusInfo finalStatusInfo = client.finalStatusInfo(); if (finalStatusInfo.getError() != null) { throw resultsException(finalStatusInfo); resultSet = new PrestoResultSet(client, maxRows.get(), progressConsumer, warningsManager); for (Map.Entry<String, ClientSelectedRole> entry : client.getSetRoles().entrySet()) { connection.get().setRole( entry.getKey(), if (client.currentStatusInfo().getUpdateType() == null) { currentResult.set(resultSet); return true; Long updateCount = client.finalStatusInfo().getUpdateCount(); currentUpdateCount.set((updateCount != null) ? updateCount : 0); currentUpdateType.set(client.finalStatusInfo().getUpdateType()); warningsManager.addWarnings(client.finalStatusInfo().getWarnings()); return false; client.close();
while (client.isRunning() && !client.currentStatusInfo().getStats().isScheduled()) { client.advance(); return new QueryId(client.currentStatusInfo().getId());
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 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(); }
PrestoResultSet(StatementClient client, long maxRows, Consumer<QueryStats> progressCallback, WarningsManager warningsManager) throws SQLException { this.client = requireNonNull(client, "client is null"); requireNonNull(progressCallback, "progressCallback is null"); this.sessionTimeZone = DateTimeZone.forID(client.getTimeZone().getId()); this.queryId = client.currentStatusInfo().getId(); List<Column> columns = getColumns(client, progressCallback); this.fieldMap = getFieldMap(columns); this.columnInfoList = getColumnInfo(columns); this.resultSetMetaData = new PrestoResultSetMetaData(columnInfoList); this.warningsManager = requireNonNull(warningsManager, "warningsManager is null"); this.results = flatten(new ResultsPageIterator(client, progressCallback, warningsManager), maxRows); }
private void updateScreen(WarningsPrinter warningsPrinter) { console.repositionCursor(); printQueryInfo(client.currentStatusInfo(), warningsPrinter); }
QueryStatusInfo results = client.finalStatusInfo(); StatementStats stats = results.getStats();
@Override public void close() { client.close(); }
public Set<String> getResetSessionProperties() { return client.getResetSessionProperties(); }
public Map<String, String> getSetSessionProperties() { return client.getSetSessionProperties(); }
void partialCancel() { client.cancelLeafStage(); }
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;