feat: geometry and geography type support (Iceberg v3)
- Dominant language
- Go
- Stars
- 463
- Forks
- 232
- Avg merge
- 2d 11h
- Merged PRs (30d)
- 121
Description
Parent: #589 (v3 support tracking)
Iceberg v3 adds `geometry` and `geography` as first-class primitive types. WKB ([Well-Known Binary](https://libgeos.org/specifications/wkb/)) is the on-disk encoding; the GeoArrow extension provides the canonical Arrow representation. Spec: [Iceberg primitive types](https://iceberg.apache.org/spec/#primitive-types), [Parquet Geospatial types](https://github.com/apache/parquet-format/blob/master/Geospatial.md).
Two stale WIP PRs exist (#628, #663) but no parent issue tied them together. This umbrella tracks the full surface and breaks it into six independently mergeable pieces. Looking for an owner — happy to mentor the contributor who picks it up.
Sub-issues:
- #990 — type + schema plumbing (foundational)
- #991 — WKB encoding + GeoArrow conversion (depends on #990)
- #992 — Parquet GeoStatistics emission (depends on #991)
- #993 — manifest-level geo bounds aggregation (depends on #992)
- #994 — bbox predicate evaluation + pruning (depends on #993)
- #995 — geo defaults + write path (depends on #991 + #994)
Each child is sized to ship in isolation. The chain is mostly linear: types → Arrow → parquet stats → manifest bounds → predicates → write. Cross-client coverage matters at every step — Java/pyiceberg fixtures should pin the wire format.
Contributor guide
Assessment
This issue has not been assessed yet.