public static Op _optimize(OpOrder op, Set<Set<Expr>> cnf) { return new OpOrder(optimize(op.getSubOp(), cnf), op.getConditions()); }
@Override public boolean equalTo(Op other, NodeIsomorphismMap labelMap) { if ( ! (other instanceof OpOrder) ) return false ; OpOrder opOrder = (OpOrder)other ; if ( ! opOrder.getConditions().equals(this.getConditions()) ) return false ; // return getSubOp().equalTo(opOrder.getSubOp(), labelMap) ; }
/** * rewrites the subop of order. */ @Override public void visit(final OpOrder opOrder) { if (LOG.isDebugEnabled()) { LOG.debug("Starting visiting OpOrder"); } addOp(new OpOrder(rewriteOp1(opOrder), opOrder.getConditions())); }
@Override public void visit(OpOrder opOrder) { ExprVars.varsMentioned(acc, opOrder.getConditions()) ; } }
@Override public Op1 copy(Op subOp) { return new OpOrder(subOp, conditions) ; }
@Override public int hashCode() { return conditions.hashCode() ^ getSubOp().hashCode() ; }
protected QueryIterator execute(OpOrder opOrder, QueryIterator input) { QueryIterator qIter = exec(opOrder.getSubOp(), input) ; qIter = new QueryIterSort(qIter, opOrder.getConditions(), execCxt) ; return qIter ; }
protected boolean isSafe(Set<Var> projectVars, OpOrder opOrder) { Set<Var> seenVars = new HashSet<>(); // For the optimization to be safe all project variables must appear in // the ordering prior to any unprojected variables // Ordering by expressions is fine provided they use only projected // variables boolean ok = true; for (SortCondition cond : opOrder.getConditions()) { if (!isValidSortCondition(cond, projectVars, seenVars)) { ok = false; break; } // As soon as we've seen all variables we know this is safe and any // further sort conditions are irrelevant if (seenVars.size() == projectVars.size()) return true ; } // The projects vars must all have been seen. return (seenVars.size() == projectVars.size()) ; }
for (SortCondition cond : opOrder.getConditions()) { ExprVars.varsMentioned(vars, cond.getExpression()); conditions = processConditions(opOrder.getConditions(), conditions, var); this.tracker.getAssignments().remove(var); return new OpOrder(subOp, conditions);
@Override public Op make(ItemList list) { BuilderLib.checkLength(3, list, "Order") ; ItemList conditions = list.get(1).getList() ; // Maybe tagged (asc, desc or a raw expression) List<SortCondition> x = new ArrayList<>() ; for ( int i = 0 ; i < conditions.size() ; i++ ) { //int direction = Query.ORDER_DEFAULT ; Item item = conditions.get(i) ; SortCondition sc = scBuilder(item) ; x.add(sc) ; } Op sub = build(list, 2) ; Op op = new OpOrder(sub, x) ; return op ; } } ;
op = details.opOrder.getSubOp() ;
public Op getApplicableViews(OpOrder op, RestrictionManagerImpl restrictions) { return new OpOrder(_getApplicableViews(op.getSubOp(), restrictions), op.getConditions()); }
@Override public void visit(OpOrder opOrder) { mergeVars(opOrder.getSubOp()) ; opOrder.getConditions().forEach(sc-> { sc.getExpression() ; }); }
@Override public void visit(OpOrder opOrder) { Collection<Var> vars = new ArrayList<>(); for (SortCondition condition : opOrder.getConditions()) { ExprVars.varsMentioned(vars, condition); } action(vars); }
public Mapping rewrite(OpTopN op) { // We convert this 'back' into an order by followed by limit Op sub = op.getSubOp(); OpOrder inner = new OpOrder(sub, op.getConditions()); OpSlice outer = new OpSlice(inner, 0, op.getLimit()); Mapping result = rewrite(outer); return result; }
public Op getApplicableViews(OpOrder op, RestrictionManagerImpl restrictions) { return new OpOrder(_getApplicableViews(op.getSubOp(), restrictions), op.getConditions()); }
public Mapping rewrite(OpOrder op) { // If the op is a union, we try to sort the members based on their prefix // constraints Mapping a = rewrite(op.getSubOp()); List<SortCondition> sortConditions = op.getConditions(); Mapping result = ops.order(a, sortConditions); return result; }
@Override public default void visit(OpOrder opOrder) { visitSortConditions(opOrder.getConditions()) ; visitModifer(opOrder); }
op = new OpOrder(op, scList) ;
public static Op _replace(OpOrder op) { return new OpOrder(replace(op.getSubOp()), op.getConditions()); }