diff --git a/cpp/src/arrow/adapters/orc/adapter.cc b/cpp/src/arrow/adapters/orc/adapter.cc index 9bb4abfd0f05..2ce4356dffa4 100644 --- a/cpp/src/arrow/adapters/orc/adapter.cc +++ b/cpp/src/arrow/adapters/orc/adapter.cc @@ -199,6 +199,11 @@ class ORCFileReader::Impl { return Init(); } + virtual liborc::Reader* GetRawORCReader() { + return reader_.get(); + } + + Status Init() { int64_t nstripes = reader_->getNumberOfStripes(); stripes_.resize(nstripes); @@ -439,6 +444,10 @@ class ORCFileReader::Impl { return Status::OK(); } + liborc::Reader* ORCFileReader::GetRawORCReader() { + return impl_->GetRawORCReader(); + } + Status NextStripeReader(int64_t batch_size, std::shared_ptr* out) { return NextStripeReader(batch_size, {}, out); } diff --git a/cpp/src/arrow/adapters/orc/adapter.h b/cpp/src/arrow/adapters/orc/adapter.h index e053eab435b2..a38683776bbe 100644 --- a/cpp/src/arrow/adapters/orc/adapter.h +++ b/cpp/src/arrow/adapters/orc/adapter.h @@ -49,6 +49,9 @@ class ARROW_EXPORT ORCFileReader { ARROW_DEPRECATED("Deprecated in 6.0.0. Use Result-returning overload instead.") static Status Open(const std::shared_ptr& file, MemoryPool* pool, std::unique_ptr* reader); + + /// \brief Get ORC reader from inside. + liborc::Reader* GetRawORCReader(); /// \brief Creates a new ORC reader ///