You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Write engine-name, engine-version, and iceberg-version into snapshot summaries #3365
Is your feature request related to a problem or challenge?
A snapshot committed by iceberg-rust records the operation and file metrics, and nothing that identifies the writer. On a table that several engines commit to, that snapshot cannot be distinguished from a client that omits writer identity.
The Iceberg spec defines snapshot summary keys for identifying the engine that wrote the snapshot:
Key
Description
engine-name
Name of the engine that created the snapshot
engine-version
Version of the engine that created the snapshot
iceberg-version
Version of the Iceberg library that created the snapshot. Not a spec field; Java and Go write it
Other implementations already write these, or part of them:
Iceberg Java and Iceberg Go copy an environment context into the snapshot summary. That includes iceberg-version, and an engine can also set engine-name and engine-version. apache/iceberg#9273, apache/iceberg-go#1680
On every snapshot iceberg-rust commits, set iceberg-version to Apache Iceberg Rust <crate version>. This replaces a caller value.
Do not default engine-name or engine-version. Those name the embedding engine, which this library does not know. A caller can still set them through set_snapshot_properties, and those values are left unchanged. This matches Java and Go, whose default environment context contains only iceberg-version.
Other caller properties are unchanged. Existing snapshots are left alone.
Activity