Parent: #989
First piece of the geo umbrella. Adds GeometryType{CRS string} and GeographyType{CRS string, Algorithm string} to types.go per the Iceberg primitive-types spec. Geometry has a crs only; Geography adds edge-interpolation-algorithm (one of spherical, vincenty, thomas, andoyer, karney).
Threading is the same shape as the recent UnknownType (#605) and TimestampNs (#594) additions: VisitGeometry / VisitGeography on SchemaVisitorPerPrimitiveType[T] in schema.go, JSON marshalling in types.go, partition-spec rejection (per spec), same-type-only promotion + CRS change disallowed in table/metadata_schema_compatibility.go, pass-through binary in table/substrait/substrait.go. PR #594 is a good template for the visitor wiring.
Tests cover type round-trip, schema-evolution add-geo-column, partition-spec rejection, and JSON marshalling for both with a non-default CRS. Stale PR #628 has a partial implementation of this slice that may be worth rebasing rather than restarting.
Parent: #989
First piece of the geo umbrella. Adds
GeometryType{CRS string}andGeographyType{CRS string, Algorithm string}totypes.goper the Iceberg primitive-types spec. Geometry has acrsonly; Geography addsedge-interpolation-algorithm(one ofspherical,vincenty,thomas,andoyer,karney).Threading is the same shape as the recent
UnknownType(#605) andTimestampNs(#594) additions:VisitGeometry/VisitGeographyonSchemaVisitorPerPrimitiveType[T]inschema.go, JSON marshalling intypes.go, partition-spec rejection (per spec), same-type-only promotion + CRS change disallowed intable/metadata_schema_compatibility.go, pass-through binary intable/substrait/substrait.go. PR #594 is a good template for the visitor wiring.Tests cover type round-trip, schema-evolution add-geo-column, partition-spec rejection, and JSON marshalling for both with a non-default CRS. Stale PR #628 has a partial implementation of this slice that may be worth rebasing rather than restarting.