1 | #include "duckdb/parallel/pipeline_initialize_event.hpp" |
---|---|
2 | |
3 | #include "duckdb/execution/executor.hpp" |
4 | |
5 | namespace duckdb { |
6 | |
7 | PipelineInitializeEvent::PipelineInitializeEvent(shared_ptr<Pipeline> pipeline_p) |
8 | : BasePipelineEvent(std::move(pipeline_p)) { |
9 | } |
10 | |
11 | class PipelineInitializeTask : public ExecutorTask { |
12 | public: |
13 | explicit PipelineInitializeTask(Pipeline &pipeline_p, shared_ptr<Event> event_p) |
14 | : ExecutorTask(pipeline_p.executor), pipeline(pipeline_p), event(std::move(event_p)) { |
15 | } |
16 | |
17 | Pipeline &pipeline; |
18 | shared_ptr<Event> event; |
19 | |
20 | public: |
21 | TaskExecutionResult ExecuteTask(TaskExecutionMode mode) override { |
22 | pipeline.ResetSink(); |
23 | event->FinishTask(); |
24 | return TaskExecutionResult::TASK_FINISHED; |
25 | } |
26 | }; |
27 | |
28 | void PipelineInitializeEvent::Schedule() { |
29 | // needs to spawn a task to get the chain of tasks for the query plan going |
30 | vector<shared_ptr<Task>> tasks; |
31 | tasks.push_back(x: make_uniq<PipelineInitializeTask>(args&: *pipeline, args: shared_from_this())); |
32 | SetTasks(std::move(tasks)); |
33 | } |
34 | |
35 | void PipelineInitializeEvent::FinishEvent() { |
36 | } |
37 | |
38 | } // namespace duckdb |
39 |