in modules/spark-ext/spark/src/main/scala/org/apache/ignite/spark/impl/optimization/SystemExpressions.scala [28:70]
override def apply(expr: Expression, checkChild: Expression ⇒ Boolean): Boolean = expr match {
case Coalesce(children) ⇒
children.forall(checkChild)
case Greatest(children) ⇒
children.forall(checkChild)
case IfNull(left, right, _) ⇒
checkChild(left) && checkChild(right)
case Least(children) ⇒
children.forall(checkChild)
case NullIf(left, right, _) ⇒
checkChild(left) && checkChild(right)
case Nvl2(expr1, expr2, expr3, _) ⇒
checkChild(expr1) && checkChild(expr2) && checkChild(expr3)
case If(predicate, trueValue, falseValue) ⇒
predicate match {
case IsNotNull(child) ⇒
checkChild(child) && checkChild(trueValue) && checkChild(falseValue)
case IsNull(child) ⇒
checkChild(child) && checkChild(trueValue) && checkChild(falseValue)
case EqualTo(left, right) ⇒
trueValue match {
case Literal(null, _) ⇒
(left == falseValue || right == falseValue) && checkChild(left) && checkChild(right)
case _ ⇒
false
}
case _ ⇒
false
}
case _ ⇒
false
}