object InjectRuntimeFilter extends Rule[LogicalPlan] with PredicateHelper with JoinSelectionHelper
Insert a filter on one side of the join if the other side has a selective predicate. The filter could be an IN subquery (converted to a semi join), a bloom filter, or something else in the future.
- Alphabetic
- By Inheritance
- InjectRuntimeFilter
- JoinSelectionHelper
- PredicateHelper
- AliasHelper
- Rule
- Logging
- SQLConfHelper
- AnyRef
- Any
- Hide All
- Show All
- Public
- Protected
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
- def apply(plan: LogicalPlan): LogicalPlan
- Definition Classes
- InjectRuntimeFilter → Rule
- final def asInstanceOf[T0]: T0
- Definition Classes
- Any
- def buildBalancedPredicate(expressions: Seq[Expression], op: (Expression, Expression) => Expression): Expression
Builds a balanced output predicate in bottom up approach, by applying binary operator op pair by pair on input predicates exprs recursively.
Builds a balanced output predicate in bottom up approach, by applying binary operator op pair by pair on input predicates exprs recursively. Example: exprs = [a, b, c, d], op = And, returns (a And b) And (c And d) exprs = [a, b, c, d, e, f], op = And, returns ((a And b) And (c And d)) And (e And f)
- Attributes
- protected
- Definition Classes
- PredicateHelper
- def canBroadcastBySize(plan: LogicalPlan, conf: SQLConf): Boolean
Matches a plan whose output should be small enough to be used in broadcast join.
Matches a plan whose output should be small enough to be used in broadcast join.
- Definition Classes
- JoinSelectionHelper
- def canBuildBroadcastLeft(joinType: JoinType): Boolean
- Definition Classes
- JoinSelectionHelper
- def canBuildBroadcastRight(joinType: JoinType): Boolean
- Definition Classes
- JoinSelectionHelper
- def canBuildShuffledHashJoinLeft(joinType: JoinType): Boolean
- Definition Classes
- JoinSelectionHelper
- def canBuildShuffledHashJoinRight(joinType: JoinType): Boolean
- Definition Classes
- JoinSelectionHelper
- def canEvaluate(expr: Expression, plan: LogicalPlan): Boolean
Returns true if
exprcan be evaluated using only the output ofplan.Returns true if
exprcan be evaluated using only the output ofplan. This method can be used to determine when it is acceptable to move expression evaluation within a query plan.For example consider a join between two relations R(a, b) and S(c, d).
-
canEvaluate(EqualTo(a,b), R)returnstrue-canEvaluate(EqualTo(a,c), R)returnsfalse-canEvaluate(Literal(1), R)returnstrueas literals CAN be evaluated on any plan- Attributes
- protected
- Definition Classes
- PredicateHelper
- def canEvaluateWithinJoin(expr: Expression): Boolean
Returns true iff
exprcould be evaluated as a condition within join.Returns true iff
exprcould be evaluated as a condition within join.- Attributes
- protected
- Definition Classes
- PredicateHelper
- def canPlanAsBroadcastHashJoin(join: Join, conf: SQLConf): Boolean
- Definition Classes
- JoinSelectionHelper
- def canPruneLeft(joinType: JoinType): Boolean
- Definition Classes
- JoinSelectionHelper
- def canPruneRight(joinType: JoinType): Boolean
- Definition Classes
- JoinSelectionHelper
- def clone(): AnyRef
- Attributes
- protected[lang]
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.CloneNotSupportedException]) @native()
- def conf: SQLConf
The active config object within the current scope.
The active config object within the current scope. See SQLConf.get for more information.
- Definition Classes
- SQLConfHelper
- final def eq(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
- def equals(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef → Any
- def extractPredicatesWithinOutputSet(condition: Expression, outputSet: AttributeSet): Option[Expression]
Returns a filter that its reference is a subset of
outputSetand it contains the maximum constraints fromcondition.Returns a filter that its reference is a subset of
outputSetand it contains the maximum constraints fromcondition. This is used for predicate pushdown. When there is no such filter,Noneis returned.- Attributes
- protected
- Definition Classes
- PredicateHelper
- def finalize(): Unit
- Attributes
- protected[lang]
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.Throwable])
- def findExpressionAndTrackLineageDown(exp: Expression, plan: LogicalPlan): Option[(Expression, LogicalPlan)]
Find the origin of where the input references of expression exp were scanned in the tree of plan, and if they originate from a single leaf node.
Find the origin of where the input references of expression exp were scanned in the tree of plan, and if they originate from a single leaf node. Returns optional tuple with Expression, undoing any projections and aliasing that has been done along the way from plan to origin, and the origin LeafNode plan from which all the exp
- Definition Classes
- PredicateHelper
- def getAliasMap(exprs: Seq[NamedExpression]): AttributeMap[Alias]
- Attributes
- protected
- Definition Classes
- AliasHelper
- def getAliasMap(plan: Aggregate): AttributeMap[Alias]
- Attributes
- protected
- Definition Classes
- AliasHelper
- def getAliasMap(plan: Project): AttributeMap[Alias]
- Attributes
- protected
- Definition Classes
- AliasHelper
- def getBroadcastBuildSide(left: LogicalPlan, right: LogicalPlan, joinType: JoinType, hint: JoinHint, hintOnly: Boolean, conf: SQLConf): Option[BuildSide]
- Definition Classes
- JoinSelectionHelper
- def getBroadcastNestedLoopJoinBuildSide(hint: JoinHint): Option[BuildSide]
- Definition Classes
- JoinSelectionHelper
- final def getClass(): Class[_ <: AnyRef]
- Definition Classes
- AnyRef → Any
- Annotations
- @native()
- def getShuffleHashJoinBuildSide(left: LogicalPlan, right: LogicalPlan, joinType: JoinType, hint: JoinHint, hintOnly: Boolean, conf: SQLConf): Option[BuildSide]
- Definition Classes
- JoinSelectionHelper
- def getSmallerSide(left: LogicalPlan, right: LogicalPlan): BuildSide
- Definition Classes
- JoinSelectionHelper
- def hasBloomFilter(left: LogicalPlan, right: LogicalPlan, leftKey: Expression, rightKey: Expression): Boolean
- def hasDynamicPruningSubquery(left: LogicalPlan, right: LogicalPlan, leftKey: Expression, rightKey: Expression): Boolean
- Annotations
- @tailrec()
- def hasInSubquery(left: LogicalPlan, right: LogicalPlan, leftKey: Expression, rightKey: Expression): Boolean
- def hasRuntimeFilter(left: LogicalPlan, right: LogicalPlan, leftKey: Expression, rightKey: Expression): Boolean
- def hashCode(): Int
- Definition Classes
- AnyRef → Any
- Annotations
- @native()
- def hintToBroadcastLeft(hint: JoinHint): Boolean
- Definition Classes
- JoinSelectionHelper
- def hintToBroadcastRight(hint: JoinHint): Boolean
- Definition Classes
- JoinSelectionHelper
- def hintToNotBroadcastAndReplicate(hint: JoinHint): Boolean
- Definition Classes
- JoinSelectionHelper
- def hintToNotBroadcastAndReplicateLeft(hint: JoinHint): Boolean
- Definition Classes
- JoinSelectionHelper
- def hintToNotBroadcastAndReplicateRight(hint: JoinHint): Boolean
- Definition Classes
- JoinSelectionHelper
- def hintToNotBroadcastLeft(hint: JoinHint): Boolean
- Definition Classes
- JoinSelectionHelper
- def hintToNotBroadcastRight(hint: JoinHint): Boolean
- Definition Classes
- JoinSelectionHelper
- def hintToPreferShuffleHashJoin(hint: JoinHint): Boolean
- Definition Classes
- JoinSelectionHelper
- def hintToPreferShuffleHashJoinLeft(hint: JoinHint): Boolean
- Definition Classes
- JoinSelectionHelper
- def hintToPreferShuffleHashJoinRight(hint: JoinHint): Boolean
- Definition Classes
- JoinSelectionHelper
- def hintToShuffleHashJoin(hint: JoinHint): Boolean
- Definition Classes
- JoinSelectionHelper
- def hintToShuffleHashJoinLeft(hint: JoinHint): Boolean
- Definition Classes
- JoinSelectionHelper
- def hintToShuffleHashJoinRight(hint: JoinHint): Boolean
- Definition Classes
- JoinSelectionHelper
- def hintToShuffleReplicateNL(hint: JoinHint): Boolean
- Definition Classes
- JoinSelectionHelper
- def hintToSortMergeJoin(hint: JoinHint): Boolean
- Definition Classes
- JoinSelectionHelper
- def initializeLogIfNecessary(isInterpreter: Boolean, silent: Boolean): Boolean
- Attributes
- protected
- Definition Classes
- Logging
- def initializeLogIfNecessary(isInterpreter: Boolean): Unit
- Attributes
- protected
- Definition Classes
- Logging
- final def isInstanceOf[T0]: Boolean
- Definition Classes
- Any
- def isLikelySelective(e: Expression): Boolean
Returns whether an expression is likely to be selective
Returns whether an expression is likely to be selective
- Definition Classes
- PredicateHelper
- def isNullIntolerant(expr: Expression): Boolean
- Attributes
- protected
- Definition Classes
- PredicateHelper
- def isTraceEnabled(): Boolean
- Attributes
- protected
- Definition Classes
- Logging
- def log: Logger
- Attributes
- protected
- Definition Classes
- Logging
- def logDebug(msg: => String, throwable: Throwable): Unit
- Attributes
- protected
- Definition Classes
- Logging
- def logDebug(msg: => String): Unit
- Attributes
- protected
- Definition Classes
- Logging
- def logError(msg: => String, throwable: Throwable): Unit
- Attributes
- protected
- Definition Classes
- Logging
- def logError(msg: => String): Unit
- Attributes
- protected
- Definition Classes
- Logging
- def logInfo(msg: => String, throwable: Throwable): Unit
- Attributes
- protected
- Definition Classes
- Logging
- def logInfo(msg: => String): Unit
- Attributes
- protected
- Definition Classes
- Logging
- def logName: String
- Attributes
- protected
- Definition Classes
- Logging
- def logTrace(msg: => String, throwable: Throwable): Unit
- Attributes
- protected
- Definition Classes
- Logging
- def logTrace(msg: => String): Unit
- Attributes
- protected
- Definition Classes
- Logging
- def logWarning(msg: => String, throwable: Throwable): Unit
- Attributes
- protected
- Definition Classes
- Logging
- def logWarning(msg: => String): Unit
- Attributes
- protected
- Definition Classes
- Logging
- 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 outputWithNullability(output: Seq[Attribute], nonNullAttrExprIds: Seq[ExprId]): Seq[Attribute]
- Attributes
- protected
- Definition Classes
- PredicateHelper
- def replaceAlias(expr: Expression, aliasMap: AttributeMap[Alias]): Expression
Replace all attributes, that reference an alias, with the aliased expression
Replace all attributes, that reference an alias, with the aliased expression
- Attributes
- protected
- Definition Classes
- AliasHelper
- def replaceAliasButKeepName(expr: NamedExpression, aliasMap: AttributeMap[Alias]): NamedExpression
Replace all attributes, that reference an alias, with the aliased expression, but keep the name of the outermost attribute.
Replace all attributes, that reference an alias, with the aliased expression, but keep the name of the outermost attribute.
- Attributes
- protected
- Definition Classes
- AliasHelper
- lazy val ruleId: RuleId
- Attributes
- protected
- Definition Classes
- Rule
- val ruleName: String
Name for this rule, automatically inferred based on class name.
Name for this rule, automatically inferred based on class name.
- Definition Classes
- Rule
- def splitConjunctivePredicates(condition: Expression): Seq[Expression]
- Attributes
- protected
- Definition Classes
- PredicateHelper
- def splitDisjunctivePredicates(condition: Expression): Seq[Expression]
- Attributes
- protected
- Definition Classes
- PredicateHelper
- final def synchronized[T0](arg0: => T0): T0
- Definition Classes
- AnyRef
- def toString(): String
- Definition Classes
- AnyRef → Any
- def trimAliases(e: Expression): Expression
- Attributes
- protected
- Definition Classes
- AliasHelper
- def trimNonTopLevelAliases[T <: Expression](e: T): T
- Attributes
- protected
- Definition Classes
- AliasHelper
- 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()