andygrove commented on code in PR #4557:
URL: https://github.com/apache/datafusion-comet/pull/4557#discussion_r3352323219
##########
spark/src/main/scala/org/apache/comet/codegen/CometBatchKernelCodegen.scala:
##########
@@ -401,10 +401,15 @@ object CometBatchKernelCodegen extends Logging with
CometExprTraitShim {
* True iff every node in the tree propagates nulls (`NullIntolerant`,
`BoundReference`, or
* `Literal`). Gates the [[defaultBody]] short-circuit, which is only
correct when no node
* (`Coalesce`, `If`, `CaseWhen`, `Concat`, ...) breaks the propagation
chain.
+ *
+ * `TryEval` is rejected: it is `NullIntolerant` (null input -> null
output), but its
+ * `doGenCode` also yields null on non-null input when the child throws. The
short-circuit
+ * assumes non-null inputs imply non-null output and would feed a null
`ev.value` to the writer.
*/
private def allNullIntolerant(expr: Expression): Boolean =
!expr.exists {
case _: BoundReference | _: Literal => false
+ case _: TryEval => true
Review Comment:
Thanks @mbutrovich I have addressed this
--
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: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]