Interface RelationalExpression

    • Method Detail

      • bindTo

        @Nonnull
        default Stream<PlannerBindings> bindTo​(@Nonnull
                                               ExpressionMatcher<? extends Bindable> matcher)
        Matches a matcher expression to an expression tree rooted at this node, adding to some existing bindings.
        Specified by:
        bindTo in interface Bindable
        Parameters:
        matcher - the matcher to match against
        Returns:
        the existing bindings extended with some new ones if the match was successful or Optional.empty() otherwise
      • getQuantifiers

        @Nonnull
        List<? extends Quantifier> getQuantifiers()
        Return an iterator of references to the children of this planner expression. The iterators returned by different calls are guaranteed to be independent (i.e., advancing one will not advance another). However, they might point to the same object, as when Collections.emptyIterator() is returned. The returned iterator should be treated as an immutable object and may throw an exception if Iterator.remove() is called. The iterator must return its elements in a consistent order.
        Returns:
        an iterator of references to the children of this planner expression
      • acceptPropertyVisitor

        @Nullable
        default <U> U acceptPropertyVisitor​(@Nonnull
                                            PlannerProperty<U> visitor)
        Apply the given property visitor to this planner expression and its children. Returns null if PlannerProperty.shouldVisit(RelationalExpression) called on this expression returns false.
        Type Parameters:
        U - the type of the evaluated property
        Parameters:
        visitor - a PlannerProperty visitor to evaluate
        Returns:
        the result of evaluating the property on the subtree rooted at this expression
      • show

        @Nonnull
        default String show​(boolean renderSingleGroups)
        This is needed for graph integration into IntelliJ as IntelliJ only ever evaluates selfish methods. Add this method as a custom renderer for the type RelationalExpression. During debugging you can then for instance click show() on an instance and enjoy the query graph it represents rendered in your standard browser.
        Parameters:
        renderSingleGroups - whether to render group references with just one member
        Returns:
        the String "Done."