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


##########
format/spec.md:
##########
@@ -298,16 +298,143 @@ Iceberg tables must not use field ids greater than 
2147483447 (`Integer.MAX_VALU
 
 The set of metadata columns is:
 
-| Field id, name              | Type          | Description |
-|-----------------------------|---------------|-------------|
-| **`2147483646  _file`**     | `string`      | Path of the file in which a 
row is stored |
-| **`2147483645  _pos`**      | `long`        | Ordinal position of a row in 
the source data file |
-| **`2147483644  _deleted`**  | `boolean`     | Whether the row has been 
deleted |
-| **`2147483643  _spec_id`**  | `int`         | Spec ID used to track the file 
containing a row |
-| **`2147483642  _partition`** | `struct`     | Partition to which a row 
belongs |
-| **`2147483546  file_path`** | `string`      | Path of a file, used in 
position-based delete files |
-| **`2147483545  pos`**       | `long`        | Ordinal position of a row, 
used in position-based delete files |
-| **`2147483544  row`**       | `struct<...>` | Deleted row values, used in 
position-based delete files |
+| Field id, name                   | Type          | Description               
                                                                              |
+|----------------------------------|---------------|---------------------------------------------------------------------------------------------------------|
+| **`2147483646  _file`**          | `string`      | Path of the file in which 
a row is stored                                                               |
+| **`2147483645  _pos`**           | `long`        | Ordinal position of a row 
in the source data file, starting at `0`                                      |
+| **`2147483644  _deleted`**       | `boolean`     | Whether the row has been 
deleted                                                                        |
+| **`2147483643  _spec_id`**       | `int`         | Spec ID used to track the 
file containing a row                                                         |
+| **`2147483642  _partition`**     | `struct`      | Partition to which a row 
belongs                                                                        |
+| **`2147483546  file_path`**      | `string`      | Path of a file, used in 
position-based delete files                                                     
|
+| **`2147483545  pos`**            | `long`        | Ordinal position of a 
row, used in position-based delete files                                        
  |
+| **`2147483544  row`**            | `struct<...>` | Deleted row values, used 
in position-based delete files                                                 |
+| **`2147483543  _row_id`**        | `long`        | A unique long assigned 
when row-lineage is enabled see [Row Lineage](#row-lineage)                     
 |
+| **`2147483542  _last_update`**   | `long`        | The sequence number which 
last updated this row when row-lineage is enabled [Row Lineage](#row-lineage) |
+
+### Row Lineage
+
+In Specification V3, an Iceberg Table can declare that engines must track 
row-lineage of all newly created rows. This
+requirement is controlled by setting the field `row-lineage` to true in the 
table's metadata. When true, two additional 
+fields in data files will be available for all rows added to the table.
+
+* `_row_id` a unique long for every row. Computed via inheritance for rows in 
their original datafiles 
+and explicitly written when the row is moved to a new file.
+* `_last_update` the sequence number of the commit which last updated this 
row. The value is computed via inheritance for 
+rows in their original file or in files where the row was modified.
+
+Commits with `row-lineage` enabled are not allowed to include any [Equality 
Deletes](#equality-delete-files).
+
+Implementations writing to tables where `row-lineage` is enabled must populate 
several additional 
+fields in the metadata and propagate row information from existing and 
updated. 

Review Comment:
   Rather than "the metadata" it would be good to call out specifically which 
files have requirements.



-- 
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: issues-unsubscr...@iceberg.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: issues-unsubscr...@iceberg.apache.org
For additional commands, e-mail: issues-h...@iceberg.apache.org

Reply via email to