[
https://issues.apache.org/jira/browse/FLINK-40298?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
ASF GitHub Bot updated FLINK-40298:
-----------------------------------
Labels: pull-request-available (was: )
> Opt-in name-based state schema evolution for RowData
> ----------------------------------------------------
>
> Key: FLINK-40298
> URL: https://issues.apache.org/jira/browse/FLINK-40298
> Project: Flink
> Issue Type: Sub-task
> Components: API / Type Serialization System, Table SQL / Runtime
> Reporter: Weiqing Yang
> Priority: Major
> Labels: pull-request-available
>
> The core of FLIP-527. Adds:
> * A new option table.exec.state.schema-evolution.enabled (Boolean, default
> false).
> * Name-based compatibility in
> RowDataSerializer.RowDataSerializerSnapshot.resolveSchemaCompatibility: when
> the field layouts differ but the difference is a supported
> backward-compatible change, it returns compatibleAfterMigration() instead of
> incompatible(). Fields are matched by the names persisted by FLINK-40120.
> Added fields must be nullable, removed fields and changed leaf types are
> rejected, and nested ROW fields are validated by recursion.
> * An override of migrate that remaps a row into the new layout: fields
> placed by name, added fields null-filled, row kind preserved, nested ROW
> values remapped recursively.
> The option is carried as an in-memory, non-persisted flag on the RowData
> serializer rather than as anything written into the snapshot. The flag is set
> only on a serializer that is a state's own value serializer, at the point the
> state descriptor initializes it. Consequently a RowData serializer that sits
> below a composite serializer (List or Tuple, as in interval and outer join
> buffers), or one an operator pre-builds itself, never carries the flag and is
> rejected on restore rather than migrated. This matters for correctness:
> migration is not propagated into nested serializers by composite snapshots,
> so those shapes must fail closed. A test asserts this rejection explicitly.
> Snapshots written before field names were persisted have no names and are
> likewise rejected.
> Depends on FLINK-40296.
> FLIP-527:
> https://cwiki.apache.org/confluence/spaces/FLINK/pages/353601981/FLIP-527+State+Schema+Evolution+for+RowData
--
This message was sent by Atlassian Jira
(v8.20.10#820010)