@@ -5252,17 +5252,34 @@ class ParquetPageIndexRoundTripTest : public ::testing::Test {
5252
5252
auto row_group_index_reader = page_index_reader->RowGroup (rg);
5253
5253
ASSERT_NE (row_group_index_reader, nullptr );
5254
5254
5255
+ auto row_group_reader = reader->RowGroup (rg);
5256
+ ASSERT_NE (row_group_reader, nullptr );
5257
+
5255
5258
for (int col = 0 ; col < metadata->num_columns (); ++col) {
5256
5259
auto column_index = row_group_index_reader->GetColumnIndex (col);
5257
5260
column_indexes_.emplace_back (column_index.get ());
5258
5261
5262
+ bool expect_no_page_index =
5263
+ expect_columns_without_index.find (col) != expect_columns_without_index.cend ();
5264
+
5259
5265
auto offset_index = row_group_index_reader->GetOffsetIndex (col);
5260
- if (expect_columns_without_index.find (col) !=
5261
- expect_columns_without_index.cend ()) {
5266
+ if (expect_no_page_index) {
5262
5267
ASSERT_EQ (offset_index, nullptr );
5263
5268
} else {
5264
5269
CheckOffsetIndex (offset_index.get (), expect_num_pages, &offset_lower_bound);
5265
5270
}
5271
+
5272
+ // Verify page stats are not written to page header if page index is enabled.
5273
+ auto page_reader = row_group_reader->GetColumnPageReader (col);
5274
+ ASSERT_NE (page_reader, nullptr );
5275
+ std::shared_ptr<Page> page = nullptr ;
5276
+ while ((page = page_reader->NextPage ()) != nullptr ) {
5277
+ if (page->type () == PageType::DATA_PAGE ||
5278
+ page->type () == PageType::DATA_PAGE_V2) {
5279
+ ASSERT_EQ (std::static_pointer_cast<DataPage>(page)->statistics ().is_set (),
5280
+ expect_no_page_index);
5281
+ }
5282
+ }
5266
5283
}
5267
5284
}
5268
5285
}
0 commit comments