[iceberg] Allow publishing VARIANT columns with Iceberg format version 3 - #9246
Open
vbabenkoru wants to merge 1 commit into
Open
[iceberg] Allow publishing VARIANT columns with Iceberg format version 3#9246vbabenkoru wants to merge 1 commit into
vbabenkoru wants to merge 1 commit into
Conversation
vbabenkoru
force-pushed
the
iceberg-v3-variant
branch
5 times, most recently
from
August 18, 2026 21:50
ce39155 to
c495046
Compare
JingsongLi
marked this pull request as draft
August 20, 2026 01:53
vbabenkoru
force-pushed
the
iceberg-v3-variant
branch
from
August 21, 2026 00:54
c495046 to
feb4e64
Compare
vbabenkoru
marked this pull request as ready for review
August 21, 2026 04:30
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Final PR of the 3-PR stack for #8972 — closes #8972. Stacked on #9244 and #9245: only the top commit belongs to this PR; the 13 commits below it are the two PRs underneath and will disappear from the diff as they merge.
Purpose
Iceberg supports the VARIANT type from format version 3 onward, but v3 also made row lineage mandatory. Paimon therefore rejected VARIANT columns in the Iceberg compatibility layer for all format versions, because the v3 metadata it produced was not lineage-compliant and GA readers would reject the whole table (#8972).
With #9244 and #9245, Paimon's v3 writer emits complete row lineage (table metadata, manifest lists, manifest entries), so the reason to block VARIANT on v3 is gone. This PR lifts the guard for
metadata.iceberg.format-version>= 3:varianttype.The guard lift is intentionally the last commit of the stack: every v3 table that can publish VARIANT is guaranteed to have carried full row lineage from its first commit.
Tests
IcebergRowLineageCompatibilityTest#testVariantPublishableWithFormatVersion3: a VARIANT column publishes on v3, the schema maps to Icebergvariant, and lineage fields are present.IcebergRowLineageCompatibilityTest#testVariantRejectedWithFormatVersion2: v2 commits with VARIANT still fail with the explicit error.AI notice
The code is generated using Fable 5 (with reviews from Codex) but has been verified to run on a real cluster with Flink, Paimon, Iceberg, StarRocks and Snowflake.