Skip to content

Write engine-name, engine-version, and iceberg-version into snapshot summaries #3365

Closed

Description

@RussellSpitzer

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:

Describe the solution you'd like

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.

Willingness to contribute

I can contribute to this feature independently

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions