Github user cloud-fan commented on a diff in the pull request:
https://github.com/apache/spark/pull/19896#discussion_r155217583
--- Diff:
sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/complexTypeCreator.scala
---
@@ -356,22 +356,25 @@ case class CreateNamedStruct(children:
Seq[Expression]) extends CreateNamedStruc
override def doGenCode(ctx: CodegenContext, ev: ExprCode): ExprCode = {
val rowClass = classOf[GenericInternalRow].getName
val values = ctx.freshName("values")
- ctx.addMutableState("Object[]", values, s"$values = null;")
+ val valCodes = valExprs.zipWithIndex.map { case (e, i) =>
+ val eval = e.genCode(ctx)
+ s"""
+ |${eval.code}
+ |if (${eval.isNull}) {
+ | $values[$i] = null;
+ |} else {
+ | $values[$i] = ${eval.value};
+ |}
+ """.stripMargin
+ }
val valuesCode = ctx.splitExpressionsWithCurrentInputs(
- valExprs.zipWithIndex.map { case (e, i) =>
- val eval = e.genCode(ctx)
- s"""
- ${eval.code}
- if (${eval.isNull}) {
- $values[$i] = null;
- } else {
- $values[$i] = ${eval.value};
- }"""
- })
+ valCodes,
+ "createNamedStruct",
+ "Object[]" -> values :: Nil)
--- End diff --
nit: please keep the parameter name
```
ctx.splitExpressionsWithCurrentInputs(
expressions = valCodes,
funcName = ...
```
---
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]