| 971 | } |
| 972 | |
| 973 | uint64_t ReaderImpl::getMemoryUseByFieldId(const std::list<uint64_t>& include, int stripeIx) { |
| 974 | std::vector<bool> selectedColumns; |
| 975 | selectedColumns.assign(static_cast<size_t>(contents_->footer->types_size()), false); |
| 976 | ColumnSelector column_selector(contents_.get()); |
| 977 | if (contents_->schema->getKind() == STRUCT && include.begin() != include.end()) { |
| 978 | for (std::list<uint64_t>::const_iterator field = include.begin(); field != include.end(); |
| 979 | ++field) { |
| 980 | column_selector.updateSelectedByFieldId(selectedColumns, *field); |
| 981 | } |
| 982 | } else { |
| 983 | // default is to select all columns |
| 984 | std::fill(selectedColumns.begin(), selectedColumns.end(), true); |
| 985 | } |
| 986 | column_selector.selectParents(selectedColumns, *contents_->schema.get()); |
| 987 | selectedColumns[0] = true; // column 0 is selected by default |
| 988 | return getMemoryUse(stripeIx, selectedColumns); |
| 989 | } |
| 990 | |
| 991 | uint64_t ReaderImpl::getMemoryUseByName(const std::list<std::string>& names, int stripeIx) { |
| 992 | std::vector<bool> selectedColumns; |