@Override public void meet(Join join) { super.meet(join); TupleExpr leftArg = join.getLeftArg(); TupleExpr rightArg = join.getRightArg(); if (leftArg instanceof EmptySet || rightArg instanceof EmptySet) { join.replaceWith(new EmptySet()); } else if (leftArg instanceof SingletonSet) { join.replaceWith(rightArg); } else if (rightArg instanceof SingletonSet) { join.replaceWith(leftArg); } }
@Override public void meet(Join join) { super.meet(join); TupleExpr leftArg = join.getLeftArg(); TupleExpr rightArg = join.getRightArg(); if (leftArg instanceof EmptySet || rightArg instanceof EmptySet) { join.replaceWith(new EmptySet()); } else if (leftArg instanceof SingletonSet) { join.replaceWith(rightArg); } else if (rightArg instanceof SingletonSet) { join.replaceWith(leftArg); } }
@Override public void meet(Join node) { List<TupleExpr> reOrder = reOrderMap.get(node); if (reOrder != null) { List<Filter> filterList = Lists.newArrayList(filterArgs.get(node)); node.replaceWith(getNewJoin(reOrder, getFilterChain(filterList))); for (TupleExpr te : reOrder) { if (!(te instanceof StatementPattern) && !(te instanceof ExternalTupleSet)) { te.visit(this); } } } super.meet(node); } }
node.replaceWith(replacement); } finally { boundVars = origBoundVars;
node.replaceWith(replacement); } finally { boundVars = origBoundVars;
node.replaceWith(replacement); node.replaceWith(priorityJoins);
node.replaceWith(partialQuery);
node.replaceWith(replacement); node.replaceWith(priorityJoins);
node.replaceWith(set); indexPlaced = true; return;
@Override public void meet(Join node) { try { if (node.getLeftArg() instanceof FixedStatementPattern && node.getRightArg() instanceof DoNotExpandSP) { return; } List<TupleExpr> joinArgs = getJoinArgs(node, new ArrayList<TupleExpr>()); HashMultimap<String, StatementPattern> varMap = getVarBins(joinArgs); while (!varMap.keySet().isEmpty()) { String s = getHighestPriorityKey(varMap); constructTuple(varMap, joinArgs, s); } List<TupleExpr> filterChain = getFilterChain(joinArgs); for (TupleExpr te : joinArgs) { if (!(te instanceof StatementPattern) || !(te instanceof EntityTupleSet)) { te.visit(this); } } // Replace old join hierarchy node.replaceWith(getNewJoin(joinArgs, filterChain)); } catch (Exception e) { e.printStackTrace(); } }
join.replaceWith(new EmptySet()); join.replaceWith(rightArg); join.replaceWith(leftArg); Join rightJoin = new Join(union.getRightArg(), rightArg.clone()); Union newUnion = new Union(leftJoin, rightJoin); join.replaceWith(newUnion); newUnion.visit(this); Join rightJoin = new Join(leftArg.clone(), union.getRightArg()); Union newUnion = new Union(leftJoin, rightJoin); join.replaceWith(newUnion); newUnion.visit(this); join.replaceWith(leftJoin); join.setLeftArg(leftJoin.getLeftArg()); leftJoin.setLeftArg(join); join.replaceWith(leftJoin); join.setRightArg(leftJoin.getLeftArg()); leftJoin.setLeftArg(join);
join.replaceWith(new EmptySet()); join.replaceWith(rightArg); join.replaceWith(leftArg); Join rightJoin = new Join(union.getRightArg(), rightArg.clone()); Union newUnion = new Union(leftJoin, rightJoin); join.replaceWith(newUnion); newUnion.visit(this); Join rightJoin = new Join(leftArg.clone(), union.getRightArg()); Union newUnion = new Union(leftJoin, rightJoin); join.replaceWith(newUnion); newUnion.visit(this); join.replaceWith(leftJoin); join.setLeftArg(leftJoin.getLeftArg()); leftJoin.setLeftArg(join); join.replaceWith(leftJoin); join.setRightArg(leftJoin.getLeftArg()); leftJoin.setLeftArg(join);
@Override public void meet(final Join node) throws Exception { super.meet(node); final TupleExpr leftArg = node.getLeftArg(); final TupleExpr rightArg = node.getRightArg(); /** * if join(join(1, 2), join(3,4)) * should be: * join(join(join(1,2), 3), 4) */ if (leftArg instanceof Join && rightArg instanceof Join) { final Join leftJoin = (Join) leftArg; final Join rightJoin = (Join) rightArg; final TupleExpr right_LeftArg = rightJoin.getLeftArg(); final TupleExpr right_rightArg = rightJoin.getRightArg(); final Join inner = new Join(leftJoin, right_LeftArg); final Join outer = new Join(inner, right_rightArg); node.replaceWith(outer); } } }
node.replaceWith(outer);
join.replaceWith(pipelineNode);