u70b3 commented on PR #67630:
URL: https://github.com/apache/doris/pull/67630#issuecomment-5637228386

   **P1 – fixed-list contract vs pinned SDK: findings and fix.** Verified 
empirically on the pinned 9.1.0-beta.3 with a real on-disk dataset through the 
JNI path: `getLanceSchema()` returns empty `children` for every FixedSizeList 
variant (f32/f16 × element nullability) — the element type is folded into the 
manifest logical-type string (`fixed_size_list:float:4`). This is 
fixed-size-list-specific: struct and variable-size-list children round-trip 
losslessly, including not-null flags. Element nullability has no manifest slot 
at all; it is synthesized as nullable on every read path, and datasets written 
today cannot be backfilled by an SDK upgrade.
   
   The contract now sources element facts from the reconstructed Arrow view 
(`asArrowField()`'s synthesized child): element type from the child's Arrow 
type, element nullability copied from the synthesized flag (true today; 
improves automatically if a future SDK preserves the fact), failing closed when 
the view yields no child. This is pinned by a real JNI dataset fixture — a 
schema-only dataset created via `Dataset.create`, reopened, and built through 
the admission snapshot path — alongside unit fixtures that now mirror the real 
empty-children shape.
   
   Landed in 4f887ace6b, together with the fixture migration and a real-dataset 
contract test.
   


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


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to