Open
Description
Is your feature request related to a problem or challenge? Please describe what you are trying to do.
Related to #4627, the current representation of LogicalPlan
contains Arc<LogicalPlan>
at various points, whilst this does reduce the cost of copying a LogicalPlan
tree, it:
- Complicates rewrites by necessitating clones
- Results in double-boxing -
e.g. Vec<Arc<LogicalPlan>>
- Permits cycles and all the excitement that would entail
- Marginal overhead from additional atomics
- Unidiomatic is perhaps too strong, but it is strange for a tree datastructure to have shared ownership
Describe the solution you'd like
I would like to remove the Arc
, replacing with Box
where necessary. Methods that currently take Arc<LogicalPlan>
should be updated to take LogicalPlan
.
Describe alternatives you've considered
Additional context
This likely wants to wait until we are cloning LogicalPlan
less frequently