Skip to content

Commit ec0c55c

Browse files
committed
Use ctx.nullSafeExec() to generate nullability checking in complex type creators.
1 parent 658c5e3 commit ec0c55c

File tree

1 file changed

+10
-19
lines changed

1 file changed

+10
-19
lines changed

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

Lines changed: 10 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)