public PropertyPattern<F, C, T> capturedAs(Capture<T> capture) { Pattern<T> matchAll = (Pattern<T>) Pattern.any(); return matching(matchAll.capturedAs(capture)); }
@Override public String toString() { DefaultPrinter printer = new DefaultPrinter(); accept(printer); return printer.result(); } }
@Override public <T> Match<T> match(Pattern<T> pattern, Object object, Captures captures) { if (pattern.previous() != null) { Match<?> match = match(pattern.previous(), object, captures); return match.flatMap((value) -> pattern.accept(this, value, match.captures())); } else { return pattern.accept(this, object, captures); } }
@Override public void visitWith(WithPattern<?> pattern) { visitPrevious(pattern); appendLine("with(%s)", pattern.getProperty().getName()); level += 1; pattern.getPattern().accept(this); level -= 1; }
public static Property<LateralJoinNode, Lookup, PlanNode> subquery() { return property("subquery", LateralJoinNode::getSubquery); } }
@Override public Pattern<PlanNode> getPattern() { return Pattern.typeOf(PlanNode.class); }
@Override public void accept(PatternVisitor patternVisitor) { patternVisitor.visitCapture(this); } }
public PropertyPattern<F, T> capturedAs(Capture<T> capture) { Pattern<T> matchAll = (Pattern<T>) Pattern.any(); return matching(matchAll.capturedAs(capture)); }
@Override public void visitWith(WithPattern<?> pattern) { visitPrevious(pattern); appendLine("with(%s)", pattern.getProperty().getName()); level += 1; pattern.getPattern().accept(this); level -= 1; }
public static Property<ExchangeNode, Lookup, ExchangeNode.Scope> scope() { return property("scope", ExchangeNode::getScope); } }
@Override public String toString() { DefaultPrinter printer = new DefaultPrinter(); accept(printer); return printer.result(); } }
public static Property<TopNNode, Lookup, TopNNode.Step> step() { return property("step", TopNNode::getStep); } }