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: reviews-unsubscr...@spark.apache.org
For additional commands, e-mail: reviews-h...@spark.apache.org

Reply via email to