alamb commented on code in PR #23198:
URL: https://github.com/apache/datafusion/pull/23198#discussion_r3501246541


##########
datafusion/expr/src/expr.rs:
##########
@@ -767,21 +768,112 @@ impl Alias {
     }
 }
 
+/// A `Box<Expr>` for the recursive children of [`BinaryExpr`]. A long 
binary-operator chain
+/// (e.g. `a OR b OR c OR ...`) builds an `Expr` as deep as the chain, and 
dropping it
+/// recursively would overflow the stack. This wrapper's `Drop` tears the 
chain down iteratively.

Review Comment:
   I feel like this is treating the symptom (overflow on drop) rather than the 
root cause (in general processing deeply nested expressions using recursive 
functions)
   
   If we are going to change the representation of BinaryExpr and cause a bunch 
of downstream churn, I think we should consider more drastic measures -- like 
changing it to `BinaryExpr { .. ops:Vec<Expr> } `
   
   I will file a ticket about 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]

Reply via email to