| 60 | using FragmentGenerator = std::function<Future<std::shared_ptr<Fragment>>()>; |
| 61 | |
| 62 | std::vector<FieldRef> ScanOptions::MaterializedFields() const { |
| 63 | std::vector<FieldRef> fields; |
| 64 | |
| 65 | for (const compute::Expression* expr : {&filter, &projection}) { |
| 66 | auto refs = FieldsInExpression(*expr); |
| 67 | fields.insert(fields.end(), std::make_move_iterator(refs.begin()), |
| 68 | std::make_move_iterator(refs.end())); |
| 69 | } |
| 70 | |
| 71 | return fields; |
| 72 | } |
| 73 | |
| 74 | std::vector<FieldPath> ScanV2Options::AllColumns(const Schema& dataset_schema) { |
| 75 | std::vector<FieldPath> selection(dataset_schema.num_fields()); |