public final class JoinEndpoint extends Object
JoinEntity. A join never references a bare
alias directly; it references a JoinEndpoint so that the left
side of a left-deep chain (t1 JOIN t2 JOIN t3) can be modelled
as the accumulated JoinEndpointKind.JOIN_RESULT of the prior
joins rather than a single relation.
JoinEndpointKind.RELATION endpoint carries the
FROM-clause alias and the relation's
qualifiedName (e.g. t1).JoinEndpointKind.JOIN_RESULT endpoint carries the
producingJoinOrder (the JoinEntity.getOrder() of
the join that produced this result) and the immutable list of
contributingAliases flowing through it.Immutable. Introduced by join-analysis slice 162 (S1).
| Modifier and Type | Field and Description |
|---|---|
static int |
NO_INSTANCE_ID
Sentinel for "no stable relation instance id" (slice 179).
|
| Modifier and Type | Method and Description |
|---|---|
boolean |
equals(Object o) |
String |
getAlias()
Non-null only for
JoinEndpointKind.RELATION. |
List<String> |
getContributingAliases()
Never null; empty for
JoinEndpointKind.RELATION. |
int |
getInstanceId()
Stable relation instance id (slice 179, R4) for a RELATION endpoint —
matches
RelationSource.getInstanceId(). |
JoinEndpointKind |
getKind() |
int |
getProducingJoinOrder()
Meaningful only for
JoinEndpointKind.JOIN_RESULT; else -1. |
String |
getQualifiedName()
May be null even for
JoinEndpointKind.RELATION. |
int |
hashCode() |
static JoinEndpoint |
joinResult(int producingJoinOrder,
List<String> contributingAliases)
The accumulated result of prior joins in a left-deep chain.
|
static JoinEndpoint |
relation(String alias,
String qualifiedName)
A single FROM-clause relation with no stable instance id.
|
static JoinEndpoint |
relation(String alias,
String qualifiedName,
int instanceId)
A single FROM-clause relation carrying its stable
instanceId (slice 179, R4) — the same per-block FROM-order
ordinal as the matching RelationSource.getInstanceId(), so an
endpoint links to its exact relation instance without alias-keying. |
String |
toString() |
public static final int NO_INSTANCE_ID
public static JoinEndpoint relation(String alias, String qualifiedName)
alias
must be non-empty; qualifiedName may be null when the
relation has no resolvable name (e.g. an unaliased derived table).public static JoinEndpoint relation(String alias, String qualifiedName, int instanceId)
instanceId (slice 179, R4) — the same per-block FROM-order
ordinal as the matching RelationSource.getInstanceId(), so an
endpoint links to its exact relation instance without alias-keying.public static JoinEndpoint joinResult(int producingJoinOrder, List<String> contributingAliases)
producingJoinOrder - the JoinEntity.getOrder() of the
join producing this resultcontributingAliases - aliases flowing through this result (may
be empty, never null)public JoinEndpointKind getKind()
public String getAlias()
JoinEndpointKind.RELATION.public String getQualifiedName()
JoinEndpointKind.RELATION.public int getInstanceId()
RelationSource.getInstanceId(). NO_INSTANCE_ID
for JOIN_RESULT endpoints or when not assigned.public int getProducingJoinOrder()
JoinEndpointKind.JOIN_RESULT; else -1.public List<String> getContributingAliases()
JoinEndpointKind.RELATION.