Interface IResolutionResult

All Known Implementing Classes:
ResolutionResultImpl

public interface IResolutionResult
TSQLResolver2 解析结果的访问接口

设计原则:

  • 语句为中心 - 按语句查询表和列
  • 复用现有类型 - 直接返回 TTable、TObjectName、TCTE
  • 按需查询 - 不预构建所有数据

使用示例:

 TSQLResolver2 resolver = new TSQLResolver2(context, statements);
 resolver.resolve();

 IResolutionResult result = resolver.getResult();

 // 按语句遍历
 for (TCustomSqlStatement stmt : resolver.getStatements()) {
     // 获取语句中的表
     for (TTable table : result.getTables(stmt)) {
         System.out.println("Table: " + table.getFullName());

         // 获取关联到此表的列
         for (TObjectName col : result.getColumnsForTable(stmt, table)) {
             System.out.println("  Column: " + col.getColumnNameOnly());
             System.out.println("  Resolved: " + (col.getSourceTable() != null));
         }
     }

     // 获取孤儿列(未解析的列)
     for (TObjectName orphan : result.getOrphanColumns(stmt)) {
         System.out.println("  Orphan: " + orphan.getColumnNameOnly());
     }

     // 递归处理子语句
     for (TCustomSqlStatement subStmt : stmt.getStatements()) {
         // 使用相同的 result 对象处理子语句
     }
 }

 // 全局访问(批量处理时有用)
 Set<String> allTables = result.getAllTableNames();
 Set<String> allFields = result.getAllFieldNames();