| 115 | } |
| 116 | |
| 117 | std::shared_ptr<internal::RecordReader> RowGroupReader::RecordReader( |
| 118 | int i, bool read_dictionary) { |
| 119 | if (i >= metadata()->num_columns()) { |
| 120 | std::stringstream ss; |
| 121 | ss << "Trying to read column index " << i << " but row group metadata has only " |
| 122 | << metadata()->num_columns() << " columns"; |
| 123 | throw ParquetException(ss.str()); |
| 124 | } |
| 125 | const ColumnDescriptor* descr = metadata()->schema()->Column(i); |
| 126 | |
| 127 | std::unique_ptr<PageReader> page_reader = contents_->GetColumnPageReader(i); |
| 128 | |
| 129 | internal::LevelInfo level_info = internal::LevelInfo::ComputeLevelInfo(descr); |
| 130 | |
| 131 | auto reader = internal::RecordReader::Make( |
| 132 | descr, level_info, contents_->properties()->memory_pool(), read_dictionary, |
| 133 | contents_->properties()->read_dense_for_nullable()); |
| 134 | reader->SetPageReader(std::move(page_reader)); |
| 135 | return reader; |
| 136 | } |
| 137 | |
| 138 | std::shared_ptr<ColumnReader> RowGroupReader::ColumnWithExposeEncoding( |
| 139 | int i, ExposedEncoding encoding_to_expose) { |