title: Is Arrow Streaming end-to-end copy-free
body: <p>I am confused about Arrow Streaming. Many sources describing Arrow just paraphrase the  <a href="https://arrow.apache.org/" rel="nofollow noreferrer">following</a></p>
  <blockquote>
  <p>The Arrow memory format supports zero-copy reads</p>
  </blockquote>
  <p>and say that Arrow is zero-copy tool.</p>
  <p>However, as far as I understand <a href="https://arrow.apache.org/docs/format/Columnar.html#recordbatch-message" rel="nofollow noreferrer">these paragraphs</a>:</p>
  <blockquote>
  <p>The primitive unit of serialized data in the columnar format is the “record batch”. Semantically, a record batch is an ordered collection of arrays, known as its fields, each having the same length as one another but potentially different data types. A record batch’s field names and types collectively form the batch’s schema.</p>
  <p>In this section we define a protocol for serializing record batches into a stream of binary payloads and reconstructing record batches from these payloads without need for memory copying.</p>
  </blockquote>
  <p>the description of the <a href="https://arrow.apache.org/docs/format/Columnar.html#ipc-streaming-format" rel="nofollow noreferrer">IPC Streaming Format</a> and, my limited understanding, the source, data is serialized, and only deserialization is zero-copy.</p>
  <p>In other words - systems that use Arrow Streaming actually copy the data on the way.</p>
  <p>Is that correct?</p>