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