/** * <code>BIND(expression AS variable)</code> * * @param valueNode * The expression * @param varNode * The variable. */ protected AssignmentNode bind(final IValueExpressionNode valueNode, final VarNode varNode) { return new AssignmentNode(varNode, valueNode); }
/** * The variable onto which the assignment is bound (as a {@link VarNode}). * * @return For <code>BIND(valueExpr AS ?var)</code> this returns * <code>?var</code> as a {@link VarNode}. */ public VarNode getVarNode() { return (VarNode) get(0); }
(AssignmentNode) groupByNode.get(0); if (assignmentNodeInGroupBy.arity() != 2 || !(assignmentNodeInGroupBy.get(0) instanceof VarNode) || !(assignmentNodeInGroupBy.get(1) instanceof VarNode)) { return; // something's wrong here groupingVar = (VarNode) assignmentNodeInGroupBy.get(1); (VarNode) assignmentNodeInGroupBy.get(0); curNode.getValueExpressionNode(); .getValueExpressionNode(); if (!(curNode.get(0) instanceof VarNode)) { return; // first exp of assignment node is assigned var countNodeVar = (VarNode) curNode.get(0); indexOfCountNode = i; final ProjectionNode projection = new ProjectionNode(); final AssignmentNode assignemntNode = new AssignmentNode(groupingVar, groupingVar); projection.addArg(assignemntNode); projection.setDistinct(true); projectionNode.setArg(indexOfCountNode, new AssignmentNode( new VarNode(countNodeVar), new VarNode(countNodeVar)));
new StaticAnalysis(new QueryRoot(QueryType.SELECT), null); assertEquals(requiredBoundAn1, an1.getRequiredBound(sa)); assertEquals(desiredBoundAn1, an1.getDesiredBound(sa)); assertEquals(requiredBoundAn2, an2.getRequiredBound(sa)); assertEquals(desiredBoundAn2, an2.getDesiredBound(sa)); assertEquals(requiredBoundAn3, an3.getRequiredBound(sa)); assertEquals(desiredBoundAn3, an3.getDesiredBound(sa));
final IValueExpression<?> ve = an.getValueExpression(); an.args().get(1) instanceof ConstantNode) { final IVariable<?> boundVar = an.getVar(); bs.set(boundVar, (IConstant)an.getValueExpression()); staticBindingInfo.addProduced(bs); new InlineTasks( boundVar, (IConstant) an.getValueExpression(), usageInfo.getVarUsages(boundVar)));
if (assignmentNodeInGroupBy.arity() != 2 || !(assignmentNodeInGroupBy.get(0) instanceof VarNode) || !(assignmentNodeInGroupBy.get(1) instanceof VarNode)) { return; // something's wrong here groupingVar = (VarNode) assignmentNodeInGroupBy.get(1); (VarNode) assignmentNodeInGroupBy.get(0); curNode.getValueExpressionNode(); .getValueExpressionNode(); if (!(curNode.get(0) instanceof VarNode)) { return; // first exp of assignment node is assigned var countNodeVar = (VarNode) curNode.get(0); indexOfCountNode = i; final ProjectionNode projection = new ProjectionNode(); final AssignmentNode assignemntNode = new AssignmentNode(groupingVar, groupingVar); projection.addArg(assignemntNode); projection.setDistinct(true); projectionNode.setArg(indexOfCountNode, new AssignmentNode( new VarNode(countNodeVar), new VarNode(countNodeVar)));
new StaticAnalysis(new QueryRoot(QueryType.SELECT), null); assertEquals(requiredBoundAn1, an1.getRequiredBound(sa)); assertEquals(desiredBoundAn1, an1.getDesiredBound(sa)); assertEquals(requiredBoundAn2, an2.getRequiredBound(sa)); assertEquals(desiredBoundAn2, an2.getDesiredBound(sa)); assertEquals(requiredBoundAn3, an3.getRequiredBound(sa)); assertEquals(desiredBoundAn3, an3.getDesiredBound(sa));
final IValueExpression<?> ve = an.getValueExpression(); an.args().get(1) instanceof ConstantNode) { final IVariable<?> boundVar = an.getVar(); bs.set(boundVar, (IConstant)an.getValueExpression()); staticBindingInfo.addProduced(bs); new InlineTasks( boundVar, (IConstant) an.getValueExpression(), usageInfo.getVarUsages(boundVar)));
/** * <code>BIND(expression AS variable)</code> * * @param valueNode * The expression * @param varNode * The variable. */ protected AssignmentNode bind(final IValueExpressionNode valueNode, final VarNode varNode) { return new AssignmentNode(varNode, valueNode); }
new StaticAnalysis(new QueryRoot(QueryType.SELECT), null); assertEquals(requiredBoundAn1, an1.getRequiredBound(sa)); assertEquals(desiredBoundAn1, an1.getDesiredBound(sa)); assertEquals(requiredBoundAn2, an2.getRequiredBound(sa)); assertEquals(desiredBoundAn2, an2.getDesiredBound(sa)); assertEquals(requiredBoundAn3, an3.getRequiredBound(sa)); assertEquals(desiredBoundAn3, an3.getDesiredBound(sa));
/** * {@inheritDoc} * * TODO Review. I believe that AssignmentNode.getValueExpression() should * always return the Bind(). Right now it only returns the RIGHT argument. * This assumption is build into the GROUP_BY handling in * {@link AST2BOpUtility}. */ @Override public IValueExpressionNode getValueExpressionNode() { return (IValueExpressionNode) get(1); }
/** * Adds a variable to be projected. The variable is modeled as an assignment * of itself to itself, so everything in the projection node winds up * looking like an assignment. * * @param var * The variable. */ public void addProjectionVar(final VarNode var) { addExpr(new AssignmentNode(var, var)); }
/** * {@inheritDoc} * * TODO Review. I believe that AssignmentNode.getValueExpression() should * always return the Bind(). Right now it only returns the RIGHT argument. * This assumption is build into the GROUP_BY handling in * {@link AST2BOpUtility}. */ @Override public IValueExpressionNode getValueExpressionNode() { return (IValueExpressionNode) get(1); }
/** * Adds a variable to be projected. The variable is modeled as an assignment * of itself to itself, so everything in the projection node winds up * looking like an assignment. * * @param var * The variable. */ public void addProjectionVar(final VarNode var) { addExpr(new AssignmentNode(var, var)); }
/** * The variable onto which the assignment is bound (as a {@link VarNode}). * * @return For <code>BIND(valueExpr AS ?var)</code> this returns * <code>?var</code> as a {@link VarNode}. */ public VarNode getVarNode() { return (VarNode) get(0); }
/** * <code>BIND(expression AS variable)</code> * * @param valueNode * The expression * @param varNode * The variable. */ protected AssignmentNode bind(final IValueExpressionNode valueNode, final VarNode varNode) { return new AssignmentNode(varNode, valueNode); }
@Override public int replaceAllWith(final BOp oldVal, final BOp newVal) { if (oldVal.equals(get(0)) && !(newVal instanceof VarNode)) { return 0; } return super.replaceAllWith(oldVal, newVal); }
public void addGroupByVar(final VarNode var) { addExpr(new AssignmentNode(var, var)); }
@Override public int replaceAllWith(final BOp oldVal, final BOp newVal) { if (oldVal.equals(get(0)) && !(newVal instanceof VarNode)) { return 0; } return super.replaceAllWith(oldVal, newVal); }
public void addGroupByVar(final VarNode var) { addExpr(new AssignmentNode(var, var)); }