| 989 | } |
| 990 | |
| 991 | uint64_t ReaderImpl::getMemoryUseByName(const std::list<std::string>& names, int stripeIx) { |
| 992 | std::vector<bool> selectedColumns; |
| 993 | selectedColumns.assign(static_cast<size_t>(contents_->footer->types_size()), false); |
| 994 | ColumnSelector column_selector(contents_.get()); |
| 995 | if (contents_->schema->getKind() == STRUCT && names.begin() != names.end()) { |
| 996 | for (std::list<std::string>::const_iterator field = names.begin(); field != names.end(); |
| 997 | ++field) { |
| 998 | column_selector.updateSelectedByName(selectedColumns, *field); |
| 999 | } |
| 1000 | } else { |
| 1001 | // default is to select all columns |
| 1002 | std::fill(selectedColumns.begin(), selectedColumns.end(), true); |
| 1003 | } |
| 1004 | column_selector.selectParents(selectedColumns, *contents_->schema.get()); |
| 1005 | selectedColumns[0] = true; // column 0 is selected by default |
| 1006 | return getMemoryUse(stripeIx, selectedColumns); |
| 1007 | } |
| 1008 | |
| 1009 | uint64_t ReaderImpl::getMemoryUseByTypeId(const std::list<uint64_t>& include, int stripeIx) { |
| 1010 | std::vector<bool> selectedColumns; |
no test coverage detected