@@ -67,13 +67,10 @@ case class CreateArray(children: Seq[Expression]) extends Expression {
6767 ctx.INPUT_ROW ,
6868 children.zipWithIndex.map { case (e, i) =>
6969 val eval = e.genCode(ctx)
70- eval.code + s """
71- if ( ${eval.isNull}) {
72- $values[ $i] = null;
73- } else {
70+ eval.code +
71+ ctx.nullSafeExec(e.nullable, eval.isNull)(s """
7472 $values[ $i] = ${eval.value};
75- }
76- """
73+ """ )
7774 }) +
7875 s """
7976 final ArrayData ${ev.value} = new $arrayClass( $values);
@@ -164,14 +161,10 @@ case class CreateMap(children: Seq[Expression]) extends Expression {
164161 ctx.INPUT_ROW ,
165162 values.zipWithIndex.map { case (value, i) =>
166163 val eval = value.genCode(ctx)
167- s """
168- ${eval.code}
169- if ( ${eval.isNull}) {
170- $valueArray[ $i] = null;
171- } else {
164+ eval.code +
165+ ctx.nullSafeExec(value.nullable, eval.isNull)(s """
172166 $valueArray[ $i] = ${eval.value};
173- }
174- """
167+ """ )
175168 }) +
176169 s """
177170 final MapData ${ev.value} = new $mapClass( $keyData, $valueData);
@@ -307,12 +300,10 @@ case class CreateNamedStruct(children: Seq[Expression]) extends CreateNamedStruc
307300 ctx.INPUT_ROW ,
308301 valExprs.zipWithIndex.map { case (e, i) =>
309302 val eval = e.genCode(ctx)
310- eval.code + s """
311- if ( ${eval.isNull}) {
312- $values[ $i] = null;
313- } else {
314- $values[ $i] = ${eval.value};
315- } """
303+ eval.code +
304+ ctx.nullSafeExec(e.nullable, eval.isNull)(s """
305+ $values[ $i] = ${eval.value};
306+ """ )
316307 }) +
317308 s """
318309 final InternalRow ${ev.value} = new $rowClass( $values);
0 commit comments