Class CTENamespace
Object
gudusoft.gsqlparser.resolver2.namespace.AbstractNamespace
gudusoft.gsqlparser.resolver2.namespace.CTENamespace
- All Implemented Interfaces:
INamespace
Namespace representing a Common Table Expression (CTE).
Similar to SubqueryNamespace but handles CTE-specific features:
- Explicit column list: WITH cte(c1, c2) AS (SELECT ...)
- Recursive CTEs
- Multiple references within same query
- UNION subqueries: columns are pushed through to all UNION branches
Example:
WITH my_cte(id, name) AS (
SELECT user_id, user_name FROM users
)
SELECT id, name FROM my_cte;
-
Field Summary
Fields inherited from class gudusoft.gsqlparser.resolver2.namespace.AbstractNamespace
columnSources, columnSourcesWithRefs, guessColumnStrategy, nameMatcher, node, referenceTraceabilityEnabled, validated -
Constructor Summary
ConstructorsConstructorDescriptionCTENamespace(TCTE cte, String cteName, TSelectSqlStatement selectStatement) CTENamespace(TCTE cte, String cteName, TSelectSqlStatement selectStatement, INameMatcher nameMatcher) -
Method Summary
Modifier and TypeMethodDescriptionbooleanaddInferredColumn(String columnName, double confidence, String evidence) Add an inferred column to this namespace.protected voidSubclasses override this to perform actual validation logic.Get all final physical tables this namespace depends on.getCTE()Get a display name for this namespace (for debugging/error messages)Get the final physical table this namespace represents.Get all columns that were inferred (not from SELECT list directly).Get the TTable that references this CTE in a FROM clause.Get the underlying SELECT statement for this namespace.Get the TTable that this namespace is associated with.Get the UnionNamespace if this CTE's subquery is a UNION.Check if a column exists in this namespace.booleanCheck if this namespace contains a star column (SELECT *).booleanresolveColumn(String columnName) Resolve a column name to its source.voidsetReferencingTable(TTable table) Set the TTable that references this CTE in a FROM clause.booleanCheck if this namespace supports dynamic column inference.toString()Methods inherited from class gudusoft.gsqlparser.resolver2.namespace.AbstractNamespace
addColumnSource, addColumnSource, enableReferenceTraceability, ensureValidated, getAllColumnSources, getAllUniqueColumns, getColumnReferences, getColumnSourceWithReferences, getGuessColumnStrategy, getNameMatcher, getNode, isReferenceTraceabilityEnabled, isValidated, setGuessColumnStrategy, validateMethods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, waitMethods inherited from interface gudusoft.gsqlparser.resolver2.namespace.INamespace
getStarColumn, resolveColumnPath
-
Constructor Details
-
CTENamespace
public CTENamespace(TCTE cte, String cteName, TSelectSqlStatement selectStatement, INameMatcher nameMatcher) -
CTENamespace
-
-
Method Details
-
getDisplayName
Description copied from interface:INamespaceGet a display name for this namespace (for debugging/error messages) -
getReferencingTable
Get the TTable that references this CTE in a FROM clause. -
getSourceTable
Get the TTable that this namespace is associated with. Used for legacy sync to set TObjectName.sourceTable. For TableNamespace: returns the table itself For SubqueryNamespace: returns the TTable wrapping the subquery For CTENamespace: returns the CTE referencing table For others: returns null For CTENamespace, returns the TTable that references this CTE in the query. This is the immediate source table for columns resolved through this CTE.- Returns:
- The source TTable, or null if not applicable
-
setReferencingTable
Set the TTable that references this CTE in a FROM clause. Called by ScopeBuilder when a CTE is referenced. -
getFinalTable
Description copied from interface:INamespaceGet the final physical table this namespace represents. For tables: returns the table itself For subqueries/CTEs: recursively traces back to physical table(s)- Returns:
- Physical table, or null if not determinable
-
getAllFinalTables
Description copied from interface:INamespaceGet all final physical tables this namespace depends on. For simple table namespace: returns single table For subquery/CTE: returns all tables in the query tree- Specified by:
getAllFinalTablesin interfaceINamespace- Overrides:
getAllFinalTablesin classAbstractNamespace- Returns:
- List of all physical tables
-
doValidate
Description copied from class:AbstractNamespaceSubclasses override this to perform actual validation logic.- Specified by:
doValidatein classAbstractNamespace
-
getCTE
-
getSelectStatement
Description copied from interface:INamespaceGet the underlying SELECT statement for this namespace. For CTENamespace: returns the CTE's subquery For SubqueryNamespace: returns the subquery For TableNamespace: returns null- Returns:
- the SELECT statement, or null if not applicable
-
hasStarColumn
Description copied from interface:INamespaceCheck if this namespace contains a star column (SELECT *). Used to identify namespaces that may need star column inference.- Returns:
- true if the namespace has SELECT *, false otherwise
-
supportsDynamicInference
Description copied from interface:INamespaceCheck if this namespace supports dynamic column inference. DynamicStarSource and similar namespaces return true.- Returns:
- true if this namespace can have columns added dynamically
-
addInferredColumn
Description copied from interface:INamespaceAdd an inferred column to this namespace. Used by star column push-down to add columns discovered from outer queries.- Parameters:
columnName- the column name to addconfidence- the confidence score (0.0 to 1.0)evidence- description of why this column was inferred- Returns:
- true if the column was added, false if already exists
-
getInferredColumns
Description copied from interface:INamespaceGet all columns that were inferred (not from SELECT list directly). These are columns discovered through star column push-down.- Returns:
- set of inferred column names, empty if none
-
hasColumn
Description copied from interface:INamespaceCheck if a column exists in this namespace. Returns a three-level answer: EXISTS, MAYBE, NOT_EXISTS- Specified by:
hasColumnin interfaceINamespace- Overrides:
hasColumnin classAbstractNamespace- Parameters:
columnName- Column name to check- Returns:
- Column existence level
-
resolveColumn
Description copied from interface:INamespaceResolve a column name to its source.- Specified by:
resolveColumnin interfaceINamespace- Overrides:
resolveColumnin classAbstractNamespace- Parameters:
columnName- Column name to resolve- Returns:
- ColumnSource if found, null otherwise
-
getUnionNamespace
Get the UnionNamespace if this CTE's subquery is a UNION. -
getExplicitColumns
-
isRecursive
-
toString
- Overrides:
toStringin classAbstractNamespace
-