Hi all,

I found a schema-validation issue while testing with the RC. I think this
should be fixed before we make a release to avoid creating incorrect
metadata or table state.

For *table creation*, field IDs are optional [1], but an omitted ID is
serialized as `0` [2]. The published example omits IDs for the `id`,
`data`, and `tags` fields [3], so all three are sent to the catalog with
field ID `0`. Iceberg uses field IDs as the stable identity of columns and
requires them to be unique within a schema. The provider therefore submits
an invalid schema, which the catalog rejects:
```text
Multiple entries with same key: 0=tags and 0=id
```

For *table updates*, the provider does not validate whether a requested
change is a valid Iceberg evolution. Any difference in the field list
causes it to add the complete planned schema as a new schema version and
make it current [4]. I was able to change an existing field from `long` to
`string` and from optional to required, and the REST catalog accepted both
changes. `long` to `string` is not a valid Iceberg type promotion, and
tightening nullability from optional to required is not an allowed schema
evolution.

The expected behavior is that table creation submits a valid schema with
unique field IDs. For an existing table, only changes allowed by Iceberg’s
evolution rules should be committed. If a requested change is incompatible,
Terraform should return a clear error without changing the catalog.

There are a few other nit issues such as "polaris" still referenced in the
repo and build.sh using version=1.0.0 [5]

Best,
Kevin Liu


References:
[1]
https://github.com/apache/terraform-provider-iceberg/blob/ce85caf058929c3b5c0bb9327badfead290d10d0/internal/provider/table_tfschema.go#L125-L130
[2]
https://github.com/apache/terraform-provider-iceberg/blob/ce85caf058929c3b5c0bb9327badfead290d10d0/internal/provider/table_schema.go#L515-L545
[3]
https://github.com/apache/terraform-provider-iceberg/blob/ce85caf058929c3b5c0bb9327badfead290d10d0/examples/resources/iceberg_table/resource.tf#L27-L61
[4]
https://github.com/apache/terraform-provider-iceberg/blob/ce85caf058929c3b5c0bb9327badfead290d10d0/internal/provider/resource_table.go#L440-L497
[5]
https://github.com/apache/terraform-provider-iceberg/blob/3dfc6d15fdb582fd15a16479ad77095896111ab6/build.sh#L21

Thanks,

On Tue, Jul 21, 2026 at 8:01 AM Rich Bowen <[email protected]> wrote:

>
>
> On 2026/07/16 20:05:10 Matt Topol wrote:
> > Hi,
> >
> > I would like to propose the following release candidate (RC1) of the
> > Apache Iceberg Terraform provider version v0.1.0.
> ...
> > [ ] +1 Release this as Apache Iceberg Terraform provider v0.1.0
> > [ ] +0
> > [ ] -1 Do not release this as Apache Iceberg Terraform provider v0.1.0
> > because...
>
>
> +1 (non-binding)
>
> * Verified signatures and hashes on the following files as per
> https://apache.org/info/verification.html
>   - apache-iceberg-terraform-0.1.0.tar.gz (SHA512, GPG signature)
> * Verified LICENSE and NOTICE files
>

Reply via email to