Kimahriman commented on code in PR #34558: URL: https://github.com/apache/spark/pull/34558#discussion_r1993969482
########## sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/higherOrderFunctions.scala: ########## @@ -235,6 +256,53 @@ trait HigherOrderFunction extends Expression with ExpectsInputTypes { val canonicalizedChildren = cleaned.children.map(_.canonicalized) withNewChildren(canonicalizedChildren) } + + + protected def assignAtomic(atomicRef: String, value: String, isNull: String = FalseLiteral, + nullable: Boolean = false) = { + if (nullable) { + s""" + if ($isNull) { + $atomicRef.set(null); + } else { + $atomicRef.set($value); + } + """ + } else { + s"$atomicRef.set($value);" + } + } + + protected def assignArrayElement(ctx: CodegenContext, arrayName: String, elementCode: ExprCode, + elementVar: NamedLambdaVariable, index: String): String = { + val elementType = elementVar.dataType + val elementAtomic = ctx.addReferenceObj(elementVar.name, elementVar.value) + val extractElement = CodeGenerator.getValue(arrayName, elementType, index) Review Comment: Do you just mean the built-in concurrency of `AtomicReference` isn't needed except for something related to the the `transform` operations, and otherwise you could just use a regular variable to store the result? Agree that might be preferable, but probably out of scope for this initial codegen implementation since that would change how the interpreted path works as well -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: reviews-unsubscr...@spark.apache.org For queries about this service, please contact Infrastructure at: us...@infra.apache.org --------------------------------------------------------------------- To unsubscribe, e-mail: reviews-unsubscr...@spark.apache.org For additional commands, e-mail: reviews-h...@spark.apache.org