Github user mgaido91 commented on a diff in the pull request:

    https://github.com/apache/spark/pull/19811#discussion_r156360608
  
    --- Diff: 
sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/codegen/GenerateMutableProjection.scala
 ---
    @@ -60,38 +60,32 @@ object GenerateMutableProjection extends 
CodeGenerator[Seq[Expression], MutableP
         val projectionCodes = exprVals.zip(index).map {
           case (ev, i) =>
             val e = expressions(i)
    +        val value = ctx.addMutableState(ctx.javaType(e.dataType), "value")
             if (e.nullable) {
    -          val isNull = s"isNull_$i"
    -          val value = s"value_$i"
    -          ctx.addMutableState(ctx.JAVA_BOOLEAN, isNull, s"$isNull = true;")
    -          ctx.addMutableState(ctx.javaType(e.dataType), value,
    -            s"$value = ${ctx.defaultValue(e.dataType)};")
    -          s"""
    -            ${ev.code}
    -            $isNull = ${ev.isNull};
    -            $value = ${ev.value};
    -           """
    +          val isNull = ctx.addMutableState(ctx.JAVA_BOOLEAN, "isNull")
    +          (s"""
    +             ${ev.code}
    +             $isNull = ${ev.isNull};
    +             $value = ${ev.value};
    +            """, isNull, value, i)
             } else {
    -          val value = s"value_$i"
    -          ctx.addMutableState(ctx.javaType(e.dataType), value,
    -            s"$value = ${ctx.defaultValue(e.dataType)};")
    -          s"""
    -            ${ev.code}
    -            $value = ${ev.value};
    -           """
    +          (s"""
    +             ${ev.code}
    +             $value = ${ev.value};
    +            """, ev.isNull, value, i)
    --- End diff --
    
    ditto


---

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to