private <T extends Statement> DataDefinitionExecution<T> createDataDefinitionExecution( String query, Session session, ResourceGroupId resourceGroup, T statement, List<Expression> parameters, WarningCollector warningCollector) { @SuppressWarnings("unchecked") DataDefinitionTask<T> task = (DataDefinitionTask<T>) tasks.get(statement.getClass()); checkArgument(task != null, "no task for statement: %s", statement.getClass().getSimpleName()); QueryStateMachine stateMachine = QueryStateMachine.begin( query, session, locationFactory.createQueryLocation(session.getQueryId()), resourceGroup, task.isTransactionControl(), transactionManager, accessControl, executor, metadata, warningCollector); stateMachine.setUpdateType(task.getName()); return new DataDefinitionExecution<>(task, statement, transactionManager, metadata, accessControl, stateMachine, parameters); } }
query, session, locationFactory.createQueryLocation(session.getQueryId()), resourceGroup, preparedQuery,
session, query, locationFactory.createQueryLocation(queryId), Optional.ofNullable(selectionContext).map(SelectionContext::getResourceGroupId), queryExecutor,
@Override public SqlQueryExecution createQueryExecution(QueryId queryId, String query, Session session, Statement statement) { String executionPolicyName = SystemSessionProperties.getExecutionPolicy(session); ExecutionPolicy executionPolicy = executionPolicies.get(executionPolicyName); checkArgument(executionPolicy != null, "No execution policy %s", executionPolicy); return new SqlQueryExecution( queryId, query, session, locationFactory.createQueryLocation(queryId), statement, transactionManager, metadata, accessControl, sqlParser, splitManager, nodePartitioningManager, nodeScheduler, planOptimizers, remoteTaskFactory, locationFactory, scheduleSplitBatchSize, experimentalSyntaxEnabled, executor, nodeTaskMap, queryExplainer, executionPolicy); } }
@Override public DataDefinitionExecution<?> createQueryExecution( QueryId queryId, String query, Session session, Statement statement) { URI self = locationFactory.createQueryLocation(queryId); DataDefinitionTask<Statement> task = getTask(statement); checkArgument(task != null, "no task for statement: %s", statement.getClass().getSimpleName()); QueryStateMachine stateMachine = QueryStateMachine.begin(queryId, query, session, self, task.isTransactionControl(), transactionManager, executor); stateMachine.setUpdateType(task.getName()); return new DataDefinitionExecution<>(task, statement, transactionManager, metadata, accessControl, stateMachine); }
URI self = locationFactory.createQueryLocation(queryId); QueryExecution execution = new FailedQueryExecution(queryId, query, session, self, transactionManager, queryExecutor, e);