Interface JoinResolution
- All Known Implementing Classes:
JoinResolution.Ambiguous,JoinResolution.Passthrough,JoinResolution.Resolved
public sealed interface JoinResolution
permits JoinResolution.Passthrough, JoinResolution.Resolved, JoinResolution.Ambiguous
What resolving the joins in an expression over a
SchemaGraph came to: the
engine's own assembly of the join from the relationships the graph records, rather
than the conditions the expression was written with. One of three shapes:
JoinResolution.Passthrough— the graph adds nothing decidable (no graph, fewer than two graph relations, a disconnected or intractable expression), so the expression stands as written. Carries areason.JoinResolution.Resolved— a unique minimal path; the join was rewritten over the graph's conditions (program), with the multiplicityJoinResolution.BoundsFactsof that path.JoinResolution.Ambiguous— several equally minimal paths (two foreign keys fromissuesintousers, say), which the engine cannot choose between, so it lists theJoinResolution.Alternatives by relationship name.
- Since:
- 1.0
-
Nested Class Summary
Nested ClassesModifier and TypeInterfaceDescriptionstatic final recordOne enumerated join, distinguished by relationship name — the ambiguity is speakable only because edges are named.static final recordSeveral equally minimal paths; eachJoinResolution.Alternativeis a runnable program.static final recordMultiplicity facts of a chosen path: whether the join fans out (an endpoint admits more than one match, repeating rows) and whether an inner join may drop rows (an endpoint'sminis zero).static final recordThe graph could not improve on the model's program; it stands unchanged.static final recordA unique path was assembled intoprogramwith itsbounds.