FunctionNode.add(new FunctionNode(FunctionRegistry.SUM, null,x), z);
/** * Unit test verifies that a constant within a group by clause does not * cause the group by clause to be interpreted as an aggregate. * * <pre> * select ?index * group by (?o + 1 AS ?index) * </pre> */ @SuppressWarnings({ "rawtypes", "unchecked" }) public void test_aggregateExpr_04() { final VarNode index = new VarNode("index"); final VarNode o = new VarNode("o"); final IValueExpressionNode mathExpr = FunctionNode.add( o, new ConstantNode(new XSDNumericIV(1))); final ProjectionNode select = new ProjectionNode(); select.addProjectionVar(index); final GroupByNode groupBy = new GroupByNode(); groupBy.addExpr(new AssignmentNode(index, mathExpr)); final HavingNode having = null; new VerifyAggregates(select, groupBy, having); }
/** * <pre> * SELECT SUM(?x+MIN(?y)) as ?z * GROUP BY ?a * </pre> */ @SuppressWarnings({ "rawtypes", "unchecked" }) public void test_nestedAggregates() { final VarNode a = new VarNode("a"); final VarNode x = new VarNode("x"); final VarNode y = new VarNode("y"); final VarNode z = new VarNode("z"); final IValueExpressionNode zExpr = new FunctionNode(FunctionRegistry.SUM, null, FunctionNode.add(x, new FunctionNode( FunctionRegistry.MIN, null, y))); final ProjectionNode select = new ProjectionNode(); select.addExpr(new AssignmentNode(z, zExpr)); final GroupByNode groupBy = new GroupByNode(); groupBy.addGroupByVar(a); final HavingNode having = null; new VerifyAggregates(select, groupBy, having); }
/** * Verify that a reference to a variable defined by a previous select * expression is allowed and that the select dependency is recognized. * * <pre> * SELECT SUM(?y) as ?z, SUM(?x)+?z as ?a * GROUP BY ?b * </pre> */ @SuppressWarnings({ "rawtypes", "unchecked" }) public void test_reverseReference_allowed_aka_select_dependency() { final VarNode a = new VarNode("a"); final VarNode b = new VarNode("b"); final VarNode x = new VarNode("x"); final VarNode y = new VarNode("y"); final VarNode z = new VarNode("z"); final IValueExpressionNode zExpr = new FunctionNode(FunctionRegistry.SUM, null,y); final IValueExpressionNode aExpr = FunctionNode.add(new FunctionNode(FunctionRegistry.SUM, null,x), z); final ProjectionNode select = new ProjectionNode(); select.addExpr(new AssignmentNode(z, zExpr)); select.addExpr(new AssignmentNode(a, aExpr)); final GroupByNode groupBy = new GroupByNode(); groupBy.addGroupByVar(b); final HavingNode having = null; new VerifyAggregates(select, groupBy, having); }
FunctionNode.add(new FunctionNode(FunctionRegistry.SUM, null,x), z);
/** * Unit test verifies that a constant within a group by clause does not * cause the group by clause to be interpreted as an aggregate. * * <pre> * select ?index * group by (?o + 1 AS ?index) * </pre> */ @SuppressWarnings({ "rawtypes", "unchecked" }) public void test_aggregateExpr_04() { final VarNode index = new VarNode("index"); final VarNode o = new VarNode("o"); final IValueExpressionNode mathExpr = FunctionNode.add( o, new ConstantNode(new XSDNumericIV(1))); final ProjectionNode select = new ProjectionNode(); select.addProjectionVar(index); final GroupByNode groupBy = new GroupByNode(); groupBy.addExpr(new AssignmentNode(index, mathExpr)); final HavingNode having = null; new VerifyAggregates(select, groupBy, having); }
/** * <pre> * SELECT SUM(?x+MIN(?y)) as ?z * GROUP BY ?a * </pre> */ @SuppressWarnings({ "rawtypes", "unchecked" }) public void test_nestedAggregates() { final VarNode a = new VarNode("a"); final VarNode x = new VarNode("x"); final VarNode y = new VarNode("y"); final VarNode z = new VarNode("z"); final IValueExpressionNode zExpr = new FunctionNode(FunctionRegistry.SUM, null, FunctionNode.add(x, new FunctionNode( FunctionRegistry.MIN, null, y))); final ProjectionNode select = new ProjectionNode(); select.addExpr(new AssignmentNode(z, zExpr)); final GroupByNode groupBy = new GroupByNode(); groupBy.addGroupByVar(a); final HavingNode having = null; new VerifyAggregates(select, groupBy, having); }
/** * Verify that a reference to a variable defined by a previous select * expression is allowed and that the select dependency is recognized. * * <pre> * SELECT SUM(?y) as ?z, SUM(?x)+?z as ?a * GROUP BY ?b * </pre> */ @SuppressWarnings({ "rawtypes", "unchecked" }) public void test_reverseReference_allowed_aka_select_dependency() { final VarNode a = new VarNode("a"); final VarNode b = new VarNode("b"); final VarNode x = new VarNode("x"); final VarNode y = new VarNode("y"); final VarNode z = new VarNode("z"); final IValueExpressionNode zExpr = new FunctionNode(FunctionRegistry.SUM, null,y); final IValueExpressionNode aExpr = FunctionNode.add(new FunctionNode(FunctionRegistry.SUM, null,x), z); final ProjectionNode select = new ProjectionNode(); select.addExpr(new AssignmentNode(z, zExpr)); select.addExpr(new AssignmentNode(a, aExpr)); final GroupByNode groupBy = new GroupByNode(); groupBy.addGroupByVar(b); final HavingNode having = null; new VerifyAggregates(select, groupBy, having); }