class RewriteJoins extends Phase
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
).
- Source
- RewriteJoins.scala
- Alphabetic
- By Inheritance
- RewriteJoins
- Phase
- Logging
- Function1
- AnyRef
- Any
- by any2stringadd
- by StringFormat
- by Ensuring
- by ArrowAssoc
- Hide All
- Show All
- Public
- All
Instance Constructors
- new RewriteJoins()
Type Members
Value Members
-
final
def
!=(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
-
final
def
##(): Int
- Definition Classes
- AnyRef → Any
-
def
+(other: String): String
- Implicit
- This member is added by an implicit conversion from RewriteJoins to any2stringadd[RewriteJoins] performed by method any2stringadd in scala.Predef.
- Definition Classes
- any2stringadd
-
def
->[B](y: B): (RewriteJoins, B)
- Implicit
- This member is added by an implicit conversion from RewriteJoins to ArrowAssoc[RewriteJoins] performed by method ArrowAssoc in scala.Predef.
- Definition Classes
- ArrowAssoc
- Annotations
- @inline()
-
final
def
==(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
- def and(p1Opt: Option[Node], p2: Node): Node
- def and(ns: IndexedSeq[Node]): Node
-
def
andThen[A](g: (CompilerState) ⇒ A): (CompilerState) ⇒ A
- Definition Classes
- Function1
- Annotations
- @unspecialized()
-
def
apply(state: CompilerState): CompilerState
Run the phase
Run the phase
- Definition Classes
- RewriteJoins → Phase → Function1
-
final
def
asInstanceOf[T0]: T0
- Definition Classes
- Any
-
def
clone(): AnyRef
- Attributes
- protected[java.lang]
- Definition Classes
- AnyRef
- Annotations
- @native() @throws( ... )
-
def
compose[A](g: (A) ⇒ CompilerState): (A) ⇒ CompilerState
- Definition Classes
- Function1
- Annotations
- @unspecialized()
-
def
eliminateIllegalRefs(j: Join, illegal: Set[TermSymbol], outsideRef: TermSymbol): (Join, Map[List[TermSymbol], Node])
Recursively push refs from the right-hand side of a Join to the left-hand side out of the join.
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.
-
def
ensuring(cond: (RewriteJoins) ⇒ Boolean, msg: ⇒ Any): RewriteJoins
- Implicit
- This member is added by an implicit conversion from RewriteJoins to Ensuring[RewriteJoins] performed by method Ensuring in scala.Predef.
- Definition Classes
- Ensuring
-
def
ensuring(cond: (RewriteJoins) ⇒ Boolean): RewriteJoins
- Implicit
- This member is added by an implicit conversion from RewriteJoins to Ensuring[RewriteJoins] performed by method Ensuring in scala.Predef.
- Definition Classes
- Ensuring
-
def
ensuring(cond: Boolean, msg: ⇒ Any): RewriteJoins
- Implicit
- This member is added by an implicit conversion from RewriteJoins to Ensuring[RewriteJoins] performed by method Ensuring in scala.Predef.
- Definition Classes
- Ensuring
-
def
ensuring(cond: Boolean): RewriteJoins
- Implicit
- This member is added by an implicit conversion from RewriteJoins to Ensuring[RewriteJoins] performed by method Ensuring in scala.Predef.
- Definition Classes
- Ensuring
-
final
def
eq(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
-
def
equals(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
-
def
finalize(): Unit
- Attributes
- protected[java.lang]
- Definition Classes
- AnyRef
- Annotations
- @throws( classOf[java.lang.Throwable] )
-
def
flattenAliasingMap(b: Bind): Bind
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.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. -
def
formatted(fmtstr: String): String
- Implicit
- This member is added by an implicit conversion from RewriteJoins to StringFormat[RewriteJoins] performed by method StringFormat in scala.Predef.
- Definition Classes
- StringFormat
- Annotations
- @inline()
-
final
def
getClass(): Class[_]
- Definition Classes
- AnyRef → Any
- Annotations
- @native()
- def hasRefTo(n: Node, s: Set[TermSymbol]): Boolean
-
def
hashCode(): Int
- Definition Classes
- AnyRef → Any
- Annotations
- @native()
-
def
hoistFilterFromBind(b: Bind): (Node, Set[TypeSymbol])
Recursively hoist
Filter
out of ofBind(_, Filter, Pure(StructNode))
.Recursively hoist
Filter
out of ofBind(_, 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). -
def
hoistFilters(j: Join): (Join, Set[TypeSymbol])
Hoist
Filter
nodes inJoin
generators into join predicates. -
final
def
isInstanceOf[T0]: Boolean
- Definition Classes
- Any
-
lazy val
logger: SlickLogger
- Attributes
- protected[this]
- Definition Classes
- Logging
-
val
name: String
The unique name of the phase
The unique name of the phase
- Definition Classes
- RewriteJoins → Phase
-
final
def
ne(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
-
final
def
notify(): Unit
- Definition Classes
- AnyRef
- Annotations
- @native()
-
final
def
notifyAll(): Unit
- Definition Classes
- AnyRef
- Annotations
- @native()
-
def
rearrangeJoinConditions(j: Join, alsoPull: Set[TermSymbol]): Join
In a
Join(s1, _, _, Join(_, _, _, _, JoinType.Inner, on2), JoinType.Inner, on1)
where parts ofon2
refer tos1
, merge them intoon1
.In a
Join(s1, _, _, Join(_, _, _, _, JoinType.Inner, on2), JoinType.Inner, on1)
where parts ofon2
refer tos1
, merge them intoon1
. 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. - def splitConjunctions(n: Node): IndexedSeq[Node]
-
final
def
synchronized[T0](arg0: ⇒ T0): T0
- Definition Classes
- AnyRef
-
def
toString(): String
- Definition Classes
- Function1 → AnyRef → Any
- def tr(n: Node): Node
-
final
def
wait(): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws( ... )
-
final
def
wait(arg0: Long, arg1: Int): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws( ... )
-
final
def
wait(arg0: Long): Unit
- Definition Classes
- AnyRef
- Annotations
- @native() @throws( ... )
-
def
→[B](y: B): (RewriteJoins, B)
- Implicit
- This member is added by an implicit conversion from RewriteJoins to ArrowAssoc[RewriteJoins] performed by method ArrowAssoc in scala.Predef.
- Definition Classes
- ArrowAssoc
edit this text on github
Scala Language-Integrated Connection Kit
This is the API documentation for the Slick database library. It should be used as an additional resource to the user manual.
Further documentation for Slick can be found on the documentation pages.
To the slick package list...