@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);
}