case class JoinPlan(itemIds: Set[Int], plan: LogicalPlan, joinConds: ExpressionSet, planCost: Cost) extends Product with Serializable
Partial join order in a specific level.
- itemIds
Set of item ids participating in this partial plan.
- plan
The plan tree with the lowest cost for these items found so far.
- joinConds
Join conditions included in the plan.
- planCost
The cost of this plan tree is the sum of costs of all intermediate joins.
- Alphabetic
- By Inheritance
- JoinPlan
- Serializable
- Product
- Equals
- AnyRef
- Any
- Hide All
- Show All
- Public
- Protected
Instance Constructors
- new JoinPlan(itemIds: Set[Int], plan: LogicalPlan, joinConds: ExpressionSet, planCost: Cost)
- itemIds
Set of item ids participating in this partial plan.
- plan
The plan tree with the lowest cost for these items found so far.
- joinConds
Join conditions included in the plan.
- planCost
The cost of this plan tree is the sum of costs of all intermediate joins.
Value Members
- final def !=(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
- final def ##: Int
- Definition Classes
- AnyRef → Any
- final def ==(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
- final def asInstanceOf[T0]: T0
- Definition Classes
- Any
- def betterThan(other: JoinPlan, conf: SQLConf): Boolean
To identify the plan with smaller computational cost, we use the weighted geometric mean of ratio of rows and the ratio of sizes in bytes.
To identify the plan with smaller computational cost, we use the weighted geometric mean of ratio of rows and the ratio of sizes in bytes.
There are other ways to combine these values as a cost comparison function. Some of these, that we have experimented with, but have gotten worse result, than with the current one: 1) Weighted arithmetic mean of these two ratios - adding up fractions puts less emphasis on ratios between 0 and 1. Ratios 10 and 0.1 should be considered to be just as strong evidences in opposite directions. The arithmetic mean of these would be heavily biased towards the 10. 2) Absolute cost (cost = weight * rowCount + (1 - weight) * size) - when adding up two numeric measurements that have different units we can easily end up with one overwhelming the other.
- def clone(): AnyRef
- Attributes
- protected[lang]
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.CloneNotSupportedException]) @native()
- final def eq(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
- def finalize(): Unit
- Attributes
- protected[lang]
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.Throwable])
- final def getClass(): Class[_ <: AnyRef]
- Definition Classes
- AnyRef → Any
- Annotations
- @native()
- final def isInstanceOf[T0]: Boolean
- Definition Classes
- Any
- val itemIds: Set[Int]
- val joinConds: ExpressionSet
- 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()
- val plan: LogicalPlan
- val planCost: Cost
- def productElementNames: Iterator[String]
- Definition Classes
- Product
- def rootCost(conf: SQLConf): Cost
Get the cost of the root node of this plan tree.
- final def synchronized[T0](arg0: => T0): T0
- Definition Classes
- AnyRef
- final def wait(): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException])
- final def wait(arg0: Long, arg1: Int): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException])
- final def wait(arg0: Long): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException]) @native()