aboutsummaryrefslogtreecommitdiff
path: root/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/objects/objects.scala
diff options
context:
space:
mode:
Diffstat (limited to 'sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/objects/objects.scala')
-rw-r--r--sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/objects/objects.scala12
1 files changed, 9 insertions, 3 deletions
diff --git a/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/objects/objects.scala b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/objects/objects.scala
index faf8fecd79..50e2ac3c36 100644
--- a/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/objects/objects.scala
+++ b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/objects/objects.scala
@@ -906,7 +906,9 @@ case class AssertNotNull(child: Expression, walkedTypePath: Seq[String])
override protected def doGenCode(ctx: CodegenContext, ev: ExprCode): ExprCode = {
val childGen = child.genCode(ctx)
- val errMsgField = ctx.addReferenceObj("errMsg", errMsg)
+ // Use unnamed reference that doesn't create a local field here to reduce the number of fields
+ // because errMsgField is used only when the value is null.
+ val errMsgField = ctx.addReferenceObj(errMsg)
val code = s"""
${childGen.code}
@@ -941,7 +943,9 @@ case class GetExternalRowField(
private val errMsg = s"The ${index}th field '$fieldName' of input row cannot be null."
override def doGenCode(ctx: CodegenContext, ev: ExprCode): ExprCode = {
- val errMsgField = ctx.addReferenceObj("errMsg", errMsg)
+ // Use unnamed reference that doesn't create a local field here to reduce the number of fields
+ // because errMsgField is used only when the field is null.
+ val errMsgField = ctx.addReferenceObj(errMsg)
val row = child.genCode(ctx)
val code = s"""
${row.code}
@@ -979,7 +983,9 @@ case class ValidateExternalType(child: Expression, expected: DataType)
private val errMsg = s" is not a valid external type for schema of ${expected.simpleString}"
override def doGenCode(ctx: CodegenContext, ev: ExprCode): ExprCode = {
- val errMsgField = ctx.addReferenceObj("errMsg", errMsg)
+ // Use unnamed reference that doesn't create a local field here to reduce the number of fields
+ // because errMsgField is used only when the type doesn't match.
+ val errMsgField = ctx.addReferenceObj(errMsg)
val input = child.genCode(ctx)
val obj = input.value