Class TDatabaseObjectResolver

Object
gudusoft.gsqlparser.nodes.TParseTreeVisitor
gudusoft.gsqlparser.resolver.TDatabaseObjectResolver

TDatabaseObjectResolver handles the resolution of database objects in SQL statements. It primarily focuses on resolving schema and database names for objects, and handling USE DATABASE/SET SCHEMA statements to maintain current context. 目的是确保所有数据库对象都有正确的database/schema 限定名称,通过维护当前上下文并填充隐式名称来实现这一目标
  • Constructor Details

    • TDatabaseObjectResolver

      public TDatabaseObjectResolver(TStatementList sqls, gudusoft.gsqlparser.compiler.TContext scope)
      Constructor for TDatabaseObjectResolver. Initializes the resolver with SQL statements and global context.
      Parameters:
      sqls - List of SQL statements to analyze
      scope - Global context containing SQL environment information
  • Method Details

    • resolve

      public void resolve()
      Main resolution method that processes all SQL statements. Iterates through statements and resolves database objects in each one.
    • preVisit

      public void preVisit(TUseDatabase node)
      Handles USE DATABASE statements to set the current database context. In some databases (e.g., Databricks), USE DATABASE is equivalent to USE SCHEMA, so this method handles both cases based on the current state.
      Overrides:
      preVisit in class TParseTreeVisitor
      Parameters:
      node - The USE DATABASE statement node
    • preVisit

      public void preVisit(TSetSchemaStmt node)
      Processes SET SCHEMA statements to update the current schema context.
      Overrides:
      preVisit in class TParseTreeVisitor
      Parameters:
      node - The SET SCHEMA statement node
    • preVisit

      public void preVisit(TObjectName node)
      Resolves individual database object names by setting implicit database and schema names when they are not explicitly specified in the object name.
      Overrides:
      preVisit in class TParseTreeVisitor
      Parameters:
      node - The object name node to resolve