From 2f22a2fda0ad3cf2c6775032b777fc26b6c7205d Mon Sep 17 00:00:00 2001 From: Hiroyuki Sato Date: Thu, 27 Nov 2025 20:48:17 +0900 Subject: [PATCH 01/24] GH-44810: [C++][Parquet] Add arrow::Result version of parquet::arrow::FileReader::Make() --- .../parquet/arrow/arrow_reader_writer_test.cc | 7 ++--- cpp/src/parquet/arrow/reader.cc | 27 ++++++++++++++++--- cpp/src/parquet/arrow/reader.h | 8 ++++++ 3 files changed, 36 insertions(+), 6 deletions(-) diff --git a/cpp/src/parquet/arrow/arrow_reader_writer_test.cc b/cpp/src/parquet/arrow/arrow_reader_writer_test.cc index 0b73ec6549a1..ab8f3577822c 100644 --- a/cpp/src/parquet/arrow/arrow_reader_writer_test.cc +++ b/cpp/src/parquet/arrow/arrow_reader_writer_test.cc @@ -4183,10 +4183,11 @@ void TryReadDataFile(const std::string& path, auto pool = ::arrow::default_memory_pool(); std::unique_ptr arrow_reader; - Status s = - FileReader::Make(pool, ParquetFileReader::OpenFile(path, false), &arrow_reader); - if (s.ok()) { + Status s; + Result result = FileReader::Make(pool, ParquetFileReader::OpenFile(path, false)); + if (result.ok()) { std::shared_ptr<::arrow::Table> table; + auto arrow_reader = result->get(); s = arrow_reader->ReadTable(&table); } diff --git a/cpp/src/parquet/arrow/reader.cc b/cpp/src/parquet/arrow/reader.cc index 34783e833688..0843d1485945 100644 --- a/cpp/src/parquet/arrow/reader.cc +++ b/cpp/src/parquet/arrow/reader.cc @@ -1343,14 +1343,35 @@ Status FileReader::Make(::arrow::MemoryPool* pool, std::unique_ptr reader, const ArrowReaderProperties& properties, std::unique_ptr* out) { - *out = std::make_unique(pool, std::move(reader), properties); - return static_cast(out->get())->Init(); + ARROW_ASSIGN_OR_RAISE(auto result, Make(pool, std::move(reader), properties)); + *out = std::move(result); + return Status::OK(); } Status FileReader::Make(::arrow::MemoryPool* pool, std::unique_ptr reader, std::unique_ptr* out) { - return Make(pool, std::move(reader), default_arrow_reader_properties(), out); + ARROW_ASSIGN_OR_RAISE(auto result, + Make(pool, std::move(reader), default_arrow_reader_properties())); + *out = std::move(result); + return Status::OK(); +} + +Result> FileReader::Make( + ::arrow::MemoryPool* pool, std::unique_ptr parquet_reader, + const ArrowReaderProperties& properties) { + std::unique_ptr reader = + std::make_unique(pool, std::move(parquet_reader), properties); + RETURN_NOT_OK(static_cast(reader.get())->Init()); + return reader; +} + +Result> FileReader::Make( + ::arrow::MemoryPool* pool, std::unique_ptr parquet_reader) { + std::unique_ptr reader = std::make_unique( + pool, std::move(parquet_reader), default_arrow_reader_properties()); + RETURN_NOT_OK(static_cast(reader.get())->Init()); + return reader; } FileReaderBuilder::FileReaderBuilder() diff --git a/cpp/src/parquet/arrow/reader.h b/cpp/src/parquet/arrow/reader.h index 1342d0bfa6fe..21f29ee85b1e 100644 --- a/cpp/src/parquet/arrow/reader.h +++ b/cpp/src/parquet/arrow/reader.h @@ -126,6 +126,14 @@ class PARQUET_EXPORT FileReader { std::unique_ptr reader, std::unique_ptr* out); + /// Factory function to create a FileReader from a ParquetFileReader and properties + static ::arrow::Result> Make( + ::arrow::MemoryPool* pool, std::unique_ptr reader, + const ArrowReaderProperties& properties); + + /// Factory function to create a FileReader from a ParquetFileReader + static ::arrow::Result> Make( + ::arrow::MemoryPool* pool, std::unique_ptr reader); // Since the distribution of columns amongst a Parquet file's row groups may // be uneven (the number of values in each column chunk can be different), we // provide a column-oriented read interface. The ColumnReader hides the From a1cf83f66dcf8b8021c87fcad5f296edba7c87e8 Mon Sep 17 00:00:00 2001 From: Hiroyuki Sato Date: Fri, 28 Nov 2025 21:31:05 +0900 Subject: [PATCH 02/24] Update cpp/src/parquet/arrow/arrow_reader_writer_test.cc Co-authored-by: Sutou Kouhei --- cpp/src/parquet/arrow/arrow_reader_writer_test.cc | 1 - 1 file changed, 1 deletion(-) diff --git a/cpp/src/parquet/arrow/arrow_reader_writer_test.cc b/cpp/src/parquet/arrow/arrow_reader_writer_test.cc index ab8f3577822c..edc96338a8d6 100644 --- a/cpp/src/parquet/arrow/arrow_reader_writer_test.cc +++ b/cpp/src/parquet/arrow/arrow_reader_writer_test.cc @@ -4182,7 +4182,6 @@ void TryReadDataFile(const std::string& path, const std::string& expected_message = "") { auto pool = ::arrow::default_memory_pool(); - std::unique_ptr arrow_reader; Status s; Result result = FileReader::Make(pool, ParquetFileReader::OpenFile(path, false)); if (result.ok()) { From 29ab0040e29cc83abfded04b3e495147801b05dc Mon Sep 17 00:00:00 2001 From: Hiroyuki Sato Date: Fri, 28 Nov 2025 21:31:41 +0900 Subject: [PATCH 03/24] Update cpp/src/parquet/arrow/arrow_reader_writer_test.cc Co-authored-by: Sutou Kouhei --- cpp/src/parquet/arrow/arrow_reader_writer_test.cc | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/cpp/src/parquet/arrow/arrow_reader_writer_test.cc b/cpp/src/parquet/arrow/arrow_reader_writer_test.cc index edc96338a8d6..3647bacbd690 100644 --- a/cpp/src/parquet/arrow/arrow_reader_writer_test.cc +++ b/cpp/src/parquet/arrow/arrow_reader_writer_test.cc @@ -4183,8 +4183,8 @@ void TryReadDataFile(const std::string& path, auto pool = ::arrow::default_memory_pool(); Status s; - Result result = FileReader::Make(pool, ParquetFileReader::OpenFile(path, false)); - if (result.ok()) { + auto reader_result = FileReader::Make(pool, ParquetFileReader::OpenFile(path, false)); + if (reader_result.ok()) { std::shared_ptr<::arrow::Table> table; auto arrow_reader = result->get(); s = arrow_reader->ReadTable(&table); From 3c0bdd3812de662b30a6a549d30ee9d5465f28a2 Mon Sep 17 00:00:00 2001 From: Hiroyuki Sato Date: Fri, 28 Nov 2025 21:32:04 +0900 Subject: [PATCH 04/24] Update cpp/src/parquet/arrow/arrow_reader_writer_test.cc Co-authored-by: Sutou Kouhei --- cpp/src/parquet/arrow/arrow_reader_writer_test.cc | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/cpp/src/parquet/arrow/arrow_reader_writer_test.cc b/cpp/src/parquet/arrow/arrow_reader_writer_test.cc index 3647bacbd690..bdf3bc7c55f7 100644 --- a/cpp/src/parquet/arrow/arrow_reader_writer_test.cc +++ b/cpp/src/parquet/arrow/arrow_reader_writer_test.cc @@ -4186,8 +4186,7 @@ void TryReadDataFile(const std::string& path, auto reader_result = FileReader::Make(pool, ParquetFileReader::OpenFile(path, false)); if (reader_result.ok()) { std::shared_ptr<::arrow::Table> table; - auto arrow_reader = result->get(); - s = arrow_reader->ReadTable(&table); + s = (*reader_result)->ReadTable(&table); } ASSERT_EQ(s.code(), expected_code) From 10889437d807229dca679c58b0d08cfa0dbbf54b Mon Sep 17 00:00:00 2001 From: Hiroyuki Sato Date: Fri, 28 Nov 2025 21:32:53 +0900 Subject: [PATCH 05/24] Update cpp/src/parquet/arrow/reader.cc Co-authored-by: Sutou Kouhei --- cpp/src/parquet/arrow/reader.cc | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/cpp/src/parquet/arrow/reader.cc b/cpp/src/parquet/arrow/reader.cc index 0843d1485945..c4774141b7b1 100644 --- a/cpp/src/parquet/arrow/reader.cc +++ b/cpp/src/parquet/arrow/reader.cc @@ -1343,8 +1343,7 @@ Status FileReader::Make(::arrow::MemoryPool* pool, std::unique_ptr reader, const ArrowReaderProperties& properties, std::unique_ptr* out) { - ARROW_ASSIGN_OR_RAISE(auto result, Make(pool, std::move(reader), properties)); - *out = std::move(result); + ARROW_ASSIGN_OR_RAISE(*out, Make(pool, std::move(reader), properties)); return Status::OK(); } From 65b43dc4cdeee7d58f207c89efa69744d0635ec9 Mon Sep 17 00:00:00 2001 From: Hiroyuki Sato Date: Fri, 28 Nov 2025 21:33:30 +0900 Subject: [PATCH 06/24] Update cpp/src/parquet/arrow/reader.cc Co-authored-by: Sutou Kouhei --- cpp/src/parquet/arrow/reader.cc | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/cpp/src/parquet/arrow/reader.cc b/cpp/src/parquet/arrow/reader.cc index c4774141b7b1..ee7fef7cfaec 100644 --- a/cpp/src/parquet/arrow/reader.cc +++ b/cpp/src/parquet/arrow/reader.cc @@ -1350,9 +1350,8 @@ Status FileReader::Make(::arrow::MemoryPool* pool, Status FileReader::Make(::arrow::MemoryPool* pool, std::unique_ptr reader, std::unique_ptr* out) { - ARROW_ASSIGN_OR_RAISE(auto result, + ARROW_ASSIGN_OR_RAISE(*out, Make(pool, std::move(reader), default_arrow_reader_properties())); - *out = std::move(result); return Status::OK(); } From fc54de65585c24a11de4977e2bcc7248b0d88e97 Mon Sep 17 00:00:00 2001 From: Hiroyuki Sato Date: Fri, 28 Nov 2025 21:34:06 +0900 Subject: [PATCH 07/24] Update cpp/src/parquet/arrow/reader.h Co-authored-by: Sutou Kouhei --- cpp/src/parquet/arrow/reader.h | 1 + 1 file changed, 1 insertion(+) diff --git a/cpp/src/parquet/arrow/reader.h b/cpp/src/parquet/arrow/reader.h index 21f29ee85b1e..16fade09b021 100644 --- a/cpp/src/parquet/arrow/reader.h +++ b/cpp/src/parquet/arrow/reader.h @@ -134,6 +134,7 @@ class PARQUET_EXPORT FileReader { /// Factory function to create a FileReader from a ParquetFileReader static ::arrow::Result> Make( ::arrow::MemoryPool* pool, std::unique_ptr reader); + // Since the distribution of columns amongst a Parquet file's row groups may // be uneven (the number of values in each column chunk can be different), we // provide a column-oriented read interface. The ColumnReader hides the From 25c72e2f95f6ac76a4611386662799095faf3bb5 Mon Sep 17 00:00:00 2001 From: Hiroyuki Sato Date: Sat, 29 Nov 2025 21:46:07 +0900 Subject: [PATCH 08/24] Status version FileReader::Make set to deprecated --- cpp/src/arrow/dataset/file_parquet.cc | 56 +++++++++---------- .../parquet/arrow/arrow_statistics_test.cc | 6 +- cpp/src/parquet/arrow/reader.cc | 8 +-- cpp/src/parquet/arrow/reader.h | 4 ++ 4 files changed, 39 insertions(+), 35 deletions(-) diff --git a/cpp/src/arrow/dataset/file_parquet.cc b/cpp/src/arrow/dataset/file_parquet.cc index 7ef606187001..6e0b1ce5b963 100644 --- a/cpp/src/arrow/dataset/file_parquet.cc +++ b/cpp/src/arrow/dataset/file_parquet.cc @@ -509,9 +509,9 @@ Result> ParquetFileFormat::GetReader std::shared_ptr reader_metadata = reader->metadata(); auto arrow_properties = MakeArrowReaderProperties(*this, *reader_metadata, *options, *parquet_scan_options); - std::unique_ptr arrow_reader; - RETURN_NOT_OK(parquet::arrow::FileReader::Make( - options->pool, std::move(reader), std::move(arrow_properties), &arrow_reader)); + ARROW_ASSIGN_OR_RAISE(auto arrow_reader, + parquet::arrow::FileReader::Make(options->pool, std::move(reader), + std::move(arrow_properties))); // R build with openSUSE155 requires an explicit shared_ptr construction return std::shared_ptr(std::move(arrow_reader)); } @@ -532,37 +532,37 @@ Future> ParquetFileFormat::GetReader source.filesystem(), options->pool); auto self = checked_pointer_cast(shared_from_this()); - return source.OpenAsync().Then( - [self = self, properties = std::move(properties), source = source, - options = options, metadata = metadata, - parquet_scan_options = parquet_scan_options]( - const std::shared_ptr& input) mutable { - return parquet::ParquetFileReader::OpenAsync(input, properties, metadata) - .Then( - [=](const std::unique_ptr& reader) mutable - -> Result> { - auto arrow_properties = MakeArrowReaderProperties( - *self, *reader->metadata(), *options, *parquet_scan_options); - - std::unique_ptr arrow_reader; - RETURN_NOT_OK(parquet::arrow::FileReader::Make( + return source.OpenAsync().Then([self = self, properties = std::move(properties), + source = source, options = options, metadata = metadata, + parquet_scan_options = parquet_scan_options]( + const std::shared_ptr& + input) mutable { + return parquet::ParquetFileReader::OpenAsync(input, properties, metadata) + .Then( + [=](const std::unique_ptr& reader) mutable + -> Result> { + auto arrow_properties = MakeArrowReaderProperties( + *self, *reader->metadata(), *options, *parquet_scan_options); + + ARROW_ASSIGN_OR_RAISE( + auto arrow_reader, + parquet::arrow::FileReader::Make( options->pool, // TODO(ARROW-12259): workaround since we have Future<(move-only // type)> It *wouldn't* be safe to const_cast reader except that // here we know there are no other waiters on the reader. std::move(const_cast&>( reader)), - arrow_properties, &arrow_reader)); - - // R build with openSUSE155 requires an explicit shared_ptr construction - return std::shared_ptr( - std::move(arrow_reader)); - }, - [path = source.path()](const Status& status) - -> Result> { - return WrapSourceError(status, path); - }); - }); + arrow_properties)); + + // R build with openSUSE155 requires an explicit shared_ptr construction + return std::shared_ptr(std::move(arrow_reader)); + }, + [path = source.path()](const Status& status) + -> Result> { + return WrapSourceError(status, path); + }); + }); } struct SlicingGenerator { diff --git a/cpp/src/parquet/arrow/arrow_statistics_test.cc b/cpp/src/parquet/arrow/arrow_statistics_test.cc index 4b97d04fe978..27a76fd72bea 100644 --- a/cpp/src/parquet/arrow/arrow_statistics_test.cc +++ b/cpp/src/parquet/arrow/arrow_statistics_test.cc @@ -202,9 +202,9 @@ ::arrow::Result> StatisticsReadArray( auto reader = ParquetFileReader::Open(std::make_shared<::arrow::io::BufferReader>(buffer)); - std::unique_ptr file_reader; - ARROW_RETURN_NOT_OK(FileReader::Make(::arrow::default_memory_pool(), std::move(reader), - reader_properties, &file_reader)); + ARROW_ASSIGN_OR_RAISE(auto file_reader, + FileReader::Make(::arrow::default_memory_pool(), + std::move(reader), reader_properties)); std::shared_ptr<::arrow::ChunkedArray> chunked_array; ARROW_RETURN_NOT_OK(file_reader->ReadColumn(0, &chunked_array)); return chunked_array->chunk(0); diff --git a/cpp/src/parquet/arrow/reader.cc b/cpp/src/parquet/arrow/reader.cc index ee7fef7cfaec..e32915e2cbf3 100644 --- a/cpp/src/parquet/arrow/reader.cc +++ b/cpp/src/parquet/arrow/reader.cc @@ -1404,13 +1404,13 @@ FileReaderBuilder* FileReaderBuilder::properties( } Status FileReaderBuilder::Build(std::unique_ptr* out) { - return FileReader::Make(pool_, std::move(raw_reader_), properties_, out); + ARROW_ASSIGN_OR_RAISE(*out, + FileReader::Make(pool_, std::move(raw_reader_), properties_)); + return Status::OK(); } Result> FileReaderBuilder::Build() { - std::unique_ptr out; - RETURN_NOT_OK(FileReader::Make(pool_, std::move(raw_reader_), properties_, &out)); - return out; + return FileReader::Make(pool_, std::move(raw_reader_), properties_); } Result> OpenFile( diff --git a/cpp/src/parquet/arrow/reader.h b/cpp/src/parquet/arrow/reader.h index 16fade09b021..54620b3d0f56 100644 --- a/cpp/src/parquet/arrow/reader.h +++ b/cpp/src/parquet/arrow/reader.h @@ -116,12 +116,16 @@ class RowGroupReader; class PARQUET_EXPORT FileReader { public: /// Factory function to create a FileReader from a ParquetFileReader and properties + /// \deprecated Deprecated in 23.0.0. Use arrow::Result version instead. + ARROW_DEPRECATED("Deprecated in 23.0.0. Use arrow::Result version instead.") static ::arrow::Status Make(::arrow::MemoryPool* pool, std::unique_ptr reader, const ArrowReaderProperties& properties, std::unique_ptr* out); /// Factory function to create a FileReader from a ParquetFileReader + /// \deprecated Deprecated in 23.0.0. Use arrow::Result version instead. + ARROW_DEPRECATED("Deprecated in 23.0.0. Use arrow::Result version instead.") static ::arrow::Status Make(::arrow::MemoryPool* pool, std::unique_ptr reader, std::unique_ptr* out); From c6cf7423bfe32b78f9609669a31f4b1ffdac4cae Mon Sep 17 00:00:00 2001 From: Hiroyuki Sato Date: Sun, 30 Nov 2025 14:45:23 +0900 Subject: [PATCH 09/24] Replace to ASSERT_OK_AND_ASSIGN --- .../parquet/arrow/arrow_reader_writer_test.cc | 46 ++++++++++--------- 1 file changed, 25 insertions(+), 21 deletions(-) diff --git a/cpp/src/parquet/arrow/arrow_reader_writer_test.cc b/cpp/src/parquet/arrow/arrow_reader_writer_test.cc index bdf3bc7c55f7..9652a4bc01a2 100644 --- a/cpp/src/parquet/arrow/arrow_reader_writer_test.cc +++ b/cpp/src/parquet/arrow/arrow_reader_writer_test.cc @@ -4259,13 +4259,15 @@ TEST(TestArrowReaderAdHoc, LARGE_MEMORY_TEST(LargeStringColumn)) { auto reader = ParquetFileReader::Open(std::make_shared(tables_buffer)); std::unique_ptr arrow_reader; - ASSERT_OK(FileReader::Make(default_memory_pool(), std::move(reader), &arrow_reader)); + ASSERT_OK_AND_ASSIGN(arrow_reader, + FileReader::Make(default_memory_pool(), std::move(reader))); ASSERT_OK_NO_THROW(arrow_reader->ReadTable(&table)); ASSERT_OK(table->ValidateFull()); // ARROW-9297: ensure RecordBatchReader also works reader = ParquetFileReader::Open(std::make_shared(tables_buffer)); - ASSERT_OK(FileReader::Make(default_memory_pool(), std::move(reader), &arrow_reader)); + ASSERT_OK_AND_ASSIGN(arrow_reader, + FileReader::Make(default_memory_pool(), std::move(reader))); ASSERT_OK_AND_ASSIGN(auto batch_reader, arrow_reader->GetRecordBatchReader()); ASSERT_OK_AND_ASSIGN(auto batched_table, ::arrow::Table::FromRecordBatchReader(batch_reader.get())); @@ -4362,8 +4364,8 @@ TEST(TestArrowReaderAdHoc, LegacyTwoLevelList) { // Verify Arrow schema and data std::unique_ptr reader; - ASSERT_OK_NO_THROW( - FileReader::Make(default_memory_pool(), std::move(file_reader), &reader)); + ASSERT_OK_AND_ASSIGN(reader, + FileReader::Make(default_memory_pool(), std::move(file_reader))); std::shared_ptr table; ASSERT_OK(reader->ReadTable(&table)); ASSERT_OK(table->ValidateFull()); @@ -4427,8 +4429,8 @@ TEST_P(TestArrowReaderAdHocSparkAndHvr, ReadDecimals) { auto pool = ::arrow::default_memory_pool(); std::unique_ptr arrow_reader; - ASSERT_OK_NO_THROW( - FileReader::Make(pool, ParquetFileReader::OpenFile(path, false), &arrow_reader)); + ASSERT_OK_AND_ASSIGN(arrow_reader, + FileReader::Make(pool, ParquetFileReader::OpenFile(path, false))); std::shared_ptr<::arrow::Table> table; ASSERT_OK_NO_THROW(arrow_reader->ReadTable(&table)); @@ -4494,8 +4496,8 @@ TEST(TestArrowReaderAdHoc, ReadFloat16Files) { ARROW_SCOPED_TRACE("path = ", path); std::unique_ptr reader; - ASSERT_OK_NO_THROW( - FileReader::Make(pool, ParquetFileReader::OpenFile(path, false), &reader)); + ASSERT_OK_AND_ASSIGN( + reader, FileReader::Make(pool, ParquetFileReader::OpenFile(path, false))); std::shared_ptr<::arrow::Table> table; ASSERT_OK_NO_THROW(reader->ReadTable(&table)); @@ -4539,8 +4541,8 @@ TEST(TestArrowFileReader, RecordBatchReaderEmptyRowGroups) { auto reader = ParquetFileReader::Open(std::make_shared(buffer)); std::unique_ptr file_reader; - ASSERT_OK( - FileReader::Make(::arrow::default_memory_pool(), std::move(reader), &file_reader)); + ASSERT_OK_AND_ASSIGN( + file_reader, FileReader::Make(::arrow::default_memory_pool(), std::move(reader))); // This is the important part in this test. std::vector row_group_indices = {}; ASSERT_OK_AND_ASSIGN(auto record_batch_reader, @@ -4567,8 +4569,8 @@ TEST(TestArrowFileReader, RecordBatchReaderEmptyInput) { auto reader = ParquetFileReader::Open(std::make_shared(buffer)); std::unique_ptr file_reader; - ASSERT_OK( - FileReader::Make(::arrow::default_memory_pool(), std::move(reader), &file_reader)); + ASSERT_OK_AND_ASSIGN( + file_reader, FileReader::Make(::arrow::default_memory_pool(), std::move(reader))); ASSERT_OK_AND_ASSIGN(auto record_batch_reader, file_reader->GetRecordBatchReader()); std::shared_ptr<::arrow::RecordBatch> record_batch; ASSERT_OK(record_batch_reader->ReadNext(&record_batch)); @@ -4591,8 +4593,8 @@ TEST(TestArrowColumnReader, NextBatchZeroBatchSize) { auto reader = ParquetFileReader::Open(std::make_shared(buffer)); std::unique_ptr file_reader; - ASSERT_OK( - FileReader::Make(::arrow::default_memory_pool(), std::move(reader), &file_reader)); + ASSERT_OK_AND_ASSIGN( + file_reader, FileReader::Make(::arrow::default_memory_pool(), std::move(reader))); std::unique_ptr column_reader; ASSERT_OK(file_reader->GetColumn(0, &column_reader)); std::shared_ptr chunked_array; @@ -4617,8 +4619,8 @@ TEST(TestArrowColumnReader, NextBatchEmptyInput) { auto reader = ParquetFileReader::Open(std::make_shared(buffer)); std::unique_ptr file_reader; - ASSERT_OK( - FileReader::Make(::arrow::default_memory_pool(), std::move(reader), &file_reader)); + ASSERT_OK_AND_ASSIGN( + file_reader, FileReader::Make(::arrow::default_memory_pool(), std::move(reader))); std::unique_ptr column_reader; ASSERT_OK(file_reader->GetColumn(0, &column_reader)); std::shared_ptr chunked_array; @@ -5141,8 +5143,8 @@ class TestArrowReadDeltaEncoding : public ::testing::Test { auto file = test::get_data_file(file_name); auto pool = ::arrow::default_memory_pool(); std::unique_ptr parquet_reader; - ASSERT_OK(FileReader::Make(pool, ParquetFileReader::OpenFile(file, false), - &parquet_reader)); + ASSERT_OK_AND_ASSIGN( + parquet_reader, FileReader::Make(pool, ParquetFileReader::OpenFile(file, false))); ASSERT_OK(parquet_reader->ReadTable(out)); ASSERT_OK((*out)->ValidateFull()); } @@ -5201,8 +5203,9 @@ TEST_F(TestArrowReadDeltaEncoding, IncrementalDecodeDeltaByteArray) { ArrowReaderProperties properties = default_arrow_reader_properties(); properties.set_batch_size(batch_size); std::unique_ptr parquet_reader; - ASSERT_OK(FileReader::Make(pool, ParquetFileReader::OpenFile(file, false), properties, - &parquet_reader)); + ASSERT_OK_AND_ASSIGN( + parquet_reader, + FileReader::Make(pool, ParquetFileReader::OpenFile(file, false), properties)); ASSERT_OK_AND_ASSIGN(auto rb_reader, parquet_reader->GetRecordBatchReader()); auto convert_options = ::arrow::csv::ConvertOptions::Defaults(); @@ -5729,7 +5732,8 @@ TEST(TestArrowReadWrite, WriteAndReadRecordBatch) { read_properties.set_batch_size(record_batch->num_rows()); auto reader = ParquetFileReader::Open(std::make_shared(buffer)); std::unique_ptr arrow_reader; - ASSERT_OK(FileReader::Make(pool, std::move(reader), read_properties, &arrow_reader)); + ASSERT_OK_AND_ASSIGN(arrow_reader, + FileReader::Make(pool, std::move(reader), read_properties)); // Verify the single record batch has been sliced into two row groups by // WriterProperties::max_row_group_length(). From e75d5b893ade5206b08e7cedb3949e02a06995de Mon Sep 17 00:00:00 2001 From: Hiroyuki Sato Date: Sun, 30 Nov 2025 22:30:33 +0900 Subject: [PATCH 10/24] Added error checking in case an error occurs --- cpp/src/parquet/arrow/arrow_reader_writer_test.cc | 2 ++ 1 file changed, 2 insertions(+) diff --git a/cpp/src/parquet/arrow/arrow_reader_writer_test.cc b/cpp/src/parquet/arrow/arrow_reader_writer_test.cc index 9652a4bc01a2..72d8e757f915 100644 --- a/cpp/src/parquet/arrow/arrow_reader_writer_test.cc +++ b/cpp/src/parquet/arrow/arrow_reader_writer_test.cc @@ -4187,6 +4187,8 @@ void TryReadDataFile(const std::string& path, if (reader_result.ok()) { std::shared_ptr<::arrow::Table> table; s = (*reader_result)->ReadTable(&table); + } else { + s = reader_result.status(); } ASSERT_EQ(s.code(), expected_code) From df413a8a2c631d62e74716382c5d496a7b837b6f Mon Sep 17 00:00:00 2001 From: Hiroyuki Sato Date: Sun, 30 Nov 2025 23:21:22 +0900 Subject: [PATCH 11/24] Added error checking in case an error occurs --- cpp/src/parquet/arrow/reader_writer_benchmark.cc | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/cpp/src/parquet/arrow/reader_writer_benchmark.cc b/cpp/src/parquet/arrow/reader_writer_benchmark.cc index a80386676d28..2af06292fc6d 100644 --- a/cpp/src/parquet/arrow/reader_writer_benchmark.cc +++ b/cpp/src/parquet/arrow/reader_writer_benchmark.cc @@ -297,8 +297,9 @@ static void BenchmarkReadTable(::benchmark::State& state, const Table& table, auto reader = ParquetFileReader::Open(std::make_shared<::arrow::io::BufferReader>(buffer)); std::unique_ptr arrow_reader; - EXIT_NOT_OK(FileReader::Make(::arrow::default_memory_pool(), std::move(reader), - &arrow_reader)); + auto reader_result = + FileReader::Make(::arrow::default_memory_pool(), std::move(reader)); + EXIT_NOT_OK(result.status); std::shared_ptr
table; EXIT_NOT_OK(arrow_reader->ReadTable(&table)); @@ -736,8 +737,9 @@ static void BM_ReadIndividualRowGroups(::benchmark::State& state) { auto reader = ParquetFileReader::Open(std::make_shared<::arrow::io::BufferReader>(buffer)); std::unique_ptr arrow_reader; - EXIT_NOT_OK(FileReader::Make(::arrow::default_memory_pool(), std::move(reader), - &arrow_reader)); + auto reader_result = + FileReader::Make(::arrow::default_memory_pool(), std::move(reader)); + EXIT_NOT_OK(reader_result.status()); std::vector> tables; for (int i = 0; i < arrow_reader->num_row_groups(); i++) { @@ -771,8 +773,10 @@ static void BM_ReadMultipleRowGroups(::benchmark::State& state) { auto reader = ParquetFileReader::Open(std::make_shared<::arrow::io::BufferReader>(buffer)); std::unique_ptr arrow_reader; - EXIT_NOT_OK(FileReader::Make(::arrow::default_memory_pool(), std::move(reader), - &arrow_reader)); + auto reader_result = + FileReader::Make(::arrow::default_memory_pool(), std::move(reader)); + EXIT_NOT_OK(reader_result.status()); + std::shared_ptr
table; EXIT_NOT_OK(arrow_reader->ReadRowGroups(rgs, &table)); } From f9ab393e61370bb945cd41893fb693db2241799f Mon Sep 17 00:00:00 2001 From: Hiroyuki Sato Date: Sun, 30 Nov 2025 23:56:50 +0900 Subject: [PATCH 12/24] Add missing () --- cpp/src/parquet/arrow/reader_writer_benchmark.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cpp/src/parquet/arrow/reader_writer_benchmark.cc b/cpp/src/parquet/arrow/reader_writer_benchmark.cc index 2af06292fc6d..02efda2ba685 100644 --- a/cpp/src/parquet/arrow/reader_writer_benchmark.cc +++ b/cpp/src/parquet/arrow/reader_writer_benchmark.cc @@ -299,7 +299,7 @@ static void BenchmarkReadTable(::benchmark::State& state, const Table& table, std::unique_ptr arrow_reader; auto reader_result = FileReader::Make(::arrow::default_memory_pool(), std::move(reader)); - EXIT_NOT_OK(result.status); + EXIT_NOT_OK(result.status()); std::shared_ptr
table; EXIT_NOT_OK(arrow_reader->ReadTable(&table)); From d669ccf304c83f2f1a4c5bb2062216434ab87fc4 Mon Sep 17 00:00:00 2001 From: Hiroyuki Sato Date: Mon, 1 Dec 2025 00:02:24 +0900 Subject: [PATCH 13/24] Fix variable name --- cpp/src/parquet/arrow/reader_writer_benchmark.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cpp/src/parquet/arrow/reader_writer_benchmark.cc b/cpp/src/parquet/arrow/reader_writer_benchmark.cc index 02efda2ba685..e50c70a2f69c 100644 --- a/cpp/src/parquet/arrow/reader_writer_benchmark.cc +++ b/cpp/src/parquet/arrow/reader_writer_benchmark.cc @@ -299,7 +299,7 @@ static void BenchmarkReadTable(::benchmark::State& state, const Table& table, std::unique_ptr arrow_reader; auto reader_result = FileReader::Make(::arrow::default_memory_pool(), std::move(reader)); - EXIT_NOT_OK(result.status()); + EXIT_NOT_OK(reader_result.status()); std::shared_ptr
table; EXIT_NOT_OK(arrow_reader->ReadTable(&table)); From 315687a5ae1b82864d1a8b4ac80f32bbf9758fac Mon Sep 17 00:00:00 2001 From: Hiroyuki Sato Date: Mon, 1 Dec 2025 00:28:07 +0900 Subject: [PATCH 14/24] Use Result version FileReader::Make --- cpp/src/parquet/arrow/reader_writer_benchmark.cc | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/cpp/src/parquet/arrow/reader_writer_benchmark.cc b/cpp/src/parquet/arrow/reader_writer_benchmark.cc index e50c70a2f69c..feaa01e5c080 100644 --- a/cpp/src/parquet/arrow/reader_writer_benchmark.cc +++ b/cpp/src/parquet/arrow/reader_writer_benchmark.cc @@ -799,8 +799,8 @@ static void BM_ReadMultipleRowGroupsGenerator(::benchmark::State& state) { auto reader = ParquetFileReader::Open(std::make_shared<::arrow::io::BufferReader>(buffer)); std::unique_ptr unique_reader; - EXIT_NOT_OK(FileReader::Make(::arrow::default_memory_pool(), std::move(reader), - &unique_reader)); + ASSERT_OK_AND_ASSIGN(unique_reader, FileReader::Make(::arrow::default_memory_pool(), + std::move(reader))); std::shared_ptr arrow_reader = std::move(unique_reader); ASSIGN_OR_ABORT(auto generator, arrow_reader->GetRecordBatchGenerator(arrow_reader, rgs, {0})); From d0d4fb0d3454fe3a67a3e8c2e8ded81e689462c3 Mon Sep 17 00:00:00 2001 From: Hiroyuki Sato Date: Tue, 2 Dec 2025 10:08:22 +0900 Subject: [PATCH 15/24] Replace Result verion FileReader::Make --- cpp/src/parquet/arrow/reader_writer_benchmark.cc | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/cpp/src/parquet/arrow/reader_writer_benchmark.cc b/cpp/src/parquet/arrow/reader_writer_benchmark.cc index feaa01e5c080..555df4f70480 100644 --- a/cpp/src/parquet/arrow/reader_writer_benchmark.cc +++ b/cpp/src/parquet/arrow/reader_writer_benchmark.cc @@ -296,10 +296,10 @@ static void BenchmarkReadTable(::benchmark::State& state, const Table& table, for (auto _ : state) { auto reader = ParquetFileReader::Open(std::make_shared<::arrow::io::BufferReader>(buffer)); - std::unique_ptr arrow_reader; - auto reader_result = + auto arrow_reader_result = FileReader::Make(::arrow::default_memory_pool(), std::move(reader)); - EXIT_NOT_OK(reader_result.status()); + EXIT_NOT_OK(arrow_reader_result.status()); + std::shared_ptr arrow_reader = std::move(*arrow_reader_result); std::shared_ptr
table; EXIT_NOT_OK(arrow_reader->ReadTable(&table)); @@ -736,10 +736,10 @@ static void BM_ReadIndividualRowGroups(::benchmark::State& state) { while (state.KeepRunning()) { auto reader = ParquetFileReader::Open(std::make_shared<::arrow::io::BufferReader>(buffer)); - std::unique_ptr arrow_reader; - auto reader_result = + auto arrow_reader_result = FileReader::Make(::arrow::default_memory_pool(), std::move(reader)); - EXIT_NOT_OK(reader_result.status()); + EXIT_NOT_OK(arrow_reader_result.status()); + std::shared_ptr arrow_reader = std::move(*arrow_reader_result); std::vector> tables; for (int i = 0; i < arrow_reader->num_row_groups(); i++) { @@ -799,8 +799,8 @@ static void BM_ReadMultipleRowGroupsGenerator(::benchmark::State& state) { auto reader = ParquetFileReader::Open(std::make_shared<::arrow::io::BufferReader>(buffer)); std::unique_ptr unique_reader; - ASSERT_OK_AND_ASSIGN(unique_reader, FileReader::Make(::arrow::default_memory_pool(), - std::move(reader))); + ASSIGN_OR_ABORT(unique_reader, FileReader::Make(::arrow::default_memory_pool(), + std::move(reader))); std::shared_ptr arrow_reader = std::move(unique_reader); ASSIGN_OR_ABORT(auto generator, arrow_reader->GetRecordBatchGenerator(arrow_reader, rgs, {0})); From b3e1887e0ea674bcbc6686703d44dedbe74b0ed3 Mon Sep 17 00:00:00 2001 From: Hiroyuki Sato Date: Tue, 2 Dec 2025 11:33:58 +0900 Subject: [PATCH 16/24] Fix segfault --- cpp/src/parquet/arrow/reader_writer_benchmark.cc | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/cpp/src/parquet/arrow/reader_writer_benchmark.cc b/cpp/src/parquet/arrow/reader_writer_benchmark.cc index 555df4f70480..dcf2f21c28f2 100644 --- a/cpp/src/parquet/arrow/reader_writer_benchmark.cc +++ b/cpp/src/parquet/arrow/reader_writer_benchmark.cc @@ -772,10 +772,10 @@ static void BM_ReadMultipleRowGroups(::benchmark::State& state) { while (state.KeepRunning()) { auto reader = ParquetFileReader::Open(std::make_shared<::arrow::io::BufferReader>(buffer)); - std::unique_ptr arrow_reader; - auto reader_result = + auto arrow_reader_result = FileReader::Make(::arrow::default_memory_pool(), std::move(reader)); - EXIT_NOT_OK(reader_result.status()); + EXIT_NOT_OK(arrow_reader_result.status()); + std::shared_ptr arrow_reader = std::move(*arrow_reader_result); std::shared_ptr
table; EXIT_NOT_OK(arrow_reader->ReadRowGroups(rgs, &table)); From 25816c07caca929041f348a15bf2177f36a5b4b8 Mon Sep 17 00:00:00 2001 From: Hiroyuki Sato Date: Tue, 2 Dec 2025 11:40:04 +0900 Subject: [PATCH 17/24] Fix lint --- cpp/src/parquet/arrow/reader_writer_benchmark.cc | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/cpp/src/parquet/arrow/reader_writer_benchmark.cc b/cpp/src/parquet/arrow/reader_writer_benchmark.cc index dcf2f21c28f2..3e47c35947d2 100644 --- a/cpp/src/parquet/arrow/reader_writer_benchmark.cc +++ b/cpp/src/parquet/arrow/reader_writer_benchmark.cc @@ -799,8 +799,8 @@ static void BM_ReadMultipleRowGroupsGenerator(::benchmark::State& state) { auto reader = ParquetFileReader::Open(std::make_shared<::arrow::io::BufferReader>(buffer)); std::unique_ptr unique_reader; - ASSIGN_OR_ABORT(unique_reader, FileReader::Make(::arrow::default_memory_pool(), - std::move(reader))); + ASSIGN_OR_ABORT(unique_reader, + FileReader::Make(::arrow::default_memory_pool(), std::move(reader))); std::shared_ptr arrow_reader = std::move(unique_reader); ASSIGN_OR_ABORT(auto generator, arrow_reader->GetRecordBatchGenerator(arrow_reader, rgs, {0})); From 8b941aba11a13f6b547a550e71a6c01e0cd89b60 Mon Sep 17 00:00:00 2001 From: Hiroyuki Sato Date: Mon, 8 Dec 2025 09:50:14 +0900 Subject: [PATCH 18/24] Replace Result verion FileReader::Make --- cpp/src/parquet/arrow/reader_writer_benchmark.cc | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/cpp/src/parquet/arrow/reader_writer_benchmark.cc b/cpp/src/parquet/arrow/reader_writer_benchmark.cc index 3e47c35947d2..8aaa1381ca35 100644 --- a/cpp/src/parquet/arrow/reader_writer_benchmark.cc +++ b/cpp/src/parquet/arrow/reader_writer_benchmark.cc @@ -798,10 +798,10 @@ static void BM_ReadMultipleRowGroupsGenerator(::benchmark::State& state) { while (state.KeepRunning()) { auto reader = ParquetFileReader::Open(std::make_shared<::arrow::io::BufferReader>(buffer)); - std::unique_ptr unique_reader; - ASSIGN_OR_ABORT(unique_reader, - FileReader::Make(::arrow::default_memory_pool(), std::move(reader))); - std::shared_ptr arrow_reader = std::move(unique_reader); + auto arrow_reader_result = + FileReader::Make(::arrow::default_memory_pool(), std::move(reader)); + EXIT_NOT_OK(arrow_reader_result.status()); + std::shared_ptr arrow_reader = std::move(*arrow_reader_result); ASSIGN_OR_ABORT(auto generator, arrow_reader->GetRecordBatchGenerator(arrow_reader, rgs, {0})); auto fut = ::arrow::CollectAsyncGenerator(generator); From d53adade53376510db7ef714dbf2c538657c1850 Mon Sep 17 00:00:00 2001 From: Hiroyuki Sato Date: Tue, 9 Dec 2025 12:07:06 +0900 Subject: [PATCH 19/24] Use auto --- .../parquet/arrow/arrow_reader_writer_test.cc | 27 +++++++------------ .../parquet/arrow/reader_writer_benchmark.cc | 6 ++--- 2 files changed, 12 insertions(+), 21 deletions(-) diff --git a/cpp/src/parquet/arrow/arrow_reader_writer_test.cc b/cpp/src/parquet/arrow/arrow_reader_writer_test.cc index 72d8e757f915..a51970829896 100644 --- a/cpp/src/parquet/arrow/arrow_reader_writer_test.cc +++ b/cpp/src/parquet/arrow/arrow_reader_writer_test.cc @@ -4365,8 +4365,7 @@ TEST(TestArrowReaderAdHoc, LegacyTwoLevelList) { ASSERT_EQ(kExpectedLegacyList, nodeStr.str()); // Verify Arrow schema and data - std::unique_ptr reader; - ASSERT_OK_AND_ASSIGN(reader, + ASSERT_OK_AND_ASSIGN(auto reader, FileReader::Make(default_memory_pool(), std::move(file_reader))); std::shared_ptr
table; ASSERT_OK(reader->ReadTable(&table)); @@ -4430,8 +4429,7 @@ TEST_P(TestArrowReaderAdHocSparkAndHvr, ReadDecimals) { auto pool = ::arrow::default_memory_pool(); - std::unique_ptr arrow_reader; - ASSERT_OK_AND_ASSIGN(arrow_reader, + ASSERT_OK_AND_ASSIGN(auto arrow_reader, FileReader::Make(pool, ParquetFileReader::OpenFile(path, false))); std::shared_ptr<::arrow::Table> table; ASSERT_OK_NO_THROW(arrow_reader->ReadTable(&table)); @@ -4497,9 +4495,8 @@ TEST(TestArrowReaderAdHoc, ReadFloat16Files) { path += "/" + tc.filename + ".parquet"; ARROW_SCOPED_TRACE("path = ", path); - std::unique_ptr reader; ASSERT_OK_AND_ASSIGN( - reader, FileReader::Make(pool, ParquetFileReader::OpenFile(path, false))); + auto reader, FileReader::Make(pool, ParquetFileReader::OpenFile(path, false))); std::shared_ptr<::arrow::Table> table; ASSERT_OK_NO_THROW(reader->ReadTable(&table)); @@ -4542,9 +4539,8 @@ TEST(TestArrowFileReader, RecordBatchReaderEmptyRowGroups) { default_arrow_writer_properties(), &buffer)); auto reader = ParquetFileReader::Open(std::make_shared(buffer)); - std::unique_ptr file_reader; ASSERT_OK_AND_ASSIGN( - file_reader, FileReader::Make(::arrow::default_memory_pool(), std::move(reader))); + auto file_reader, FileReader::Make(::arrow::default_memory_pool(), std::move(reader))); // This is the important part in this test. std::vector row_group_indices = {}; ASSERT_OK_AND_ASSIGN(auto record_batch_reader, @@ -4570,9 +4566,8 @@ TEST(TestArrowFileReader, RecordBatchReaderEmptyInput) { default_arrow_writer_properties(), &buffer)); auto reader = ParquetFileReader::Open(std::make_shared(buffer)); - std::unique_ptr file_reader; ASSERT_OK_AND_ASSIGN( - file_reader, FileReader::Make(::arrow::default_memory_pool(), std::move(reader))); + auto file_reader, FileReader::Make(::arrow::default_memory_pool(), std::move(reader))); ASSERT_OK_AND_ASSIGN(auto record_batch_reader, file_reader->GetRecordBatchReader()); std::shared_ptr<::arrow::RecordBatch> record_batch; ASSERT_OK(record_batch_reader->ReadNext(&record_batch)); @@ -4594,9 +4589,8 @@ TEST(TestArrowColumnReader, NextBatchZeroBatchSize) { default_arrow_writer_properties(), &buffer)); auto reader = ParquetFileReader::Open(std::make_shared(buffer)); - std::unique_ptr file_reader; ASSERT_OK_AND_ASSIGN( - file_reader, FileReader::Make(::arrow::default_memory_pool(), std::move(reader))); + auto file_reader, FileReader::Make(::arrow::default_memory_pool(), std::move(reader))); std::unique_ptr column_reader; ASSERT_OK(file_reader->GetColumn(0, &column_reader)); std::shared_ptr chunked_array; @@ -4620,9 +4614,8 @@ TEST(TestArrowColumnReader, NextBatchEmptyInput) { default_arrow_writer_properties(), &buffer)); auto reader = ParquetFileReader::Open(std::make_shared(buffer)); - std::unique_ptr file_reader; ASSERT_OK_AND_ASSIGN( - file_reader, FileReader::Make(::arrow::default_memory_pool(), std::move(reader))); + auto file_reader, FileReader::Make(::arrow::default_memory_pool(), std::move(reader))); std::unique_ptr column_reader; ASSERT_OK(file_reader->GetColumn(0, &column_reader)); std::shared_ptr chunked_array; @@ -5144,9 +5137,8 @@ class TestArrowReadDeltaEncoding : public ::testing::Test { std::shared_ptr
* out) { auto file = test::get_data_file(file_name); auto pool = ::arrow::default_memory_pool(); - std::unique_ptr parquet_reader; ASSERT_OK_AND_ASSIGN( - parquet_reader, FileReader::Make(pool, ParquetFileReader::OpenFile(file, false))); + auto parquet_reader, FileReader::Make(pool, ParquetFileReader::OpenFile(file, false))); ASSERT_OK(parquet_reader->ReadTable(out)); ASSERT_OK((*out)->ValidateFull()); } @@ -5733,8 +5725,7 @@ TEST(TestArrowReadWrite, WriteAndReadRecordBatch) { auto read_properties = default_arrow_reader_properties(); read_properties.set_batch_size(record_batch->num_rows()); auto reader = ParquetFileReader::Open(std::make_shared(buffer)); - std::unique_ptr arrow_reader; - ASSERT_OK_AND_ASSIGN(arrow_reader, + ASSERT_OK_AND_ASSIGN(auto arrow_reader, FileReader::Make(pool, std::move(reader), read_properties)); // Verify the single record batch has been sliced into two row groups by diff --git a/cpp/src/parquet/arrow/reader_writer_benchmark.cc b/cpp/src/parquet/arrow/reader_writer_benchmark.cc index 8aaa1381ca35..cfb458ddb384 100644 --- a/cpp/src/parquet/arrow/reader_writer_benchmark.cc +++ b/cpp/src/parquet/arrow/reader_writer_benchmark.cc @@ -299,7 +299,7 @@ static void BenchmarkReadTable(::benchmark::State& state, const Table& table, auto arrow_reader_result = FileReader::Make(::arrow::default_memory_pool(), std::move(reader)); EXIT_NOT_OK(arrow_reader_result.status()); - std::shared_ptr arrow_reader = std::move(*arrow_reader_result); + auto arrow_reader = std::move(*arrow_reader_result); std::shared_ptr
table; EXIT_NOT_OK(arrow_reader->ReadTable(&table)); @@ -739,7 +739,7 @@ static void BM_ReadIndividualRowGroups(::benchmark::State& state) { auto arrow_reader_result = FileReader::Make(::arrow::default_memory_pool(), std::move(reader)); EXIT_NOT_OK(arrow_reader_result.status()); - std::shared_ptr arrow_reader = std::move(*arrow_reader_result); + auto arrow_reader = std::move(*arrow_reader_result); std::vector> tables; for (int i = 0; i < arrow_reader->num_row_groups(); i++) { @@ -775,7 +775,7 @@ static void BM_ReadMultipleRowGroups(::benchmark::State& state) { auto arrow_reader_result = FileReader::Make(::arrow::default_memory_pool(), std::move(reader)); EXIT_NOT_OK(arrow_reader_result.status()); - std::shared_ptr arrow_reader = std::move(*arrow_reader_result); + auto arrow_reader = std::move(*arrow_reader_result); std::shared_ptr
table; EXIT_NOT_OK(arrow_reader->ReadRowGroups(rgs, &table)); From 6ad6292666f82d7168d5121223a4aa346290c850 Mon Sep 17 00:00:00 2001 From: Hiroyuki Sato Date: Tue, 9 Dec 2025 12:10:56 +0900 Subject: [PATCH 20/24] Fix lint --- .../parquet/arrow/arrow_reader_writer_test.cc | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/cpp/src/parquet/arrow/arrow_reader_writer_test.cc b/cpp/src/parquet/arrow/arrow_reader_writer_test.cc index a51970829896..7379ca3502ce 100644 --- a/cpp/src/parquet/arrow/arrow_reader_writer_test.cc +++ b/cpp/src/parquet/arrow/arrow_reader_writer_test.cc @@ -4539,8 +4539,8 @@ TEST(TestArrowFileReader, RecordBatchReaderEmptyRowGroups) { default_arrow_writer_properties(), &buffer)); auto reader = ParquetFileReader::Open(std::make_shared(buffer)); - ASSERT_OK_AND_ASSIGN( - auto file_reader, FileReader::Make(::arrow::default_memory_pool(), std::move(reader))); + ASSERT_OK_AND_ASSIGN(auto file_reader, FileReader::Make(::arrow::default_memory_pool(), + std::move(reader))); // This is the important part in this test. std::vector row_group_indices = {}; ASSERT_OK_AND_ASSIGN(auto record_batch_reader, @@ -4566,8 +4566,8 @@ TEST(TestArrowFileReader, RecordBatchReaderEmptyInput) { default_arrow_writer_properties(), &buffer)); auto reader = ParquetFileReader::Open(std::make_shared(buffer)); - ASSERT_OK_AND_ASSIGN( - auto file_reader, FileReader::Make(::arrow::default_memory_pool(), std::move(reader))); + ASSERT_OK_AND_ASSIGN(auto file_reader, FileReader::Make(::arrow::default_memory_pool(), + std::move(reader))); ASSERT_OK_AND_ASSIGN(auto record_batch_reader, file_reader->GetRecordBatchReader()); std::shared_ptr<::arrow::RecordBatch> record_batch; ASSERT_OK(record_batch_reader->ReadNext(&record_batch)); @@ -4589,8 +4589,8 @@ TEST(TestArrowColumnReader, NextBatchZeroBatchSize) { default_arrow_writer_properties(), &buffer)); auto reader = ParquetFileReader::Open(std::make_shared(buffer)); - ASSERT_OK_AND_ASSIGN( - auto file_reader, FileReader::Make(::arrow::default_memory_pool(), std::move(reader))); + ASSERT_OK_AND_ASSIGN(auto file_reader, FileReader::Make(::arrow::default_memory_pool(), + std::move(reader))); std::unique_ptr column_reader; ASSERT_OK(file_reader->GetColumn(0, &column_reader)); std::shared_ptr chunked_array; @@ -4614,8 +4614,8 @@ TEST(TestArrowColumnReader, NextBatchEmptyInput) { default_arrow_writer_properties(), &buffer)); auto reader = ParquetFileReader::Open(std::make_shared(buffer)); - ASSERT_OK_AND_ASSIGN( - auto file_reader, FileReader::Make(::arrow::default_memory_pool(), std::move(reader))); + ASSERT_OK_AND_ASSIGN(auto file_reader, FileReader::Make(::arrow::default_memory_pool(), + std::move(reader))); std::unique_ptr column_reader; ASSERT_OK(file_reader->GetColumn(0, &column_reader)); std::shared_ptr chunked_array; @@ -5138,7 +5138,8 @@ class TestArrowReadDeltaEncoding : public ::testing::Test { auto file = test::get_data_file(file_name); auto pool = ::arrow::default_memory_pool(); ASSERT_OK_AND_ASSIGN( - auto parquet_reader, FileReader::Make(pool, ParquetFileReader::OpenFile(file, false))); + auto parquet_reader, + FileReader::Make(pool, ParquetFileReader::OpenFile(file, false))); ASSERT_OK(parquet_reader->ReadTable(out)); ASSERT_OK((*out)->ValidateFull()); } From 4045dc8def3674bb161bbcfa97aea59d8dcdce23 Mon Sep 17 00:00:00 2001 From: Hiroyuki Sato Date: Tue, 9 Dec 2025 14:05:09 +0900 Subject: [PATCH 21/24] Add auto --- cpp/src/parquet/arrow/arrow_reader_writer_test.cc | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/cpp/src/parquet/arrow/arrow_reader_writer_test.cc b/cpp/src/parquet/arrow/arrow_reader_writer_test.cc index 7379ca3502ce..cc0c93013242 100644 --- a/cpp/src/parquet/arrow/arrow_reader_writer_test.cc +++ b/cpp/src/parquet/arrow/arrow_reader_writer_test.cc @@ -4260,8 +4260,7 @@ TEST(TestArrowReaderAdHoc, LARGE_MEMORY_TEST(LargeStringColumn)) { array.reset(); auto reader = ParquetFileReader::Open(std::make_shared(tables_buffer)); - std::unique_ptr arrow_reader; - ASSERT_OK_AND_ASSIGN(arrow_reader, + ASSERT_OK_AND_ASSIGN(auto arrow_reader, FileReader::Make(default_memory_pool(), std::move(reader))); ASSERT_OK_NO_THROW(arrow_reader->ReadTable(&table)); ASSERT_OK(table->ValidateFull()); From 7cf225f228a7ef77b632f32d58b9940f2f5f5259 Mon Sep 17 00:00:00 2001 From: Hiroyuki Sato Date: Tue, 9 Dec 2025 14:50:08 +0900 Subject: [PATCH 22/24] Use Result version FileReader::Make --- cpp/src/parquet/arrow/fuzz_internal.cc | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/cpp/src/parquet/arrow/fuzz_internal.cc b/cpp/src/parquet/arrow/fuzz_internal.cc index 95df3b2c4754..b2e295b435d3 100644 --- a/cpp/src/parquet/arrow/fuzz_internal.cc +++ b/cpp/src/parquet/arrow/fuzz_internal.cc @@ -281,8 +281,10 @@ Status FuzzReader(const uint8_t* data, int64_t size) { pq_file_reader = ParquetFileReader::Open(file, reader_properties, pq_md); END_PARQUET_CATCH_EXCEPTIONS - std::unique_ptr reader; - RETURN_NOT_OK(FileReader::Make(pool, std::move(pq_file_reader), properties, &reader)); + auto arrow_reader_result = + FileReader::Make(pool, std::move(pq_file_reader), properties); + RETURN_NOT_OK(arrow_reader_result.status()); + auto reader = std::move(*arrow_reader_result); st &= FuzzReadData(std::move(reader)); } return st; From 9c7e26e080a1f0b90e551aa36668f4708bc7449c Mon Sep 17 00:00:00 2001 From: Hiroyuki Sato Date: Tue, 9 Dec 2025 16:10:44 +0900 Subject: [PATCH 23/24] Use auto --- cpp/src/parquet/arrow/arrow_reader_writer_test.cc | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/cpp/src/parquet/arrow/arrow_reader_writer_test.cc b/cpp/src/parquet/arrow/arrow_reader_writer_test.cc index cc0c93013242..0831fb626751 100644 --- a/cpp/src/parquet/arrow/arrow_reader_writer_test.cc +++ b/cpp/src/parquet/arrow/arrow_reader_writer_test.cc @@ -5196,9 +5196,8 @@ TEST_F(TestArrowReadDeltaEncoding, IncrementalDecodeDeltaByteArray) { const int64_t batch_size = 100; ArrowReaderProperties properties = default_arrow_reader_properties(); properties.set_batch_size(batch_size); - std::unique_ptr parquet_reader; ASSERT_OK_AND_ASSIGN( - parquet_reader, + auto parquet_reader, FileReader::Make(pool, ParquetFileReader::OpenFile(file, false), properties)); ASSERT_OK_AND_ASSIGN(auto rb_reader, parquet_reader->GetRecordBatchReader()); From 98d950c6de92430158a0b73e3285e18706a8e616 Mon Sep 17 00:00:00 2001 From: Sutou Kouhei Date: Thu, 11 Dec 2025 10:36:58 +0900 Subject: [PATCH 24/24] Reuse existing implementation --- cpp/src/parquet/arrow/reader.cc | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/cpp/src/parquet/arrow/reader.cc b/cpp/src/parquet/arrow/reader.cc index e32915e2cbf3..6b700870772e 100644 --- a/cpp/src/parquet/arrow/reader.cc +++ b/cpp/src/parquet/arrow/reader.cc @@ -1366,10 +1366,7 @@ Result> FileReader::Make( Result> FileReader::Make( ::arrow::MemoryPool* pool, std::unique_ptr parquet_reader) { - std::unique_ptr reader = std::make_unique( - pool, std::move(parquet_reader), default_arrow_reader_properties()); - RETURN_NOT_OK(static_cast(reader.get())->Init()); - return reader; + return Make(pool, std::move(parquet_reader), default_arrow_reader_properties()); } FileReaderBuilder::FileReaderBuilder()