@Override public void meet(EmptySet node) { if (filter.getParentNode() != null) { // Remove filter from its original location filter.replaceWith(filter.getArg()); } }
@Override public void meet(EmptySet node) { if (filter.getParentNode() != null) { // Remove filter from its original location filter.replaceWith(filter.getArg()); } }
@Override public void meet(final EmptySet node) { if (filter.getParentNode() != null) { // Remove filter from its original location filter.replaceWith(filter.getArg()); } }
final boolean aNeedsNewScope = theFilter.getParentNode() != null && (theFilter.getParentNode() instanceof Join || theFilter.getParentNode() instanceof LeftJoin);
protected void relocate(final Filter filter, final TupleExpr newFilterArg) { if (!filter.getArg().equals(newFilterArg)) { if (filter.getParentNode() != null) { // Remove filter from its original location filter.replaceWith(filter.getArg()); } // Insert filter at the new location newFilterArg.replaceWith(filter); filter.setArg(newFilterArg); } } }
protected void relocate(Filter filter, TupleExpr newFilterArg) { if (filter.getArg() != newFilterArg) { if (filter.getParentNode() != null) { // Remove filter from its original location filter.replaceWith(filter.getArg()); } // Insert filter at the new location newFilterArg.replaceWith(filter); filter.setArg(newFilterArg); } } }
protected void relocate(Filter filter, TupleExpr newFilterArg) { if (filter.getArg() != newFilterArg) { if (filter.getParentNode() != null) { // Remove filter from its original location filter.replaceWith(filter.getArg()); } // Insert filter at the new location newFilterArg.replaceWith(filter); filter.setArg(newFilterArg); } } }
@Override public void meet(Filter filterNode) throws Exception { filterNode.visitChildren(this); if (filterNode.getArg() instanceof AggregationPipelineQueryNode && filterNode.getParentNode() != null) { AggregationPipelineQueryNode pipelineNode = (AggregationPipelineQueryNode) filterNode.getArg(); if (pipelineNode.filter(filterNode.getCondition())) { filterNode.replaceWith(pipelineNode); } } } }
@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); } } }
@Override public void meet(Filter filter) { if (filter.getCondition() instanceof Or && containsSameTerm(filter.getCondition())) { Or orNode = (Or)filter.getCondition(); TupleExpr filterArg = filter.getArg(); ValueExpr leftConstraint = orNode.getLeftArg(); ValueExpr rightConstraint = orNode.getRightArg(); // remove filter filter.replaceWith(filterArg); // Push UNION down below other filters to avoid cloning them TupleExpr node = findNotFilter(filterArg); Filter leftFilter = new Filter(node.clone(), leftConstraint); Filter rightFilter = new Filter(node.clone(), rightConstraint); Union union = new Union(leftFilter, rightFilter); node.replaceWith(union); filter.getParentNode().visit(this); } else { super.meet(filter); } }