rdblue commented on code in PR #16025:
URL: https://github.com/apache/iceberg/pull/16025#discussion_r4224443803


##########
format/spec.md:
##########
@@ -924,26 +1049,33 @@ Fields with stats tracked in `content_stats` change 
based on updates like schema
 
 A simple (and recommended) way for writers to adapt existing metadata for 
table changes is to read manifests with the implementation's current 
`content_stats` type and apply schema evolution rules, such as reading `int` as 
`long` for promoted fields.
 
-#### Sequence Number Inheritance
+#### Inheritance
+
+Values for `snapshot_id`, `sequence_number`, and `file_sequence_number` are 
inherited from manifest metadata when `null`. That is, if the field is `null` 
for an entry, then the entry must inherit its value from the manifest file's 
metadata, stored in the snapshot root file.
+
+##### Sequence Number Inheritance
 
 Manifests track the sequence number when a data or delete file was added to 
the table.
 
-When adding a new file, its data and file sequence numbers are set to `null` 
because the snapshot's sequence number is not assigned until the snapshot is 
successfully committed. When reading, sequence numbers are inherited by 
replacing `null` with the manifest's sequence number from the manifest list.
+The `sequence_number` field represents the data sequence number and must never 
change after a file is added to the dataset. The data sequence number 
represents a relative age of the file content and should be used for planning 
which delete files apply to a data file.
+The `file_sequence_number` field represents the sequence number of the 
snapshot that added the file and must also remain unchanged upon assigning at 
commit. The file sequence number can't be used for pruning delete files as the 
data within the file may have an older data sequence number.
+
+When adding a new file to a leaf manifest, its data and file sequence numbers 
are set to `null` because the snapshot's sequence number is not assigned until 
the snapshot is successfully committed. When reading, sequence numbers are 
inherited by replacing `null` with the manifest's sequence number from the 
snapshot root file.
 It is also possible to add a new file with data that logically belongs to an 
older sequence number. In that case, the data sequence number must be provided 
explicitly and not inherited. However, the file sequence number must be always 
assigned when the snapshot is successfully committed.
 
-When writing an existing file to a new manifest or marking an existing file as 
deleted, the data and file sequence numbers must be non-null and set to the 
original values that were either inherited or provided at the commit time.
+The data sequence number is inherited only if the entry status is ADDED, or 
MODIFIED by adding a column file. The file sequence number is inherited only if 
the entry status is ADDED. When writing an existing file to a new manifest or 
marking an existing file as deleted, the data and file sequence numbers must be 
non-null and set to the original values that were either inherited or provided 
at the commit time.
 
-Inheriting sequence numbers through the metadata tree allows writing a new 
manifest without a known sequence number, so that a manifest can be written 
once and reused in commit retries. To change a sequence number for a retry, 
only the manifest list must be rewritten.
+Inheriting sequence numbers through the metadata tree allows writing a new 
manifest without a known sequence number, so that a manifest can be written 
once and reused in commit retries. To change a sequence number for a retry, 
only the snapshot root file must be rewritten.
 
-When reading v1 manifests with no sequence number column, sequence numbers for 
all files must default to 0.
+Inheritance does not apply to v1, which does not have sequence numbers. When 
reading v1 manifests with no sequence number column, sequence numbers for all 
files must default to 0.

Review Comment:
   ```suggestion
   Inheritance does not apply to v1, which does not have inherited fields like 
sequence number. When reading v1 manifests with no sequence number column, 
sequence numbers for all files must default to 0.
   ```



-- 
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]

Reply via email to