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]
