MCPcopy Create free account
hub / github.com/apache/datafusion / plan

Method plan

datafusion/datasource/src/morsel/mocks.rs:522–609  ·  view source on GitHub ↗
(self: Box<Self>)

Source from the content-addressed store, hash-verified

520
521impl MorselPlanner for MockMorselPlanner {
522 fn plan(self: Box<Self>) -> Result<Option<MorselPlan>> {
523 let Self {
524 observer,
525 planner_name,
526 mut steps,
527 } = *self;
528
529 observer.push(MorselEvent::PlannerCalled {
530 planner_name: planner_name.clone(),
531 });
532
533 let Some(step) = steps.pop_front() else {
534 return Ok(None);
535 };
536
537 match step {
538 PlannerStep::Plan {
539 morsels,
540 ready_planners,
541 pending_planner,
542 } => {
543 let mut ready_morsels = Vec::new();
544 for MockMorselSpec {
545 morsel_id,
546 batch_ids,
547 } in morsels
548 {
549 observer.push(MorselEvent::MorselProduced {
550 planner_name: planner_name.clone(),
551 morsel_id,
552 });
553 ready_morsels.push(Box::new(MockMorsel::new(
554 observer.clone(),
555 morsel_id,
556 batch_ids,
557 )) as Box<dyn Morsel>);
558 }
559
560 let mut planners = child_planners(observer.clone(), ready_planners);
561 if pending_planner.is_none() {
562 planners.extend(current_planner_continuation(
563 observer.clone(),
564 planner_name.clone(),
565 steps.clone(),
566 ));
567 }
568
569 let mut plan = MorselPlan::new()
570 .with_morsels(ready_morsels)
571 .with_planners(planners);
572
573 if let Some(MockPendingPlanner {
574 io_future_id,
575 polls_to_resolve,
576 result,
577 }) = pending_planner
578 {
579 observer.push(MorselEvent::IoFutureCreated {

Callers 1

poll_scanMethod · 0.45

Calls 12

newFunction · 0.85
child_plannersFunction · 0.85
pop_frontMethod · 0.80
is_noneMethod · 0.80
with_plannersMethod · 0.80
with_morselsMethod · 0.80
pushMethod · 0.45
cloneMethod · 0.45
extendMethod · 0.45
mapMethod · 0.45
with_pending_plannerMethod · 0.45

Tested by

no test coverage detected