hutiefang76 opened a new issue, #12940:
URL: https://github.com/apache/seatunnel/issues/12940

   ### Search before asking
   
   - [x] I searched existing issues and PRs for Avro schema caching and 
`RowToAvroConverter`. #11660 concerns the Parquet data model; this follow-up 
concerns nested ROW conversion in `seatunnel-format-avro`.
   
   ### Description
   
   Track the non-blocking performance follow-up requested in the review of 
#12900.
   
   In `RowToAvroConverter.resolveObject`, each non-null ROW calls the schema 
converter before creating its `GenericRecordBuilder`. This rebuilds a schema 
tree for each nested ROW value, including ROWs inside ARRAYs and MAPs. The 
legacy path already has this behavior; the nullable-layout option in #12900 is 
not its origin.
   
   The goal is to reuse immutable nested schemas without changing serialized 
bytes or record names. No allocation benchmark has been run for this issue, so 
there is no measured performance claim yet.
   
   A follow-up should preserve:
   
   - Default and explicit `avro_row_nullable = false` bytes and legacy nested 
record names.
   - Nullable union layout and resolution of present and null ROWs at every 
depth.
   - Different ROW structures with the same leaf name under different parents; 
a cache keyed only by field name would conflate them.
   - Public serializer/deserializer behavior and Kafka/Pulsar option wiring.
   
   Before choosing a cache or reusing branches of the enclosing schema, compare 
allocation profiles and run the existing byte-compatibility and nested 
round-trip regressions. This issue tracks that investigation separately from 
the correctness fix in #12900.
   
   ### Usage Scenario
   
   Avro serialization of rows containing nested ROW fields, including ROW 
elements in ARRAYs and MAP values, as used by Kafka and Pulsar jobs.
   
   ### Related issues
   
   #12879, #12900
   
   ### Are you willing to submit a PR?
   
   - [x] Yes. I can investigate this as a separate follow-up after the current 
correctness changes.
   
   ### Code of Conduct
   
   - [x] I agree to follow this project's [Code of 
Conduct](https://www.apache.org/foundation/policies/conduct).
   


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