From 0e4464cd332c056f2798d31663804144723db26b Mon Sep 17 00:00:00 2001 From: Oleg Danilov Date: Fri, 29 Apr 2016 01:00:26 +0300 Subject: [PATCH] [SPARK-14990][SQL] nvl, coalesce, array functions with parameter of type 'array' --- .../spark/sql/catalyst/util/TypeUtils.scala | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/util/TypeUtils.scala b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/util/TypeUtils.scala index f603cbfb0cc2..c5ab5ffe2b98 100644 --- a/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/util/TypeUtils.scala +++ b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/util/TypeUtils.scala @@ -42,13 +42,14 @@ object TypeUtils { } def checkForSameTypeInputExpr(types: Seq[DataType], caller: String): TypeCheckResult = { - if (types.distinct.size > 1) { - TypeCheckResult.TypeCheckFailure( - s"input to $caller should all be the same type, but it's " + - types.map(_.simpleString).mkString("[", ", ", "]")) - } else { - TypeCheckResult.TypeCheckSuccess - } + types.foreach ( t => + if (!t.sameType(types.head)) { + return TypeCheckResult.TypeCheckFailure( + s"input to $caller should all be the same type, but it's " + + types.map(_.simpleString).mkString("[", ", ", "]")) + } + ) + TypeCheckResult.TypeCheckSuccess } def getNumeric(t: DataType): Numeric[Any] =