object SubExprUtils extends PredicateHelper
- Alphabetic
- By Inheritance
- SubExprUtils
- PredicateHelper
- AnyRef
- Any
- Hide All
- Show All
- Public
- All
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
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
clone(): AnyRef
- Attributes
- protected[lang]
- Definition Classes
- AnyRef
- Annotations
- @throws( ... ) @native()
-
def
containsOuter(e: Expression): Boolean
Returns true when an expression contains correlated predicates i.e outer references and returns false otherwise.
-
final
def
eq(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
-
def
equals(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
-
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
-
final
def
getClass(): Class[_]
- Definition Classes
- AnyRef → Any
- Annotations
- @native()
-
def
getCorrelatedPredicates(plan: LogicalPlan): Seq[Expression]
Returns the correlated predicates from a logical plan.
Returns the correlated predicates from a logical plan. The OuterReference wrapper is removed before returning the predicate to the caller.
-
def
getOuterReferences(plan: LogicalPlan): Seq[Expression]
Returns all the expressions that have outer references from a logical plan.
Returns all the expressions that have outer references from a logical plan. Currently only Filter operator can host outer references.
-
def
getOuterReferences(conditions: Seq[Expression]): Seq[Expression]
Given a list of expressions, returns the expressions which have outer references.
Given a list of expressions, returns the expressions which have outer references. Aggregate expressions are treated in a special way. If the children of aggregate expression contains an outer reference, then the entire aggregate expression is marked as an outer reference. Example (SQL):
SELECT a FROM l GROUP by 1 HAVING EXISTS (SELECT 1 FROM r WHERE d < min(b))
In the above case, we want to mark the entire min(b) as an outer reference OuterReference(min(b)) instead of min(OuterReference(b)). TODO: Currently we don't allow deep correlation. Also, we don't allow mixing of outer references and local references under an aggregate expression. For example (SQL):
SELECT .. FROM p1 WHERE EXISTS (SELECT ... FROM p2 WHERE EXISTS (SELECT ... FROM sq WHERE min(p1.a + p2.b) = sq.c)) SELECT .. FROM p1 WHERE EXISTS (SELECT ... FROM p2 WHERE EXISTS (SELECT ... FROM sq WHERE min(p1.a) + max(p2.b) = sq.c)) SELECT .. FROM p1 WHERE EXISTS (SELECT ... FROM p2 WHERE EXISTS (SELECT ... FROM sq WHERE min(p1.a + sq.c) > 1))The code below needs to change when we support the above cases.
-
def
hasNullAwarePredicateWithinNot(condition: Expression): Boolean
Returns whether there are any null-aware predicate subqueries inside Not.
Returns whether there are any null-aware predicate subqueries inside Not. If not, we could turn the null-aware predicate into not-null-aware predicate.
-
def
hasOuterReferences(plan: LogicalPlan): Boolean
Given a logical plan, returns TRUE if it has an outer reference and false otherwise.
-
def
hashCode(): Int
- Definition Classes
- AnyRef → Any
- Annotations
- @native()
-
final
def
isInstanceOf[T0]: Boolean
- Definition Classes
- Any
-
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
replaceAlias(condition: Expression, aliases: AttributeMap[Expression]): Expression
- Attributes
- protected
- Definition Classes
- PredicateHelper
-
def
splitConjunctivePredicates(condition: Expression): Seq[Expression]
- Attributes
- protected
- Definition Classes
- PredicateHelper
-
def
splitDisjunctivePredicates(condition: Expression): Seq[Expression]
- Attributes
- protected
- Definition Classes
- PredicateHelper
-
def
stripOuterReference(e: Expression): Expression
Returns an expression after removing the OuterReference shell.
-
def
stripOuterReferences(p: LogicalPlan): LogicalPlan
Returns the logical plan after removing the OuterReference shell from all the expressions of the input logical plan.
-
def
stripOuterReferences(e: Seq[Expression]): Seq[Expression]
Returns the list of expressions after removing the OuterReference shell from each of the expression.
-
final
def
synchronized[T0](arg0: ⇒ T0): T0
- Definition Classes
- AnyRef
-
def
toString(): String
- Definition Classes
- AnyRef → Any
-
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
- @throws( ... ) @native()