-
Notifications
You must be signed in to change notification settings - Fork 179
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[CHORE] Remove daft-scan dependency from planning crates #3250
Conversation
CodSpeed Performance ReportMerging #3250 will degrade performances by 51.94%Comparing Summary
Benchmarks breakdown
|
pub trait ScanTaskLike { | ||
fn as_any(&self) -> &dyn Any; | ||
fn as_any_arc(self: Arc<Self>) -> Arc<dyn Any + Send + Sync>; | ||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I thought we'd have a bit more methods on here. I was thinking we'd define the entire interface of what a ScanTask
is here, then impl it elsewhere.
There are only a handful of methods on the scan task, so i feel like it'd be pretty easy to put that all into the trait.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I did this to make the actual API changes in this PR minimal, but I think it does make sense to define this trait a little better. Will work on that!
@kevinzwang I took another look at this PR, and maybe it can be done in a separate PR, but we also need to invert the dependency between |
I'll take a look at it, if it's a complex task i'll merge this one in first |
depends on #3250 see https://github.com/Eventual-Inc/Daft/compare/kevin/swap-plan-scan-dependency...universalmind303:Daft:logical-plan-table-dep?expand=1 for proper diff --------- Co-authored-by: Kevin Wang <kevin@eventualcomputing.com>
This PR creates a better abstraction over scan tasks and uses that abstraction in the planning crates (daft-logical-plan, daft-physical-plan, daft-local-plan). This is done by creating a new
common-scan-info
crate which holds aScanTaskLike
trait which planning crates can use to access scan task info without needing knowledge of implementation.Now, in our planning stages, we solely use our ScanTaskLike abstraction, and then in execution, we downcast to ScanTask to actually materialize them. That way, we can actually remove the daft-scan dependency from planning crates.