/** Find the current OpQuadPattern, or return null. */ private static OpQuadPattern getQuads(Op op) { if ( op instanceof OpQuadPattern ) return (OpQuadPattern)op ; if ( op instanceof OpSequence ) { // Is last in OpSequence an BGP? OpSequence opSeq = (OpSequence)op ; List<Op> x = opSeq.getElements() ; if ( x.size() > 0 ) { Op opTop = x.get(x.size() - 1) ; if ( opTop instanceof OpQuadPattern ) return (OpQuadPattern)opTop ; // Drop through } } return null ; }
/** Find the current OpQuadPattern, or return null. */ private static OpQuadPattern getQuads(Op op) { if (op instanceof OpQuadPattern) return (OpQuadPattern) op; if (op instanceof OpSequence) { // Is last in OpSequence an BGP? OpSequence opSeq = (OpSequence) op; List<Op> x = opSeq.getElements(); if (x.size() > 0) { Op opTop = x.get(x.size() - 1); if (opTop instanceof OpQuadPattern) return (OpQuadPattern) opTop; // Drop through } } // Can't find. return null; }
/** Find the current OpBGP, or return null. */ private static OpBGP getBGP(Op op) { if ( op instanceof OpBGP ) return (OpBGP)op ; if ( op instanceof OpSequence ) { // Is last in OpSequence an BGP? OpSequence opSeq = (OpSequence)op ; List<Op> x = opSeq.getElements() ; if ( x.size() > 0 ) { Op opTop = x.get(x.size() - 1) ; if ( opTop instanceof OpBGP ) return (OpBGP)opTop ; // Drop through } } // Can't find. return null ; }
/** Find the current OpBGP, or return null. */ private static OpBGP getBGP(Op op) { if (op instanceof OpBGP) return (OpBGP) op; if (op instanceof OpSequence) { // Is last in OpSequence an BGP? OpSequence opSeq = (OpSequence) op; List<Op> x = opSeq.getElements(); if (x.size() > 0) { Op opTop = x.get(x.size() - 1); if (opTop instanceof OpBGP) return (OpBGP) opTop; // Drop through } } // Can't find. return null; }
@Override public void visit(OpSequence opSequence) { for ( Op op : opSequence.getElements() ) mergeVars(op); }
@Override public void visit(OpSequence op) { // for(Op subOp : op.getElements()) { // subOp.visit(this); // } // // Collection<Op> children = tree.getChildren(op); processJoin(op, op.getElements()); }
@Override public void visit(OpSequence op) { // for(Op subOp : op.getElements()) { // subOp.visit(this); // } // // Collection<Op> children = tree.getChildren(op); processJoin(op, op.getElements()); }
public Op getApplicableViews(OpSequence op, RestrictionManagerImpl restrictions) { List<Op> members = op.getElements(); List<Op> newMembers = new ArrayList<Op>(members.size()); for(Op member : members) { Op newMember = _getApplicableViews(member, restrictions); newMembers.add(newMember); } Op result = OpSequence.create().copy(newMembers); return result; }
public static Op _replace(OpSequence op) { List<Op> members = op.getElements(); List<Op> newMembers = new ArrayList<Op>(members.size()); for(Op member : members) { Op newMember = replace(member); newMembers.add(newMember); } Op result = OpSequence.create().copy(newMembers); return result; }
@Override public void visit(OpSequence opSequence) { List<Op> lst = rewriteOpList(opSequence.getElements()); push(opSequence.copy(lst)); }
@Override public void visit(OpSequence opSequence) { List<Op> lst = rewriteOpList(opSequence.getElements()); push(opSequence.copy(lst)); }
public Mapping rewrite(OpSequence op) { List<Op> members = op.getElements(); if(members.isEmpty()) { MappingOpsImpl.createEmptyMapping(); } Mapping a = null; for(Op member : members) { Mapping b = rewrite(member); if(a == null) { a = b; } else { a = ops.join(a, b); } } return a; }
public Op _optimize(OpSequence op, RestrictionManagerImpl cnf) { List<Op> members = op.getElements(); List<Op> newMembers = new ArrayList<Op>(members.size()); Set<Clause> intersection = new HashSet<Clause>(); for(Op member : members) { RestrictionManagerImpl restrictions = filterByVars(cnf, member); Op newMember = optimize(member, restrictions); newMembers.add(newMember); Set<Clause> tmp = Sets.intersection(restrictions.getCnf(), intersection); intersection = new HashSet<Clause>(tmp); } Set<Clause> remaining = Sets.difference(cnf.getCnf(), intersection); Op result = OpSequence.create().copy(newMembers); if(!remaining.isEmpty()) { //result = OpFilter.filter(cnfToExprList(remaining), result); result = OpFilterIndexed.filter(new RestrictionManagerImpl(new NestedNormalForm(remaining)), result); } return result; }
private static Op transformFilterSequence(ExprList exprs, Set<Var> varScope, OpSequence opSequence) { List<Op> ops = opSequence.getElements(); // Any filters that depend on no variables. Op op = insertAnyFilter(exprs, varScope, null); for ( Op seqElt : ops ) { // Process the sequence element. This may insert filters (sequence // or BGP) seqElt = transform( exprs, varScope, seqElt ); // Merge into sequence. op = OpSequence.create( op, seqElt ); // Place any filters now ready. op = insertAnyFilter( exprs, varScope, op ); } return op; }
private Placement placeSequence(ExprList exprsIn, OpSequence opSequence) { ExprList exprs = ExprList.copy(exprsIn) ; Set<Var> varScope = new HashSet<>() ; List<Op> ops = opSequence.getElements() ; Op op = null ; for ( Op op1 : ops ) { op = insertAnyFilter$( exprs, varScope, op ); Op seqElt = op1; Placement p = transform( exprs, seqElt ); if ( isChange(p) ) { exprs = p.unplaced; seqElt = p.op; } varScope.addAll( fixedVars( seqElt ) ); op = OpSequence.create( op, seqElt ); } return result(op, exprs) ; }
public static void add(OpSequence dest, Op op) { if(op instanceof OpSequence) { OpSequence o = (OpSequence)op; for(Op subOp : o.getElements()) { dest.add(subOp); } } else if(op instanceof OpJoin) { OpJoin o = (OpJoin)op; dest.add(o.getLeft()); dest.add(o.getRight()); } else { dest.add(op); } } }
public static void add(OpSequence dest, Op op) { if(op instanceof OpSequence) { OpSequence o = (OpSequence)op; for(Op subOp : o.getElements()) { dest.add(subOp); } } else if(op instanceof OpJoin) { OpJoin o = (OpJoin)op; dest.add(o.getLeft()); dest.add(o.getRight()); } else { dest.add(op); } } }
@Override public void visit(OpSequence opSequence) { ElementGroup g = currentGroup() ; boolean nestGroup = !g.isEmpty() ; if ( nestGroup ) { startSubGroup() ; g = currentGroup() ; } for ( Op op : opSequence.getElements() ) { Element e = asElement(op) ; insertIntoGroup(g, e) ; } if ( nestGroup ) endSubGroup() ; return ; }
} else if(op instanceof OpSequence) { OpSequence x = (OpSequence)op; for(Op element : x.getElements()) { collectQuads(element, result);
for(Op element : x.getElements()) { collectExprs(element, result);