The catalog object should provide functions to retrieve internal object id that match a given name, and functions to iterate through catalog structure (this will be used by the INFORMATION_SCHEMA views).
The iteration functions will be used by filters of the INFORMATION_SCHEMA namespace, as well as some JDBC driver functions. Functions should allow iterating through a collection and retrieving its items and sub-items.
The resolution functions should allow retrieving any object based on its type and internal ID, as well as retrieve an object based on its name and scope.
At name resolution step the parser should do a recursive name resolution of all identifiers token that are part of the operation tree. Depending on the current instruction, IDs that match named identifiers should be searched into the catalog, as well as in current scope (local variables, query fields) and upper level scope (as sub-query with references to fields of the parent query). Name resolution should return an error if the object has not been found, as well as if there is more than one id that matches this name (ambiguous name).
As defined in SQL standard, identifiers like table names can be prefixed. Exact process and scope used to retrieve the identifier can depend on target object type. The expected target type and scope should have been set during semantic analysis (as this type depends on the instruction in which this id is used). Retrieval and check of data types of the identifiers should be done during name resolution.