Class TStarColumnExpander

Object
gudusoft.gsqlparser.nodes.TParseTreeVisitor
gudusoft.gsqlparser.resolver.TStarColumnExpander

TStarColumnExpander 负责解析和展开SQL查询中的星号列引用(*)。 工作流程: 1. 遍历所有SELECT语句 2. 对每个SELECT语句的结果列表进行处理 3. 识别并展开星号列引用: - 无限定符星号(*):展开为FROM子句中所有表的所有列 - 限定符星号(table.*):展开为指定表的所有列 4. 处理EXCEPT子句,从展开的列中移除指定列 Star column 解析后的列信息存储在 TObjectName 类的 attributeNodesDerivedFromFromClause 字段中: 处理示例: 1. SELECT * FROM employee -> SELECT employee.id, employee.name, employee.salary FROM employee 2. SELECT dept.* FROM department dept -> SELECT dept.id, dept.name, dept.location FROM department dept 3. SELECT emp.* EXCEPT (salary) FROM employee emp -> SELECT emp.id, emp.name FROM employee emp 关键组件: - sqlStack: 跟踪SELECT语句的嵌套层次 - scopeStack: 维护解析过程中的作用域 - globalScope: 存储全局SQL环境信息 与其他解析器的关系: - 在TRelationResolver之后执行 - 为TAttributeResolver准备展开后的列信息 - 依赖TDatabaseObjectResolver提供的表信息
  • Constructor Details

    • TStarColumnExpander

      public TStarColumnExpander(TStatementList sqls, gudusoft.gsqlparser.compiler.TContext scope, TSQLResolver resolver)
      Creates a new star column resolver instance.
      Parameters:
      sqls - The SQL statements to analyze
      scope - The global context containing SQL environment
  • Method Details

    • resolve

      public void resolve()
      Main resolution method that processes all SQL statements. Iterates through statements and resolves star columns in each one.
    • preVisit

      public void preVisit(TSelectSqlStatement stmt)
      Tracks SELECT statements for proper scoping of star column resolution.
      Overrides:
      preVisit in class TParseTreeVisitor
      Parameters:
      stmt - The SELECT statement being processed
    • postVisit

      public void postVisit(TSelectSqlStatement stmt)
      Processes star columns in SELECT statements after their FROM clause is processed. Handles both unqualified (*) and qualified (table.*) star columns.
      Overrides:
      postVisit in class TParseTreeVisitor
      Parameters:
      stmt - The SELECT statement being processed