Hi all, I'd like to invite the community to discuss a spec ambiguity in Apache Iceberg that has caused some confusion across implementations. We've seen this come up in Python, Rust, and now Go.
The issue: the spec documents the `day` partition transform's result type as plain `int`, but Java, PyIceberg, and Rust all write manifest partition fields using Avro's logical `date` type. Go currently writes plain `int`, which is the strict reading of the spec. Since both forms have the same physical representation, the difference is only the Avro schema annotation -- but it's worth clarifying the spec so all implementations are aligned. The full analysis, including a breakdown of each implementation's writer/reader behavior and proposed resolution options, is here: https://github.com/apache/iceberg/issues/16414 At a high level, the questions for the community are: 1. What should implementations write: Avro `int` (plain integer) or Avro `date` (integer with a date logical type)? 2. Should implementations be required to read both forms, or just encouraged to? 3. Should the spec's transform result type table be updated from `int` to `date`? I'd love to hear your thoughts. Thanks! Best, Kevin Liu
