@Override public Expr copy(final QueryContext qc, final VarScope scp, final IntObjMap<Var> vs) { final Var v = scp.addCopy(var, qc); vs.put(var.id, v); final Spec spec = new Spec(info, v, expr.copy(qc, scp, vs), coll); spec.occluded = occluded; return spec; }
@Override public void plan(final FElem plan) { final FElem e = planElem(); for (final Spec spec : specs) spec.plan(e); plan.add(e); }
@Override public GroupBy compile(final QueryContext qc, final VarScope sc) throws QueryException { for (final Expr e : preExpr) e.compile(qc, sc); for (final Spec b : specs) b.compile(qc, sc); return optimize(qc, sc); }
@Override public boolean removable(final Var var) { for (final Spec b : specs) if (!b.removable(var)) return false; return true; }
@Override public boolean has(final Flag flag) { for (final Spec sp : specs) if (sp.has(flag)) return true; return false; }