| 421 | }; |
| 422 | |
| 423 | static Result<ExecNode*> MakeTableConsumingSinkNode(ExecPlan* plan, |
| 424 | std::vector<ExecNode*> inputs, |
| 425 | const ExecNodeOptions& options) { |
| 426 | RETURN_NOT_OK(ValidateExecNodeInputs(plan, inputs, 1, "TableConsumingSinkNode")); |
| 427 | const auto& sink_options = checked_cast<const TableSinkNodeOptions&>(options); |
| 428 | MemoryPool* pool = plan->query_context()->memory_pool(); |
| 429 | auto tb_consumer = |
| 430 | std::make_shared<TableSinkNodeConsumer>(sink_options.output_table, pool); |
| 431 | auto consuming_sink_node_options = ConsumingSinkNodeOptions{tb_consumer}; |
| 432 | consuming_sink_node_options.sequence_output = sink_options.sequence_output; |
| 433 | consuming_sink_node_options.names = sink_options.names; |
| 434 | return MakeExecNode("consuming_sink", plan, inputs, consuming_sink_node_options); |
| 435 | } |
| 436 | |
| 437 | // A sink node that accumulates inputs, then sorts them before emitting them. |
| 438 | struct OrderBySinkNode final : public SinkNode { |
nothing calls this directly
no test coverage detected