The Resolver annotates the SynTree with information about such things as data conversions, column names, discretionary access control security checks, and underlying relationships, and then produces a more fleshed out parse tree called a ResTree or Red Tree.
The following provides an overview of the activities performed by the Resolver:
- The Resolver takes the SynTree as its input from the Syntaxer.
- Each database or user, table, view, trigger, stored procedure, and macro is assigned a globally unique numeric ID.
Each column and each index is assigned a numeric ID that is unique within its table.
These IDs are maintained in the Data Dictionary.
- The Resolver refers to the Data Dictionary to verify all names and privileges and to convert those names to their equivalent numeric IDs.
- The Resolver takes available information from the Data Dictionary cache, which is used on a least-recently-used or most-recently-used basis.
If the needed information is not cached, it is retrieved from the appropriate system tables.
- If a request parcel contains views or macros, the Resolver retrieves the view or macro text from the Data Dictionary, resolves it, and then merges the elements of the resulting tree into the request tree.
- The Resolver produces the ResTree as its output and passes it on to Security.