/** * Handle an optional HAVING clause. * * @param astQuery * The AST query node. This is an abstract base class. There are * concrete instances for SELECT, ASK, DESCRIBE, and CONSTRUCT. * @param queryRoot * The bigdata query root. */ private void handleHaving(final ASTQuery astQuery, final QueryBase queryRoot) throws VisitorException { final ASTHavingClause havingClause = astQuery.getHavingClause(); if (havingClause != null) { final HavingNode havingNode = new HavingNode(); final int nchildren = havingClause.jjtGetNumChildren(); for (int i = 0; i < nchildren; i++) { final IValueExpressionNode ve = (IValueExpressionNode) havingClause .jjtGetChild(i).jjtAccept(this, null/* data */); havingNode.addExpr(ve); } queryRoot.setHaving(havingNode); } }
public String toString(final int indent) { final StringBuilder sb = new StringBuilder(); sb.append("\n").append(indent(indent)).append("having"); for (IValueExpressionNode v : this) { sb.append(" "); sb.append(v); } return sb.toString(); }
: queryBase.getHaving().isEmpty() ? null : queryBase .getHaving(); : having.getConstraints();
.getHaving().isEmpty() ? null : queryBase.getHaving(); left = addChunkedMaterializationStep( left, vars, ChunkedMaterializationOp.Annotations.DEFAULT_MATERIALIZE_INLINE_IVS, null /* cutOffLimit */, having.getQueryHints(), ctx);
final IConstraint[] exprs2 = new IConstraint[having.arity()]; int i = 0; for (final IValueExpressionNode node : having) {
: queryBase.getHaving().isEmpty() ? null : queryBase .getHaving(); : having.getConstraints();
.getHaving().isEmpty() ? null : queryBase.getHaving(); left = addChunkedMaterializationStep( left, vars, ChunkedMaterializationOp.Annotations.DEFAULT_MATERIALIZE_INLINE_IVS, null /* cutOffLimit */, having.getQueryHints(), ctx);
final IConstraint[] exprs2 = new IConstraint[having.arity()]; int i = 0; for (final IValueExpressionNode node : having) {
/** * Handle an optional HAVING clause. * * @param astQuery * The AST query node. This is an abstract base class. There are * concrete instances for SELECT, ASK, DESCRIBE, and CONSTRUCT. * @param queryRoot * The bigdata query root. */ private void handleHaving(final ASTQuery astQuery, final QueryBase queryRoot) throws VisitorException { final ASTHavingClause havingClause = astQuery.getHavingClause(); if (havingClause != null) { final HavingNode havingNode = new HavingNode(); final int nchildren = havingClause.jjtGetNumChildren(); for (int i = 0; i < nchildren; i++) { final IValueExpressionNode ve = (IValueExpressionNode) havingClause .jjtGetChild(i).jjtAccept(this, null/* data */); havingNode.addExpr(ve); } queryRoot.setHaving(havingNode); } }
public String toString(final int indent) { final StringBuilder sb = new StringBuilder(); sb.append("\n").append(indent(indent)).append("having"); for (IValueExpressionNode v : this) { sb.append(" "); sb.append(v); } return sb.toString(); }
groupBy.addGroupByVar(z); final HavingNode having = new HavingNode(); having.addExpr(FunctionNode.LT( new FunctionNode(FunctionRegistry.SUM, null, y), new ConstantNode(new XSDNumericIV(10))
/** * Unit test for {@link IGroupByState#isAnyDistinct()) where the DISTINCT * keyword appears within an {@link IAggregate} in the SELECT clause. * <pre> * SELECT SUM(DISTINCT ?y) as ?x * GROUP BY ?z * HAVING ?x > 10 * </pre> */ @SuppressWarnings({ "rawtypes", "unchecked" }) public void test_isAnyDistinct_select() { final VarNode y = new VarNode("y"); final VarNode x = new VarNode("x"); final VarNode z = new VarNode("z"); final Map<String, Object> scalarValues = new HashMap<>(); scalarValues.put(Annotations.DISTINCT, Boolean.TRUE); final IValueExpressionNode xExpr = new FunctionNode(FunctionRegistry.SUM, scalarValues, y); final ProjectionNode select = new ProjectionNode(); select.addExpr(new AssignmentNode(x, xExpr)); final GroupByNode groupBy = new GroupByNode(); groupBy.addGroupByVar(z); final HavingNode having = new HavingNode(); having.addExpr(FunctionNode.GT( x, new ConstantNode(new XSDNumericIV(10)) )); new VerifyAggregates(select, groupBy, having); }
/** * Unit test for {@link IGroupByState#isAnyDistinct()) where the DISTINCT * keyword appears within an {@link IAggregate} in the SELECT clause. * <pre> * SELECT SUM(?y) as ?x * GROUP BY ?z * HAVING SUM(DISTINCT ?y) > 10 * </pre> */ @SuppressWarnings({ "rawtypes", "unchecked" }) public void test_isAnyDistinct_having() { final VarNode y = new VarNode("y"); final VarNode x = new VarNode("x"); final VarNode z = new VarNode("z"); final IValueExpressionNode xExpr = new FunctionNode(FunctionRegistry.SUM, null, y); final ProjectionNode select = new ProjectionNode(); select.addExpr(new AssignmentNode(x, xExpr)); final GroupByNode groupBy = new GroupByNode(); groupBy.addGroupByVar(z); final HavingNode having = new HavingNode(); final Map<String, Object> scalarValues = new HashMap<>(); scalarValues.put(Annotations.DISTINCT, Boolean.TRUE); having.addExpr(FunctionNode.GT( new FunctionNode(FunctionRegistry.SUM, scalarValues, y), new ConstantNode(new XSDNumericIV(10)) )); new VerifyAggregates(select, groupBy, having); }
/** * <pre> * SELECT SUM(?y) as ?x * GROUP BY ?z * HAVING SUM(?y) > 10 * </pre> */ @SuppressWarnings({ "rawtypes", "unchecked" }) public void test_complexHavingClause() { final VarNode y = new VarNode("y"); final VarNode x = new VarNode("x"); final VarNode z = new VarNode("z"); final FunctionNode xExpr = new FunctionNode( FunctionRegistry.SUM, null, y); final ProjectionNode select = new ProjectionNode(); select.addExpr(new AssignmentNode(x, xExpr)); final GroupByNode groupBy = new GroupByNode(); groupBy.addGroupByVar(new VarNode(z)); final HavingNode having = new HavingNode(); having.addExpr(FunctionNode.GT( xExpr, new ConstantNode(new XSDNumericIV(10)) )); new VerifyAggregates(select, groupBy, having); }
/** * <pre> * SELECT SUM(?y) as ?x * GROUP BY ?z * HAVING ?x > 10 * </pre> */ @SuppressWarnings({ "rawtypes", "unchecked" }) public void test_simpleHavingClause() { final VarNode y = new VarNode("y"); final VarNode x = new VarNode("x"); final VarNode z = new VarNode("z"); final IValueExpressionNode xExpr = new FunctionNode( FunctionRegistry.SUM, null, y); final ProjectionNode select = new ProjectionNode(); select.addExpr(new AssignmentNode(x, xExpr)); final GroupByNode groupBy = new GroupByNode(); groupBy.addGroupByVar(z); final HavingNode having = new HavingNode(); having.addExpr(FunctionNode.GT( x, new ConstantNode(new XSDNumericIV(10)) )); new VerifyAggregates(select, groupBy, having); }
Scope.DEFAULT_CONTEXTS)); final HavingNode having = new HavingNode(); expected.setHaving(having); having.addExpr(new FunctionNode( //
groupBy.addGroupByVar(z); final HavingNode having = new HavingNode(); having.addExpr(FunctionNode.LT( new FunctionNode(FunctionRegistry.SUM, null, y), new ConstantNode(new XSDNumericIV(10))
/** * Unit test for {@link IGroupByState#isAnyDistinct()) where the DISTINCT * keyword appears within an {@link IAggregate} in the SELECT clause. * <pre> * SELECT SUM(DISTINCT ?y) as ?x * GROUP BY ?z * HAVING ?x > 10 * </pre> */ @SuppressWarnings({ "rawtypes", "unchecked" }) public void test_isAnyDistinct_select() { final VarNode y = new VarNode("y"); final VarNode x = new VarNode("x"); final VarNode z = new VarNode("z"); final Map<String, Object> scalarValues = new HashMap<>(); scalarValues.put(Annotations.DISTINCT, Boolean.TRUE); final IValueExpressionNode xExpr = new FunctionNode(FunctionRegistry.SUM, scalarValues, y); final ProjectionNode select = new ProjectionNode(); select.addExpr(new AssignmentNode(x, xExpr)); final GroupByNode groupBy = new GroupByNode(); groupBy.addGroupByVar(z); final HavingNode having = new HavingNode(); having.addExpr(FunctionNode.GT( x, new ConstantNode(new XSDNumericIV(10)) )); new VerifyAggregates(select, groupBy, having); }