public Op getApplicableViews(OpGroup op, RestrictionManagerImpl restrictions) { return new OpGroup(_getApplicableViews(op.getSubOp(), restrictions), op.getGroupVars(), op.getAggregators()); }
@Override public Op transform(OpGroup opGroup, Op subOp) { VarExprList groupVars = opGroup.getGroupVars(); VarExprList groupVars2 = NodeTransformLib.transformVars(transform, groupVars); if ( groupVars2 == groupVars ) return super.transform(opGroup, subOp); return OpGroup.create(subOp, groupVars2, opGroup.getAggregators()); } }
protected QueryIterator execute(OpGroup opGroup, QueryIterator input) { QueryIterator qIter = exec(opGroup.getSubOp(), input) ; qIter = new QueryIterGroup(qIter, opGroup.getGroupVars(), opGroup.getAggregators(), execCxt) ; return qIter ; }
@Override public default void visit(OpGroup opGroup) { visitVarExpr(opGroup.getGroupVars()) ; visitAggregators(opGroup.getAggregators()) ; visit1(opGroup); }
boolean changed = false ; VarExprList varExpr = opGroup.getGroupVars() ; VarExprList varExpr2 = collect(varExpr) ; if ( varExpr != varExpr2 ) changed = true ; List<ExprAggregator> aggs = opGroup.getAggregators() ; List<ExprAggregator> aggs2 = aggs ; opGroup2 = OpGroup.create(opGroup.getSubOp(), varExpr2, aggs2) ; visit1(opGroup2) ;
VarExprList varExprList = opGroup.getGroupVars(); return safeToTransform(varsEquality, varExprList) && safeToTransform(joins, varsEquality, opGroup.getSubOp());
@Override public void visit(OpGroup opGroup) { Collection<Var> vars = new ArrayList<>(); for (Var var : opGroup.getGroupVars().getVars()) { vars.add(var); ExprVars.varsMentioned(vars, opGroup.getGroupVars().getExpr(var)); } }
@Override public boolean equalTo(Op other, NodeIsomorphismMap labelMap) { if ( ! (other instanceof OpGroup) ) return false ; OpGroup opGroup = (OpGroup)other ; if ( ! Objects.equals(groupVars, opGroup.groupVars) ) return false ; if ( ! Objects.equals(aggregators, opGroup.aggregators) ) return false ; return getSubOp().equalTo(opGroup.getSubOp(), labelMap) ; }
public static OpGroup create(Op subOp, VarExprList groupVars, List<ExprAggregator> aggregators) { return new OpGroup(subOp, groupVars, aggregators); }
Op op = OpGroup.create(sub,vars, aggregators) ; return op ;
/** * The aggregators need to be wrapped with an appropriate term ctor. * E.g. count(*) -> typedLiteral(count(*), xsd:long) * * @param op * @return */ public Mapping rewrite(OpGroup op) { Mapping a = rewrite(op.getSubOp()); Mapping result = ops.groupBy(a, op.getGroupVars(), op.getAggregators()); return result; }
void info() { if ( opSlice != null ) System.out.printf("slice: (%d, %d)\n", opSlice.getStart(), opSlice.getLength()) ; if ( opDistinct != null ) System.out.printf("distinct\n") ; if ( opReduced != null ) System.out.printf("reduced\n") ; if ( opProject != null ) System.out.printf("project: %s\n", opProject.getVars()) ; if ( opOrder != null ) System.out.printf("order: %s\n", opOrder.getConditions()) ; if ( opHaving != null ) System.out.printf("having: %s\n", opHaving.getExprs()) ; if ( opExtends != null && !opExtends.isEmpty() ) { List<VarExprList> z = opExtends.stream().map(x -> x.getVarExprList()).collect(Collectors.toList()) ; System.out.printf("assigns: %s\n", z) ; } if ( opGroup != null ) { List<ExprAggregator> aggregators = opGroup.getAggregators() ; List<Var> aggVars = aggregators.stream().map(x -> x.getAggVar().asVar()).collect(Collectors.toList()) ; System.out.printf("group: %s |-| %s\n", opGroup.getGroupVars(), opGroup.getAggregators()) ; System.out.printf("group agg vars: %s\n", aggVars) ; } }
VarExprList varExprList = opGroup.getGroupVars(); return safeToTransform(varsEquality, varExprList) && safeToTransform(joins, varsEquality, opGroup.getSubOp());
@Override public void visit(OpGroup opGroup) { // Only the group variables are visible. // So not the subOp, and not expressions. VarExprList varExprs = opGroup.getGroupVars() ; varExprs.forEachVar((v)->addVar(defines, v)) ; }
@Override public int hashCode() { int x = getSubOp().hashCode() ; if ( groupVars != null ) x ^= groupVars.hashCode() ; if ( aggregators != null ) x ^= aggregators.hashCode() ; return x ; }
@Override public Op1 copy(Op subOp) { return new OpGroup(subOp, groupVars, aggregators) ; }
op = OpGroup.create(op, query.getGroupBy(), query.getAggregators()) ;
public static Op _optimize(OpGroup op, Set<Set<Expr>> cnf) { return new OpGroup(optimize(op.getSubOp(), cnf), op.getGroupVars(), op.getAggregators()); }
@Override public void visit(OpGroup opGroup) { Table table = eval(opGroup.getSubOp()) ; table = evaluator.groupBy(table, opGroup.getGroupVars(), opGroup.getAggregators()) ; push(table) ; }
@Override public void visit(OpGroup op) { List<ExprAggregator> exprAggs = op.getAggregators(); Multimap<Var, Var> updates = HashMultimap.create(); exprAggs.forEach(ea -> { Var v = ea.getVar(); ExprList el = ea.getAggregator().getExprList(); Set<Var> vars = ExprVars.getVarsMentioned(el); Set<Var> origVars = MultimapUtils.getAll(varDeps, vars); // It is possible that a variable did not occurr in the sub tree under investigation // in that case add it to the mapping if(origVars.isEmpty()) { origVars = Collections.singleton(v); } //referencedVars.addAll(origVars); updates.putAll(v, origVars); }); updates.asMap().forEach((k, w) -> { nonUnique.addAll(w); varDeps.replaceValues(k, w); }); VarExprList groupVars = op.getGroupVars(); processExtend(groupVars); }