public final class BindingDiagnosticPostPass extends Object
ResolutionContext.getColumnResolutionResult(gudusoft.gsqlparser.nodes.TObjectName)) once after
iterative resolution converges and converts ResolutionResults
into a public BindingResult.
The class is public because TSQLResolver2 (in the
parent resolver2 package) instantiates it directly. The static
invocation counter accessors remain package-private — they are
test-only.
Plan §5.6.1 critical clarification — the post-pass MUST NOT perform
name binding. It only reads resolver2's final state and decides which
stable, public BindingDiagnostic to surface. In particular it
never re-invokes NameResolver.resolve(...) or mutates AST
state.
This slice ships the first three diagnostic codes (UNKNOWN_COLUMN, AMBIGUOUS_COLUMN, UNBOUND_COLUMN_REFERENCE). Strict-mode codes (UNKNOWN_TABLE,
UNKNOWN_ALIAS, CATALOG_METADATA_UNAVAILABLE) and clause
attribution land in S6; deeper codes (CTE / subquery output, set-op
arity, USING / NATURAL, DML) land in S8–S13.
| Constructor and Description |
|---|
BindingDiagnosticPostPass(TSQLResolver2 resolver,
TSQLResolverConfig config) |
| Modifier and Type | Method and Description |
|---|---|
BindingResult |
run()
Run the post-pass exactly once and return the populated
BindingResult. |
public BindingDiagnosticPostPass(TSQLResolver2 resolver, TSQLResolverConfig config)
public BindingResult run()
BindingResult.
Always non-null. Returns BindingResult.empty() when the
inputs do not yet satisfy the minimum invariants (no scope build
result, no resolution context, trace not enabled) — never throws.