Apache Iceberg™ tables: NOT NULL ADD COLUMN requires non-null defaults on v3 tables (Pending)

Attention

This behavior change is in the 2026_05 bundle.

For the current status of the bundle, refer to Bundle history.

When you add a NOT NULL column to a v3 (or later) Apache Iceberg™ table using ALTER ICEBERG TABLE, the column must include a DEFAULT value. This enforces the Apache Iceberg™ specification, which requires that any required field added to an existing table has non-null write and read defaults. For more information about default values in Iceberg tables, see Default values and Apache Iceberg™ v3 specification support. This behavior change applies to both Snowflake-managed and externally managed writable Iceberg tables.

Before the change:

Adding a NOT NULL column to a v3 (or later) Iceberg table without a DEFAULT value was accepted. For example, the following statement succeeded even though no default was specified:

ALTER ICEBERG TABLE my_iceberg_table ADD COLUMN c INT NOT NULL;

This produced Iceberg metadata that didn’t comply with the v3 specification.

After the change:

When the 2026_05 behavior change bundle is enabled in your account, adding a NOT NULL column to a v3 (or later) Iceberg table without a DEFAULT value returns an error. The column definition must include DEFAULT <non-null-value>. For example:

-- Fails (no DEFAULT specified):
ALTER ICEBERG TABLE my_iceberg_table ADD COLUMN c INT NOT NULL;

-- Succeeds:
ALTER ICEBERG TABLE my_iceberg_table ADD COLUMN c INT NOT NULL DEFAULT 0;

To preserve backward compatibility, update any scripts or automation that add NOT NULL columns to v3 (or later) Iceberg tables to include a DEFAULT value.

Ref: 2351