public interface IResolutionResult
设计原则:
使用示例:
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();
IScope getScope(TCustomSqlStatement stmt)
stmt - SQL语句List<TTable> getTables(TCustomSqlStatement stmt)
stmt - SQL语句List<TTable> getTables(TCustomSqlStatement stmt, TableFilterOptions options)
stmt - SQL语句options - 过滤选项List<TObjectName> getColumns(TCustomSqlStatement stmt)
stmt - SQL语句List<TObjectName> getColumnsForTable(TCustomSqlStatement stmt, TTable table)
stmt - SQL语句table - 目标表List<TObjectName> getOrphanColumns(TCustomSqlStatement stmt)
stmt - SQL语句List<TCTE> getCTEs(TCustomSqlStatement stmt)
stmt - SQL语句(通常是包含 WITH 子句的 SELECT)Set<String> getAllTableNames()
Set<String> getAllFieldNames()
Set<String> getAllCTENames()
List<TObjectName> getAllResolvedColumns()
List<TObjectName> getAllUnresolvedColumns()
ResolutionStatistics getStatistics()