linliu-code opened a new pull request, #648:
URL: https://github.com/apache/hudi-rs/pull/648

   **Stacked on #639–#647** — their commits appear here until they merge. 
**Review only the last commit.**
   
   Works out the three schemas a read needs: what the caller asked for, what 
must be read from storage to satisfy it, and what the merged output looks like. 
The required schema is wider than the requested one whenever the merge needs a 
column the caller did not ask for — an ordering field, say.
   
   Also adds `schema::resolver::avro_json_to_arrow_schema`, which the handler 
needs to turn a log block's Avro schema into an Arrow one. It goes through this 
crate's own `avro_to_arrow` rather than the forked `arrow-avro` the source uses 
— more evidence the port does not need the forked arrow stack.
   
   ## A gap worth knowing about
   
   The source switched *away* from the vendored converter for a reason, and it 
applies here. `avro_to_arrow::schema` (line 73-76) gives a list's element field 
`nullable = false` **unconditionally**, even when the Avro items schema is a 
`["null", T]` union. A merge-on-read slice whose arrays contain NULL elements 
will therefore resolve to a schema that disagrees with its data.
   
   I did **not** fix it here: that conversion is shared with the existing read 
path, so changing it belongs in its own PR with a regression test rather than 
riding along with a port. It is recorded on the new function's doc comment so 
it cannot be lost.
   
   Build warning-free; 900 lib tests green.
   
   🤖 Generated with [Claude Code](https://claude.com/claude-code)


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