Class TStarColumnPushDownResolver

Object
gudusoft.gsqlparser.nodes.TParseTreeVisitor
gudusoft.gsqlparser.resolver.TStarColumnPushDownResolver

TStarColumnPushDownResolver 类负责解析和处理 SQL 查询中的星号(*)列引用, 将星号列引用追溯到实际的表列。 主要工作流程: 1. 从顶层查询开始,向下遍历所有子查询 2. 对每个查询中的星号列,找到其对应的实际列 3. 将这些列信息传递给下层查询 4. 最终将星号列解析到实际的表列 关键依赖类: - TContext: 提供全局作用域信息 - TScope: 管理查询作用域 - TSelectSqlStatement: 表示 SELECT 语句 - TTable: 表示表引用 - TResultColumn: 表示结果列 - TObjectName: 表示对象名称 - TAttributeNode: 表示属性节点
  • Constructor Details

    • TStarColumnPushDownResolver

      public TStarColumnPushDownResolver(TStatementList sqls, gudusoft.gsqlparser.compiler.TContext scope)
      构造函数
      Parameters:
      sqls - SQL语句列表
      scope - 全局作用域
  • Method Details

    • resolve

      public void resolve()
      开始解析过程 遍历所有 SQL 语句,对每个语句执行星号列下推解析
    • preVisit

      public void preVisit(TSelectSqlStatement stmt)
      处理 SELECT 语句中的星号列 工作流程: 1. 检查是否已处理过该语句 2. 处理 UNION 等集合操作的情况 3. 遍历结果列表中的星号列 4. 对每个星号列: - 检查是否有精确匹配的列 - 处理多个表的星号情况 - 根据表类型(实体表/子查询)进行相应处理
      Overrides:
      preVisit in class TParseTreeVisitor
      Parameters:
      stmt - SELECT 语句对象 示例: SELECT col_1, col_11, col_2 FROM ( select * FROM (select * from table_a) ta ) a LEFT OUTER JOIN ( select id, col_2 FROM table_b ) b on a.id = b.id
    • postVisit

      public void postVisit(TSelectSqlStatement stmt)
      处理 CTE (Common Table Expression) 中的星号列 工作流程: 1. 检查是否存在 CTE 2. 从后向前遍历 CTE 列表 3. 对每个 CTE: - 处理其子查询中的星号列 - 特别处理 UNION 等集合操作的情况
      Overrides:
      postVisit in class TParseTreeVisitor
      Parameters:
      stmt - SELECT 语句对象