in modules/spark-ext/spark/src/main/scala/org/apache/ignite/spark/impl/optimization/ConditionExpressions.scala [80:144]
override def toString(expr: Expression, childToString: Expression ⇒ String, useQualifier: Boolean,
useAlias: Boolean, caseSensitive: Boolean): Option[String] = expr match {
case EqualTo(left, right) ⇒
Some(s"${childToString(left)} = ${childToString(right)}")
case EqualNullSafe(left, right) ⇒
Some(s"(${childToString(left)} IS NULL OR ${childToString(left)} = ${childToString(right)})")
case GreaterThan(left, right) ⇒
Some(s"${childToString(left)} > ${childToString(right)}")
case GreaterThanOrEqual(left, right) ⇒
Some(s"${childToString(left)} >= ${childToString(right)}")
case LessThan(left, right) ⇒
Some(s"${childToString(left)} < ${childToString(right)}")
case LessThanOrEqual(left, right) ⇒
Some(s"${childToString(left)} <= ${childToString(right)}")
case In(attr, values) ⇒
Some(s"${childToString(attr)} IN (${values.map(childToString(_)).mkString(", ")})")
case IsNull(child) ⇒
Some(s"${childToString(child)} IS NULL")
case IsNotNull(child) ⇒
Some(s"${childToString(child)} IS NOT NULL")
case And(left, right) ⇒
Some(s"${childToString(left)} AND ${childToString(right)}")
case Or(left, right) ⇒
Some(s"${childToString(left)} OR ${childToString(right)}")
case Not(child) ⇒
Some(s"NOT ${childToString(child)}")
case StartsWith(attr, value) ⇒ {
//Expecting string literal here.
//To add % sign it's required to remove quotes.
val valStr = removeQuotes(childToString(value))
Some(s"${childToString(attr)} LIKE '$valStr%'")
}
case EndsWith(attr, value) ⇒ {
//Expecting string literal here.
//To add % sign it's required to remove quotes.
val valStr = removeQuotes(childToString(value))
Some(s"${childToString(attr)} LIKE '%$valStr'")
}
case Contains(attr, value) ⇒ {
//Expecting string literal here.
//To add % signs it's required to remove quotes.
val valStr = removeQuotes(childToString(value))
Some(s"${childToString(attr)} LIKE '%$valStr%'")
}
case _ ⇒
None
}