ftschafer opened a new issue, #1325:
URL: https://github.com/apache/arrow-go/issues/1325

   ### Describe the usage question you have. Please include as many useful 
details as possible.
   
   
   We decode a long sequence of independent, self-contained IPC blobs (schema + 
record batches) that arrive one at a time over a transport. Only the first blob 
carries the schema; later blobs are record-batches-only. We reused a single 
ipc.Reader, swapping the underlying io.Reader between blobs, and it worked 
through v18.7.0.
   
   On v18.8.0 the second blob onward decodes as zero rows. Reading a blob to 
io.EOF sets r.done = true, and next() now early-exits on done:
   ```
   func (r *Reader) next() bool {
       ...
       if r.err != nil || r.done { return false }
   ```
   done is sticky with no public reset, so the reused reader short-circuits 
from the second blob on. This looks like it came from the change that started 
rejecting non-dictionary initial messages 
(https://github.com/apache/arrow-go/pull/1054/files).
   
   Therefore, we have some questions:
   
   - Was this behavior change intended to ship in a minor release (v18.7 → 
v18.8)? It's source-breaking for the reuse pattern, which reads unusual for a 
minor bump.
   
   - If reuse is not supported, what's the recommended way to decode this "many 
small streams, schema known once" pattern? Right now our options seem to be a 
fresh Reader per blob plus re-injecting a serialized schema message in front of 
every schema-less blob, or reaching into unexported state. Is there a better 
approach we're missing?
   
   ### Component(s)
   
   Release


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to