nssalian commented on code in PR #18062:
URL: https://github.com/apache/iceberg/pull/18062#discussion_r4470720679


##########
site/docs/status.md:
##########


Review Comment:
   Rust should be N. In 0.11.0 the REST `update_namespace` still returns 
`FeatureUnsupported("Updating namespace not supported yet!")` 
   



##########
site/docs/status.md:
##########
@@ -27,188 +27,262 @@ capabilities.
 
 This section lists the libraries that implement the Apache Iceberg 
specification.
 
-- [Java](https://mvnrepository.com/artifact/org.apache.iceberg)
-- [PyIceberg](https://pypi.org/project/pyiceberg/)
-- [Rust](https://crates.io/crates/iceberg)
-- [Go](https://pkg.go.dev/github.com/apache/iceberg-go)
-- [C++](https://github.com/apache/iceberg-cpp/releases)
+| Library | Released Version |
+|---------|------------------|
+| [Java](https://mvnrepository.com/artifact/org.apache.iceberg) | 
[1.12.0](https://github.com/apache/iceberg/releases/tag/apache-iceberg-1.12.0) |
+| [PyIceberg](https://pypi.org/project/pyiceberg/) | 
[0.12.0](https://github.com/apache/iceberg-python/releases/tag/pyiceberg-0.12.0)
 |
+| [Rust](https://crates.io/crates/iceberg) | 
[0.11.0](https://github.com/apache/iceberg-rust/releases/tag/v0.11.0) |
+| [Go](https://pkg.go.dev/github.com/apache/iceberg-go) | 
[0.7.0](https://github.com/apache/iceberg-go/releases/tag/v0.7.0) |
+| [C++](https://github.com/apache/iceberg-cpp/releases) | 
[0.4.0](https://github.com/apache/iceberg-cpp/releases/tag/v0.4.0) |
 
 ## Data Types
 
-| Data Type      | Java | PyIceberg | Rust | Go | C++ |
-|----------------|------|-----------|------|----|-----|
-| boolean        | Y    | Y         | Y    | Y  | Y   |
-| int            | Y    | Y         | Y    | Y  | Y   |
-| long           | Y    | Y         | Y    | Y  | Y   |
-| float          | Y    | Y         | Y    | Y  | Y   |
-| double         | Y    | Y         | Y    | Y  | Y   |
-| decimal        | Y    | Y         | Y    | Y  | Y   |
-| date           | Y    | Y         | Y    | Y  | Y   |
-| time           | Y    | Y         | Y    | Y  | Y   |
-| timestamp      | Y    | Y         | Y    | Y  | Y   |
-| timestamptz    | Y    | Y         | Y    | Y  | Y   |
-| timestamp_ns   | Y    | Y         | Y    | Y  | N   |
-| timestamptz_ns | Y    | Y         | Y    | Y  | N   |
-| unknown        | Y    | Y         | N    | Y  | N   |
-| string         | Y    | Y         | Y    | Y  | Y   |
-| uuid           | Y    | Y         | Y    | Y  | N   |
-| fixed          | Y    | Y         | Y    | Y  | Y   |
-| binary         | Y    | Y         | Y    | Y  | Y   |
-| variant        | Y    | Y         | Y    | Y  | N   |
-| geometry       | Y    | N         | N    | N  | N   |
-| geography      | Y    | N         | N    | N  | N   |
-| list           | Y    | Y         | Y    | Y  | Y   |
-| map            | Y    | Y         | Y    | Y  | Y   |
-| struct         | Y    | Y         | Y    | Y  | Y   |
+`Y` means the library supports the type in schemas and can both read and write 
its values in at least one supported data file
+format. `N` means one or more of these capabilities is missing. For example, 
recognizing `geometry` in a schema without being
+able to read and write geometry values is `N`. Table-format write support is 
listed under Table Write Operations.
+
+### Table Spec
+
+=== "V1 - V2"
+    | Data Type   | Java | PyIceberg | Rust | Go | C++ |
+    |-------------|------|-----------|------|----|-----|
+    | boolean     | Y    | Y         | Y    | Y  | Y   |
+    | int         | Y    | Y         | Y    | Y  | Y   |
+    | long        | Y    | Y         | Y    | Y  | Y   |
+    | float       | Y    | Y         | Y    | Y  | Y   |
+    | double      | Y    | Y         | Y    | Y  | Y   |
+    | decimal     | Y    | Y         | Y    | Y  | Y   |
+    | date        | Y    | Y         | Y    | Y  | Y   |
+    | time        | Y    | Y         | Y    | Y  | Y   |
+    | timestamp   | Y    | Y         | Y    | Y  | Y   |
+    | timestamptz | Y    | Y         | Y    | Y  | Y   |
+    | string      | Y    | Y         | Y    | Y  | Y   |
+    | uuid        | Y    | Y         | Y    | Y  | Y   |
+    | fixed       | Y    | Y         | Y    | Y  | Y   |
+    | binary      | Y    | Y         | Y    | Y  | Y   |
+    | list        | Y    | Y         | Y    | Y  | Y   |
+    | map         | Y    | Y         | Y    | Y  | Y   |
+    | struct      | Y    | Y         | Y    | Y  | Y   |
+
+=== "V3"
+    | Data Type      | Java | PyIceberg | Rust | Go | C++ |
+    |----------------|------|-----------|------|----|-----|
+    | boolean        | Y    | Y         | Y    | Y  | Y   |
+    | int            | Y    | Y         | Y    | Y  | Y   |
+    | long           | Y    | Y         | Y    | Y  | Y   |
+    | float          | Y    | Y         | Y    | Y  | Y   |
+    | double         | Y    | Y         | Y    | Y  | Y   |
+    | decimal        | Y    | Y         | Y    | Y  | Y   |
+    | date           | Y    | Y         | Y    | Y  | Y   |
+    | time           | Y    | Y         | Y    | Y  | Y   |
+    | timestamp      | Y    | Y         | Y    | Y  | Y   |
+    | timestamptz    | Y    | Y         | Y    | Y  | Y   |
+    | timestamp_ns   | Y    | Y         | Y    | Y  | Y   |
+    | timestamptz_ns | Y    | Y         | Y    | Y  | Y   |
+    | unknown        | Y    | Y         | N    | Y  | Y   |
+    | string         | Y    | Y         | Y    | Y  | Y   |
+    | uuid           | Y    | Y         | Y    | Y  | Y   |
+    | fixed          | Y    | Y         | Y    | Y  | Y   |
+    | binary         | Y    | Y         | Y    | Y  | Y   |
+    | variant        | Y    | N         | N    | Y  | N   |
+    | geometry       | Y    | N         | N    | Y  | Y   |
+    | geography      | Y    | N         | N    | Y  | Y   |
+    | list           | Y    | Y         | Y    | Y  | Y   |
+    | map            | Y    | Y         | Y    | Y  | Y   |
+    | struct         | Y    | Y         | Y    | Y  | Y   |
+
+## Table Metadata and Features
+
+### Table Spec
+
+=== "V1 - V2"
+    | Capability           | Java | PyIceberg | Rust | Go | C++ |
+    |----------------------|------|-----------|------|----|-----|
+    | Read table metadata  | Y    | Y         | Y    | Y  | Y   |
+    | Write table metadata | Y    | Y         | Y    | Y  | Y   |
+
+=== "V3"
+    | Capability                      | Java | PyIceberg | Rust | Go | C++ |
+    |---------------------------------|------|-----------|------|----|-----|
+    | Read table metadata             | Y    | Y         | Y    | Y  | Y   |
+    | Write table metadata            | Y    | N         | Y    | Y  | Y   |
+    | Read initial column defaults    | Y    | Y         | Y    | Y  | Y   |
+    | Read multi-argument transforms  | N    | N         | N    | N  | N   |
+    | Write multi-argument transforms | N    | N         | N    | N  | N   |
+    | Read row lineage columns        | Y    | N         | Y    | Y  | Y   |
+    | Write row lineage               | Y    | N         | Y    | Y  | Y   |
+    | Read encrypted tables           | Y    | N         | Y    | N  | N   |
+    | Write encrypted tables          | Y    | N         | Y    | N  | N   |
 
 ## Data File Formats
 
 | Format  | Java | PyIceberg | Rust | Go | C++ |
 |---------|------|-----------|------|----|-----|
 | Parquet | Y    | Y         | Y    | Y  | Y   |
 | ORC     | Y    | N         | N    | N  | N   |
-| Puffin  | Y    | N         | N    | N  | N   |
+| Puffin  | Y    | N         | Y    | Y  | Y   |
 | Avro    | Y    | N         | N    | N  | Y   |
 
 ## File IO
 
 | Storage           | Java | PyIceberg | Rust | Go | C++  |
 |-------------------|------|-----------|------|----|------|
 | Local Filesystem  | Y    | Y         | Y    | Y  | Y    |
-| Hadoop Filesystem | Y    | Y         | Y    | Y  | N    |
-| S3 Compatible     | Y    | Y         | Y    | Y  | N    |
+| Hadoop Filesystem | Y    | Y         | Y    | N  | N    |

Review Comment:
   Rust should be N here too. In 0.11.0, `parse_scheme` in 
`crates/storage/opendal/src/resolving.rs:56-69` accepts memory, file, s3, gcs, 
oss, azdls and hf only, and there's no hdfs feature in any Cargo.toml.



##########
site/docs/status.md:
##########
@@ -27,188 +27,262 @@ capabilities.
 
 This section lists the libraries that implement the Apache Iceberg 
specification.
 
-- [Java](https://mvnrepository.com/artifact/org.apache.iceberg)
-- [PyIceberg](https://pypi.org/project/pyiceberg/)
-- [Rust](https://crates.io/crates/iceberg)
-- [Go](https://pkg.go.dev/github.com/apache/iceberg-go)
-- [C++](https://github.com/apache/iceberg-cpp/releases)
+| Library | Released Version |
+|---------|------------------|
+| [Java](https://mvnrepository.com/artifact/org.apache.iceberg) | 
[1.12.0](https://github.com/apache/iceberg/releases/tag/apache-iceberg-1.12.0) |
+| [PyIceberg](https://pypi.org/project/pyiceberg/) | 
[0.12.0](https://github.com/apache/iceberg-python/releases/tag/pyiceberg-0.12.0)
 |
+| [Rust](https://crates.io/crates/iceberg) | 
[0.11.0](https://github.com/apache/iceberg-rust/releases/tag/v0.11.0) |
+| [Go](https://pkg.go.dev/github.com/apache/iceberg-go) | 
[0.7.0](https://github.com/apache/iceberg-go/releases/tag/v0.7.0) |
+| [C++](https://github.com/apache/iceberg-cpp/releases) | 
[0.4.0](https://github.com/apache/iceberg-cpp/releases/tag/v0.4.0) |
 
 ## Data Types
 
-| Data Type      | Java | PyIceberg | Rust | Go | C++ |
-|----------------|------|-----------|------|----|-----|
-| boolean        | Y    | Y         | Y    | Y  | Y   |
-| int            | Y    | Y         | Y    | Y  | Y   |
-| long           | Y    | Y         | Y    | Y  | Y   |
-| float          | Y    | Y         | Y    | Y  | Y   |
-| double         | Y    | Y         | Y    | Y  | Y   |
-| decimal        | Y    | Y         | Y    | Y  | Y   |
-| date           | Y    | Y         | Y    | Y  | Y   |
-| time           | Y    | Y         | Y    | Y  | Y   |
-| timestamp      | Y    | Y         | Y    | Y  | Y   |
-| timestamptz    | Y    | Y         | Y    | Y  | Y   |
-| timestamp_ns   | Y    | Y         | Y    | Y  | N   |
-| timestamptz_ns | Y    | Y         | Y    | Y  | N   |
-| unknown        | Y    | Y         | N    | Y  | N   |
-| string         | Y    | Y         | Y    | Y  | Y   |
-| uuid           | Y    | Y         | Y    | Y  | N   |
-| fixed          | Y    | Y         | Y    | Y  | Y   |
-| binary         | Y    | Y         | Y    | Y  | Y   |
-| variant        | Y    | Y         | Y    | Y  | N   |
-| geometry       | Y    | N         | N    | N  | N   |
-| geography      | Y    | N         | N    | N  | N   |
-| list           | Y    | Y         | Y    | Y  | Y   |
-| map            | Y    | Y         | Y    | Y  | Y   |
-| struct         | Y    | Y         | Y    | Y  | Y   |
+`Y` means the library supports the type in schemas and can both read and write 
its values in at least one supported data file
+format. `N` means one or more of these capabilities is missing. For example, 
recognizing `geometry` in a schema without being
+able to read and write geometry values is `N`. Table-format write support is 
listed under Table Write Operations.
+
+### Table Spec
+
+=== "V1 - V2"
+    | Data Type   | Java | PyIceberg | Rust | Go | C++ |
+    |-------------|------|-----------|------|----|-----|
+    | boolean     | Y    | Y         | Y    | Y  | Y   |
+    | int         | Y    | Y         | Y    | Y  | Y   |
+    | long        | Y    | Y         | Y    | Y  | Y   |
+    | float       | Y    | Y         | Y    | Y  | Y   |
+    | double      | Y    | Y         | Y    | Y  | Y   |
+    | decimal     | Y    | Y         | Y    | Y  | Y   |
+    | date        | Y    | Y         | Y    | Y  | Y   |
+    | time        | Y    | Y         | Y    | Y  | Y   |
+    | timestamp   | Y    | Y         | Y    | Y  | Y   |
+    | timestamptz | Y    | Y         | Y    | Y  | Y   |
+    | string      | Y    | Y         | Y    | Y  | Y   |
+    | uuid        | Y    | Y         | Y    | Y  | Y   |
+    | fixed       | Y    | Y         | Y    | Y  | Y   |
+    | binary      | Y    | Y         | Y    | Y  | Y   |
+    | list        | Y    | Y         | Y    | Y  | Y   |
+    | map         | Y    | Y         | Y    | Y  | Y   |
+    | struct      | Y    | Y         | Y    | Y  | Y   |
+
+=== "V3"
+    | Data Type      | Java | PyIceberg | Rust | Go | C++ |
+    |----------------|------|-----------|------|----|-----|
+    | boolean        | Y    | Y         | Y    | Y  | Y   |
+    | int            | Y    | Y         | Y    | Y  | Y   |
+    | long           | Y    | Y         | Y    | Y  | Y   |
+    | float          | Y    | Y         | Y    | Y  | Y   |
+    | double         | Y    | Y         | Y    | Y  | Y   |
+    | decimal        | Y    | Y         | Y    | Y  | Y   |
+    | date           | Y    | Y         | Y    | Y  | Y   |
+    | time           | Y    | Y         | Y    | Y  | Y   |
+    | timestamp      | Y    | Y         | Y    | Y  | Y   |
+    | timestamptz    | Y    | Y         | Y    | Y  | Y   |
+    | timestamp_ns   | Y    | Y         | Y    | Y  | Y   |
+    | timestamptz_ns | Y    | Y         | Y    | Y  | Y   |
+    | unknown        | Y    | Y         | N    | Y  | Y   |
+    | string         | Y    | Y         | Y    | Y  | Y   |
+    | uuid           | Y    | Y         | Y    | Y  | Y   |
+    | fixed          | Y    | Y         | Y    | Y  | Y   |
+    | binary         | Y    | Y         | Y    | Y  | Y   |
+    | variant        | Y    | N         | N    | Y  | N   |
+    | geometry       | Y    | N         | N    | Y  | Y   |
+    | geography      | Y    | N         | N    | Y  | Y   |
+    | list           | Y    | Y         | Y    | Y  | Y   |
+    | map            | Y    | Y         | Y    | Y  | Y   |
+    | struct         | Y    | Y         | Y    | Y  | Y   |
+
+## Table Metadata and Features
+
+### Table Spec
+
+=== "V1 - V2"
+    | Capability           | Java | PyIceberg | Rust | Go | C++ |
+    |----------------------|------|-----------|------|----|-----|
+    | Read table metadata  | Y    | Y         | Y    | Y  | Y   |
+    | Write table metadata | Y    | Y         | Y    | Y  | Y   |
+
+=== "V3"
+    | Capability                      | Java | PyIceberg | Rust | Go | C++ |
+    |---------------------------------|------|-----------|------|----|-----|
+    | Read table metadata             | Y    | Y         | Y    | Y  | Y   |
+    | Write table metadata            | Y    | N         | Y    | Y  | Y   |
+    | Read initial column defaults    | Y    | Y         | Y    | Y  | Y   |
+    | Read multi-argument transforms  | N    | N         | N    | N  | N   |
+    | Write multi-argument transforms | N    | N         | N    | N  | N   |
+    | Read row lineage columns        | Y    | N         | Y    | Y  | Y   |
+    | Write row lineage               | Y    | N         | Y    | Y  | Y   |
+    | Read encrypted tables           | Y    | N         | Y    | N  | N   |
+    | Write encrypted tables          | Y    | N         | Y    | N  | N   |
 
 ## Data File Formats
 
 | Format  | Java | PyIceberg | Rust | Go | C++ |
 |---------|------|-----------|------|----|-----|
 | Parquet | Y    | Y         | Y    | Y  | Y   |
 | ORC     | Y    | N         | N    | N  | N   |
-| Puffin  | Y    | N         | N    | N  | N   |
+| Puffin  | Y    | N         | Y    | Y  | Y   |
 | Avro    | Y    | N         | N    | N  | Y   |
 
 ## File IO
 
 | Storage           | Java | PyIceberg | Rust | Go | C++  |
 |-------------------|------|-----------|------|----|------|
 | Local Filesystem  | Y    | Y         | Y    | Y  | Y    |
-| Hadoop Filesystem | Y    | Y         | Y    | Y  | N    |
-| S3 Compatible     | Y    | Y         | Y    | Y  | N    |
+| Hadoop Filesystem | Y    | Y         | Y    | N  | N    |
+| S3 Compatible     | Y    | Y         | Y    | Y  | Y    |
 | GCS Compatible    | Y    | Y         | Y    | Y  | N    |
 | ADLS Compatible   | Y    | Y         | Y    | Y  | N    |
 
 ## Table Maintenance Operations
 
-### Table Spec V1
-
-| Operation                   | Java | PyIceberg | Rust | Go | C++ |
-|-----------------------------|------|-----------|------|----|-----|
-| Update schema               | Y    | Y         | Y    | Y  | Y   |
-| Update partition spec       | Y    | Y         | Y    | Y  | Y   |
-| Update table properties     | Y    | Y         | Y    | Y  | Y   |
-| Replace sort order          | Y    | N         | Y    | Y  | Y   |
-| Update table location       | Y    | Y         | Y    | Y  | Y   |
-| Update statistics           | Y    | Y         | Y    | Y  | Y   |
-| Update partition statistics | Y    | N         | N    | N  | N   |
-| Expire snapshots            | Y    | N         | N    | Y  | N   |
-| Manage snapshots            | Y    | N         | N    | Y  | N   |
-
-### Table Spec V2
-
-| Operation                   | Java | PyIceberg | Rust | Go | C++ |
-|-----------------------------|------|-----------|------|----|-----|
-| Update schema               | Y    | Y         | N    | Y  | Y   |
-| Update partition spec       | Y    | Y         | N    | Y  | Y   |
-| Update table properties     | Y    | Y         | Y    | Y  | Y   |
-| Replace sort order          | Y    | N         | Y    | Y  | Y   |
-| Update table location       | Y    | Y         | Y    | Y  | Y   |
-| Update statistics           | Y    | Y         | Y    | Y  | Y   |
-| Update partition statistics | Y    | N         | N    | N  | N   |
-| Expire snapshots            | Y    | N         | N    | Y  | N   |
-| Manage snapshots            | Y    | N         | N    | Y  | N   |
+### Table Spec
+
+=== "V1 - V2"
+    | Operation                   | Java | PyIceberg | Rust | Go | C++ |
+    |-----------------------------|------|-----------|------|----|-----|
+    | Update schema               | Y    | Y         | Y    | Y  | Y   |
+    | Update partition spec       | Y    | Y         | N    | Y  | Y   |
+    | Update table properties     | Y    | Y         | Y    | Y  | Y   |
+    | Replace sort order          | Y    | Y         | Y    | Y  | Y   |
+    | Update table location       | Y    | N         | Y    | Y  | Y   |
+    | Update statistics           | Y    | Y         | Y    | Y  | Y   |
+    | Update partition statistics | Y    | N         | N    | Y  | Y   |
+    | Expire snapshots            | Y    | Y         | Y    | Y  | Y   |
+    | Manage snapshots            | Y    | Y         | N    | Y  | Y   |
+
+=== "V3"

Review Comment:
   nit: this tab is identical to "V1 - V2" above, so by the merge rule it could 
be a single "V1 - V3" tab like REST.



##########
site/docs/status.md:
##########
@@ -27,188 +27,262 @@ capabilities.
 
 This section lists the libraries that implement the Apache Iceberg 
specification.
 
-- [Java](https://mvnrepository.com/artifact/org.apache.iceberg)
-- [PyIceberg](https://pypi.org/project/pyiceberg/)
-- [Rust](https://crates.io/crates/iceberg)
-- [Go](https://pkg.go.dev/github.com/apache/iceberg-go)
-- [C++](https://github.com/apache/iceberg-cpp/releases)
+| Library | Released Version |
+|---------|------------------|
+| [Java](https://mvnrepository.com/artifact/org.apache.iceberg) | 
[1.12.0](https://github.com/apache/iceberg/releases/tag/apache-iceberg-1.12.0) |
+| [PyIceberg](https://pypi.org/project/pyiceberg/) | 
[0.12.0](https://github.com/apache/iceberg-python/releases/tag/pyiceberg-0.12.0)
 |
+| [Rust](https://crates.io/crates/iceberg) | 
[0.11.0](https://github.com/apache/iceberg-rust/releases/tag/v0.11.0) |
+| [Go](https://pkg.go.dev/github.com/apache/iceberg-go) | 
[0.7.0](https://github.com/apache/iceberg-go/releases/tag/v0.7.0) |
+| [C++](https://github.com/apache/iceberg-cpp/releases) | 
[0.4.0](https://github.com/apache/iceberg-cpp/releases/tag/v0.4.0) |
 
 ## Data Types
 
-| Data Type      | Java | PyIceberg | Rust | Go | C++ |
-|----------------|------|-----------|------|----|-----|
-| boolean        | Y    | Y         | Y    | Y  | Y   |
-| int            | Y    | Y         | Y    | Y  | Y   |
-| long           | Y    | Y         | Y    | Y  | Y   |
-| float          | Y    | Y         | Y    | Y  | Y   |
-| double         | Y    | Y         | Y    | Y  | Y   |
-| decimal        | Y    | Y         | Y    | Y  | Y   |
-| date           | Y    | Y         | Y    | Y  | Y   |
-| time           | Y    | Y         | Y    | Y  | Y   |
-| timestamp      | Y    | Y         | Y    | Y  | Y   |
-| timestamptz    | Y    | Y         | Y    | Y  | Y   |
-| timestamp_ns   | Y    | Y         | Y    | Y  | N   |
-| timestamptz_ns | Y    | Y         | Y    | Y  | N   |
-| unknown        | Y    | Y         | N    | Y  | N   |
-| string         | Y    | Y         | Y    | Y  | Y   |
-| uuid           | Y    | Y         | Y    | Y  | N   |
-| fixed          | Y    | Y         | Y    | Y  | Y   |
-| binary         | Y    | Y         | Y    | Y  | Y   |
-| variant        | Y    | Y         | Y    | Y  | N   |
-| geometry       | Y    | N         | N    | N  | N   |
-| geography      | Y    | N         | N    | N  | N   |
-| list           | Y    | Y         | Y    | Y  | Y   |
-| map            | Y    | Y         | Y    | Y  | Y   |
-| struct         | Y    | Y         | Y    | Y  | Y   |
+`Y` means the library supports the type in schemas and can both read and write 
its values in at least one supported data file
+format. `N` means one or more of these capabilities is missing. For example, 
recognizing `geometry` in a schema without being
+able to read and write geometry values is `N`. Table-format write support is 
listed under Table Write Operations.
+
+### Table Spec
+
+=== "V1 - V2"
+    | Data Type   | Java | PyIceberg | Rust | Go | C++ |
+    |-------------|------|-----------|------|----|-----|
+    | boolean     | Y    | Y         | Y    | Y  | Y   |
+    | int         | Y    | Y         | Y    | Y  | Y   |
+    | long        | Y    | Y         | Y    | Y  | Y   |
+    | float       | Y    | Y         | Y    | Y  | Y   |
+    | double      | Y    | Y         | Y    | Y  | Y   |
+    | decimal     | Y    | Y         | Y    | Y  | Y   |
+    | date        | Y    | Y         | Y    | Y  | Y   |
+    | time        | Y    | Y         | Y    | Y  | Y   |
+    | timestamp   | Y    | Y         | Y    | Y  | Y   |
+    | timestamptz | Y    | Y         | Y    | Y  | Y   |
+    | string      | Y    | Y         | Y    | Y  | Y   |
+    | uuid        | Y    | Y         | Y    | Y  | Y   |
+    | fixed       | Y    | Y         | Y    | Y  | Y   |
+    | binary      | Y    | Y         | Y    | Y  | Y   |
+    | list        | Y    | Y         | Y    | Y  | Y   |
+    | map         | Y    | Y         | Y    | Y  | Y   |
+    | struct      | Y    | Y         | Y    | Y  | Y   |
+
+=== "V3"
+    | Data Type      | Java | PyIceberg | Rust | Go | C++ |
+    |----------------|------|-----------|------|----|-----|
+    | boolean        | Y    | Y         | Y    | Y  | Y   |
+    | int            | Y    | Y         | Y    | Y  | Y   |
+    | long           | Y    | Y         | Y    | Y  | Y   |
+    | float          | Y    | Y         | Y    | Y  | Y   |
+    | double         | Y    | Y         | Y    | Y  | Y   |
+    | decimal        | Y    | Y         | Y    | Y  | Y   |
+    | date           | Y    | Y         | Y    | Y  | Y   |
+    | time           | Y    | Y         | Y    | Y  | Y   |
+    | timestamp      | Y    | Y         | Y    | Y  | Y   |
+    | timestamptz    | Y    | Y         | Y    | Y  | Y   |
+    | timestamp_ns   | Y    | Y         | Y    | Y  | Y   |
+    | timestamptz_ns | Y    | Y         | Y    | Y  | Y   |
+    | unknown        | Y    | Y         | N    | Y  | Y   |
+    | string         | Y    | Y         | Y    | Y  | Y   |
+    | uuid           | Y    | Y         | Y    | Y  | Y   |
+    | fixed          | Y    | Y         | Y    | Y  | Y   |
+    | binary         | Y    | Y         | Y    | Y  | Y   |
+    | variant        | Y    | N         | N    | Y  | N   |
+    | geometry       | Y    | N         | N    | Y  | Y   |
+    | geography      | Y    | N         | N    | Y  | Y   |
+    | list           | Y    | Y         | Y    | Y  | Y   |
+    | map            | Y    | Y         | Y    | Y  | Y   |
+    | struct         | Y    | Y         | Y    | Y  | Y   |
+
+## Table Metadata and Features
+
+### Table Spec
+
+=== "V1 - V2"
+    | Capability           | Java | PyIceberg | Rust | Go | C++ |
+    |----------------------|------|-----------|------|----|-----|
+    | Read table metadata  | Y    | Y         | Y    | Y  | Y   |
+    | Write table metadata | Y    | Y         | Y    | Y  | Y   |
+
+=== "V3"
+    | Capability                      | Java | PyIceberg | Rust | Go | C++ |
+    |---------------------------------|------|-----------|------|----|-----|
+    | Read table metadata             | Y    | Y         | Y    | Y  | Y   |
+    | Write table metadata            | Y    | N         | Y    | Y  | Y   |
+    | Read initial column defaults    | Y    | Y         | Y    | Y  | Y   |
+    | Read multi-argument transforms  | N    | N         | N    | N  | N   |
+    | Write multi-argument transforms | N    | N         | N    | N  | N   |
+    | Read row lineage columns        | Y    | N         | Y    | Y  | Y   |
+    | Write row lineage               | Y    | N         | Y    | Y  | Y   |
+    | Read encrypted tables           | Y    | N         | Y    | N  | N   |
+    | Write encrypted tables          | Y    | N         | Y    | N  | N   |
 
 ## Data File Formats
 
 | Format  | Java | PyIceberg | Rust | Go | C++ |
 |---------|------|-----------|------|----|-----|
 | Parquet | Y    | Y         | Y    | Y  | Y   |
 | ORC     | Y    | N         | N    | N  | N   |
-| Puffin  | Y    | N         | N    | N  | N   |
+| Puffin  | Y    | N         | Y    | Y  | Y   |
 | Avro    | Y    | N         | N    | N  | Y   |
 
 ## File IO
 
 | Storage           | Java | PyIceberg | Rust | Go | C++  |
 |-------------------|------|-----------|------|----|------|
 | Local Filesystem  | Y    | Y         | Y    | Y  | Y    |
-| Hadoop Filesystem | Y    | Y         | Y    | Y  | N    |
-| S3 Compatible     | Y    | Y         | Y    | Y  | N    |
+| Hadoop Filesystem | Y    | Y         | Y    | N  | N    |
+| S3 Compatible     | Y    | Y         | Y    | Y  | Y    |
 | GCS Compatible    | Y    | Y         | Y    | Y  | N    |
 | ADLS Compatible   | Y    | Y         | Y    | Y  | N    |
 
 ## Table Maintenance Operations
 
-### Table Spec V1
-
-| Operation                   | Java | PyIceberg | Rust | Go | C++ |
-|-----------------------------|------|-----------|------|----|-----|
-| Update schema               | Y    | Y         | Y    | Y  | Y   |
-| Update partition spec       | Y    | Y         | Y    | Y  | Y   |
-| Update table properties     | Y    | Y         | Y    | Y  | Y   |
-| Replace sort order          | Y    | N         | Y    | Y  | Y   |
-| Update table location       | Y    | Y         | Y    | Y  | Y   |
-| Update statistics           | Y    | Y         | Y    | Y  | Y   |
-| Update partition statistics | Y    | N         | N    | N  | N   |
-| Expire snapshots            | Y    | N         | N    | Y  | N   |
-| Manage snapshots            | Y    | N         | N    | Y  | N   |
-
-### Table Spec V2
-
-| Operation                   | Java | PyIceberg | Rust | Go | C++ |
-|-----------------------------|------|-----------|------|----|-----|
-| Update schema               | Y    | Y         | N    | Y  | Y   |
-| Update partition spec       | Y    | Y         | N    | Y  | Y   |
-| Update table properties     | Y    | Y         | Y    | Y  | Y   |
-| Replace sort order          | Y    | N         | Y    | Y  | Y   |
-| Update table location       | Y    | Y         | Y    | Y  | Y   |
-| Update statistics           | Y    | Y         | Y    | Y  | Y   |
-| Update partition statistics | Y    | N         | N    | N  | N   |
-| Expire snapshots            | Y    | N         | N    | Y  | N   |
-| Manage snapshots            | Y    | N         | N    | Y  | N   |
+### Table Spec
+
+=== "V1 - V2"
+    | Operation                   | Java | PyIceberg | Rust | Go | C++ |
+    |-----------------------------|------|-----------|------|----|-----|
+    | Update schema               | Y    | Y         | Y    | Y  | Y   |
+    | Update partition spec       | Y    | Y         | N    | Y  | Y   |
+    | Update table properties     | Y    | Y         | Y    | Y  | Y   |
+    | Replace sort order          | Y    | Y         | Y    | Y  | Y   |
+    | Update table location       | Y    | N         | Y    | Y  | Y   |
+    | Update statistics           | Y    | Y         | Y    | Y  | Y   |
+    | Update partition statistics | Y    | N         | N    | Y  | Y   |
+    | Expire snapshots            | Y    | Y         | Y    | Y  | Y   |
+    | Manage snapshots            | Y    | Y         | N    | Y  | Y   |
+
+=== "V3"
+    | Operation                   | Java | PyIceberg | Rust | Go | C++ |
+    |-----------------------------|------|-----------|------|----|-----|
+    | Update schema               | Y    | Y         | Y    | Y  | Y   |
+    | Update partition spec       | Y    | Y         | N    | Y  | Y   |
+    | Update table properties     | Y    | Y         | Y    | Y  | Y   |
+    | Replace sort order          | Y    | Y         | Y    | Y  | Y   |
+    | Update table location       | Y    | N         | Y    | Y  | Y   |
+    | Update statistics           | Y    | Y         | Y    | Y  | Y   |
+    | Update partition statistics | Y    | N         | N    | Y  | Y   |
+    | Expire snapshots            | Y    | Y         | Y    | Y  | Y   |
+    | Manage snapshots            | Y    | Y         | N    | Y  | Y   |
 
 ## Table Update Operations
 
-### Table Spec V1
-
-| Operation         | Java | PyIceberg | Rust | Go | C++ |
-|-------------------|------|-----------|------|----|-----|
-| Append data files | Y    | Y         | Y    | Y  | Y   |
-| Rewrite files     | Y    | Y         | N    | Y  | N   |
-| Rewrite manifests | Y    | Y         | N    | Y  | N   |
-| Overwrite files   | Y    | Y         | N    | Y  | N   |
-| Delete files      | Y    | Y         | N    | Y  | N   |
-
-### Table Spec V2
-
-| Operation         | Java | PyIceberg | Rust | Go | C++ |
-|-------------------|------|-----------|------|----|-----|
-| Append data files | Y    | Y         | Y    | Y  | Y   |
-| Rewrite files     | Y    | Y         | N    | Y  | N   |
-| Rewrite manifests | Y    | Y         | N    | Y  | N   |
-| Overwrite files   | Y    | Y         | N    | Y  | N   |
-| Row delta         | Y    | N         | N    | Y  | N   |
-| Delete files      | Y    | Y         | N    | Y  | N   |
+### Table Spec
+
+=== "V1"
+    | Operation         | Java | PyIceberg | Rust | Go | C++ |
+    |-------------------|------|-----------|------|----|-----|
+    | Append data files | Y    | Y         | Y    | Y  | Y   |
+    | Rewrite files     | Y    | Y         | N    | Y  | Y   |
+    | Rewrite manifests | Y    | Y         | N    | Y  | N   |
+    | Overwrite files   | Y    | Y         | N    | Y  | Y   |
+    | Delete files      | Y    | Y         | N    | Y  | Y   |
+
+=== "V2"
+    | Operation         | Java | PyIceberg | Rust | Go | C++ |
+    |-------------------|------|-----------|------|----|-----|
+    | Append data files | Y    | Y         | Y    | Y  | Y   |
+    | Rewrite files     | Y    | Y         | N    | Y  | Y   |
+    | Rewrite manifests | Y    | Y         | N    | Y  | N   |
+    | Overwrite files   | Y    | Y         | N    | Y  | Y   |
+    | Delete files      | Y    | Y         | N    | Y  | Y   |
+    | Row delta         | Y    | N         | N    | Y  | Y   |
+
+=== "V3"
+    | Operation         | Java | PyIceberg | Rust | Go | C++ |
+    |-------------------|------|-----------|------|----|-----|
+    | Append data files | Y    | N         | Y    | Y  | Y   |
+    | Rewrite files     | Y    | N         | N    | Y  | Y   |
+    | Rewrite manifests | Y    | N         | N    | Y  | N   |
+    | Overwrite files   | Y    | N         | N    | Y  | Y   |
+    | Delete files      | Y    | N         | N    | Y  | Y   |
+    | Row delta         | Y    | N         | N    | Y  | Y   |
 
 ## Table Read Operations
 
-### Table Spec V1
-
-| Operation                   | Java | PyIceberg | Rust | Go | C++ |
-|-----------------------------|------|-----------|------|----|-----|
-| Plan with data file         | Y    | Y         | Y    | Y  | Y   |
-| Plan with puffin statistics | Y    | Y         | Y    | Y  | N   |
-| Read data file              | Y    | N         | Y    | Y  | Y   |
-
-### Table Spec V2
-
-| Operation                   | Java | PyIceberg | Rust | Go | C++ |
-|-----------------------------|------|-----------|------|----|-----|
-| Plan with data file         | Y    | Y         | Y    | Y  | Y   |
-| Plan with position deletes  | Y    | Y         | Y    | Y  | Y   |
-| Plan with equality deletes  | Y    | Y         | Y    | Y  | Y   |
-| Plan with puffin statistics | Y    | N         | N    | N  | N   |
-| Read data file              | Y    | Y         | Y    | Y  | Y   |
-| Read with position deletes  | Y    | Y         | Y    | Y  | N   |
-| Read with equality deletes  | Y    | N         | Y    | Y  | N   |
+### Table Spec
+
+=== "V1"
+    | Operation                   | Java | PyIceberg | Rust | Go | C++ |
+    |-----------------------------|------|-----------|------|----|-----|
+    | Plan with data file         | Y    | Y         | Y    | Y  | Y   |
+    | Plan with puffin statistics | Y    | N         | N    | N  | N   |
+    | Read data file              | Y    | Y         | Y    | Y  | Y   |
+
+=== "V2"
+    | Operation                   | Java | PyIceberg | Rust | Go | C++ |
+    |-----------------------------|------|-----------|------|----|-----|
+    | Plan with data file         | Y    | Y         | Y    | Y  | Y   |
+    | Plan with position deletes  | Y    | Y         | Y    | Y  | Y   |
+    | Plan with equality deletes  | Y    | N         | Y    | Y  | Y   |
+    | Plan with puffin statistics | Y    | N         | N    | N  | N   |
+    | Read data file              | Y    | Y         | Y    | Y  | Y   |
+    | Read with position deletes  | Y    | Y         | Y    | Y  | Y   |
+    | Read with equality deletes  | Y    | N         | Y    | Y  | Y   |
+
+=== "V3"
+    | Operation                   | Java | PyIceberg | Rust | Go | C++ |
+    |-----------------------------|------|-----------|------|----|-----|
+    | Plan with data file         | Y    | Y         | Y    | Y  | Y   |
+    | Plan with position deletes  | Y    | Y         | Y    | Y  | Y   |
+    | Plan with equality deletes  | Y    | N         | Y    | Y  | Y   |
+    | Plan with deletion vectors  | Y    | Y         | Y    | Y  | Y   |
+    | Plan with puffin statistics | Y    | N         | N    | N  | N   |
+    | Read data file              | Y    | Y         | Y    | Y  | Y   |
+    | Read with position deletes  | Y    | Y         | Y    | Y  | Y   |
+    | Read with equality deletes  | Y    | N         | Y    | Y  | Y   |
+    | Read with deletion vectors  | Y    | Y         | Y    | Y  | Y   |
 
 ## Table Write Operations
 
-### Table Spec V1
+### Table Spec
+
+=== "V1"
+    | Operation   | Java | PyIceberg | Rust | Go | C++ |
+    |-------------|------|-----------|------|----|-----|
+    | Append data | Y    | Y         | Y    | Y  | Y   |
 
-| Operation   | Java | PyIceberg | Rust | Go | C++ |
-|-------------|------|-----------|------|----|-----|
-| Append data | Y    | Y         | Y    | Y  | N   |
+=== "V2"
+    | Operation              | Java | PyIceberg | Rust | Go | C++ |
+    |------------------------|------|-----------|------|----|-----|
+    | Append data            | Y    | Y         | Y    | Y  | Y   |
+    | Write position deletes | Y    | N         | N    | Y  | Y   |
+    | Write equality deletes | Y    | N         | Y    | Y  | Y   |

Review Comment:
   Rust can write equality-delete files, but 0.11.0 has no transaction that 
commits them, so I think this should be N in both the V2 and V3 tabs.



##########
site/docs/status.md:
##########
@@ -27,188 +27,262 @@ capabilities.
 
 This section lists the libraries that implement the Apache Iceberg 
specification.
 
-- [Java](https://mvnrepository.com/artifact/org.apache.iceberg)
-- [PyIceberg](https://pypi.org/project/pyiceberg/)
-- [Rust](https://crates.io/crates/iceberg)
-- [Go](https://pkg.go.dev/github.com/apache/iceberg-go)
-- [C++](https://github.com/apache/iceberg-cpp/releases)
+| Library | Released Version |
+|---------|------------------|
+| [Java](https://mvnrepository.com/artifact/org.apache.iceberg) | 
[1.12.0](https://github.com/apache/iceberg/releases/tag/apache-iceberg-1.12.0) |
+| [PyIceberg](https://pypi.org/project/pyiceberg/) | 
[0.12.0](https://github.com/apache/iceberg-python/releases/tag/pyiceberg-0.12.0)
 |
+| [Rust](https://crates.io/crates/iceberg) | 
[0.11.0](https://github.com/apache/iceberg-rust/releases/tag/v0.11.0) |
+| [Go](https://pkg.go.dev/github.com/apache/iceberg-go) | 
[0.7.0](https://github.com/apache/iceberg-go/releases/tag/v0.7.0) |
+| [C++](https://github.com/apache/iceberg-cpp/releases) | 
[0.4.0](https://github.com/apache/iceberg-cpp/releases/tag/v0.4.0) |
 
 ## Data Types
 
-| Data Type      | Java | PyIceberg | Rust | Go | C++ |
-|----------------|------|-----------|------|----|-----|
-| boolean        | Y    | Y         | Y    | Y  | Y   |
-| int            | Y    | Y         | Y    | Y  | Y   |
-| long           | Y    | Y         | Y    | Y  | Y   |
-| float          | Y    | Y         | Y    | Y  | Y   |
-| double         | Y    | Y         | Y    | Y  | Y   |
-| decimal        | Y    | Y         | Y    | Y  | Y   |
-| date           | Y    | Y         | Y    | Y  | Y   |
-| time           | Y    | Y         | Y    | Y  | Y   |
-| timestamp      | Y    | Y         | Y    | Y  | Y   |
-| timestamptz    | Y    | Y         | Y    | Y  | Y   |
-| timestamp_ns   | Y    | Y         | Y    | Y  | N   |
-| timestamptz_ns | Y    | Y         | Y    | Y  | N   |
-| unknown        | Y    | Y         | N    | Y  | N   |
-| string         | Y    | Y         | Y    | Y  | Y   |
-| uuid           | Y    | Y         | Y    | Y  | N   |
-| fixed          | Y    | Y         | Y    | Y  | Y   |
-| binary         | Y    | Y         | Y    | Y  | Y   |
-| variant        | Y    | Y         | Y    | Y  | N   |
-| geometry       | Y    | N         | N    | N  | N   |
-| geography      | Y    | N         | N    | N  | N   |
-| list           | Y    | Y         | Y    | Y  | Y   |
-| map            | Y    | Y         | Y    | Y  | Y   |
-| struct         | Y    | Y         | Y    | Y  | Y   |
+`Y` means the library supports the type in schemas and can both read and write 
its values in at least one supported data file
+format. `N` means one or more of these capabilities is missing. For example, 
recognizing `geometry` in a schema without being
+able to read and write geometry values is `N`. Table-format write support is 
listed under Table Write Operations.
+
+### Table Spec
+
+=== "V1 - V2"
+    | Data Type   | Java | PyIceberg | Rust | Go | C++ |
+    |-------------|------|-----------|------|----|-----|
+    | boolean     | Y    | Y         | Y    | Y  | Y   |
+    | int         | Y    | Y         | Y    | Y  | Y   |
+    | long        | Y    | Y         | Y    | Y  | Y   |
+    | float       | Y    | Y         | Y    | Y  | Y   |
+    | double      | Y    | Y         | Y    | Y  | Y   |
+    | decimal     | Y    | Y         | Y    | Y  | Y   |
+    | date        | Y    | Y         | Y    | Y  | Y   |
+    | time        | Y    | Y         | Y    | Y  | Y   |
+    | timestamp   | Y    | Y         | Y    | Y  | Y   |
+    | timestamptz | Y    | Y         | Y    | Y  | Y   |
+    | string      | Y    | Y         | Y    | Y  | Y   |
+    | uuid        | Y    | Y         | Y    | Y  | Y   |
+    | fixed       | Y    | Y         | Y    | Y  | Y   |
+    | binary      | Y    | Y         | Y    | Y  | Y   |
+    | list        | Y    | Y         | Y    | Y  | Y   |
+    | map         | Y    | Y         | Y    | Y  | Y   |
+    | struct      | Y    | Y         | Y    | Y  | Y   |
+
+=== "V3"
+    | Data Type      | Java | PyIceberg | Rust | Go | C++ |
+    |----------------|------|-----------|------|----|-----|
+    | boolean        | Y    | Y         | Y    | Y  | Y   |
+    | int            | Y    | Y         | Y    | Y  | Y   |
+    | long           | Y    | Y         | Y    | Y  | Y   |
+    | float          | Y    | Y         | Y    | Y  | Y   |
+    | double         | Y    | Y         | Y    | Y  | Y   |
+    | decimal        | Y    | Y         | Y    | Y  | Y   |
+    | date           | Y    | Y         | Y    | Y  | Y   |
+    | time           | Y    | Y         | Y    | Y  | Y   |
+    | timestamp      | Y    | Y         | Y    | Y  | Y   |
+    | timestamptz    | Y    | Y         | Y    | Y  | Y   |
+    | timestamp_ns   | Y    | Y         | Y    | Y  | Y   |
+    | timestamptz_ns | Y    | Y         | Y    | Y  | Y   |
+    | unknown        | Y    | Y         | N    | Y  | Y   |
+    | string         | Y    | Y         | Y    | Y  | Y   |
+    | uuid           | Y    | Y         | Y    | Y  | Y   |
+    | fixed          | Y    | Y         | Y    | Y  | Y   |
+    | binary         | Y    | Y         | Y    | Y  | Y   |
+    | variant        | Y    | N         | N    | Y  | N   |
+    | geometry       | Y    | N         | N    | Y  | Y   |
+    | geography      | Y    | N         | N    | Y  | Y   |
+    | list           | Y    | Y         | Y    | Y  | Y   |
+    | map            | Y    | Y         | Y    | Y  | Y   |
+    | struct         | Y    | Y         | Y    | Y  | Y   |
+
+## Table Metadata and Features
+
+### Table Spec
+
+=== "V1 - V2"
+    | Capability           | Java | PyIceberg | Rust | Go | C++ |
+    |----------------------|------|-----------|------|----|-----|
+    | Read table metadata  | Y    | Y         | Y    | Y  | Y   |
+    | Write table metadata | Y    | Y         | Y    | Y  | Y   |
+
+=== "V3"
+    | Capability                      | Java | PyIceberg | Rust | Go | C++ |
+    |---------------------------------|------|-----------|------|----|-----|
+    | Read table metadata             | Y    | Y         | Y    | Y  | Y   |
+    | Write table metadata            | Y    | N         | Y    | Y  | Y   |
+    | Read initial column defaults    | Y    | Y         | Y    | Y  | Y   |
+    | Read multi-argument transforms  | N    | N         | N    | N  | N   |
+    | Write multi-argument transforms | N    | N         | N    | N  | N   |
+    | Read row lineage columns        | Y    | N         | Y    | Y  | Y   |
+    | Write row lineage               | Y    | N         | Y    | Y  | Y   |
+    | Read encrypted tables           | Y    | N         | Y    | N  | N   |
+    | Write encrypted tables          | Y    | N         | Y    | N  | N   |
 
 ## Data File Formats
 
 | Format  | Java | PyIceberg | Rust | Go | C++ |
 |---------|------|-----------|------|----|-----|
 | Parquet | Y    | Y         | Y    | Y  | Y   |
 | ORC     | Y    | N         | N    | N  | N   |
-| Puffin  | Y    | N         | N    | N  | N   |
+| Puffin  | Y    | N         | Y    | Y  | Y   |
 | Avro    | Y    | N         | N    | N  | Y   |
 
 ## File IO
 
 | Storage           | Java | PyIceberg | Rust | Go | C++  |
 |-------------------|------|-----------|------|----|------|
 | Local Filesystem  | Y    | Y         | Y    | Y  | Y    |
-| Hadoop Filesystem | Y    | Y         | Y    | Y  | N    |
-| S3 Compatible     | Y    | Y         | Y    | Y  | N    |
+| Hadoop Filesystem | Y    | Y         | Y    | N  | N    |
+| S3 Compatible     | Y    | Y         | Y    | Y  | Y    |
 | GCS Compatible    | Y    | Y         | Y    | Y  | N    |
 | ADLS Compatible   | Y    | Y         | Y    | Y  | N    |
 
 ## Table Maintenance Operations
 
-### Table Spec V1
-
-| Operation                   | Java | PyIceberg | Rust | Go | C++ |
-|-----------------------------|------|-----------|------|----|-----|
-| Update schema               | Y    | Y         | Y    | Y  | Y   |
-| Update partition spec       | Y    | Y         | Y    | Y  | Y   |
-| Update table properties     | Y    | Y         | Y    | Y  | Y   |
-| Replace sort order          | Y    | N         | Y    | Y  | Y   |
-| Update table location       | Y    | Y         | Y    | Y  | Y   |
-| Update statistics           | Y    | Y         | Y    | Y  | Y   |
-| Update partition statistics | Y    | N         | N    | N  | N   |
-| Expire snapshots            | Y    | N         | N    | Y  | N   |
-| Manage snapshots            | Y    | N         | N    | Y  | N   |
-
-### Table Spec V2
-
-| Operation                   | Java | PyIceberg | Rust | Go | C++ |
-|-----------------------------|------|-----------|------|----|-----|
-| Update schema               | Y    | Y         | N    | Y  | Y   |
-| Update partition spec       | Y    | Y         | N    | Y  | Y   |
-| Update table properties     | Y    | Y         | Y    | Y  | Y   |
-| Replace sort order          | Y    | N         | Y    | Y  | Y   |
-| Update table location       | Y    | Y         | Y    | Y  | Y   |
-| Update statistics           | Y    | Y         | Y    | Y  | Y   |
-| Update partition statistics | Y    | N         | N    | N  | N   |
-| Expire snapshots            | Y    | N         | N    | Y  | N   |
-| Manage snapshots            | Y    | N         | N    | Y  | N   |
+### Table Spec
+
+=== "V1 - V2"
+    | Operation                   | Java | PyIceberg | Rust | Go | C++ |
+    |-----------------------------|------|-----------|------|----|-----|
+    | Update schema               | Y    | Y         | Y    | Y  | Y   |
+    | Update partition spec       | Y    | Y         | N    | Y  | Y   |
+    | Update table properties     | Y    | Y         | Y    | Y  | Y   |
+    | Replace sort order          | Y    | Y         | Y    | Y  | Y   |
+    | Update table location       | Y    | N         | Y    | Y  | Y   |
+    | Update statistics           | Y    | Y         | Y    | Y  | Y   |
+    | Update partition statistics | Y    | N         | N    | Y  | Y   |
+    | Expire snapshots            | Y    | Y         | Y    | Y  | Y   |
+    | Manage snapshots            | Y    | Y         | N    | Y  | Y   |
+
+=== "V3"
+    | Operation                   | Java | PyIceberg | Rust | Go | C++ |
+    |-----------------------------|------|-----------|------|----|-----|
+    | Update schema               | Y    | Y         | Y    | Y  | Y   |
+    | Update partition spec       | Y    | Y         | N    | Y  | Y   |
+    | Update table properties     | Y    | Y         | Y    | Y  | Y   |
+    | Replace sort order          | Y    | Y         | Y    | Y  | Y   |
+    | Update table location       | Y    | N         | Y    | Y  | Y   |
+    | Update statistics           | Y    | Y         | Y    | Y  | Y   |
+    | Update partition statistics | Y    | N         | N    | Y  | Y   |
+    | Expire snapshots            | Y    | Y         | Y    | Y  | Y   |
+    | Manage snapshots            | Y    | Y         | N    | Y  | Y   |
 
 ## Table Update Operations
 
-### Table Spec V1
-
-| Operation         | Java | PyIceberg | Rust | Go | C++ |
-|-------------------|------|-----------|------|----|-----|
-| Append data files | Y    | Y         | Y    | Y  | Y   |
-| Rewrite files     | Y    | Y         | N    | Y  | N   |
-| Rewrite manifests | Y    | Y         | N    | Y  | N   |
-| Overwrite files   | Y    | Y         | N    | Y  | N   |
-| Delete files      | Y    | Y         | N    | Y  | N   |
-
-### Table Spec V2
-
-| Operation         | Java | PyIceberg | Rust | Go | C++ |
-|-------------------|------|-----------|------|----|-----|
-| Append data files | Y    | Y         | Y    | Y  | Y   |
-| Rewrite files     | Y    | Y         | N    | Y  | N   |
-| Rewrite manifests | Y    | Y         | N    | Y  | N   |
-| Overwrite files   | Y    | Y         | N    | Y  | N   |
-| Row delta         | Y    | N         | N    | Y  | N   |
-| Delete files      | Y    | Y         | N    | Y  | N   |
+### Table Spec
+
+=== "V1"
+    | Operation         | Java | PyIceberg | Rust | Go | C++ |
+    |-------------------|------|-----------|------|----|-----|
+    | Append data files | Y    | Y         | Y    | Y  | Y   |
+    | Rewrite files     | Y    | Y         | N    | Y  | Y   |

Review Comment:
   PyIceberg 0.12.0 doesn't have these as far as I can tell. `UpdateSnapshot` 
only exposes fast_append, merge_append, overwrite and delete. Nothing produces 
a `replace` snapshot, and there's no rewrite_manifests. The V3 tab already says 
N, so lines 174-175 and 183-184 could match it.



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