Compute type information for all nodes in the AST
Ensure that all symbol definitions in a tree are unique
The code generator phase.
The current state of a compiler run, consisting of immutable state of individual phases.
Conversion of basic ASTs to a shape suitable for relational DBs.
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.
Expand paths of record types to reference all fields individually and recreate the record structure at the call site.
Expand table-valued expressions in the result type to their star projection.
Inject the proper orderings into the RowNumber nodes produced earlier by the resolveFixJoins phase.
Flatten all Pure node contents into a single StructNode.
Ensure that all collection operations are wrapped in a Bind so that we have a place for expanding references later.
Fuse sub-comprehensions into their parents.
Lift operations that are preferred to be performed on the client side out of sub-queries.
Infer types and compute missing structural views for all nominal table types.
Inline references to IntrinsicSymbols.
A custom compiler for INSERT statements.
A phase of the query compiler, identified by a unique name
Remove unreferenced fields from StructNodes and convert unreferenced StructNodes to single columns or ProductNodes (which is needed for aggregation functions and at the top level).
An immutable, stateless query compiler consisting of a series of phases
Assign the AnonSymbols of fields from the left side of a Union to the right side.
Rewrite zip joins into a form suitable for SQL (using inner joins and RowNumber columns.
For SQL back-ends which do not support real boolean types for fields and general expressions but which do have special boolean expressions and operators, this phase injects conversions between fake and real boolean values.
Slick AST to database query compiler