JingsongLi opened a new pull request, #9564: URL: https://github.com/apache/paimon/pull/9564
## Purpose Follow up #8334 so sub-field-level nested data evolution is completely opt-in and preserves legacy data-evolution behavior while disabled. ## Changes - Gate nested path parsing, projection, conflict detection, read planning, and partial writes in Core, Flink, and Spark behind data-evolution.nested-field.enabled. - Preserve literal top-level column names containing dots while the option is disabled, and reject partial or reordered nested write types that cannot use legacy metadata safely. - Support a persisted false-to-true rollout, reject dynamic transitions and true-to-false or removal, and require data-evolution.enabled=true. - Preserve row cardinality and every ROW ancestor nullness for projected or newly added nested leaves. - Separate format reader mappings by requested shape, physical projected schema, and effective nested mode. - Detect persisted enablement from file schemas so readers retained across ALTER TABLE false-to-true safely read later nested partial files. ## Compatibility Upgrade every reader, writer, compactor, and maintenance component before enabling the option. Downgrading after nested sub-field metadata has been committed is unsafe. ## Tests - Core targeted suite: 49 tests passed. - API option-aware TableSchema tests: 2 tests passed. - SchemaValidation and DataEvolutionUtils targeted tests: 4 tests passed. - Flink nested MERGE INTO integration suite: 14 tests passed. - Spark 3 nested MERGE INTO suite: 15 tests passed. - Spark 4 module compiled with JDK 17. - Spotless checks passed for all changed modules. -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: [email protected] For queries about this service, please contact Infrastructure at: [email protected]
