Thanks Wes! I'm working on the integrating and testing the necessary changes in our dev environment. I'll submit a PR once things are working.
Best, Brian On 3/16/19, 4:24 PM, "Wes McKinney" <wesmck...@gmail.com> wrote: EXTERNAL hi Brian, Please feel free to submit a PR to add the requisite APIs that you need for your application. Antoine or I or others should be able to give prompt feedback since we know this code pretty well. Thanks Wes On Sat, Mar 16, 2019 at 11:40 AM Brian Bowman <brian.bow...@sas.com> wrote: > > Hi Wes, > > Thanks for the quick reply! To be clear, the usage I'm working on needs to own both the Open FileDescriptor and corresponding mapped memory. In other words ... > > SAS component does both open() and mmap() which could be for READ or WRITE. > > -> Calls low-level Parquet APIs to read an existing file or write a new one. The open() and mmap() flags are guaranteed to be correct. > > At some later point SAS component does an unmap() and close(). > > -Brian > > > On 3/14/19, 3:42 PM, "Wes McKinney" <wesmck...@gmail.com> wrote: > > hi Brian, > > This is mostly an Arrow platform question so I'm copying the Arrow mailing list. > > You can open a file using an existing file descriptor using ReadableFile::Open > > https://github.com/apache/arrow/blob/master/cpp/src/arrow/io/file.h#L145 > > The documentation for this function says: > > "The file descriptor becomes owned by the ReadableFile, and will be > closed on Close() or destruction." > > If you want to do the equivalent thing, but using memory mapping, I > think you'll need to add a corresponding API to MemoryMappedFile. This > is more perilous because of the API requirements of mmap -- you need > to pass the right flags and they may need to be the same flags that > were passed when opening the file descriptor, see > > https://github.com/apache/arrow/blob/master/cpp/src/arrow/io/file.cc#L378 > > and > > https://github.com/apache/arrow/blob/master/cpp/src/arrow/io/file.cc#L476 > > - Wes > > On Thu, Mar 14, 2019 at 1:47 PM Brian Bowman <brian.bow...@sas.com> wrote: > > > > The ReadableFile class (arrow/io/file.cc) has utility methods where a FileDescriptor is either passed in or returned, but I don’t see how this surfaces through the API. > > > > Is there a way for application code to control the open lifetime of mmap()’d Parquet files by passing an already open FileDescriptor to Parquet low-level API open/close methods? > > > > Thanks, > > > > Brian > > > > >