package compiler

  1. Public
  2. All

Type Members

  1. class AssignUniqueSymbols extends Phase

    Ensure that all symbol definitions in a tree are unique

  2. trait ColumnizerUtils extends AnyRef

  3. class CompilationState extends AnyRef

    The mutable state of a compiler run, consisting of immutable state of individual phases that can be updated.

  4. class ConvertToComprehensions extends Phase

    Conversion of basic ASTs to a shape suitable for relational DBs.

  5. class ExpandRefs extends Phase with ColumnizerUtils

    Expand Paths to ProductNodes and TableExpansions into ProductNodes of Paths and TableRefExpansions of Paths, so that all Paths point to individual columns by index

  6. class ExpandTables extends Phase

    Replace all TableNodes with TableExpansions which contain both the expansion and the original table.

  7. class FixRowNumberOrdering extends Phase

    Inject the proper orderings into the RowNumber nodes produced earlier by the resolveFixJoins phase.

  8. class ForceOuterBinds extends Phase

    Ensure that all collection operations are wrapped in a Bind so that we have a place for expanding references later.

  9. class FuseComprehensions extends Phase

    Fuse sub-comprehensions into their parents.

  10. class Inline extends Phase

    Inline references to global symbols which occur only once in a Ref node.

  11. class LetDynamicEliminated extends Phase

    Ensure that LetDynamic has been eliminated

  12. class LocalizeRefs extends Phase

    Replace IntrinsicSymbols by AnonSymbols and collect them in a LetDynamic

  13. trait Phase extends (Node, CompilationState) ⇒ Node with Logging

    A phase of the query compiler, identified by a unique name

  14. class PruneFields extends Phase

    Remove unreferenced fields from StructNodes

  15. class QueryCompiler extends Logging

    An immutable, stateless query compiler consisting of a series of phases

  16. class ReconstructProducts extends Phase

    Since Nodes cannot be encoded into Scala Tuples, they have to be encoded into the Tuples' children instead, so we end up with trees like ProductNode(Select(r, ElementSymbol(1)), Select(r, ElementSymbol(2))) where r is a Ref to an expression that yields a Query of ProductNode(_, _).

  17. class RelabelUnions extends Phase

    Assign the AnonSymbols of fields from the left side of a Union to the right side.

  18. class ReplaceFieldSymbols extends Phase with ColumnizerUtils

    Replace references to FieldSymbols in TableExpansions by the appropriate ElementSymbol

  19. class ResolveZipJoins extends Phase

    Rewrite zip joins into a form suitable for SQL (using inner joins and RowNumber columns.

  20. class ResolveZipJoinsState extends AnyRef

  21. class RewriteOrderBy extends Phase

    Rewrite OrderBy to SortBy

  22. class RewritePaths extends Phase

    Remove TableExpansions and TableRefExpansions, and flatten ProductNodes into StructNodes and remove unnecessary columns from them.

  23. abstract class Transformer extends AnyRef

    A tree transformer which replaces nodes transitively while updating some information about the tree.

Value Members

  1. object Phase

    The standard phases of the query compiler

  2. object QueryCompiler

  3. object Transformer

  4. object UnionLeft