@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) ; }
@Override public int hashCode() { int x = getSubOp().hashCode() ; if ( groupVars != null ) x ^= groupVars.hashCode() ; if ( aggregators != null ) x ^= aggregators.hashCode() ; return x ; }
protected QueryIterator execute(OpGroup opGroup, QueryIterator input) { QueryIterator qIter = exec(opGroup.getSubOp(), input) ; qIter = new QueryIterGroup(qIter, opGroup.getGroupVars(), opGroup.getAggregators(), execCxt) ; return qIter ; }
/** * 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; }
public Op getApplicableViews(OpGroup op, RestrictionManagerImpl restrictions) { return new OpGroup(_getApplicableViews(op.getSubOp(), restrictions), op.getGroupVars(), op.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) ; }
public Op getApplicableViews(OpGroup op, RestrictionManagerImpl restrictions) { return new OpGroup(_getApplicableViews(op.getSubOp(), restrictions), op.getGroupVars(), op.getAggregators()); }
public Op _optimize(OpGroup op, RestrictionManagerImpl cnf) { return new OpGroup(optimize(op.getSubOp(), cnf), op.getGroupVars(), op.getAggregators()); }
public static Op _replace(OpGroup op) { return new OpGroup(replace(op.getSubOp()), op.getGroupVars(), op.getAggregators()); }
@Override public void visit(OpGroup opGroup) { opGroup.getSubOp().visit(this); ExprRewriter expRewriter = new ExprRewriter(values); VarExprList groupVars = rewrite(opGroup.getGroupVars()); List<ExprAggregator> aggregators = new ArrayList<>(); for (ExprAggregator ea : opGroup.getAggregators()) { ea.visit(expRewriter); aggregators.add((ExprAggregator) expRewriter.pop()); } push(new OpGroup(pop(), groupVars, aggregators)); }
@Override public void visit(OpGroup opGroup) { opGroup.getSubOp().visit(this); ExprRewriter expRewriter = new ExprRewriter(values); VarExprList groupVars = rewrite(opGroup.getGroupVars()); List<ExprAggregator> aggregators = new ArrayList<>(); for (ExprAggregator ea : opGroup.getAggregators()) { ea.visit(expRewriter); aggregators.add((ExprAggregator) expRewriter.pop()); } push(new OpGroup(pop(), groupVars, aggregators)); }
@Override public void visit(OpGroup opGroup) { List<ExprAggregator> a = opGroup.getAggregators(); // Aggregators are broken up in the algebra, split between a // group and an assignment (extend or assign) using a generated var. // We record them here and insert later. for (ExprAggregator ea : a) { // Substitute generated var for actual Var givenVar = ea.getAggVar().asVar(); // Copy aggregator across (?) Expr myAggr = query.allocAggregate(ea.getAggregator()); varExpression.put(givenVar, myAggr); } VarExprList b = opGroup.getGroupVars(); for (Var v : b.getVars()) { Expr e = b.getExpr(v); if (e != null) { query.addGroupBy(v, e); } else { query.addGroupBy(v); } } opGroup.getSubOp().visit(this); }
opGroup2 = OpGroup.create(opGroup.getSubOp(), varExpr2, aggs2) ; visit1(opGroup2) ;
details.pattern = details.opGroup.getSubOp() ; if ( op instanceof OpFilter ) { details.opHaving = (OpFilter)op ;
OpGroup opGroup = (OpGroup) op; VarExprList varExprList = opGroup.getGroupVars(); return safeToTransform(varsEquality, varExprList) && safeToTransform(joins, varsEquality, opGroup.getSubOp());
OpGroup opGroup = (OpGroup) op; VarExprList varExprList = opGroup.getGroupVars(); return safeToTransform(varsEquality, varExprList) && safeToTransform(joins, varsEquality, opGroup.getSubOp());
OpGroup opGroup = (OpGroup) op; VarExprList varExprList = opGroup.getGroupVars(); return safeToTransform(varsEquality, varExprList) && safeToTransform(varsEquality, opGroup.getSubOp());
@Override public void visit(OpGroup opGroup) { start(opGroup, NoNL) ; writeNamedExprList(opGroup.getGroupVars()) ; if ( !opGroup.getAggregators().isEmpty() ) { // --- Aggregators out.print(" ") ; start() ; out.incIndent() ; boolean first = true ; for ( ExprAggregator agg : opGroup.getAggregators() ) { if ( !first ) { out.print(" ") ; } first = false ; Var v = agg.getVar() ; String str = agg.getAggregator().toPrefixString() ; start() ; out.print(v.toString()) ; out.print(" ") ; out.print(str) ; finish() ; } finish() ; out.decIndent() ; } out.println() ; printOp(opGroup.getSubOp()) ; finish(opGroup) ; }
OpGroup opGroup = (OpGroup) op; VarExprList varExprList = opGroup.getGroupVars(); return safeToTransform(varsEquality, varExprList) && safeToTransform(varsEquality, opGroup.getSubOp());