| 618 | // buffer decompression, dictionary resolution, buffer re-alignment. |
| 619 | struct RecordBatchLoader { |
| 620 | Result<std::shared_ptr<RecordBatch>> CreateRecordBatch(ArrayDataVector columns) { |
| 621 | ARROW_ASSIGN_OR_RAISE(auto filtered_columns, CreateColumns(std::move(columns))); |
| 622 | |
| 623 | std::shared_ptr<Schema> filtered_schema; |
| 624 | if (!inclusion_mask_.empty()) { |
| 625 | FieldVector filtered_fields; |
| 626 | for (int i = 0; i < schema_->num_fields(); ++i) { |
| 627 | if (inclusion_mask_[i]) { |
| 628 | filtered_fields.push_back(schema_->field(i)); |
| 629 | } |
| 630 | } |
| 631 | filtered_schema = schema(std::move(filtered_fields), schema_->metadata()); |
| 632 | } else { |
| 633 | filtered_schema = schema_; |
| 634 | } |
| 635 | |
| 636 | return RecordBatch::Make(std::move(filtered_schema), batch_length_, |
| 637 | std::move(filtered_columns)); |
| 638 | } |
| 639 | |
| 640 | Result<ArrayDataVector> CreateColumns(ArrayDataVector columns, |
| 641 | bool resolve_dictionaries = true) { |
no test coverage detected