@@ -46,6 +46,14 @@ namespace parquet {
4646using ::arrow::io::BufferReader;
4747using ::parquet::DataPageStats;
4848
49+ // Make a column descriptor with an undefined column order.
50+ ColumnDescriptor MakeColumnDescriptor () {
51+ auto node = schema::Int32 (" int_col" , Repetition::REQUIRED );
52+ static_cast <schema::PrimitiveNode*>(node.get ())
53+ ->SetColumnOrder (ColumnOrder::undefined_);
54+ return ColumnDescriptor (node, /* max_definition_level=*/ 0 , /* max_repetition_level=*/ 0 );
55+ }
56+
4957// Adds page statistics occupying a certain amount of bytes (for testing very
5058// large page headers)
5159template <typename H>
@@ -110,6 +118,8 @@ static std::vector<Compression::type> GetSupportedCodecTypes() {
110118
111119class TestPageSerde : public ::testing::Test {
112120 public:
121+ TestPageSerde () : descr_(MakeColumnDescriptor()) {}
122+
113123 void SetUp () {
114124 data_page_header_.encoding = format::Encoding::PLAIN ;
115125 data_page_header_.definition_level_encoding = format::Encoding::RLE ;
@@ -124,7 +134,7 @@ class TestPageSerde : public ::testing::Test {
124134 EndStream ();
125135
126136 auto stream = std::make_shared<::arrow::io::BufferReader>(out_buffer_);
127- page_reader_ = PageReader::Open (stream, num_rows, codec, properties);
137+ page_reader_ = PageReader::Open (stream, num_rows, codec, properties, descr_ );
128138 }
129139
130140 void WriteDataPageHeader (int max_serialized_len = 1024 , int32_t uncompressed_size = 0 ,
@@ -204,6 +214,7 @@ class TestPageSerde : public ::testing::Test {
204214 std::shared_ptr<::arrow::io::BufferOutputStream> out_stream_;
205215 std::shared_ptr<Buffer> out_buffer_;
206216
217+ ColumnDescriptor descr_;
207218 std::unique_ptr<PageReader> page_reader_;
208219 format::PageHeader page_header_;
209220 format::DataPageHeader data_page_header_;
@@ -466,7 +477,8 @@ TYPED_TEST(PageFilterTest, TestPageWithoutStatistics) {
466477
467478 auto stream = std::make_shared<::arrow::io::BufferReader>(this ->out_buffer_ );
468479 this ->page_reader_ =
469- PageReader::Open (stream, this ->total_rows_ , Compression::UNCOMPRESSED );
480+ PageReader::Open (stream, this ->total_rows_ , Compression::UNCOMPRESSED ,
481+ ReaderProperties (), this ->descr_ );
470482
471483 int num_pages = 0 ;
472484 bool is_stats_null = false ;
@@ -492,7 +504,8 @@ TYPED_TEST(PageFilterTest, TestPageFilterCallback) {
492504 // are right.
493505 auto stream = std::make_shared<::arrow::io::BufferReader>(this ->out_buffer_ );
494506 this ->page_reader_ =
495- PageReader::Open (stream, this ->total_rows_ , Compression::UNCOMPRESSED );
507+ PageReader::Open (stream, this ->total_rows_ , Compression::UNCOMPRESSED ,
508+ ReaderProperties (), this ->descr_ );
496509
497510 std::vector<EncodedStatistics> read_stats;
498511 std::vector<int64_t > read_num_values;
@@ -526,7 +539,8 @@ TYPED_TEST(PageFilterTest, TestPageFilterCallback) {
526539 { // Skip all pages.
527540 auto stream = std::make_shared<::arrow::io::BufferReader>(this ->out_buffer_ );
528541 this ->page_reader_ =
529- PageReader::Open (stream, this ->total_rows_ , Compression::UNCOMPRESSED );
542+ PageReader::Open (stream, this ->total_rows_ , Compression::UNCOMPRESSED ,
543+ ReaderProperties (), this ->descr_ );
530544
531545 auto skip_all_pages = [](const DataPageStats& stats) -> bool { return true ; };
532546
@@ -538,7 +552,8 @@ TYPED_TEST(PageFilterTest, TestPageFilterCallback) {
538552 { // Skip every other page.
539553 auto stream = std::make_shared<::arrow::io::BufferReader>(this ->out_buffer_ );
540554 this ->page_reader_ =
541- PageReader::Open (stream, this ->total_rows_ , Compression::UNCOMPRESSED );
555+ PageReader::Open (stream, this ->total_rows_ , Compression::UNCOMPRESSED ,
556+ ReaderProperties (), this ->descr_ );
542557
543558 // Skip pages with even number of values.
544559 auto skip_even_pages = [](const DataPageStats& stats) -> bool {
@@ -569,7 +584,8 @@ TYPED_TEST(PageFilterTest, TestChangingPageFilter) {
569584
570585 auto stream = std::make_shared<::arrow::io::BufferReader>(this ->out_buffer_ );
571586 this ->page_reader_ =
572- PageReader::Open (stream, this ->total_rows_ , Compression::UNCOMPRESSED );
587+ PageReader::Open (stream, this ->total_rows_ , Compression::UNCOMPRESSED ,
588+ ReaderProperties (), this ->descr_ );
573589
574590 // This callback will always return false.
575591 auto read_all_pages = [](const DataPageStats& stats) -> bool { return false ; };
@@ -604,7 +620,8 @@ TEST_F(TestPageSerde, DoesNotFilterDictionaryPages) {
604620
605621 // Try to read it back while asking for all data pages to be skipped.
606622 auto stream = std::make_shared<::arrow::io::BufferReader>(out_buffer_);
607- page_reader_ = PageReader::Open (stream, /* num_rows=*/ 100 , Compression::UNCOMPRESSED );
623+ page_reader_ = PageReader::Open (stream, /* num_rows=*/ 100 , Compression::UNCOMPRESSED ,
624+ ReaderProperties (), descr_);
608625
609626 auto skip_all_pages = [](const DataPageStats& stats) -> bool { return true ; };
610627
@@ -641,7 +658,8 @@ TEST_F(TestPageSerde, SkipsNonDataPages) {
641658 EndStream ();
642659
643660 auto stream = std::make_shared<::arrow::io::BufferReader>(out_buffer_);
644- page_reader_ = PageReader::Open (stream, /* num_rows=*/ 100 , Compression::UNCOMPRESSED );
661+ page_reader_ = PageReader::Open (stream, /* num_rows=*/ 100 , Compression::UNCOMPRESSED ,
662+ ReaderProperties (), descr_);
645663
646664 // Only the two data pages are returned.
647665 std::shared_ptr<Page> current_page = page_reader_->NextPage ();
0 commit comments