diff --git a/src/main/scala/com/github/mrpowers/spark/daria/sql/functions.scala b/src/main/scala/com/github/mrpowers/spark/daria/sql/functions.scala index cd041431..bf5f5501 100644 --- a/src/main/scala/com/github/mrpowers/spark/daria/sql/functions.scala +++ b/src/main/scala/com/github/mrpowers/spark/daria/sql/functions.scala @@ -4,6 +4,8 @@ import org.apache.spark.sql.Column import org.apache.spark.sql.functions._ import scala.reflect.runtime.universe._ +import scala.util.Try + /** * Spark [has a ton of SQL functions](https://spark.apache.org/docs/2.1.0/api/java/org/apache/spark/sql/functions.html) and spark-daria is meant to fill in any gaps. @@ -251,7 +253,7 @@ object functions { * @group collection_funcs */ def forall[T: TypeTag](f: (T => Boolean)) = udf[Boolean, Seq[T]] { (arr: Seq[T]) => - arr.forall(f(_)) + Try(arr.forall(f(_))).toOption.getOrElse(false) } /** diff --git a/src/test/scala/com/github/mrpowers/spark/daria/sql/FunctionsTest.scala b/src/test/scala/com/github/mrpowers/spark/daria/sql/FunctionsTest.scala index b8041c9e..1b65774d 100644 --- a/src/test/scala/com/github/mrpowers/spark/daria/sql/FunctionsTest.scala +++ b/src/test/scala/com/github/mrpowers/spark/daria/sql/FunctionsTest.scala @@ -357,6 +357,10 @@ object FunctionsTest extends TestSuite with DataFrameComparer with ColumnCompare "crazy" ), true + ), + ( + null, + false ) ), List(