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
- Serializable
- Product
- Equals
- AnyRef
- Any
- Hide All
- Show All
- Public
- All
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( ... ) @native() @HotSpotIntrinsicCandidate()
-
final
def
eq(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
-
final
def
getClass(): Class[_]
- Definition Classes
- AnyRef → Any
- Annotations
- @native() @HotSpotIntrinsicCandidate()
-
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() @HotSpotIntrinsicCandidate()
-
final
def
notifyAll(): Unit
- Definition Classes
- AnyRef
- Annotations
- @native() @HotSpotIntrinsicCandidate()
- val plan: LogicalPlan
- val planCost: Cost
-
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(arg0: Long, arg1: Int): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws( ... )
-
final
def
wait(arg0: Long): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws( ... ) @native()
-
final
def
wait(): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws( ... )
Deprecated Value Members
-
def
finalize(): Unit
- Attributes
- protected[lang]
- Definition Classes
- AnyRef
- Annotations
- @throws( classOf[java.lang.Throwable] ) @Deprecated
- Deprecated