001package gudusoft.gsqlparser.pp2.island; 002 003/** 004 * The kind of lexical island recognised by {@link IslandRecognizer}. An island 005 * is a contiguous run of tokens that the layout pipeline treats as a unit. 006 * 007 * <p>Plan reference: §6 (island/IslandKind), §7.3/S22, §7.4/S22. 008 */ 009public enum IslandKind { 010 011 /** SELECT projection list. */ 012 SELECT, 013 /** FROM table list (before any JOIN). */ 014 FROM, 015 /** JOIN clause (JOIN/ON/USING/APPLY and operands). */ 016 JOIN, 017 /** WHERE predicate. */ 018 WHERE, 019 /** GROUP BY list. */ 020 GROUP_BY, 021 /** HAVING predicate. */ 022 HAVING, 023 /** ORDER BY list. */ 024 ORDER_BY, 025 /** INTO target (INSERT INTO / SELECT INTO). */ 026 INTO, 027 /** INSERT VALUES list. */ 028 INSERT_VALUES, 029 /** UPDATE SET assignment list. */ 030 UPDATE_SET, 031 /** A parenthesised subquery / derived table (not a CTE body). */ 032 SUBQUERY, 033 /** A CTE body ({@code WITH x AS ( ... )}). */ 034 CTE, 035 /** A CASE ... END expression/statement. */ 036 CASE, 037 /** A MERGE statement. */ 038 MERGE, 039 /** An unrecoverable / unclassifiable span. */ 040 ERROR_REGION, 041 /** Anything not otherwise classified. */ 042 OTHER 043}