Github user cloud-fan commented on a diff in the pull request:
https://github.com/apache/spark/pull/19777#discussion_r152045624
--- Diff:
sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/stringExpressions.scala
---
@@ -163,13 +184,36 @@ case class ConcatWs(children: Seq[Expression])
}
}.unzip
- ev.copy(evals.map(_.code).mkString("\n") +
- s"""
+ val codes = ctx.splitExpressions(ctx.INPUT_ROW, evals.map(_.code))
+ val varargCounts = ctx.splitExpressions(varargCount,
"varargCountsConcatWs",
+ ("InternalRow", ctx.INPUT_ROW) :: Nil,
+ "int",
+ { body =>
+ s"""
+ int $varargNum = 0;
+ $body
+ return $varargNum;
+ """
+ },
+ _.mkString(s"$varargNum += ", s";\n$varargNum += ", ";"))
+ val varargBuilds = ctx.splitExpressions(varargBuild,
"varargBuildsConcatWs",
--- End diff --
shall we optimize for `eval.isNull == "true"` in `varargCount` and
`varargBuild`? since you already did it for the all string cases.
---
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]