001package gudusoft.gsqlparser.ir.semantic.joinanalysis;
002
003/**
004 * Discriminator for a {@link JoinEndpoint}.
005 *
006 * <ul>
007 *   <li>{@link #RELATION} — a single FROM-clause relation (a base
008 *       table, CTE, or derived table), identified by its alias and
009 *       qualified name.</li>
010 *   <li>{@link #JOIN_RESULT} — the accumulated result of prior joins in
011 *       a left-deep chain, identified by the order of the join that
012 *       produced it and the aliases it contributes.</li>
013 *   <li>{@link #SUBQUERY} — a lifted predicate subquery (the right side
014 *       of an {@code EXISTS} / {@code IN} semi-join, R8), identified by
015 *       the {@code statementIndex} of the subquery's own
016 *       {@code StatementGraph} block and an optional label.</li>
017 * </ul>
018 *
019 * <p>Introduced by join-analysis slice 162 (S1).
020 */
021public enum JoinEndpointKind {
022    RELATION,
023    JOIN_RESULT,
024    SUBQUERY
025}