feat(vortex-spatial): support GeoArrow Geometry unions - #9368
feat(vortex-spatial): support GeoArrow Geometry unions#9368HarukiMoriarty wants to merge 1 commit into
Conversation
Signed-off-by: Nemo Yu <zyu379@wisc.edu>
|
Three things need fixing before this lands, and one structural question about where the decode belongs. Everything after that is style.
|
|
A second pass turned up two more correctness problems and three structural ones, same commit. The unknown-type-ID fallback keeps the original offset
(false, false) => fallback_type_id,but the offsets are copied straight across with no matching substitution: let arrow_offsets = parts.offsets.as_slice::<i32>().to_vec();So the row leaves with a type ID naming one child and an offset that indexed a different one. Arrow validates dense offsets against the child the type ID selects, so Null slots are allowed to hold garbage:
|
Rationale for this change
GeoArrow Geometry columns use dense unions to mix geometry kinds and dimensions. Vortex needs a logical Geometry extension over its canonical Union dtype while retaining Arrow compact children through the external DenseUnion physical encoding.
What changes are included in this PR?
What APIs are changed? Are there any user-facing changes?
Adds the public Geometry and GeometryData spatial extension types and registers GeoArrow Geometry import/export in vortex_spatial::initialize. GeometryCollection fields are accepted as part of the standard schema, but selected GeometryCollection values remain unsupported.