Class CTENamespace

Object
gudusoft.gsqlparser.resolver2.namespace.AbstractNamespace
gudusoft.gsqlparser.resolver2.namespace.CTENamespace
All Implemented Interfaces:
INamespace

public class CTENamespace extends AbstractNamespace
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;
  • Constructor Details

  • Method Details

    • getDisplayName

      Description copied from interface: INamespace
      Get 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

      public void setReferencingTable(TTable table)
      Set the TTable that references this CTE in a FROM clause. Called by ScopeBuilder when a CTE is referenced.
    • getFinalTable

      Description copied from interface: INamespace
      Get 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: INamespace
      Get 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:
      getAllFinalTables in interface INamespace
      Overrides:
      getAllFinalTables in class AbstractNamespace
      Returns:
      List of all physical tables
    • doValidate

      protected void doValidate()
      Description copied from class: AbstractNamespace
      Subclasses override this to perform actual validation logic.
      Specified by:
      doValidate in class AbstractNamespace
    • getCTE

      public TCTE getCTE()
    • getSelectStatement

      Description copied from interface: INamespace
      Get 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

      public boolean hasStarColumn()
      Description copied from interface: INamespace
      Check 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

      public boolean supportsDynamicInference()
      Description copied from interface: INamespace
      Check if this namespace supports dynamic column inference. DynamicStarSource and similar namespaces return true.
      Returns:
      true if this namespace can have columns added dynamically
    • addInferredColumn

      public boolean addInferredColumn(String columnName, double confidence, String evidence)
      Description copied from interface: INamespace
      Add 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 add
      confidence - 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: INamespace
      Get 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

      public ColumnLevel hasColumn(String columnName)
      Description copied from interface: INamespace
      Check if a column exists in this namespace. Returns a three-level answer: EXISTS, MAYBE, NOT_EXISTS
      Specified by:
      hasColumn in interface INamespace
      Overrides:
      hasColumn in class AbstractNamespace
      Parameters:
      columnName - Column name to check
      Returns:
      Column existence level
    • resolveColumn

      public ColumnSource resolveColumn(String columnName)
      Description copied from interface: INamespace
      Resolve a column name to its source.
      Specified by:
      resolveColumn in interface INamespace
      Overrides:
      resolveColumn in class AbstractNamespace
      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

      public boolean isRecursive()
    • toString

      public String toString()
      Overrides:
      toString in class AbstractNamespace