From 4687dbe0db59e6228d7e9d42c61cdd7f7c0f33a7 Mon Sep 17 00:00:00 2001 From: Mohammad Linjawi <Mohammad.Linjawi@ibm.com> Date: Mon, 2 Dec 2024 17:55:21 +0300 Subject: [PATCH] Refactor FileReader::Make methods to align with Result-based API --- cpp/src/parquet/arrow/reader.cc | 20 ++++++++++++++++---- cpp/src/parquet/arrow/reader.h | 23 ++++++++++++----------- 2 files changed, 28 insertions(+), 15 deletions(-) diff --git a/cpp/src/parquet/arrow/reader.cc b/cpp/src/parquet/arrow/reader.cc index 212cfb669270f..53197e46f4f75 100644 --- a/cpp/src/parquet/arrow/reader.cc +++ b/cpp/src/parquet/arrow/reader.cc @@ -1315,20 +1315,32 @@ Status FileReader::GetRecordBatchReader(const std::vector<int>& row_group_indice return Status::OK(); } -Result<std::unique_ptr<FileReader>> Make(::arrow::MemoryPool* pool, - std::unique_ptr<ParquetFileReader> reader, +Status FileReader::Make(MemoryPool* pool, std::unique_ptr<ParquetFileReader> reader, const ArrowReaderProperties& properties, std::unique_ptr<FileReader>* out) { *out = std::make_unique<FileReaderImpl>(pool, std::move(reader), properties); return static_cast<FileReaderImpl*>(out->get())->Init(); } -Result<std::unique_ptr<FileReader>> Make(::arrow::MemoryPool* pool, - std::unique_ptr<ParquetFileReader> reader, +Result<std::unique_ptr<FileReader>> FileReader::Make( + MemoryPool* pool, std::unique_ptr<ParquetFileReader> reader, + const ArrowReaderProperties& properties) { + auto file_reader = + std::make_unique<FileReaderImpl>(pool, std::move(reader), properties); + RETURN_NOT_OK(file_reader->Init()); + return file_reader; +} + +Status FileReader::Make(MemoryPool* pool, std::unique_ptr<ParquetFileReader> reader, std::unique_ptr<FileReader>* out) { return Make(pool, std::move(reader), default_arrow_reader_properties(), out); } +Result<std::unique_ptr<FileReader>> FileReader::Make( + MemoryPool* pool, std::unique_ptr<ParquetFileReader> reader) { + return Make(pool, std::move(reader), default_arrow_reader_properties()); +} + FileReaderBuilder::FileReaderBuilder() : pool_(::arrow::default_memory_pool()), properties_(default_arrow_reader_properties()) {} diff --git a/cpp/src/parquet/arrow/reader.h b/cpp/src/parquet/arrow/reader.h index c0300f51d87b9..6fc8828c37616 100644 --- a/cpp/src/parquet/arrow/reader.h +++ b/cpp/src/parquet/arrow/reader.h @@ -118,27 +118,28 @@ class PARQUET_EXPORT FileReader { // Factory function to create a FileReader from a ParquetFileReader and properties. // \deprecated Deprecated in 19.0.0. Use arrow::Result version instead. ARROW_DEPRECATED("Deprecated in 19.0.0. Use arrow::Result version instead.") - static ::arrow::Status Make( - ::arrow::MemoryPool* pool, std::unique_ptr<ParquetFileReader> reader, - const ArrowReaderProperties& properties, std::unique_ptr<FileReader>* out); - - /// Factory function to create a FileReader from a ParquetFileReader and properties + static ::arrow::Status Make(::arrow::MemoryPool* pool, + std::unique_ptr<ParquetFileReader> reader, + const ArrowReaderProperties& properties, + std::unique_ptr<FileReader>* out); + + // Factory function to create a FileReader from a ParquetFileReader and properties + // Returns an arrow::Result containing a unique pointer to the FileReader. static ::arrow::Result<std::unique_ptr<FileReader>> Make( ::arrow::MemoryPool* pool, std::unique_ptr<ParquetFileReader> reader, - const ArrowReaderProperties& properties, std::unique_ptr<FileReader>* out); + const ArrowReaderProperties& properties); // Factory function to create a FileReader from a ParquetFileReader. // \deprecated Deprecated in 19.0.0. Use arrow::Result version instead. ARROW_DEPRECATED("Deprecated in 19.0.0. Use arrow::Result version instead.") - static ::arrow::Result<std::unique_ptr<FileReader>> Make( - ::arrow::MemoryPool* pool, std::unique_ptr<ParquetFileReader> reader, - std::unique_ptr<FileReader>* out); + static ::arrow::Status Make(::arrow::MemoryPool* pool, + std::unique_ptr<ParquetFileReader> reader, + std::unique_ptr<FileReader>* out); // Factory function to create a FileReader from a ParquetFileReader. // Returns an arrow::Result containing a unique pointer to the FileReader. static ::arrow::Result<std::unique_ptr<FileReader>> Make( - ::arrow::MemoryPool* pool, std::unique_ptr<ParquetFileReader> reader, - std::unique_ptr<FileReader>* out); + ::arrow::MemoryPool* pool, std::unique_ptr<ParquetFileReader> 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