ariel-miculas opened a new pull request, #9605:
URL: https://github.com/apache/arrow-rs/pull/9605

   # Which issue does this PR close?
   
   
   # Rationale for this change
   When a writer-only field references a named Avro type that was previously 
resolved against a reader schema, `parse_type` returns the registered 
reader-resolved type from the shared resolver. This caused two problems:
   
   1. The Skipper built its struct sub-skippers from the reader's field list, 
which omits writer-only fields. Their bytes were never consumed, leaving the 
cursor at the wrong position for all subsequent records.
   
   2. Reader fields carry resolution-induced nullability (e.g. a writer plain 
`long` matched against a reader `["null", long]` gains `nullability = 
Some(NullFirst)`). The Skipper read a union-tag byte that was never written, 
causing "Unexpected EOF" errors.
   
   Fix: store the writer's data type in `ResolvedField::ToReader` alongside the 
reader index. The Skipper's `Codec::Struct` arm now iterates 
`rec.writer_fields` and uses the writer type from every entry - both 
`ToReader(_, wdt)` and `Skip(wdt)` - so it always follows the writer's wire 
format.
   
   # What changes are included in this PR?
   
   
   # Are these changes tested?
   Yes, added unit tests.
   
   # Are there any user-facing changes?
   No
   


-- 
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