@Override public void meet(Filter filter) { super.meet(filter); filter.visit(new FilterOptimizer.FilterRelocator(filter) { { filterVars.retainAll(VarNameCollector.process(filter.getArg())); } }); } });
public static void relocate(final Filter filter) { final FilterRelocator fr = new FilterRelocator(filter); filter.visit(fr); }
public static void relocate(Filter filter) { filter.visit(new FilterRelocator(filter)); }
public static void relocate(Filter filter) { filter.visit(new FilterRelocator(filter)); }
private Set<SameTerm> getSameTermConstraints(Filter filter) throws VisitorException { final SameTermCollector collector = new SameTermCollector(); filter.visit(collector); return collector.getCollectedSameTerms(); }
private Set<SameTerm> getSameTermConstraints(Filter filter) throws VisitorException { final SameTermCollector collector = new SameTermCollector(); filter.visit(collector); return collector.getCollectedSameTerms(); }
private Set<SameTerm> getSameTermConstraints(Filter filter) throws VisitorException { final SameTermCollector collector = new SameTermCollector(); filter.visit(collector); return collector.getCollectedSameTerms(); }
@Override public void meet(Filter node) { Set<QueryModelNode> eSet = getQNodes(node); Set<QueryModelNode> compSet = Sets.difference(eSet, sSet); // if index contains filter node and it hasn't already been moved, // move it down // query tree just above position of statement pattern nodes found // in both query tree // and index (assuming that SPBubbleDownVisitor has already been // called) if (sSet.contains(node.getCondition()) && !bubbledFilters.contains(node.getCondition())) { FilterBubbleDownVisitor fbdv = new FilterBubbleDownVisitor(node.clone(), compSet); node.visit(fbdv); bubbledFilters.add(node.getCondition()); // checks if filter correctly placed, and if it has been, // removes old copy of filter if (fbdv.filterPlaced()) { QueryModelNode pNode = node.getParentNode(); TupleExpr cNode = node.getArg(); pNode.replaceChildNode(node, cNode); super.meetNode(pNode); } super.meet(node); } else { super.meet(node); } } }