site/docs/status.md
Apache Iceberg's table specification is implemented in multiple languages. This page provides an overview of the current capabilities.
This section lists the libraries that implement the Apache Iceberg specification.
| 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 |
| 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 |
| list | Y | Y | Y | Y | Y |
| map | Y | Y | Y | Y | Y |
| struct | Y | Y | Y | Y | Y |
| Format | Java | PyIceberg | Rust | Go | C++ |
|---|---|---|---|---|---|
| Parquet | Y | Y | Y | Y | Y |
| ORC | Y | N | N | N | N |
| Puffin | Y | N | N | N | N |
| Avro | Y | N | N | N | Y |
| 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 |
| GCS Compatible | Y | Y | Y | Y | N |
| ADLS Compatible | Y | Y | Y | Y | N |
| Operation | Java | PyIceberg | Rust | Go | C++ |
|---|---|---|---|---|---|
| Update schema | Y | Y | Y | N | Y |
| Update partition spec | Y | Y | Y | N | Y |
| Update table properties | Y | Y | Y | Y | Y |
| Replace sort order | Y | N | N | N | Y |
| Update table location | Y | Y | N | N | Y |
| Update statistics | Y | Y | N | N | Y |
| Update partition statistics | Y | N | N | N | N |
| Expire snapshots | Y | N | N | N | N |
| Manage snapshots | Y | N | N | N | N |
| Operation | Java | PyIceberg | Rust | Go | C++ |
|---|---|---|---|---|---|
| Update schema | Y | Y | N | N | Y |
| Update partition spec | Y | Y | N | N | Y |
| Update table properties | Y | Y | Y | Y | Y |
| Replace sort order | Y | N | N | N | Y |
| Update table location | Y | Y | N | N | Y |
| Update statistics | Y | Y | N | N | Y |
| Update partition statistics | Y | N | N | N | N |
| Expire snapshots | Y | N | N | N | N |
| Manage snapshots | Y | N | N | N | N |
| Operation | Java | PyIceberg | Rust | Go | C++ |
|---|---|---|---|---|---|
| Append data files | Y | Y | N | Y | Y |
| Rewrite files | Y | Y | N | N | N |
| Rewrite manifests | Y | Y | N | Y | N |
| Overwrite files | Y | Y | N | N | N |
| Delete files | Y | Y | N | N | N |
| Operation | Java | PyIceberg | Rust | Go | C++ |
|---|---|---|---|---|---|
| Append data files | Y | Y | N | Y | Y |
| Rewrite files | Y | Y | N | N | N |
| Rewrite manifests | Y | Y | N | Y | N |
| Overwrite files | Y | Y | N | N | N |
| Row delta | Y | N | N | N | N |
| Delete files | Y | Y | N | N | N |
| 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 |
| Operation | Java | PyIceberg | Rust | Go | C++ |
|---|---|---|---|---|---|
| Plan with data file | Y | Y | Y | Y | Y |
| Plan with position deletes | Y | Y | N | Y | Y |
| Plan with equality deletes | Y | Y | N | N | Y |
| Plan with puffin statistics | Y | N | N | N | N |
| Read data file | Y | Y | Y | Y | Y |
| Read with position deletes | Y | Y | N | Y | N |
| Read with equality deletes | Y | N | N | N | N |
| Operation | Java | PyIceberg | Rust | Go | C++ |
|---|---|---|---|---|---|
| Append data | Y | Y | Y | Y | N |
| Operation | Java | PyIceberg | Rust | Go | C++ |
|---|---|---|---|---|---|
| Append data | Y | Y | Y | Y | N |
| Write position deletes | Y | N | N | N | N |
| Write equality deletes | Y | N | N | N | N |
| 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 |
| 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 Operation | Java | PyIceberg | Rust | Go | C++ |
|---|---|---|---|---|---|
| createView | Y | N | N | N | N |
| dropView | Y | Y | N | N | N |
| listView | Y | Y | N | N | N |
| viewExists | Y | Y | N | N | N |
| replaceView | Y | N | N | N | N |
| renameView | Y | N | N | N | N |
| Namespace Operation | Java | PyIceberg | Rust | Go | C++ |
|---|---|---|---|---|---|
| listNamespaces | Y | Y | Y | Y | Y |
| createNamespace | Y | Y | Y | Y | Y |
| dropNamespace | Y | Y | Y | Y | Y |
| namespaceExists | Y | Y | Y | Y | Y |
| updateNamespaceProperties | Y | Y | Y | Y | Y |
| loadNamespaceMetadata | Y | Y | Y | Y | Y |
The sql catalog is a catalog backed by a sql database, which is called jdbc catalog in java.
| Database | Java | PyIceberg | Rust | Go | C++ |
|---|---|---|---|---|---|
| Postgres | Y | Y | Y | Y | N |
| MySQL | Y | Y | Y | Y | N |
| SQLite | Y | Y | Y | Y | N |
| 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 |
| 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 Operation | Java | PyIceberg | Rust | Go | C++ |
|---|---|---|---|---|---|
| createView | Y | N | N | N | N |
| dropView | Y | N | N | N | N |
| listView | Y | N | N | N | N |
| viewExists | Y | N | N | N | N |
| replaceView | Y | N | N | N | N |
| renameView | Y | N | N | N | N |
| Namespace Operation | Java | PyIceberg | Rust | Go | C++ |
|---|---|---|---|---|---|
| listNamespaces | Y | Y | N | Y | N |
| createNamespace | Y | Y | N | Y | N |
| dropNamespace | Y | Y | Y | Y | N |
| namespaceExists | Y | N | N | Y | N |
| updateNamespaceProperties | Y | Y | Y | Y | N |
| loadNamespaceMetadata | Y | Y | N | Y | N |
| 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 |
| 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 Operation | Java | PyIceberg | Rust | Go | C++ |
|---|---|---|---|---|---|
| createView | Y | N | N | N | N |
| dropView | Y | N | N | N | N |
| listView | Y | N | N | N | N |
| viewExists | Y | N | N | N | N |
| replaceView | Y | N | N | N | N |
| renameView | Y | N | N | N | N |
| Namespace Operation | Java | PyIceberg | Rust | Go | C++ |
|---|---|---|---|---|---|
| listNamespaces | Y | Y | N | Y | N |
| createNamespace | Y | Y | N | Y | N |
| dropNamespace | Y | Y | N | Y | N |
| namespaceExists | Y | N | N | Y | N |
| updateNamespaceProperties | Y | Y | Y | Y | N |
| loadNamespaceMetadata | Y | Y | N | Y | N |
| 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 |
| 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 Operation | Java | PyIceberg | Rust | Go | C++ |
|---|---|---|---|---|---|
| createView | Y | N | N | N | N |
| dropView | Y | N | N | N | N |
| listView | Y | N | N | N | N |
| viewExists | Y | N | N | N | N |
| replaceView | Y | N | N | N | N |
| renameView | Y | N | N | N | N |
| Namespace Operation | Java | PyIceberg | Rust | Go | C++ |
|---|---|---|---|---|---|
| listNamespaces | Y | Y | N | N | N |
| createNamespace | Y | Y | N | N | N |
| dropNamespace | Y | Y | N | N | N |
| namespaceExists | Y | N | N | N | N |
| updateNamespaceProperties | Y | Y | Y | Y | N |
| loadNamespaceMetadata | Y | Y | N | N | N |