private BaseResponse executeQuery( final ServiceRequest request, boolean countRequest, final ODataSQLBuilder visitor, Query query) throws SQLException { if (countRequest) { return getClient().executeCount(query, visitor.getParameters()); } else { String pageSize = getPageSize(request); QueryResponse result = new EntityCollectionResponse( request.getODataRequest().getRawBaseUri(), visitor.getContext()); if (visitor.getContext() instanceof CrossJoinNode) { result = new CrossJoinResult( request.getODataRequest().getRawBaseUri(), (CrossJoinNode) visitor.getContext()); } else if (visitor.getContext() instanceof ComplexDocumentNode) { ComplexDocumentNode cdn = (ComplexDocumentNode) visitor.getContext(); result = new OperationResponseImpl(cdn.getProcedureReturn()); } getClient() .executeSQL( query, visitor.getParameters(), visitor.includeTotalSize(), visitor.getSkip(), visitor.getTop(), visitor.getNextToken(), Integer.parseInt(pageSize), result); return result; } }