> Is my understanding correct?

I believe your understanding is correct.

> Are there additional considerations in rust which means it's not possible
for objects accessed by application code (e.g. record-batches, arrays) to
keep their buffers in IPC messages?

I don't think there is anything specific in Rust that prevents  zero copy
of the IPC buffer. I think what is missing is someone to sit down with the
IPC reader/writer code implementation and optimize -- e.g. perhaps create
a  shared `Bytes` directly from the IPC message data, and then create
`Buffer`/ `ArrayData` pointing into that and build the final arrays




On Tue, Apr 6, 2021 at 12:28 PM Vertexclique <vertexcli...@gmail.com> wrote:

> Hi Al;
>
> Yeah, that's true. The ownership rules of Rust prevents resource ownership
> outside the container that the resource lifetime taken.
>
> That's why there are buffer copies to take ownership and operate on it.
> Imo, it should be also removed from the docs if it's written like that (for
> Rust).
>
> Best,
> Theo
>
> On Apr 6, 2021, 17:03, at 17:03, Al Taylor 
> <al.taylor1...@googlemail.com.invalid>
> wrote:
> >Hi,
> >
> >I was reading around the rust-arrow codebase, evaluating it for
> >potential future use. I'm  particularly interested in zero-copy
> >processing.
> >
> >I could very well be wrong here, as I don't have a lot of rust
> >experience, but it looks like the code for reading buffers out of IPC
> >messages is copying the contents of the data.
> >
> >A buffer is constructed via Buffer::from(&[u8]) according to an
> >ipc::Buffer object here:
> >
> https://github.com/apache/arrow/blob/8e43f23dcc6a9e630516228f110c48b64d13cec6/rust/arrow/src/ipc/reader.rs#L39
> >
> >The Buffer::from method is defined here:
> >
> https://github.com/apache/arrow/blob/8e43f23dcc6a9e630516228f110c48b64d13cec6/rust/arrow/src/buffer/immutable.rs#L222
> >and appears to create an empty buffer, then copy data from the slice
> >into it.
> >
> >As far as I'm aware, the C++ implementation of arrow does not copy
> >buffer data out of IPC messages in this way.
> >
> >Is my understanding correct? Are there additional considerations in
> >rust which means it's not possible for objects accessed by application
> >code (e.g. record-batches, arrays) to keep their buffers in IPC
> >messages?
> >
> >Thanks,
> >
> >Al
>

Reply via email to