jackwener commented on issue #1972:
URL: 
https://github.com/apache/arrow-datafusion/issues/1972#issuecomment-1069339073


   > which as you say requires each optimizer rule to handle the recursion 
itself and intermixes the traversal from whatever rewrites are happening. There 
are helpers in 
https://github.com/apache/arrow-datafusion/blob/master/datafusion/src/optimizer/utils.rs
 such as optimize_children and from_plan but I would say they are not 
particularly ergonomic
   >
   > So what I had hoped to do at some point was to make an actual visitor / 
mutator pattern for rewriting LogicalPlan. We have done this for Expr rewriting 
[expr_rewriter.rs](https://github.com/apache/arrow-datafusion/blob/master/datafusion/src/logical_plan/expr_rewriter.rs)
 and I think it works very well to separate out the structure traversal from 
the actual changes (see, for example, the code for simplifying expressions 
here: 
[simplify_expressions.rs](https://github.com/apache/arrow-datafusion/blob/master/datafusion/src/optimizer/simplify_expressions.rs)
   
   I also found these problems when I enhance the optimizer.
   
   It's a significant proposal, I'm focus this part currently. 
   
   I'm planning to add the `volcano/cascades optimizer` framework  for 
datafusion. After I get more familiar with datafusion, I will add more detail 
and RFC for this part.


-- 
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]


Reply via email to