Make column builders from conversion schema
| 769 | protected: |
| 770 | // Make column builders from conversion schema |
| 771 | Status MakeColumnBuilders() { |
| 772 | // This is making a single copy of ConvertOptions, which is reasonable even if |
| 773 | // it holds a slightly large container, rather than a distinct copy for each |
| 774 | // ColumnBuilder. |
| 775 | auto owned_options = std::make_shared<ConvertOptions>(convert_options_); |
| 776 | for (const auto& column : conversion_schema_.columns) { |
| 777 | std::shared_ptr<ColumnBuilder> builder; |
| 778 | if (column.is_missing) { |
| 779 | ARROW_ASSIGN_OR_RAISE(builder, ColumnBuilder::MakeNull(io_context_.pool(), |
| 780 | column.type, task_group_)); |
| 781 | } else if (column.type != nullptr) { |
| 782 | ARROW_ASSIGN_OR_RAISE( |
| 783 | builder, ColumnBuilder::Make(io_context_.pool(), column.type, column.index, |
| 784 | owned_options, task_group_)); |
| 785 | } else { |
| 786 | ARROW_ASSIGN_OR_RAISE( |
| 787 | builder, ColumnBuilder::Make(io_context_.pool(), column.index, owned_options, |
| 788 | task_group_)); |
| 789 | } |
| 790 | column_builders_.push_back(std::move(builder)); |
| 791 | } |
| 792 | return Status::OK(); |
| 793 | } |
| 794 | |
| 795 | Status ParseAndInsert(const CSVBlock& block) { |
| 796 | ARROW_ASSIGN_OR_RAISE(auto result, Parse(block)); |
no test coverage detected