andygrove commented on pull request #8870: URL: https://github.com/apache/arrow/pull/8870#issuecomment-741855709
I think it would be helpful if I explained my design philosophy on this but also bear in mind that I am not an expert on this but this was my initial thinking: - Logical plans should be trivially serializable. This is a good forcing function to make sure that they are easily constructed from any programming language and don't become Rust-specific. This is important when building bindings in other languages such as Python and Java and also for building drivers for distributed systems so that we can serialize query plans and send them to other processes. - The execution context has registries of things like tables and udfs and is responsible for translating a logical plan into a physical plan, and it makes sense for the physical plan to use opaque dyn traits. In Ballista, I have my own fork of the DataFusion logical plan currently, and I could continue with that but was considering using the DataFusion plan directly at some point (I'm not actively working on Ballista at the moment so this is all a bit theoretical). I bet @alamb will have some valuable opinions on 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. For queries about this service, please contact Infrastructure at: [email protected]
