RewriteJoins
Rewrite monadic joins to applicative joins. After this phase all Bind nodes are of the
form Bind(_, _, Pure(_, _)) (i.e. flatMap has been reduced to map).
Attributes
- Source:
- RewriteJoins.scala
- Graph
- Supertypes
Members list
Type members
Inherited types
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.
Attributes
- Inherited from:
- Phase
- Source:
- QueryCompiler.scala
Value members
Concrete methods
Attributes
- Source:
- RewriteJoins.scala
Attributes
- Source:
- RewriteJoins.scala
Run the phase
Recursively push refs from the right-hand side of a Join to the left-hand side out of the join.
This is only possible when they occur in a a mapping Bind(_, _, Pure(StructNode)) directly
at the RHS of a Join. Returns the (possibly transformed) Join and replacements for forward
paths into it.
Recursively push refs from the right-hand side of a Join to the left-hand side out of the join.
This is only possible when they occur in a a mapping Bind(_, _, Pure(StructNode)) directly
at the RHS of a Join. Returns the (possibly transformed) Join and replacements for forward
paths into it.
TODO: If the remainder of the mapping Bind is purely aliasing, eliminate it entirely.
Attributes
- Source:
- RewriteJoins.scala
Merge nested mapping operations of the form Bind(_, Bind(_, _, Pure(StructNode(p1), _)), Pure(StructNode(p2), _))
into a single Bind, provided that each element of either p1 or p2 contains not more than one path.
This transformation is not required for the correctness of join rewriting but it keeps the
tree smaller to speed up subsequent phases.
Merge nested mapping operations of the form Bind(_, Bind(_, _, Pure(StructNode(p1), _)), Pure(StructNode(p2), _))
into a single Bind, provided that each element of either p1 or p2 contains not more than one path.
This transformation is not required for the correctness of join rewriting but it keeps the
tree smaller to speed up subsequent phases.
Attributes
- Source:
- RewriteJoins.scala
Attributes
- Source:
- RewriteJoins.scala
Recursively hoist Filter out of of Bind(_, Filter, Pure(StructNode)). Returns the possibly
modified tree plus a set of invalidated TypeSymbols (non-empty if additional columns
have to be added to the base projection for the filters).
Recursively hoist Filter out of of Bind(_, Filter, Pure(StructNode)). Returns the possibly
modified tree plus a set of invalidated TypeSymbols (non-empty if additional columns
have to be added to the base projection for the filters).
Attributes
- Source:
- RewriteJoins.scala
Hoist Filter nodes in Join generators into join predicates.
In a Join(s1, _, _, Join(_, _, _, _, JoinType.Inner, on2), JoinType.Inner, on1) where parts
of on2 refer to s1, merge them into on1. Nested joins are processed recursively. The
same is done in the opposite direction, pushing predicates down into sub-joins if they only
reference one side of the join.
In a Join(s1, _, _, Join(_, _, _, _, JoinType.Inner, on2), JoinType.Inner, on1) where parts
of on2 refer to s1, merge them into on1. Nested joins are processed recursively. The
same is done in the opposite direction, pushing predicates down into sub-joins if they only
reference one side of the join.
Attributes
- Source:
- RewriteJoins.scala
Attributes
- Source:
- RewriteJoins.scala
Attributes
- Source:
- RewriteJoins.scala
Inherited methods
Attributes
- Inherited from:
- Function1
Attributes
- Inherited from:
- Function1
Returns a string representation of the object.
Returns a string representation of the object.
The default representation is platform dependent.
Attributes
- Returns:
a string representation of the object.
- Definition Classes
- Function1 -> Any
- Inherited from:
- Function1
Concrete fields
The unique name of the phase