apache / apache/iceberg-go

feat: geometry and geography type support (Iceberg v3)

Open
#989 7 comments 1 reaction 2 assignees Claimed by @tanmayrauth View on GitHub
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

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.