This is an automated email from the ASF dual-hosted git repository.
stevenzwu pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/iceberg.git
The following commit(s) were added to refs/heads/main by this push:
new 9961f9609a Spec: require monotonically increasing snapshot
timestamp-ms in v4 (#16294)
9961f9609a is described below
commit 9961f9609a77139fe77f02ac8fe109bc40d28353
Author: Steven Zhen Wu <[email protected]>
AuthorDate: Mon Oct 12 10:10:48 2026 -0700
Spec: require monotonically increasing snapshot timestamp-ms in v4 (#16294)
In format version 4 and above, a snapshot's `timestamp-ms` must be
strictly greater than the `timestamp-ms` of its parent snapshot on
the same branch. The requirement applies only to snapshots committed
while the table is at format version 4 or higher; root snapshots,
and snapshots that existed before a table was upgraded to v4, are
not constrained.
---
format/spec.md | 7 +++++++
1 file changed, 7 insertions(+)
diff --git a/format/spec.md b/format/spec.md
index 1510c0dd5a..508de131be 100644
--- a/format/spec.md
+++ b/format/spec.md
@@ -966,6 +966,8 @@ A snapshot consists of the following fields:
| | | _required_ | **`added-rows`** |
The upper bound of the number of rows with assigned row IDs, see [Row
Lineage](#row-lineage) |
| | | _optional_ | **`key-id`** | ID
of the encryption key that encrypts the manifest list key metadata |
+When committed while the table is at version 4 or higher, a snapshot's
`timestamp-ms` must be strictly greater than its parent snapshot's
`timestamp-ms` on the same branch. Snapshots with no parent, and snapshots that
were committed before a table was upgraded to v4 or higher, do not have this
requirement.
+
The snapshot summary's `operation` field is used by some operations, like
snapshot expiration, to skip processing certain snapshots. Possible `operation`
values are:
* `append` -- Only data files were added and no files were removed.
@@ -1918,6 +1920,11 @@ Reading v4 metadata:
* Relative paths must be resolved against the table location before use (see
[Path Resolution](#path-resolution))
* When `location` is omitted, the table location must be provided (see [Table
Location Specification](#table-location-specification))
+Snapshot timestamp changes:
+
+* When committed while the table is at version 4 or higher, a snapshot's
`timestamp-ms` must be strictly greater than its parent snapshot's
`timestamp-ms` on the same branch.
+* Snapshots with no parent and snapshots that existed before a table was
upgraded to v4 are not constrained.
+
Equality deletes are prohibited in v4.
* Writers must not add equality delete files to v4 tables; equality deletes
cannot be added as an entry to a v4 manifest