anuragmantri opened a new pull request, #18401: URL: https://github.com/apache/iceberg/pull/18401
Maintenance commits such as rewrite data files and rewrite manifests build their snapshot summary only from the operation, so custom properties written by the producer of the replaced snapshot are lost after compaction. This adds an opt-in table property, `commit.snapshot-property-carry-forward.enabled`, that makes replace commits copy non-reserved summary properties from the branch head they replace. Iceberg-owned keys are never copied. Properties set on the commit itself take precedence. Engine-specific keys that core cannot name, such as `spark.app.id`, are still copied. The reserved set could also back the `set()` validation discussed in #17009. Test plan: Core tests in `TestSnapshotSummary`, across format versions 1–4 - Replace commits copy custom properties only when the table property is enabled - Explicitly set properties win - Reserved keys (computed metrics, WAP and cherry-pick markers, engine and app identity) are never copied, guarded by a test over all `SnapshotSummary` constants - Values come from the target branch head at commit time - Appends don't inherit --- **AI Disclosure** - Model: Claude Opus 5.5 - Platform/Tool: Claude Code - Human Oversight: Fully reviewed by me - Prompt Summary: Make Iceberg replace commits (compaction, manifest rewrites) optionally keep the replaced snapshot's custom summary properties, excluding Iceberg-owned keys. -- 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]
