jordepic opened a new pull request, #16231: URL: https://github.com/apache/iceberg/pull/16231
Move per-record overrides (resolved equality fields, forward eligibility, distribution-mode resolution, and key-selector construction) onto DynamicRecord itself, and centralize how DynamicRecordProcessor builds and emits a DynamicRecordInternal behind a single DynamicRecordPlan abstraction with three implementations (CachedRecordPlan, DeferredUpdateRecordPlan, ImmediateUpdateRecordPlan). HashKeyGenerator keeps its selector cache and now delegates dispatch to DynamicRecord.keySelector. Existing equality-field-id resolution (user-supplied set, falling back to schema identifier fields) is reused unchanged. Existing routing functionality is preserved with one exception: forward records (null distribution mode) that resolve to a non-empty equality-field set no longer take the forward path. Forwarding such records can land rows sharing an equality key on different writer subtasks, where independent equality deletes can leave duplicates behind. They are now hash-distributed by their equality fields, matching the rest of the dynamic sink. The Forward Mode section of docs/docs/flink-writes.md notes this carve-out. Also corrects the DynamicRecord field reference in the docs: UpsertMode is a per-record write-time flag and does not override the table's write.upsert.enabled property. -- 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] --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
