Interface RelationalExpression.CombineFunction<R,S>
-
- Type Parameters:
R
- type of the match result computed while matching quantifiersS
- type of combined match result
- Enclosing interface:
- RelationalExpression
- Functional Interface:
- This is a functional interface and can therefore be used as the assignment target for a lambda expression or method reference.
@FunctionalInterface public static interface RelationalExpression.CombineFunction<R,S>
A functional interface to combine the matches computed over pairs of quantifiers during matching into a result (for the bound correlatedTo set handed intocombine(com.apple.foundationdb.record.query.plan.temp.AliasMap, java.lang.Iterable<com.apple.foundationdb.record.query.plan.temp.matching.BoundMatch<com.apple.foundationdb.record.query.plan.temp.EnumeratingIterable<R>>>)
). Let's assume we have multiple bindings during matching on the deep correlations (.getCorrelatedTo() of this). Let's call that the sets of outer bindings. We also attempt to match the quantifiers owned by this to the quantifiers of other. For each set of outer bindings we enumerate bindings among the owned quantifiers of the respective expressions. Let's call those sets the inner bindings. For each set out outer bindings there are many sets of inner bindings. At the end of matching we want to establish a match between this expression and some other expression and the quantifiers owned by the respective expressions and their bindings among each other do not matter anymore in terms of matching logic. Those bindings only matter for the result of the match under a set of outer bindings. The matching algorithm returns an iterable of some typeS
which is computed by a lambda passed in by the caller. It is up to the caller what to do with the outer and inner bindings and how to compute a useful result out of it. The signature of that lambda is defined by this interface. During matching the matching logic callscombine(com.apple.foundationdb.record.query.plan.temp.AliasMap, java.lang.Iterable<com.apple.foundationdb.record.query.plan.temp.matching.BoundMatch<com.apple.foundationdb.record.query.plan.temp.EnumeratingIterable<R>>>)
for each set of outer bindings with andIterable
over sets of inner bindings (and their match results).
-
-
Method Summary
All Methods Instance Methods Abstract Methods Modifier and Type Method Description Iterable<S>
combine(AliasMap boundCorrelatedToMap, Iterable<BoundMatch<EnumeratingIterable<R>>> boundMatches)
Combine the sets of bindings (and their results) under the given set of outer bindings to an iterable of combined results.
-
-
-
Method Detail
-
combine
@Nonnull Iterable<S> combine(@Nonnull AliasMap boundCorrelatedToMap, @Nonnull Iterable<BoundMatch<EnumeratingIterable<R>>> boundMatches)
Combine the sets of bindings (and their results) under the given set of outer bindings to an iterable of combined results.- Parameters:
boundCorrelatedToMap
- set of outer bindings encoded in anAliasMap
boundMatches
- iterable ofBoundMatch
es- Returns:
- an iterable of type
S
-
-