public class CTEScope extends ListBasedScope
Example:
WITH cte1 AS (SELECT id, name FROM users), cte2 AS (SELECT * FROM cte1 WHERE id > 100) -- can reference cte1 SELECT * FROM cte2; -- can reference both cte1 and cte2
Key features: - Multiple CTEs in same WITH clause - CTEs can reference earlier CTEs in the same WITH clause - Recursive CTE support (same CTE references itself) - CTEs are visible to the main query and to later CTEs
childrennode, parent, scopeType| Constructor and Description |
|---|
CTEScope(IScope parent,
TCTEList cteList) |
| Modifier and Type | Method and Description |
|---|---|
void |
addCTE(String cteName,
CTENamespace cteNamespace)
Add a CTE to this scope.
|
List<CTENamespace> |
getAllCTEs()
Get all CTEs in this scope.
|
CTENamespace |
getCTE(String cteName)
Get a CTE namespace by name.
|
int |
getCTECount()
Get the number of CTEs in this scope.
|
TCTEList |
getCTEList() |
List<CTENamespace> |
getRecursiveCTEs()
Get all recursive CTEs in this scope.
|
boolean |
hasCTE(String cteName)
Check if a CTE with the given name exists in this scope.
|
boolean |
hasRecursiveCTE()
Check if this scope contains a recursive CTE.
|
INamespace |
resolveTable(String tableName)
Resolve a table name, checking CTEs first before delegating to parent.
|
String |
toString() |
addChild, getChildren, getVisibleNamespaces, resolve, resolveInNamespacefullyQualify, getNode, getParent, getScopeType, isWithinpublic void addCTE(String cteName, CTENamespace cteNamespace)
cteName - the CTE name (alias)cteNamespace - the CTE namespacepublic boolean hasCTE(String cteName)
cteName - the CTE name to checkpublic CTENamespace getCTE(String cteName)
cteName - the CTE namepublic List<CTENamespace> getAllCTEs()
public int getCTECount()
public INamespace resolveTable(String tableName)
resolveTable in interface IScoperesolveTable in class ListBasedScopetableName - the table name to resolvepublic boolean hasRecursiveCTE()
public List<CTENamespace> getRecursiveCTEs()
public TCTEList getCTEList()
public String toString()
toString in class ListBasedScope