throw new RpcException(e); final UserProtos.RunQuery query = newBuilder().setType(type).addAllFragments(planFragments) .setPlan(fragmentsToJsonString) .setResultsMode(STREAM_FULL).build();
/** * Submits a string based query plan for execution and returns the result batches. Supported query types are: * <p><ul> * <li>{@link QueryType#LOGICAL} * <li>{@link QueryType#PHYSICAL} * <li>{@link QueryType#SQL} * </ul> * * @param type Query type * @param plan Query to execute * @return a handle for the query result * @throws RpcException */ public List<QueryDataBatch> runQuery(QueryType type, String plan) throws RpcException { checkArgument(type == QueryType.LOGICAL || type == QueryType.PHYSICAL || type == QueryType.SQL, String.format("Only query types %s, %s and %s are supported in this API", QueryType.LOGICAL, QueryType.PHYSICAL, QueryType.SQL)); final UserProtos.RunQuery query = newBuilder().setResultsMode(STREAM_FULL).setType(type).setPlan(plan).build(); final ListHoldingResultsListener listener = new ListHoldingResultsListener(query); client.submitQuery(listener, query); return listener.getResults(); }
setType(other.getType());
} else { queryRequest = RunQuery.newBuilder() .setType(UserBitShared.QueryType.SQL) .setSource(SubmissionSource.LOCAL) .setPlan(jobRequest.getSqlQuery().getSql())
break; case 2: builder.setType(com.dremio.exec.proto.UserBitShared.QueryType.valueOf(input.readEnum())); break; case 3:
.setType(UserBitShared.QueryType.SQL) .setSource(SubmissionSource.LOCAL) .setPlan(query)
private static String localQueryHelper(String query, String storeTblName, boolean checkWriterDistributionTrait) throws Exception { LocalQueryExecutor localQueryExecutor = getLocalQueryExecutor(); RunQuery queryCmd = RunQuery .newBuilder() .setType(UserBitShared.QueryType.SQL) .setSource(SubmissionSource.LOCAL) .setPlan(query) .build(); String queryResultsStorePath = format("%s.\"%s\"", TEMP_SCHEMA, storeTblName); LocalExecutionConfig config = LocalExecutionConfig.newBuilder() .setEnableLeafLimits(false) .setFailIfNonEmptySent(false) .setUsername(getProcessUserName()) .setSqlContext(Collections.<String>emptyList()) .setInternalSingleThreaded(false) .setQueryResultsStorePath(queryResultsStorePath) .setAllowPartitionPruning(true) .setExposeInternalSources(false) .setSubstitutionSettings(SubstitutionSettings.of()) .build(); TestQueryObserver queryObserver = new TestQueryObserver(checkWriterDistributionTrait); localQueryExecutor.submitLocalQuery(ExternalIdHelper.generateExternalId(), queryObserver, queryCmd, false, config); queryObserver.waitForCompletion(); return toTableName(TEMP_SCHEMA, storeTblName, queryObserver.getAttemptId()); }
/** * Execute the given prepared statement and return the results. * * @param preparedStatementHandle Prepared statement handle returned in response to * {@link #createPreparedStatement(String)}. * @return List of {@link QueryDataBatch}s. It is responsibility of the caller to release query data batches. * @throws RpcException */ public List<QueryDataBatch> executePreparedStatement(final PreparedStatementHandle preparedStatementHandle) throws RpcException { final RunQuery runQuery = newBuilder() .setResultsMode(STREAM_FULL) .setType(QueryType.PREPARED_STATEMENT) .setPreparedStatementHandle(preparedStatementHandle) .build(); final ListHoldingResultsListener resultsListener = new ListHoldingResultsListener(runQuery); client.submitQuery(resultsListener, runQuery); return resultsListener.getResults(); }
/** * Execute the given prepared statement. * * @param preparedStatementHandle Prepared statement handle returned in response to * {@link #createPreparedStatement(String)}. * @param resultsListener {@link UserResultsListener} instance for listening for query results. */ public void executePreparedStatement(final PreparedStatementHandle preparedStatementHandle, final UserResultsListener resultsListener) { final RunQuery runQuery = newBuilder() .setResultsMode(STREAM_FULL) .setType(QueryType.PREPARED_STATEMENT) .setPreparedStatementHandle(preparedStatementHandle) .build(); client.submitQuery(resultsListener, runQuery); }
/** * Submits a Logical plan for direct execution (bypasses parsing) * * @param plan the plan to execute */ public void runQuery(QueryType type, String plan, UserResultsListener resultsListener) { client.submitQuery(resultsListener, newBuilder().setResultsMode(STREAM_FULL).setType(type).setPlan(plan).build()); }