@@ -59,16 +59,20 @@ trait InvokeLike extends Expression with NonSQLExpression {
5959 def prepareArguments (ctx : CodegenContext ): (String , String , String ) = {
6060
6161 val resultIsNull = if (needNullCheck) {
62- ctx.freshName(" resultIsNull" )
62+ val resultIsNull = ctx.freshName(" resultIsNull" )
63+ ctx.addMutableState(" boolean" , resultIsNull, " " )
64+ resultIsNull
6365 } else {
6466 " false"
6567 }
6668 val argValues = arguments.map { e =>
67- ctx.freshName(" argValue" )
69+ val argValue = ctx.freshName(" argValue" )
70+ ctx.addMutableState(ctx.javaType(e.dataType), argValue, " " )
71+ argValue
6872 }
6973
7074 val argCodes = if (needNullCheck) {
71- val reset = s " boolean $resultIsNull = false; "
75+ val reset = s " $resultIsNull = false; "
7276 val argCodes = arguments.zipWithIndex.map { case (e, i) =>
7377 val expr = e.genCode(ctx)
7478 val updateResultIsNull = if (e.nullable) {
@@ -77,7 +81,6 @@ trait InvokeLike extends Expression with NonSQLExpression {
7781 " "
7882 }
7983 s """
80- ${ctx.javaType(e.dataType)} ${argValues(i)} = ${ctx.defaultValue(e.dataType)};
8184 if (! $resultIsNull) {
8285 ${expr.code}
8386 $updateResultIsNull
@@ -91,11 +94,11 @@ trait InvokeLike extends Expression with NonSQLExpression {
9194 val expr = e.genCode(ctx)
9295 s """
9396 ${expr.code}
94- ${ctx.javaType(e.dataType)} ${ argValues(i)} = ${expr.value};
97+ ${argValues(i)} = ${expr.value};
9598 """
9699 }
97100 }
98- val argCode = argCodes.mkString( " \n " )
101+ val argCode = ctx.splitExpressions(ctx. INPUT_ROW , argCodes )
99102
100103 (argCode, argValues.mkString(" , " ), resultIsNull)
101104 }
0 commit comments