The immutable state of the phase that can also be accessed by other phases.
The immutable state of the phase that can also be accessed by other phases.
Run the phase
Run the phase
Create a structured return value for the client side, based on the result type (which may contain MappedTypes).
Create a structured return value for the client side, based on the result type (which may contain MappedTypes). References are created to linearized columns and not to the real structure. This keeps further compiler phases simple because we don't have to do any rewriting here. We just need to be careful not to typecheck the resulting tree or resolve those refs until the server-side tree has been flattened. In the future we may want to create the real refs and rewrite them later in order to gain the ability to optimize the set of columns in the result set.
The unique name of the phase
The unique name of the phase
Remove MappedTypes from a Type
Remove TypeMapping nodes and MappedTypes
Force collection return type.
Force collection return type. This might get more complicated in the future. For now, all primitive types should be set (but collection-typed nodes and product nodes may have UnassignedType) and ProductNodes cannot contain nested collections.
Create a ResultSetMapping root node, ensure that the top-level server-side node returns a collection, and hoist client-side type conversions into the ResultSetMapping.