Thanks for bringing this up Fokko. It makes sense to hide `last-column-id` from the public API, as it is an implementation detail.
As mentioned in the PR, I checked references to `last-column-id` <https://grep.app/search?current=4&q=last-column-id&filter[lang][0]=Python&filter[lang][1]=Rust&filter[lang][2]=Java&filter[lang][3]=Go&filter[lang][4]=C%2B%2B> and `last_column_id` <https://grep.app/search?q=last_column_id> and didn't find anything that would break due to this change. We would likely need to also deprecate this in PyIceberg as well. https://github.com/apache/iceberg-python/blob/b2f0a9e5cd7dd548e19cdcdd7f9205f03454369a/pyiceberg/table/update/__init__.py#L90-L91 Best, Kevin Liu On Thu, Nov 14, 2024 at 1:13 AM Fokko Driesprong <fo...@apache.org> wrote: > Hi everyone, > > While reviewing the TableMetadataBuilder PR on Iceberg-Rust > <https://github.com/apache/iceberg-rust/pull/587#discussion_r1834400220> > the other day, I noticed that it exposes the last-column-id to the public > API, but I believe there is no need for it. This field is used to determine > the next field-id when adding new fields to a schema. The last-column-id was > added to the REST spec <https://github.com/apache/iceberg/pull/7445> a > while ago, to make the spec in line with the reference implementation, but > in hindsight, it should have been the other way around. > > My suggestion is to deprecate and remove this field from the spec and code > <https://github.com/apache/iceberg/pull/11514/>, as I can't think of any > use case where you want to make jumps in the last-column-id (it has to be > monotonically increasing). This will help clean up the APIs and the > reference implementation. > > Would love to hear everyone's thoughts on this! > > Kind regards, > Fokko > > >