private VarExprList processVarExprList(VarExprList exprs, ExprTransform transform) { VarExprList newExprs = new VarExprList(); for (Var v : exprs.getVars()) { Expr e = exprs.getExpr(v); Expr e2 = ExprTransformer.transform(transform, e); newExprs.add(v, e2); } return newExprs; }
@Override public void build() { for (Map.Entry<Var,Expr> entry : query.getProject().getExprs().entrySet()) { if (aggMap.containsKey(entry.getKey())) { entry.setValue( aggMap.get(entry.getKey())); } } }
public boolean hasGroupBy() { return ! groupVars.isEmpty() || getAggregators().size() > 0 ; } public boolean hasHaving() { return havingExprs != null && havingExprs.size() > 0 ; }
VarExprList retval = new VarExprList(); for (Var v : lst.getVars()) { Node n = values.get(v); if (n != null) { if (n.isVariable()) { retval.add(Var.alloc(n)); retval.add(v); for (Map.Entry<Var, Expr> entry : lst.getExprs().entrySet()) { Expr target = ExprUtils.nodeToExpr(entry.getKey()); Node n = values.get(entry.getKey()); retval.add(v, e);
/** * Add all the variables from the select handler variable. * * @param selectHandler * The select handler to copy the variables from. */ public void addAll(SelectHandler selectHandler) { setReduced(selectHandler.query.isReduced()); setDistinct(selectHandler.query.isDistinct()); query.setQueryResultStar(selectHandler.query.isQueryResultStar()); VarExprList shProjectVars = selectHandler.query.getProject(); VarExprList qProjectVars = query.getProject(); for (Var var : shProjectVars.getVars()) { // make sure there are no duplicates if (!qProjectVars.contains(var)) { qProjectVars.add(var, shProjectVars.getExpr(var)); } } aggHandler.addAll( selectHandler.aggHandler ); }
final VarExprList lstExpr = query.getGroupBy(); String grpVar = ""; for (Var expr : lstExpr.getVars()) { grpVar = expr.getName();
public VarExprList(Var var, Expr expr) { this() ; add(var, expr) ; }
private static void _addVar(VarExprList varExprList, Var v) { if ( varExprList.contains(v) ) { Expr expr = varExprList.getExpr(v) ; if ( expr != null ) // SELECT (?a+?b AS ?x) ?x throw new QueryBuildException("Duplicate variable (had an expression) in result projection '"+v+"'") ; // SELECT ?x ?x if ( ! ARQ.allowDuplicateSelectColumns ) return ; // else drop thorugh and have two variables of the same name. } varExprList.add(v) ; }
private static void transformVarExprList(VarExprList varExprList, ExprTransform exprTransform) { Map<Var, Expr> map = varExprList.getExprs(); for (Var v : varExprList.getVars()) { Expr e = varExprList.getExpr(v); ExprVar ev = new ExprVar(v); Expr ev2 = exprTransform.transform(ev); if (ev != ev2) { if (e != null) throw new ARQException("Can't substitute " + v + " because it's used as an AS variable"); if (ev2.isConstant() || ev2.isVariable()) { // Convert to (substitute value AS ?var) map.put(v, ev2); continue; } else throw new ARQException("Can't substitute " + v + " because it's not a simple value: " + ev2); } if (e == null) continue; // Didn't change the variable. Expr e2 = ExprTransformer.transform(exprTransform, e); if (e != e2) // replace map.put(v, e2); } }
VarExprList veList = new VarExprList(); veList.add(entry.getValue(), new ExprVar(entry.getKey())); veList.add(entry.getKey(), NodeValue.makeNode(node)); if(!veList.isEmpty()) { b = OpExtend.extend(b, veList);
/** Make a OpExtend - this does not aggregate (extend .. (extend ...)) */ public static Op create(Op op, Var var, Expr expr) { VarExprList x = new VarExprList() ; x.add(var, expr) ; return new OpExtend(op, x) ; }
/** Create an OpExtend or add to an existing one. * This operation collapses what would otherwise be stacks * of OpExtend. */ static public Op extend(Op op, VarExprList exprs) { if ( !(op instanceof OpExtend) ) return create(op, exprs) ; OpExtend opExtend = (OpExtend)op ; for (Var var : exprs.getVars()) { if ( opExtend.assignments.contains(var) ) return create(op, exprs) ; } opExtend.assignments.addAll(exprs) ; return opExtend ; }
public QueryIterAssign(QueryIterator input, VarExprList exprs, ExecutionContext qCxt, boolean mustBeNewVar) { // mustBeNewVar : any variable introduced must not already exist. // true => BIND // false => LET // Syntax checking of BIND should have assured this. super(input, qCxt) ; this.exprs = exprs ; this.mustBeNewVar = mustBeNewVar ; }