public class QualifiedNameResolver extends Object
This class handles the conversion of potentially partial table names
(e.g., just "table", "schema.table", or "catalog.schema.table") into
fully qualified QualifiedName objects by applying default
catalog and schema from TSQLEnv.
| Input | Rule | Output |
|---|---|---|
| table | Apply both defaults | (defaultCatalog, defaultSchema, table) |
| schema.table | Apply catalog default only | (defaultCatalog, schema, table) |
| catalog.schema.table | No defaults applied | (catalog, schema, table) |
// Setup
TSQLEnv env = new TSQLEnv(EDbVendor.dbvmssql);
env.setDefaultCatalogName("mydb");
env.setDefaultSchemaName("dbo");
QualifiedNameResolver resolver = new QualifiedNameResolver(env, EDbVendor.dbvmssql);
// Normalize a simple table name
QualifiedName q1 = resolver.resolve(tableNode);
// Result: (mydb, dbo, tableName)
// Normalize a two-part name
QualifiedName q2 = resolver.resolve("sales", "orders");
// Result: (mydb, sales, orders)
// Three-part name is unchanged
QualifiedName q3 = resolver.resolve("otherdb", "hr", "employees");
// Result: (otherdb, hr, employees)
QualifiedName,
TSQLEnv| Constructor and Description |
|---|
QualifiedNameResolver(String defaultCatalog,
String defaultSchema,
EDbVendor vendor)
Create a QualifiedNameResolver with explicit defaults.
|
QualifiedNameResolver(TSQLEnv sqlEnv,
EDbVendor vendor)
Create a QualifiedNameResolver with the given SQL environment.
|
| Modifier and Type | Method and Description |
|---|---|
String |
getDefaultCatalog()
Get the current default catalog.
|
String |
getDefaultSchema()
Get the current default schema.
|
boolean |
isSameTable(QualifiedName name1,
QualifiedName name2)
Check if two qualified names refer to the same table.
|
boolean |
matches(QualifiedName reference,
QualifiedName target)
Check if a qualified name matches a target name, considering defaults.
|
QualifiedName |
resolve(String tableName)
Resolve a simple table name string to a fully qualified name.
|
QualifiedName |
resolve(String catalog,
String schema,
String name)
Create a qualified name from explicit parts with defaults applied.
|
QualifiedName |
resolve(TObjectName tableName)
Resolve a TObjectName (table reference) to a fully qualified name.
|
QualifiedName |
resolve(TTable table)
Resolve a TTable's name to a fully qualified name.
|
String |
toString() |
public QualifiedNameResolver(TSQLEnv sqlEnv, EDbVendor vendor)
sqlEnv - The SQL environment containing default catalog/schemavendor - The database vendorpublic QualifiedNameResolver(String defaultCatalog, String defaultSchema, EDbVendor vendor)
defaultCatalog - The default catalog namedefaultSchema - The default schema namevendor - The database vendorpublic String getDefaultCatalog()
If sqlEnv was provided, returns the current value from sqlEnv (which may have changed since construction).
public String getDefaultSchema()
If sqlEnv was provided, returns the current value from sqlEnv (which may have changed since construction).
public QualifiedName resolve(TTable table)
table - The table node from the ASTpublic QualifiedName resolve(TObjectName tableName)
tableName - The table name node from the ASTpublic QualifiedName resolve(String tableName)
tableName - The table name (may include dots)public QualifiedName resolve(String catalog, String schema, String name)
catalog - The catalog (null to use default)schema - The schema (null to use default)name - The table name (required)public boolean isSameTable(QualifiedName name1, QualifiedName name2)
Both names are first normalized using current defaults, then compared for equality.
name1 - First qualified name (may be partial)name2 - Second qualified name (may be partial)public boolean matches(QualifiedName reference, QualifiedName target)
reference - The reference being checked (may be partial)target - The target table name (should be fully qualified)