Skip to content

Commit 94dfde2

Browse files
committed
address review comment
1 parent 9013671 commit 94dfde2

File tree

1 file changed

+8
-5
lines changed
  • sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions

1 file changed

+8
-5
lines changed

sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/Cast.scala

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1015,9 +1015,7 @@ case class Cast(child: Expression, dataType: DataType, timeZoneId: Option[String
10151015
}
10161016
val rowClass = classOf[GenericInternalRow].getName
10171017
val result = ctx.freshName("result")
1018-
ctx.addMutableState(s"$rowClass", result, "")
10191018
val tmpRow = ctx.freshName("tmpRow")
1020-
ctx.addMutableState("InternalRow", tmpRow, "")
10211019

10221020
val fieldsEvalCode = fieldsCasts.zipWithIndex.map { case (cast, i) =>
10231021
val fromFieldPrim = ctx.freshName("ffp")
@@ -1042,12 +1040,17 @@ case class Cast(child: Expression, dataType: DataType, timeZoneId: Option[String
10421040
}
10431041
"""
10441042
}
1045-
val fieldsEvalCodes = ctx.splitExpressions(ctx.INPUT_ROW, fieldsEvalCode)
1043+
val fieldsEvalCodes = if (ctx.INPUT_ROW != null && ctx.currentVars == null) {
1044+
ctx.splitExpressions(fieldsEvalCode, "castStruct",
1045+
("InternalRow", ctx.INPUT_ROW) :: (rowClass, result) :: ("InternalRow", tmpRow) :: Nil)
1046+
} else {
1047+
fieldsEvalCode.mkString("\n")
1048+
}
10461049

10471050
(c, evPrim, evNull) =>
10481051
s"""
1049-
$result = new $rowClass(${fieldsCasts.length});
1050-
$tmpRow = $c;
1052+
$rowClass $result = new $rowClass(${fieldsCasts.length});
1053+
InternalRow $tmpRow = $c;
10511054
$fieldsEvalCodes
10521055
$evPrim = $result;
10531056
"""

0 commit comments

Comments
 (0)