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