logger.trace("Process {} @CL.{}", statement, options.getConsistency());
ClientState clientState = queryState.getClientState();
statement.checkAccess(clientState);
statement.validate(clientState);
ResultMessage result = preExecutionHooks.isEmpty() && postExecutionHooks.isEmpty()
? statement.execute(queryState, options)
: executeWithHooks(statement, new ExecutionContext(queryState, queryString, options));
return result == null ? new ResultMessage.Void() : result;
}