diff --git a/cpp/src/arrow/dataset/file_parquet.cc b/cpp/src/arrow/dataset/file_parquet.cc index 0ce08502921..0b08fa7c77b 100644 --- a/cpp/src/arrow/dataset/file_parquet.cc +++ b/cpp/src/arrow/dataset/file_parquet.cc @@ -820,7 +820,11 @@ Status ParquetFileFragment::SetMetadata( manifest_ = std::move(manifest); statistics_expressions_.resize(row_groups_->size(), compute::literal(true)); - statistics_expressions_complete_.resize(manifest_->descr->num_columns(), false); + auto num_columns = manifest_->descr->num_columns(); + if (num_columns < 0) { + return Status::Invalid("Problem with manifest: negative number of columns"); + } + statistics_expressions_complete_.resize(num_columns, false); for (int row_group : *row_groups_) { // Ensure RowGroups are indexing valid RowGroups before augmenting.