@@ -90,6 +90,8 @@ object LambdaFunction {
90
90
*/
91
91
trait HigherOrderFunction extends Expression with ExpectsInputTypes {
92
92
93
+ override def nullable : Boolean = arguments.exists(_.nullable)
94
+
93
95
override def children : Seq [Expression ] = arguments ++ functions
94
96
95
97
/**
@@ -217,8 +219,6 @@ case class ArrayTransform(
217
219
function : Expression )
218
220
extends ArrayBasedSimpleHigherOrderFunction with CodegenFallback {
219
221
220
- override def nullable : Boolean = argument.nullable
221
-
222
222
override def dataType : ArrayType = ArrayType (function.dataType, function.nullable)
223
223
224
224
override def bind (f : (Expression , Seq [(DataType , Boolean )]) => LambdaFunction ): ArrayTransform = {
@@ -287,8 +287,6 @@ case class MapFilter(
287
287
copy(function = f(function, (keyType, false ) :: (valueType, valueContainsNull) :: Nil ))
288
288
}
289
289
290
- override def nullable : Boolean = argument.nullable
291
-
292
290
override def nullSafeEval (inputRow : InternalRow , argumentValue : Any ): Any = {
293
291
val m = argumentValue.asInstanceOf [MapData ]
294
292
val f = functionForEval
@@ -328,8 +326,6 @@ case class ArrayFilter(
328
326
function : Expression )
329
327
extends ArrayBasedSimpleHigherOrderFunction with CodegenFallback {
330
328
331
- override def nullable : Boolean = argument.nullable
332
-
333
329
override def dataType : DataType = argument.dataType
334
330
335
331
override def functionType : AbstractDataType = BooleanType
@@ -375,8 +371,6 @@ case class ArrayExists(
375
371
function : Expression )
376
372
extends ArrayBasedSimpleHigherOrderFunction with CodegenFallback {
377
373
378
- override def nullable : Boolean = argument.nullable
379
-
380
374
override def dataType : DataType = BooleanType
381
375
382
376
override def functionType : AbstractDataType = BooleanType
@@ -516,8 +510,6 @@ case class TransformKeys(
516
510
function : Expression )
517
511
extends MapBasedSimpleHigherOrderFunction with CodegenFallback {
518
512
519
- override def nullable : Boolean = argument.nullable
520
-
521
513
@ transient lazy val MapType (keyType, valueType, valueContainsNull) = argument.dataType
522
514
523
515
override def dataType : DataType = MapType (function.dataType, valueType, valueContainsNull)
@@ -568,8 +560,6 @@ case class TransformValues(
568
560
function : Expression )
569
561
extends MapBasedSimpleHigherOrderFunction with CodegenFallback {
570
562
571
- override def nullable : Boolean = argument.nullable
572
-
573
563
@ transient lazy val MapType (keyType, valueType, valueContainsNull) = argument.dataType
574
564
575
565
override def dataType : DataType = MapType (keyType, function.dataType, function.nullable)
@@ -638,8 +628,6 @@ case class MapZipWith(left: Expression, right: Expression, function: Expression)
638
628
639
629
override def functionTypes : Seq [AbstractDataType ] = AnyDataType :: Nil
640
630
641
- override def nullable : Boolean = left.nullable || right.nullable
642
-
643
631
override def dataType : DataType = MapType (keyType, function.dataType, function.nullable)
644
632
645
633
override def bind (f : (Expression , Seq [(DataType , Boolean )]) => LambdaFunction ): MapZipWith = {
@@ -810,8 +798,6 @@ case class ZipWith(left: Expression, right: Expression, function: Expression)
810
798
811
799
override def functionTypes : Seq [AbstractDataType ] = AnyDataType :: Nil
812
800
813
- override def nullable : Boolean = left.nullable || right.nullable
814
-
815
801
override def dataType : ArrayType = ArrayType (function.dataType, function.nullable)
816
802
817
803
override def bind (f : (Expression , Seq [(DataType , Boolean )]) => LambdaFunction ): ZipWith = {
0 commit comments