@@ -1106,27 +1106,31 @@ case class CreateExternalRow(children: Seq[Expression], schema: StructType)
1106
1106
override def doGenCode (ctx : CodegenContext , ev : ExprCode ): ExprCode = {
1107
1107
val rowClass = classOf [GenericRowWithSchema ].getName
1108
1108
val values = ctx.freshName(" values" )
1109
- ctx.addMutableState(" Object[]" , values)
1110
1109
1111
1110
val childrenCodes = children.zipWithIndex.map { case (e, i) =>
1112
1111
val eval = e.genCode(ctx)
1113
- eval.code + s """
1114
- if ( ${eval.isNull}) {
1115
- $values[ $i] = null;
1116
- } else {
1117
- $values[ $i] = ${eval.value};
1118
- }
1119
- """
1112
+ s """
1113
+ | ${eval.code}
1114
+ |if ( ${eval.isNull}) {
1115
+ | $values[ $i] = null;
1116
+ |} else {
1117
+ | $values[ $i] = ${eval.value};
1118
+ |}
1119
+ """ .stripMargin
1120
1120
}
1121
1121
1122
- val childrenCode = ctx.splitExpressionsWithCurrentInputs(childrenCodes)
1123
- val schemaField = ctx.addReferenceObj(" schema" , schema)
1122
+ val childrenCode = ctx.splitExpressionsWithCurrentInputs(
1123
+ expressions = childrenCodes,
1124
+ funcName = " createExternalRow" ,
1125
+ extraArguments = " Object[]" -> values :: Nil )
1126
+ val schemaField = ctx.addReferenceMinorObj(schema)
1124
1127
1125
- val code = s """
1126
- $values = new Object[ ${children.size}];
1127
- $childrenCode
1128
- final ${classOf [Row ].getName} ${ev.value} = new $rowClass( $values, $schemaField);
1129
- """
1128
+ val code =
1129
+ s """
1130
+ |Object[] $values = new Object[ ${children.size}];
1131
+ | $childrenCode
1132
+ |final ${classOf [Row ].getName} ${ev.value} = new $rowClass( $values, $schemaField);
1133
+ """ .stripMargin
1130
1134
ev.copy(code = code, isNull = " false" )
1131
1135
}
1132
1136
}
@@ -1244,25 +1248,28 @@ case class InitializeJavaBean(beanInstance: Expression, setters: Map[String, Exp
1244
1248
1245
1249
val javaBeanInstance = ctx.freshName(" javaBean" )
1246
1250
val beanInstanceJavaType = ctx.javaType(beanInstance.dataType)
1247
- ctx.addMutableState(beanInstanceJavaType, javaBeanInstance)
1248
1251
1249
1252
val initialize = setters.map {
1250
1253
case (setterMethod, fieldValue) =>
1251
1254
val fieldGen = fieldValue.genCode(ctx)
1252
1255
s """
1253
- ${fieldGen.code}
1254
- ${ javaBeanInstance} . $setterMethod( ${fieldGen.value});
1255
- """
1256
+ | ${fieldGen.code}
1257
+ | $ javaBeanInstance. $setterMethod( ${fieldGen.value});
1258
+ """ .stripMargin
1256
1259
}
1257
- val initializeCode = ctx.splitExpressionsWithCurrentInputs(initialize.toSeq)
1260
+ val initializeCode = ctx.splitExpressionsWithCurrentInputs(
1261
+ expressions = initialize.toSeq,
1262
+ funcName = " initializeJavaBean" ,
1263
+ extraArguments = beanInstanceJavaType -> javaBeanInstance :: Nil )
1258
1264
1259
- val code = s """
1260
- ${instanceGen.code}
1261
- ${javaBeanInstance} = ${instanceGen.value};
1262
- if (! ${instanceGen.isNull}) {
1263
- $initializeCode
1264
- }
1265
- """
1265
+ val code =
1266
+ s """
1267
+ | ${instanceGen.code}
1268
+ | $beanInstanceJavaType $javaBeanInstance = ${instanceGen.value};
1269
+ |if (! ${instanceGen.isNull}) {
1270
+ | $initializeCode
1271
+ |}
1272
+ """ .stripMargin
1266
1273
ev.copy(code = code, isNull = instanceGen.isNull, value = instanceGen.value)
1267
1274
}
1268
1275
}
0 commit comments