001package gudusoft.gsqlparser.ir.semantic.joinanalysis;
002
003/**
004 * Lexical role of a query block in a {@link QueryBlockScope} tree
005 * (GAP 4).
006 *
007 * <ul>
008 *   <li>{@link #MAIN} — the top-level / outermost statement block (null
009 *       parent).</li>
010 *   <li>{@link #CTE} — a {@code WITH} common-table-expression body.</li>
011 *   <li>{@link #DERIVED_TABLE} — a FROM-clause subquery (inline
012 *       view).</li>
013 *   <li>{@link #SCALAR_SUBQUERY} — a subquery used as a scalar
014 *       expression in the SELECT list / elsewhere.</li>
015 *   <li>{@link #PREDICATE_SUBQUERY} — a subquery inside a predicate
016 *       ({@code IN (...)}, {@code EXISTS (...)}, etc.).</li>
017 *   <li>{@link #SET_OPERATION_BRANCH} — a branch of a {@code UNION} /
018 *       {@code INTERSECT} / {@code EXCEPT}.</li>
019 *   <li>{@link #UNKNOWN} — an emission site not yet classified.</li>
020 * </ul>
021 *
022 * <p>Introduced by join-analysis slice 162 (S1); populated in slice 170
023 * (S9).
024 */
025public enum ScopeKind {
026    MAIN,
027    CTE,
028    DERIVED_TABLE,
029    SCALAR_SUBQUERY,
030    PREDICATE_SUBQUERY,
031    SET_OPERATION_BRANCH,
032    UNKNOWN
033}