/** * Filter buckets. * * @param buckets * the buckets * @param query * the query * @return the terms */ private Terms filterBuckets(Terms buckets, KunderaQuery query) { Expression havingClause = query.getSelectStatement().getHavingClause(); if (!(havingClause instanceof NullExpression) && havingClause != null) { Expression conditionalExpression = ((HavingClause) havingClause).getConditionalExpression(); for (Iterator<Bucket> bucketIterator = buckets.getBuckets().iterator(); bucketIterator.hasNext();) { InternalAggregations internalAgg = (InternalAggregations) bucketIterator.next().getAggregations(); if (!isValidBucket(internalAgg, query, conditionalExpression)) { bucketIterator.remove(); } } } return buckets; }
/** * Compile having. */ private void compileHaving() { HavingClause havingClause = null; if (query.isSelectStatement()) { havingClause = (HavingClause) query.getSelectStatement().getHavingClause(); } // content cannot be empty if (havingClause == null || havingClause.toActualText().length() == 0) { throw new JPQLParseException("keyword without value: HAVING"); } if (groupingClause != null) { groupingClause = groupingClause.trim() + havingClause.toActualText(); } else { groupingClause = havingClause.toActualText(); } }
addHavingClause(((HavingClause) selectStatement.getHavingClause()).getConditionalExpression(), termsBuilder, entityMetadata);
/** * Filter buckets. * * @param buckets * the buckets * @param query * the query * @return the terms */ private Terms filterBuckets(Terms buckets, KunderaQuery query) { Expression havingClause = query.getSelectStatement().getHavingClause(); if (!(havingClause instanceof NullExpression) && havingClause != null) { Expression conditionalExpression = ((HavingClause) havingClause).getConditionalExpression(); for (Iterator<Bucket> bucketIterator = buckets.getBuckets().iterator(); bucketIterator.hasNext();) { InternalAggregations internalAgg = (InternalAggregations) bucketIterator.next().getAggregations(); if (!isValidBucket(internalAgg, query, conditionalExpression)) { bucketIterator.remove(); } } } return buckets; }
addHavingClause(((HavingClause) selectStatement.getHavingClause()).getConditionalExpression(), termsBuilder, entityMetadata);
/** * {@inheritDoc} */ @Override public void visit(SelectStatement expression) { if (expression.hasUnionClauses()) { expression.getUnionClauses().accept(this); } else if (expression.hasOrderByClause()) { expression.getOrderByClause().accept(this); } else if (expression.hasHavingClause()) { expression.getHavingClause().accept(this); } else if (expression.hasGroupByClause()) { expression.getGroupByClause().accept(this); } else if (expression.hasWhereClause()) { expression.getWhereClause().accept(this); } else if (expression.hasFromClause()) { expression.getFromClause().accept(this); } else { expression.getSelectClause().accept(this); } }
expression.getHavingClause().accept(this); if (expression.hasSpaceBeforeOrderBy()) { virtualSpace = true;