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}