Apache Spark (Iceberg Spark runtime)
Evidence applies to: Iceberg 1.11.0 Spark runtime (Spark 3.5, 4.0, 4.1); docs/latest as of 2026-09-29. Main documentation
| Feature | Status | What the documentation says |
|---|
| Read | Yes | Batch SELECT and DataFrame reads, incremental reads, and metadata tables. Source |
|---|
| Write | Yes | INSERT INTO, INSERT OVERWRITE, MERGE INTO, UPDATE, DELETE FROM and DataFrameWriterV2; CREATE TABLE, CTAS and RTAS via Spark DDL. Source |
|---|
| Position deletes | Yes | Row-level DELETE/UPDATE/MERGE write position deletes when write.*.mode is merge-on-read (v2+); needs Iceberg SQL extensions. Reads them. Source |
|---|
| Equality deletes | Read only | Reads equality deletes (1.11.0 fixed equality-delete reads with schema evolution); Spark writers produce position deletes or DVs, not equality deletes. Source |
|---|
| Deletion vectors | Yes | Writes DVs for v3 tables since 1.8.0; DVs surface in position_deletes metadata table; 1.9.0 rewrites v2 deletes to v3 DVs. Source |
|---|
| Format v3 | Partial | Row lineage, DVs, variant (Spark 4.0+, shredded writes in 1.11) supported; nanosecond timestamps, geometry and geography not supported. Source |
|---|
| Branches and tags | Yes | CREATE/REPLACE/DROP BRANCH and TAG DDL, read via VERSION AS OF branch or tag, and writes to existing branches. Source |
|---|
| REST catalog | Yes | Configure a catalog with spark.sql.catalog.<name>.type = rest and a REST uri. Source |
|---|
| Iceberg views | Yes | CREATE, ALTER, DROP, SHOW and DESCRIBE Iceberg views on Spark 3.4 and above. Source |
|---|
| Time travel | Yes | SQL TIMESTAMP AS OF and VERSION AS OF (snapshot id, branch or tag) plus DataFrame read options. Source |
|---|
Apache Flink (Iceberg Flink connector)
Evidence applies to: Iceberg 1.11.0 Flink runtime (Flink 1.20, 2.0, 2.1 jars); docs/latest as of 2026-09-29. Main documentation
| Feature | Status | What the documentation says |
|---|
| Read | Yes | Batch and streaming reads via SQL and DataStream (FLIP-27 source); streaming reads are append-only, CDC read not supported. Source |
|---|
| Write | Yes | INSERT INTO, INSERT OVERWRITE, UPSERT and DataStream sinks incl. Dynamic Sink; CREATE TABLE via Flink DDL (no hidden partitioning). Source |
|---|
| Position deletes | Unknown | No official statement found on reading or writing position delete files; docs cover UPSERT and delete-file metrics only. Source |
|---|
| Equality deletes | Partial | UPSERT mode writes row-level changes keyed on equality fields; needs v2+ table with primary key or identifier fields. Source |
|---|
| Deletion vectors | Partial | 1.11.0 added DV writing in IcebergSink and Dynamic Sink; DV read behavior not separately documented. Source |
|---|
| Format v3 | Partial | Nanosecond timestamps, default values and row lineage readers supported; variant, geometry, geography listed as not supported in type mapping. Source |
|---|
| Branches and tags | Partial | Reads branches and tags (SQL options and DataStream) and writes to a branch via toBranch; no Flink DDL to create branches or tags. Source |
|---|
| REST catalog | Yes | CREATE CATALOG with 'catalog-type'='rest' and a REST uri. Source |
|---|
| Iceberg views | Unknown | No official statement found; Flink docs do not cover Iceberg views. Source |
|---|
| Time travel | Yes | Batch-mode read options snapshot-id and as-of-timestamp, plus branch and tag options. Source |
|---|
Trino Iceberg connector
Evidence applies to: Trino 483 (docs/current, release notes 477 to 483). Main documentation
| Feature | Status | What the documentation says |
|---|
| Read | Yes | Reads Iceberg spec v1 and v2 tables in Parquet, ORC, or Avro; v3 support is experimental. Source |
|---|
| Write | Yes | INSERT, UPDATE, DELETE, TRUNCATE, MERGE, plus CREATE TABLE and CREATE TABLE AS. Source |
|---|
| Position deletes | Yes | Row-level DELETE/UPDATE/MERGE on v2 tables write position delete files; the connector also reads them. Source |
|---|
| Equality deletes | Read only | Release notes cover reading tables with equality delete files; no statement that Trino writes them. Source |
|---|
| Deletion vectors | Partial | $files exposes DV fields; 480 notes add deletes on v3 tables, but connector docs still say v3 row-level deletes are unsupported. Source |
|---|
| Format v3 | Partial | Experimental. Notes 480-482 add v3 create/write/delete, row lineage, defaults, variant, nanosecond ts, geometry; connector page still lists v3 limits. Source |
|---|
| Branches and tags | Partial | Queries branches and tags via FOR VERSION AS OF; Trino 477 added CREATE/DROP/ALTER BRANCH SQL. Tag creation and branch writes not documented. Source |
|---|
| REST catalog | Yes | iceberg.catalog.type=rest with OAuth2, SigV4, Google auth, and vended credentials (iceberg.rest-catalog.vended-credentials-enabled). Source |
|---|
| Iceberg views | Yes | With the REST catalog, view management uses the Iceberg View specification; view endpoints enabled by default. Source |
|---|
| Time travel | Yes | FOR VERSION AS OF snapshot id, branch, or tag, and FOR TIMESTAMP AS OF. Source |
|---|
Dremio
Evidence applies to: Dremio Cloud (docs and changelog as of 2026-09-22); Dremio Software docs current 26.x checked for limits. Main documentation
| Feature | Status | What the documentation says |
|---|
| Read | Yes | Iceberg is Dremio's native table format; reads v2 and v3 tables via Glue, REST, Snowflake Open Catalog, Unity Catalog. Source |
|---|
| Write | Yes | Full DML (INSERT, UPDATE, DELETE, MERGE), CREATE TABLE/CTAS, schema evolution, OPTIMIZE on v2 and v3 tables. Source |
|---|
| Position deletes | Yes | DML defaults to copy-on-write; with write.*.mode=merge-on-read, v2 tables get position delete files, read and written. Source |
|---|
| Equality deletes | Read only | Reads equality deletes (Aug 2026 fix); Software 26.x docs say global unpartitioned equality deletes in v2 are not read. Source |
|---|
| Deletion vectors | Yes | Merge-on-read DML on v3 tables writes Puffin deletion vectors and reads them; v2 position deletes convert on first MOR write. Source |
|---|
| Format v3 | Yes | Create, upgrade, read, write v3: DVs, variant, row lineage, default values (primitive only), nanosecond ts. Changelog marks v3 Preview. Source |
|---|
| Branches and tags | No | Iceberg table-level branches and tags are not supported. Dremio's AT BRANCH, AT TAG, and AT COMMIT apply to catalog-level versioning in Nessie-backed (versioned) catalogs, not to Iceberg table refs. Confirmed by Alex Merced. Source |
|---|
| REST catalog | Yes | Connects to any Iceberg REST catalog (Polaris, Glue, S3 Tables, Nessie, OneLake, others) with optional vended credentials. Source |
|---|
| Iceberg views | Yes | Reads Iceberg views from catalogs, choosing the Dremio dialect; Open Catalog stores views as Iceberg views. Source |
|---|
| Time travel | Yes | SELECT ... AT SNAPSHOT '<id>' or AT TIMESTAMP, limited by snapshot retention. Source |
|---|
DuckDB iceberg extension
Evidence applies to: DuckDB 1.5.x docs (docs/current; 1.5.6 released 2026-09-28). Main documentation
| Feature | Status | What the documentation says |
|---|
| Read | Yes | iceberg_scan reads tables directly from storage (read-only), or read via an attached Iceberg REST catalog. Source |
|---|
| Write | Yes | Only through an attached REST catalog: CREATE TABLE/CTAS, INSERT, UPDATE, DELETE, MERGE INTO, ALTER TABLE. Source |
|---|
| Position deletes | Yes | Reads and writes positional deletes, merge-on-read only; no copy-on-write, and UPDATE/DELETE fail on sorted tables. Source |
|---|
| Equality deletes | Unknown | No official statement found Source |
|---|
| Deletion vectors | Yes | Reads and writes binary deletion vectors (Puffin) for v3 tables; DuckDB picks DVs automatically from format-version. Source |
|---|
| Format v3 | Partial | Reads and writes v3: VARIANT, TIMESTAMP_NS, default values, DVs, row lineage. GEOGRAPHY and UNKNOWN types not yet supported. Source |
|---|
| Branches and tags | Unknown | No official statement found Source |
|---|
| REST catalog | Yes | ATTACH ... (TYPE iceberg) to REST catalogs; docs say only S3, S3 Tables, and GCS storage backends are supported. Source |
|---|
| Iceberg views | Unknown | No official statement found Source |
|---|
| Time travel | Yes | AT (VERSION => snapshot_id) or AT (TIMESTAMP => ...) on catalog tables; snapshot_from_id/timestamp in iceberg_scan. Source |
|---|
Snowflake Apache Iceberg tables
Evidence applies to: Snowflake docs as of 2026-09 (Snowflake-managed, externally managed, and catalog-linked database tables). Main documentation
| Feature | Status | What the documentation says |
|---|
| Read | Yes | Queries Snowflake-managed and externally managed tables (catalog integration or catalog-linked database). Iceberg spec v1, v2 and v3 supported. Source |
|---|
| Write | Yes | INSERT/UPDATE/DELETE/MERGE/COPY on managed and external REST tables. Remote CREATE TABLE only via catalog-linked DB; external writes are autocommit only. Source |
|---|
| Position deletes | Partial | Reads and writes v2 position deletes for UPDATE/DELETE/MERGE. Docs limit this to externally managed tables; managed v2 defaults to copy-on-write. Source |
|---|
| Equality deletes | No | Row-level equality deletes are listed as unsupported; Horizon IRC also rejects equality deletes from external engines. Source |
|---|
| Deletion vectors | Yes | Writes DVs for DELETE/UPDATE/MERGE on v3 tables (managed and external); merge-on-read is default for v3. Heuristics may fall back to copy-on-write. Source |
|---|
| Format v3 | Partial | v3 create/read/write: variant, geo types, ns timestamps, unknown, defaults, DVs, row lineage. No multi-arg transforms, encryption keys, or in-place upgrade. Source |
|---|
| Branches and tags | No | Snowflake cannot create or query Iceberg branches or tags: no SQL for them is documented, and the Horizon catalog limits state creating Iceberg tags and branches isn't supported. Confirmed by Alex Merced. Source |
|---|
| REST catalog | Yes | Catalog integration for any Iceberg REST catalog (OAuth, bearer/PAT, SigV4, vended credentials); catalog-linked databases auto-discover and write tables. Source |
|---|
| Iceberg views | Unknown | No official statement found on reading or creating Iceberg-spec views; Snowflake views over Iceberg tables are Snowflake objects. Source |
|---|
| Time travel | Yes | Snowflake Time Travel within retention period. External tables: snapshots after table creation, if refreshed before the snapshot expires. Source |
|---|
Google BigQuery (Iceberg managed tables, Lakehouse runtime catalog, external tables)
Evidence applies to: BigQuery and Lakehouse docs as of 2026-09 (BigLake names now Iceberg managed tables and Lakehouse runtime catalog). Main documentation
| Feature | Status | What the documentation says |
|---|
| Read | Yes | Reads Iceberg managed tables, Lakehouse runtime catalog tables, and Iceberg external tables (v2, v3 in Preview). Parquet only. Source |
|---|
| Write | Partial | Full DML on BigQuery-managed Iceberg tables (GA). DDL/DML on Lakehouse runtime catalog tables is Preview, v2 only. External tables are read-only. Source |
|---|
| Position deletes | Read only | Reads merge-on-read position deletes (up to 10,000 delete files per data file). BigQuery writes only support copy-on-write. Source |
|---|
| Equality deletes | Read only | Reads equality deletes on external tables, max 100,000 equality deletes per data file. No documented equality delete writes. Source |
|---|
| Deletion vectors | Read only | Preview: BigQuery reads binary DVs on v3 tables; BigQuery writes to v3 tables aren't supported (use Spark, Flink or Trino). Source |
|---|
| Format v3 | Partial | Preview, read-only from BigQuery: DVs only. New v3 types, default values, row lineage and encryption keys are not supported. Source |
|---|
| Branches and tags | Unknown | No official statement found on BigQuery querying or creating branches or tags; docs only note snapshot expiry is skipped when refs exist. Source |
|---|
| REST catalog | Partial | Uses Google Lakehouse runtime catalog (Iceberg REST). Remote REST catalogs (Glue, Unity, Horizon, Workday) only via cross-cloud federation (Preview). Source |
|---|
| Iceberg views | No | The Lakehouse runtime catalog doesn't support Apache Iceberg views. Source |
|---|
| Time travel | Yes | FOR SYSTEM_TIME AS OF on external table snapshots; BigQuery time travel limited to 7 days on managed and runtime catalog tables. Source |
|---|
Amazon Athena
Evidence applies to: Athena engine version 3 (Iceberg library 1.4.2), docs as of 2026-09. Main documentation
| Feature | Status | What the documentation says |
|---|
| Read | Yes | SELECT on Iceberg v2 tables in AWS Glue Data Catalog, including S3 Tables; Parquet, ORC and Avro data files. Source |
|---|
| Write | Yes | CREATE TABLE, CTAS, INSERT INTO, UPDATE, DELETE, MERGE INTO. Creates v2 tables only; DDL not supported on Lake Formation registered tables. Source |
|---|
| Position deletes | Yes | Reads position deletes; UPDATE, DELETE and MERGE always write position delete files (merge-on-read). Copy-on-write isn't supported. Source |
|---|
| Equality deletes | Read only | Queries merge-on-read both position and equality deletes; Athena writes only position deletes. Source |
|---|
| Deletion vectors | No | Athena only creates and operates on Iceberg v2 tables, so v3 deletion vectors are not supported. Source |
|---|
| Format v3 | No | Athena only creates and operates on Iceberg v2 tables; Iceberg library version is 1.4.2. Source |
|---|
| Branches and tags | Unknown | No official statement found on branch or tag create, query or write; only the $refs metadata table is documented. Source |
|---|
| REST catalog | No | Only Iceberg tables in the AWS Glue Data Catalog are supported (S3 Tables via Glue catalog registration); no generic REST catalog connection. Source |
|---|
| Iceberg views | No | Views listed as unsupported for Iceberg: use Athena CREATE VIEW instead; Iceberg view specification not supported. Source |
|---|
| Time travel | Yes | FOR TIMESTAMP AS OF and FOR VERSION AS OF (snapshot ID) in engine version 3. Source |
|---|
StarRocks
Evidence applies to: StarRocks 4.1 (docs latest; 4.1.5 release notes). Main documentation
| Feature | Status | What the documentation says |
|---|
| Read | Yes | Queries v1 and v2 tables in Parquet and ORC via Iceberg catalogs (Hive metastore, Glue, REST, JDBC, others). Source |
|---|
| Write | Yes | CREATE TABLE, INSERT INTO/OVERWRITE (v3.1+), DELETE (v4.1+), TRUNCATE. UPDATE and MERGE not documented. Source |
|---|
| Position deletes | Yes | Reads v2 position deletes (v3.0/v3.1+); v4.1.0 added writing position delete files for DELETE. Source |
|---|
| Equality deletes | Read only | Queries on v2 tables support equality deletes from v3.1.10/v3.2.5/v3.3 (Parquet); no write support documented. Source |
|---|
| Deletion vectors | Unknown | No official statement found Source |
|---|
| Format v3 | Partial | v4.1 adds v3 default values, row lineage (_row_id reads), VARIANT; unsupported v3 features fail fast. DVs, geometry, ns ts not documented. Source |
|---|
| Branches and tags | Yes | Beta: CREATE/DROP BRANCH and TAG, INSERT INTO a branch, and query branch or tag with VERSION AS OF. Source |
|---|
| REST catalog | Yes | iceberg.catalog.type=rest, with vended credentials from v4.0 and view endpoints enabled by default. Source |
|---|
| Iceberg views | Yes | CREATE VIEW makes Iceberg views (v3.5+); ALTER VIEW adds a StarRocks dialect to existing Iceberg views. Source |
|---|
| Time travel | Yes | Beta since v3.4: VERSION AS OF snapshot id, branch, or tag, and TIMESTAMP AS OF datetime or date. Source |
|---|
PyIceberg
Evidence applies to: PyIceberg 0.12.0 (released 2026-09-01). Main documentation
| Feature | Status | What the documentation says |
|---|
| Read | Yes | table.scan() with row filters and projections into Arrow, pandas, DuckDB, Polars, Ray, Daft and others. Source |
|---|
| Write | Yes | create_table, append, overwrite (with filter), delete and upsert via PyArrow; streaming RecordBatchReader writes only for unpartitioned tables. Source |
|---|
| Position deletes | Read only | Reads position deletes (DeleteFileIndex, 0.11.0); delete() warns merge-on-read is not yet supported and falls back to copy-on-write. Source |
|---|
| Equality deletes | No | Code raises 'PyIceberg does not yet support equality deletes' when equality delete files are encountered. Source |
|---|
| Deletion vectors | Read only | Deletion Vectors read support added in 0.10.0; writes use copy-on-write, so no DVs are produced. Source |
|---|
| Format v3 | Partial | Reads v3; has row lineage fields, DV reads, nanosecond, default and geo types. Nanosecond writes in v3 not implemented; v3 metadata JSON write raises. Source |
|---|
| Branches and tags | Yes | manage_snapshots() creates branches and tags; writes to branches (WAP example) and fast-forward supported. Source |
|---|
| REST catalog | Yes | REST catalog configuration with OAuth, SigV4 and custom headers. Source |
|---|
| Iceberg views | Partial | create_view, load_view, list, exists and drop on REST catalogs; view support tied to the REST catalog. Source |
|---|
| Time travel | Yes | table.scan(snapshot_id=...) and snapshot_as_of_timestamp(); metadata tables accept snapshot_id. Source |
|---|