@@ -149,28 +149,34 @@ bool FileReader::Impl::CheckForFlatColumn(const ::parquet::ColumnDescriptor* des
149
149
}
150
150
151
151
Status FileReader::Impl::GetFlatColumn (int i, std::unique_ptr<FlatColumnReader>* out) {
152
- if (!CheckForFlatColumn (reader_->descr ()->Column (i))) {
152
+ const ::parquet::SchemaDescriptor* schema = reader_->metadata ()->schema_descriptor ();
153
+
154
+ if (!CheckForFlatColumn (schema->Column (i))) {
153
155
return Status::Invalid (" The requested column is not flat" );
154
156
}
155
157
std::unique_ptr<FlatColumnReader::Impl> impl (
156
- new FlatColumnReader::Impl (pool_, reader_-> descr () ->Column (i), reader_.get (), i));
158
+ new FlatColumnReader::Impl (pool_, schema ->Column (i), reader_.get (), i));
157
159
*out = std::unique_ptr<FlatColumnReader>(new FlatColumnReader (std::move (impl)));
158
160
return Status::OK ();
159
161
}
160
162
161
163
Status FileReader::Impl::ReadFlatColumn (int i, std::shared_ptr<Array>* out) {
162
164
std::unique_ptr<FlatColumnReader> flat_column_reader;
163
165
RETURN_NOT_OK (GetFlatColumn (i, &flat_column_reader));
164
- return flat_column_reader->NextBatch (reader_->num_rows (), out);
166
+ return flat_column_reader->NextBatch (reader_->metadata ()-> num_rows (), out);
165
167
}
166
168
167
169
Status FileReader::Impl::ReadFlatTable (std::shared_ptr<Table>* table) {
168
- const std::string& name = reader_->descr ()->schema ()->name ();
170
+ auto descr = reader_->metadata ()->schema_descriptor ();
171
+
172
+ const std::string& name = descr->schema ()->name ();
169
173
std::shared_ptr<Schema> schema;
170
- RETURN_NOT_OK (FromParquetSchema (reader_->descr (), &schema));
174
+ RETURN_NOT_OK (FromParquetSchema (descr, &schema));
175
+
176
+ int num_columns = reader_->metadata ()->num_columns ();
171
177
172
- std::vector<std::shared_ptr<Column>> columns (reader_-> num_columns () );
173
- for (int i = 0 ; i < reader_-> num_columns () ; i++) {
178
+ std::vector<std::shared_ptr<Column>> columns (num_columns);
179
+ for (int i = 0 ; i < num_columns; i++) {
174
180
std::shared_ptr<Array> array;
175
181
RETURN_NOT_OK (ReadFlatColumn (i, &array));
176
182
columns[i] = std::make_shared<Column>(schema->field (i), array);
@@ -375,7 +381,7 @@ Status FlatColumnReader::Impl::NextBatch(int batch_size, std::shared_ptr<Array>*
375
381
}
376
382
377
383
void FlatColumnReader::Impl::NextRowGroup () {
378
- if (next_row_group_ < reader_->num_row_groups ()) {
384
+ if (next_row_group_ < reader_->metadata ()-> num_row_groups ()) {
379
385
column_reader_ = reader_->RowGroup (next_row_group_)->Column (column_index_);
380
386
next_row_group_++;
381
387
} else {
0 commit comments