From a7093406ea85020023b049e9b75695698ba1f908 Mon Sep 17 00:00:00 2001 From: Yuewei Zhou Date: Mon, 20 Jul 2026 23:48:53 -0700 Subject: [PATCH] Docs: Add Table Spec V3 breakdown to implementation status page The Implementation Status page (site/docs/status.md) only broke down Table Maintenance/Update/Read/Write Operations and Catalog operations into V1 and V2 sections. Table Spec V3 (deletion vectors, row lineage, etc.) is ratified, so this adds the missing V3 subsections. Per-language V3 values were verified against the current HEAD of each implementation repo (apache/iceberg for Java, iceberg-python, iceberg-rust, iceberg-go, iceberg-cpp): - Deletion vector read/write reflects actual support: Java, Go and C++ implement DVs; Rust does not yet (explicit TODOs, no DV writer); PyIceberg reads DVs but cannot write to v3 tables (manifest writer rejects format version 3). - Catalog V3 tables mirror V2 since catalogs serialize v3-capable metadata and are format-version-agnostic. Closes #17308 --- site/docs/status.md | 93 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 93 insertions(+) diff --git a/site/docs/status.md b/site/docs/status.md index 51d2f7271561..90ad869bda52 100644 --- a/site/docs/status.md +++ b/site/docs/status.md @@ -110,6 +110,20 @@ This section lists the libraries that implement the Apache Iceberg specification | Expire snapshots | Y | N | N | Y | N | | Manage snapshots | Y | N | N | Y | N | +### Table Spec 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 | Y | 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 @@ -133,6 +147,17 @@ This section lists the libraries that implement the Apache Iceberg specification | Row delta | Y | N | N | Y | N | | Delete files | Y | Y | N | Y | N | +### Table Spec 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 | +| Row delta | Y | N | N | Y | Y | +| Delete files | Y | N | N | Y | Y | + ## Table Read Operations ### Table Spec V1 @@ -155,6 +180,18 @@ This section lists the libraries that implement the Apache Iceberg specification | Read with position deletes | Y | Y | Y | Y | N | | Read with equality deletes | Y | N | Y | Y | N | +### Table Spec V3 + +| Operation | Java | PyIceberg | Rust | Go | C++ | +|------------------------------|------|-----------|------|----|-----| +| Plan with data file | Y | Y | Y | Y | Y | +| Plan with deletion vectors | Y | Y | N | 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 deletion vectors | Y | Y | N | Y | Y | +| Read with equality deletes | Y | N | Y | Y | Y | + ## Table Write Operations ### Table Spec V1 @@ -171,6 +208,14 @@ This section lists the libraries that implement the Apache Iceberg specification | Write position deletes | Y | N | N | Y | N | | Write equality deletes | Y | N | Y | Y | N | +### Table Spec V3 + +| Operation | Java | PyIceberg | Rust | Go | C++ | +|------------------------|------|-----------|------|----|-----| +| Append data | Y | N | Y | Y | Y | +| Write deletion vectors | Y | N | N | Y | Y | +| Write equality deletes | Y | N | Y | Y | Y | + ## Catalogs ### Rest Catalog @@ -199,6 +244,18 @@ This section lists the libraries that implement the Apache Iceberg specification | renameTable | Y | Y | Y | Y | Y | | tableExists | Y | Y | Y | Y | Y | +#### Table Spec V3 + +| Table Operation | Java | PyIceberg | Rust | Go | C++ | +|-----------------|------|-----------|------|----|-----| +| listTable | Y | Y | Y | Y | Y | +| createTable | Y | Y | Y | Y | Y | +| dropTable | Y | Y | Y | Y | Y | +| loadTable | Y | Y | Y | Y | Y | +| updateTable | Y | Y | Y | Y | Y | +| renameTable | Y | Y | Y | Y | Y | +| tableExists | Y | Y | Y | Y | Y | + #### View Spec V1 | View Operation | Java | PyIceberg | Rust | Go | C++ | @@ -255,6 +312,18 @@ The sql catalog is a catalog backed by a sql database, which is called jdbc cata | renameTable | Y | Y | Y | Y | N | | tableExists | Y | Y | Y | Y | N | +#### Table Spec V3 + +| Table Operation | Java | PyIceberg | Rust | Go | C++ | +|-----------------|------|-----------|------|----|-----| +| listTable | Y | Y | Y | Y | N | +| createTable | Y | Y | Y | Y | N | +| dropTable | Y | Y | Y | Y | N | +| loadTable | Y | Y | Y | Y | N | +| updateTable | Y | Y | Y | Y | N | +| renameTable | Y | Y | Y | Y | N | +| tableExists | Y | Y | Y | Y | N | + #### View Spec V1 | View Operation | Java | PyIceberg | Rust | Go | C++ | @@ -303,6 +372,18 @@ The sql catalog is a catalog backed by a sql database, which is called jdbc cata | renameTable | Y | Y | Y | Y | N | | tableExists | Y | Y | Y | Y | N | +#### Table Spec V3 + +| Table Operation | Java | PyIceberg | Rust | Go | C++ | +|-----------------|------|-----------|------|----|-----| +| listTable | Y | Y | Y | Y | N | +| createTable | Y | Y | Y | Y | N | +| dropTable | Y | Y | Y | Y | N | +| loadTable | Y | Y | Y | Y | N | +| updateTable | Y | Y | Y | Y | N | +| renameTable | Y | Y | Y | Y | N | +| tableExists | Y | Y | Y | Y | N | + #### View Spec V1 | View Operation | Java | PyIceberg | Rust | Go | C++ | @@ -351,6 +432,18 @@ The sql catalog is a catalog backed by a sql database, which is called jdbc cata | renameTable | Y | Y | Y | Y | N | | tableExists | Y | Y | Y | Y | N | +#### Table Spec V3 + +| Table Operation | Java | PyIceberg | Rust | Go | C++ | +|-----------------|------|-----------|------|----|-----| +| listTable | Y | Y | Y | Y | N | +| createTable | Y | Y | Y | Y | N | +| dropTable | Y | Y | Y | Y | N | +| loadTable | Y | Y | Y | Y | N | +| updateTable | Y | Y | Y | Y | N | +| renameTable | Y | Y | Y | Y | N | +| tableExists | Y | Y | Y | Y | N | + #### View Spec V1 | View Operation | Java | PyIceberg | Rust | Go | C++ |