Github user ueshin commented on a diff in the pull request:
https://github.com/apache/spark/pull/22075#discussion_r209816692
--- Diff:
sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/higherOrderFunctions.scala
---
@@ -422,45 +425,49 @@ case class ArrayExists(
""",
since = "2.4.0")
case class ArrayAggregate(
- input: Expression,
+ argument: Expression,
zero: Expression,
merge: Expression,
finish: Expression)
extends HigherOrderFunction with CodegenFallback {
- def this(input: Expression, zero: Expression, merge: Expression) = {
- this(input, zero, merge, LambdaFunction.identity)
+ def this(argument: Expression, zero: Expression, merge: Expression) = {
+ this(argument, zero, merge, LambdaFunction.identity)
}
- override def inputs: Seq[Expression] = input :: zero :: Nil
+ override def arguments: Seq[Expression] = argument :: zero :: Nil
+
+ override def argumentTypes: Seq[AbstractDataType] = ArrayType ::
AnyDataType :: Nil
override def functions: Seq[Expression] = merge :: finish :: Nil
- override def nullable: Boolean = input.nullable || finish.nullable
+ override def functionTypes: Seq[AbstractDataType] = zero.dataType ::
AnyDataType :: Nil
+
+ override def nullable: Boolean = argument.nullable || finish.nullable
override def dataType: DataType = finish.dataType
override def checkInputDataTypes(): TypeCheckResult = {
- if (!ArrayType.acceptsType(input.dataType)) {
- TypeCheckResult.TypeCheckFailure(
- s"argument 1 requires ${ArrayType.simpleString} type, " +
- s"however, '${input.sql}' is of ${input.dataType.catalogString}
type.")
- } else if (!DataType.equalsStructurally(
- zero.dataType, merge.dataType, ignoreNullability = true)) {
- TypeCheckResult.TypeCheckFailure(
- s"argument 3 requires ${zero.dataType.simpleString} type, " +
- s"however, '${merge.sql}' is of ${merge.dataType.catalogString}
type.")
- } else {
- TypeCheckResult.TypeCheckSuccess
+ checkArgumentDataTypes() match {
--- End diff --
I called it here again to check the whole data types when calling
`checkInputDataTypes()`, just in case.
---
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]