@Override
  public CqQuery newCq(String cqName, String queryString, CqAttributes cqAttributes,
      boolean isDurable) throws QueryInvalidException, CqExistsException, CqException {
    if (cqName == null) {
      throw new IllegalArgumentException(
          "cqName must not be null");
    }
    ClientCQ cq =
        getCqService().newCq(cqName, queryString, cqAttributes, pool, isDurable);
    return cq;
  }
Constructs a new named continuous query, represented by an instance of CqQuery. The CqQuery is
not executed, however, until the execute method is invoked on the CqQuery. The name of the
query will be used to identify this query in statistics archival.

@param cqName the String name for this query
@param queryString the OQL query
@param cqAttributes the CqAttributes
@param isDurable true if the CQ is durable
@return the newly created CqQuery object
@throws CqExistsException if a CQ by this name already exists on this client
@throws IllegalArgumentException if queryString or cqAttr is null
@throws IllegalStateException if this method is called from a cache server
@throws QueryInvalidException if there is a syntax error in the query
@throws CqException if failed to create cq, failure during creating managing cq metadata info.
        E.g.: Query string should refer only one region, join not supported. The query must be
        a SELECT statement. DISTINCT queries are not supported. Projections are not supported.
        Only one iterator in the FROM clause is supported, and it must be a region path. Bind
        parameters in the query are not yet supported.
geode-core/src/main/java/org/apache/geode/cache/query/internal/DefaultQueryService.java