Class OraclePackageNamespace

Object
gudusoft.gsqlparser.resolver2.namespace.OraclePackageNamespace
All Implemented Interfaces:
INamespace

public class OraclePackageNamespace extends Object implements INamespace
Namespace representing Oracle PL/SQL package members (variables, constants, cursors).

Package members declared in PACKAGE or PACKAGE BODY can be referenced:

  • Unqualified (within package body): gn_err_no
  • Qualified (anywhere): pkg_name.gn_err_no
  • Schema-qualified: schema.pkg_name.gn_err_no

This namespace returns getFinalTable() == null since package members are not table columns.

  • Constructor Details

    • OraclePackageNamespace

      public OraclePackageNamespace(String packageName, String schemaName, TPlsqlCreatePackage packageNode)
      Create a new Oracle package namespace.
      Parameters:
      packageName - The simple package name
      schemaName - The schema name (may be null)
      packageNode - The AST node for the package
  • Method Details

    • addVariable

      public void addVariable(TVarDeclStmt varDecl)
      Add a variable/constant member from TVarDeclStmt.
      Parameters:
      varDecl - The variable declaration statement
    • addCursor

      public void addCursor(TCursorDeclStmt cursorDecl)
      Add a cursor member from TCursorDeclStmt.
      Parameters:
      cursorDecl - The cursor declaration statement
    • addMember

      public void addMember(String name, OraclePackageNamespace.MemberKind kind, Object definitionNode)
      Add a member directly by name and kind. Used for adding members discovered through other means (e.g., exception declarations).
      Parameters:
      name - The member name
      kind - The member kind
      definitionNode - The AST node where this member is defined
    • mergeFrom

      public void mergeFrom(OraclePackageNamespace other)
      Merge members from another package namespace (spec + body merging).
      Parameters:
      other - The other namespace to merge from
    • getDisplayName

      Description copied from interface: INamespace
      Get a display name for this namespace (for debugging/error messages)
      Specified by:
      getDisplayName in interface INamespace
    • 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
      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
      Parameters:
      columnName - Column name to resolve
      Returns:
      ColumnSource if found, null otherwise
    • getAllColumnSources

      Description copied from interface: INamespace
      Get all column sources exposed by this namespace. Used for SELECT * expansion and smart completion.
      Specified by:
      getAllColumnSources in interface INamespace
      Returns:
      Map of column name -> ColumnSource
    • 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)
      Specified by:
      getFinalTable in interface INamespace
      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
      Returns:
      List of all physical tables
    • isValidated

      public boolean isValidated()
      Description copied from interface: INamespace
      Check if this namespace is validated/resolved. Some namespaces require resolution before they can provide column info.
      Specified by:
      isValidated in interface INamespace
      Returns:
      true if validated
    • validate

      public void validate()
      Description copied from interface: INamespace
      Validate/resolve this namespace. For subqueries: resolve the SELECT list For tables: load metadata if needed
      Specified by:
      validate in interface INamespace
    • getNode

      public Object getNode()
      Description copied from interface: INamespace
      Get the associated AST node (TTable, TSelectSqlStatement, etc.)
      Specified by:
      getNode in interface INamespace
      Returns:
      AST node, or null if not applicable
    • getPackageName

      Get the package name.
      Returns:
      The simple package name
    • getSchemaName

      Get the schema name.
      Returns:
      The schema name, or null if not specified
    • getMembers

      Get all members in this package.
      Returns:
      Unmodifiable map of member name (lowercase) -> PackageMember
    • hasMember

      public boolean hasMember(String name)
      Check if this package has a member with the given name.
      Parameters:
      name - The member name to check
      Returns:
      true if the member exists
    • getMember

      Get a specific member by name.
      Parameters:
      name - The member name
      Returns:
      The PackageMember, or null if not found
    • toString

      public String toString()
      Overrides:
      toString in class Object