001package gudusoft.gsqlparser.ir.common;
002
003/**
004 * Enumeration of all IR node types across all layers.
005 */
006public enum IRNodeKind {
007
008    // === Bound IR ===
009    BOUND_OBJECT_REF,
010    BOUND_COLUMN_REF,
011    BOUND_ROUTINE_REF,
012    BOUND_TYPE_REF,
013
014    // === Relational IR ===
015    SCAN,
016    SUBQUERY_SCAN,
017    PROJECT,
018    FILTER,
019    JOIN,
020    AGGREGATE,
021    SET_OP,
022    SORT,
023    LIMIT,
024    WINDOW,
025    DISTINCT,
026    INSERT,
027    UPDATE,
028    DELETE,
029    MERGE,
030    CREATE_VIEW_AS,
031    CREATE_TABLE_AS,
032    CTE_DEFINE,
033    VALUES,
034    TABLE_FUNCTION_SCAN,
035    UNNEST_SCAN,
036    PIVOT,
037    UNPIVOT,
038    DERIVED_STRUCT_PRODUCER,
039
040    // === Expression IR ===
041    REX_LITERAL,
042    REX_COLUMN_REF,
043    REX_VARIABLE_REF,
044    REX_CALL,
045    REX_CASE,
046    REX_CAST,
047    REX_SUBQUERY,
048    REX_FIELD_ACCESS,
049    REX_ARRAY_ACCESS,
050    REX_WINDOW_CALL,
051    REX_ROW,
052    REX_PARAMETER,
053
054    // === Procedural IR ===
055    PL_ROUTINE,
056    PL_PACKAGE,
057    PL_BLOCK,
058    PL_DECLARE,
059    PL_ASSIGN,
060    PL_SELECT_INTO,
061    PL_IF,
062    PL_LOOP,
063    PL_CURSOR_DEF,
064    PL_CURSOR_OPEN,
065    PL_CURSOR_FETCH,
066    PL_CURSOR_CLOSE,
067    PL_CALL,
068    PL_RETURN,
069    PL_RAISE,
070    PL_DYNAMIC_SQL,
071    PL_EXCEPTION_HANDLER,
072    PL_FOR_ALL,
073    PL_PIPE_ROW,
074    PL_EXIT,
075    PL_CONTINUE,
076    PL_GOTO,
077    PL_NULL,
078    PL_EMBEDDED_SQL,
079
080    // === Flow IR ===
081    CFG_BLOCK,
082    CALL_EDGE,
083    PROVENANCE_EDGE
084}