diff --git a/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/higherOrderFunctions.scala b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/higherOrderFunctions.scala index 08bb21b7c9055..89648fb40648c 100644 --- a/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/higherOrderFunctions.scala +++ b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/higherOrderFunctions.scala @@ -173,6 +173,13 @@ trait ArrayBasedUnaryHigherOrderFunction extends UnaryHigherOrderFunction { trait MapBasedUnaryHigherOrderFunction extends UnaryHigherOrderFunction { override def inputTypes: Seq[AbstractDataType] = Seq(MapType, expectingFunctionType) + + @transient val (keyType, valueType, valueContainsNull) = input.dataType match { + case MapType(kType, vType, vContainsNull) => (kType, vType, vContainsNull) + case _ => + val MapType(kType, vType, vContainsNull) = MapType.defaultConcreteType + (kType, vType, vContainsNull) + } } object ArrayBasedHigherOrderFunction { @@ -265,13 +272,6 @@ case class MapFilter( function: Expression) extends MapBasedUnaryHigherOrderFunction with CodegenFallback { - @transient val (keyType, valueType, valueContainsNull) = input.dataType match { - case MapType(kType, vType, vContainsNull) => (kType, vType, vContainsNull) - case _ => - val MapType(kType, vType, vContainsNull) = MapType.defaultConcreteType - (kType, vType, vContainsNull) - } - @transient lazy val (keyVar, valueVar) = { val args = function.asInstanceOf[LambdaFunction].arguments (args.head.asInstanceOf[NamedLambdaVariable], args.tail.head.asInstanceOf[NamedLambdaVariable])