Compatibility matrix

Apache Iceberg compatibility matrix: engines and catalogs

Last verified September 30, 2026against each product's official documentation and release notes, Iceberg 1.11.0

"Supports Iceberg" covers a wide range. This matrix breaks it into the features that decide whether two systems can share a table, and cites the page each answer comes from. Select any cell for the detail and its source.

Legend

Yes
Supported, per the product's own documentation or release notes.
Partial
Supported with significant documented limits; the note says which.
Read only
Can read this feature but not write or create it.
No
The official documentation states it is not supported.
Unknown
No official statement found. Not a guess either way.

Query engines

What each engine can do with an Iceberg table. Row-level deletes are split into the three ways Iceberg records them: position delete files, equality delete files, and format v3 deletion vectors.

  • Read: Reads Iceberg tables.
  • Write: Writes to Iceberg tables (INSERT or append at minimum).
  • Position deletes: Merge-on-read position delete files, read and/or write.
  • Equality deletes: Equality delete files, read and/or write.
  • Deletion vectors: Format v3 deletion vectors stored in Puffin files.
  • Format v3: Format version 3 tables and their features (row lineage, variant, default values, geo types, nanosecond timestamps, deletion vectors).
  • Branches and tags: Create, query, and write to Iceberg branches and tags.
  • REST catalog: Connects to an Iceberg REST catalog.
  • Iceberg views: Reads and/or creates views stored in the Iceberg view format.
  • Time travel: Queries a table as of a snapshot ID or timestamp.

Catalogs

What each catalog offers the engines that connect to it. The first row is the Iceberg REST specification itself, which defines what a REST catalog may offer; each implementation chooses which parts to serve.

Catalogs: Apache Iceberg feature support, verified September 30, 2026
CatalogServes REST APIIceberg viewsFormat v3 tablesCredential vendingMulti-table commits
REST specYesYesYesYesYes
Apache PolarisYesYesYesYesYes
AWS GlueYesNoPartialYesNo
Hive MetastoreYesYesUnknownUnknownYes
NessieYesYesNoYesYes
Unity CatalogYesNoPartialYesPartial
JDBC catalogNoYesUnknownUnknownUnknown
  • Serves REST API: Serves the Iceberg REST catalog API, so any REST client engine can connect.
  • Iceberg views: Stores and serves Iceberg views.
  • Format v3 tables: Supports format version 3 tables.
  • Credential vending: Hands engines short-lived, scoped storage credentials.
  • Multi-table commits: Commits changes to several tables atomically (REST commitTransaction, or catalog-level commits and branches).

Query engines: detail and sources

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

FeatureStatusWhat the documentation says
ReadYesBatch SELECT and DataFrame reads, incremental reads, and metadata tables. Source
WriteYesINSERT INTO, INSERT OVERWRITE, MERGE INTO, UPDATE, DELETE FROM and DataFrameWriterV2; CREATE TABLE, CTAS and RTAS via Spark DDL. Source
Position deletesYesRow-level DELETE/UPDATE/MERGE write position deletes when write.*.mode is merge-on-read (v2+); needs Iceberg SQL extensions. Reads them. Source
Equality deletesRead onlyReads equality deletes (1.11.0 fixed equality-delete reads with schema evolution); Spark writers produce position deletes or DVs, not equality deletes. Source
Deletion vectorsYesWrites 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 v3PartialRow lineage, DVs, variant (Spark 4.0+, shredded writes in 1.11) supported; nanosecond timestamps, geometry and geography not supported. Source
Branches and tagsYesCREATE/REPLACE/DROP BRANCH and TAG DDL, read via VERSION AS OF branch or tag, and writes to existing branches. Source
REST catalogYesConfigure a catalog with spark.sql.catalog.<name>.type = rest and a REST uri. Source
Iceberg viewsYesCREATE, ALTER, DROP, SHOW and DESCRIBE Iceberg views on Spark 3.4 and above. Source
Time travelYesSQL 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

FeatureStatusWhat the documentation says

Trino Iceberg connector

Evidence applies to: Trino 483 (docs/current, release notes 477 to 483). Main documentation

FeatureStatusWhat the documentation says
ReadYesReads Iceberg spec v1 and v2 tables in Parquet, ORC, or Avro; v3 support is experimental. Source
WriteYesINSERT, UPDATE, DELETE, TRUNCATE, MERGE, plus CREATE TABLE and CREATE TABLE AS. Source
Position deletesYesRow-level DELETE/UPDATE/MERGE on v2 tables write position delete files; the connector also reads them. Source
Equality deletesRead onlyRelease notes cover reading tables with equality delete files; no statement that Trino writes them. Source
Deletion vectorsPartial$files exposes DV fields; 480 notes add deletes on v3 tables, but connector docs still say v3 row-level deletes are unsupported. Source
Format v3PartialExperimental. Notes 480-482 add v3 create/write/delete, row lineage, defaults, variant, nanosecond ts, geometry; connector page still lists v3 limits. Source
Branches and tagsPartialQueries 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 catalogYesiceberg.catalog.type=rest with OAuth2, SigV4, Google auth, and vended credentials (iceberg.rest-catalog.vended-credentials-enabled). Source
Iceberg viewsYesWith the REST catalog, view management uses the Iceberg View specification; view endpoints enabled by default. Source
Time travelYesFOR 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

FeatureStatusWhat the documentation says
ReadYesIceberg is Dremio's native table format; reads v2 and v3 tables via Glue, REST, Snowflake Open Catalog, Unity Catalog. Source
WriteYesFull DML (INSERT, UPDATE, DELETE, MERGE), CREATE TABLE/CTAS, schema evolution, OPTIMIZE on v2 and v3 tables. Source
Position deletesYesDML defaults to copy-on-write; with write.*.mode=merge-on-read, v2 tables get position delete files, read and written. Source
Equality deletesRead onlyReads equality deletes (Aug 2026 fix); Software 26.x docs say global unpartitioned equality deletes in v2 are not read. Source
Deletion vectorsYesMerge-on-read DML on v3 tables writes Puffin deletion vectors and reads them; v2 position deletes convert on first MOR write. Source
Format v3YesCreate, upgrade, read, write v3: DVs, variant, row lineage, default values (primitive only), nanosecond ts. Changelog marks v3 Preview. Source
Branches and tagsNoIceberg 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 catalogYesConnects to any Iceberg REST catalog (Polaris, Glue, S3 Tables, Nessie, OneLake, others) with optional vended credentials. Source
Iceberg viewsYesReads Iceberg views from catalogs, choosing the Dremio dialect; Open Catalog stores views as Iceberg views. Source
Time travelYesSELECT ... 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

FeatureStatusWhat the documentation says
ReadYesiceberg_scan reads tables directly from storage (read-only), or read via an attached Iceberg REST catalog. Source
WriteYesOnly through an attached REST catalog: CREATE TABLE/CTAS, INSERT, UPDATE, DELETE, MERGE INTO, ALTER TABLE. Source
Position deletesYesReads and writes positional deletes, merge-on-read only; no copy-on-write, and UPDATE/DELETE fail on sorted tables. Source
Equality deletesUnknownNo official statement found Source
Deletion vectorsYesReads and writes binary deletion vectors (Puffin) for v3 tables; DuckDB picks DVs automatically from format-version. Source
Format v3PartialReads and writes v3: VARIANT, TIMESTAMP_NS, default values, DVs, row lineage. GEOGRAPHY and UNKNOWN types not yet supported. Source
Branches and tagsUnknownNo official statement found Source
REST catalogYesATTACH ... (TYPE iceberg) to REST catalogs; docs say only S3, S3 Tables, and GCS storage backends are supported. Source
Iceberg viewsUnknownNo official statement found Source
Time travelYesAT (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

FeatureStatusWhat the documentation says
ReadYesQueries Snowflake-managed and externally managed tables (catalog integration or catalog-linked database). Iceberg spec v1, v2 and v3 supported. Source
WriteYesINSERT/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 deletesPartialReads 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 deletesNoRow-level equality deletes are listed as unsupported; Horizon IRC also rejects equality deletes from external engines. Source
Deletion vectorsYesWrites 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 v3Partialv3 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 tagsNoSnowflake 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 catalogYesCatalog integration for any Iceberg REST catalog (OAuth, bearer/PAT, SigV4, vended credentials); catalog-linked databases auto-discover and write tables. Source
Iceberg viewsUnknownNo official statement found on reading or creating Iceberg-spec views; Snowflake views over Iceberg tables are Snowflake objects. Source
Time travelYesSnowflake 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

FeatureStatusWhat the documentation says
ReadYesReads Iceberg managed tables, Lakehouse runtime catalog tables, and Iceberg external tables (v2, v3 in Preview). Parquet only. Source
WritePartialFull 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 deletesRead onlyReads merge-on-read position deletes (up to 10,000 delete files per data file). BigQuery writes only support copy-on-write. Source
Equality deletesRead onlyReads equality deletes on external tables, max 100,000 equality deletes per data file. No documented equality delete writes. Source
Deletion vectorsRead onlyPreview: BigQuery reads binary DVs on v3 tables; BigQuery writes to v3 tables aren't supported (use Spark, Flink or Trino). Source
Format v3PartialPreview, read-only from BigQuery: DVs only. New v3 types, default values, row lineage and encryption keys are not supported. Source
Branches and tagsUnknownNo official statement found on BigQuery querying or creating branches or tags; docs only note snapshot expiry is skipped when refs exist. Source
REST catalogPartialUses Google Lakehouse runtime catalog (Iceberg REST). Remote REST catalogs (Glue, Unity, Horizon, Workday) only via cross-cloud federation (Preview). Source
Iceberg viewsNoThe Lakehouse runtime catalog doesn't support Apache Iceberg views. Source
Time travelYesFOR 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

FeatureStatusWhat the documentation says
ReadYesSELECT on Iceberg v2 tables in AWS Glue Data Catalog, including S3 Tables; Parquet, ORC and Avro data files. Source
WriteYesCREATE TABLE, CTAS, INSERT INTO, UPDATE, DELETE, MERGE INTO. Creates v2 tables only; DDL not supported on Lake Formation registered tables. Source
Position deletesYesReads position deletes; UPDATE, DELETE and MERGE always write position delete files (merge-on-read). Copy-on-write isn't supported. Source
Equality deletesRead onlyQueries merge-on-read both position and equality deletes; Athena writes only position deletes. Source
Deletion vectorsNoAthena only creates and operates on Iceberg v2 tables, so v3 deletion vectors are not supported. Source
Format v3NoAthena only creates and operates on Iceberg v2 tables; Iceberg library version is 1.4.2. Source
Branches and tagsUnknownNo official statement found on branch or tag create, query or write; only the $refs metadata table is documented. Source
REST catalogNoOnly Iceberg tables in the AWS Glue Data Catalog are supported (S3 Tables via Glue catalog registration); no generic REST catalog connection. Source
Iceberg viewsNoViews listed as unsupported for Iceberg: use Athena CREATE VIEW instead; Iceberg view specification not supported. Source
Time travelYesFOR 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

FeatureStatusWhat the documentation says
ReadYesQueries v1 and v2 tables in Parquet and ORC via Iceberg catalogs (Hive metastore, Glue, REST, JDBC, others). Source
WriteYesCREATE TABLE, INSERT INTO/OVERWRITE (v3.1+), DELETE (v4.1+), TRUNCATE. UPDATE and MERGE not documented. Source
Position deletesYesReads v2 position deletes (v3.0/v3.1+); v4.1.0 added writing position delete files for DELETE. Source
Equality deletesRead onlyQueries on v2 tables support equality deletes from v3.1.10/v3.2.5/v3.3 (Parquet); no write support documented. Source
Deletion vectorsUnknownNo official statement found Source
Format v3Partialv4.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 tagsYesBeta: CREATE/DROP BRANCH and TAG, INSERT INTO a branch, and query branch or tag with VERSION AS OF. Source
REST catalogYesiceberg.catalog.type=rest, with vended credentials from v4.0 and view endpoints enabled by default. Source
Iceberg viewsYesCREATE VIEW makes Iceberg views (v3.5+); ALTER VIEW adds a StarRocks dialect to existing Iceberg views. Source
Time travelYesBeta 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

FeatureStatusWhat the documentation says
ReadYestable.scan() with row filters and projections into Arrow, pandas, DuckDB, Polars, Ray, Daft and others. Source
WriteYescreate_table, append, overwrite (with filter), delete and upsert via PyArrow; streaming RecordBatchReader writes only for unpartitioned tables. Source
Position deletesRead onlyReads position deletes (DeleteFileIndex, 0.11.0); delete() warns merge-on-read is not yet supported and falls back to copy-on-write. Source
Equality deletesNoCode raises 'PyIceberg does not yet support equality deletes' when equality delete files are encountered. Source
Deletion vectorsRead onlyDeletion Vectors read support added in 0.10.0; writes use copy-on-write, so no DVs are produced. Source
Format v3PartialReads 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 tagsYesmanage_snapshots() creates branches and tags; writes to branches (WAP example) and fast-forward supported. Source
REST catalogYesREST catalog configuration with OAuth, SigV4 and custom headers. Source
Iceberg viewsPartialcreate_view, load_view, list, exists and drop on REST catalogs; view support tied to the REST catalog. Source
Time travelYestable.scan(snapshot_id=...) and snapshot_as_of_timestamp(); metadata tables accept snapshot_id. Source

Catalogs: detail and sources

Iceberg REST catalog spec

Evidence applies to: REST OpenAPI spec at Iceberg 1.11.0. Main documentation

FeatureStatusWhat the documentation says
Serves REST APIYesDefines the REST catalog API: config, namespaces, tables, views, scan planning, metrics, signing and credentials endpoints Source
Iceberg viewsYesDefines list, create, load, replace, rename, drop and register view endpoints Source
Format v3 tablesYesTableMetadata allows format-version 1 through 3; update types include upgrade-format-version and row lineage fields Source
Credential vendingYesDefines X-Iceberg-Access-Delegation (vended-credentials, remote-signing), storage-credentials and a table credentials endpoint Source
Multi-table commitsYesDefines POST /v1/{prefix}/transactions/commit to commit updates to multiple tables atomically; servers may omit it Source

Apache Polaris (REST)

Evidence applies to: Apache Polaris 1.8.0 (released 2026-09-28; bundles Iceberg 1.11.x). Main documentation

FeatureStatusWhat the documentation says
Serves REST APIYesBuilt on the Iceberg REST protocol; any REST-compatible engine can read and write Polaris-managed tables Source
Iceberg viewsYesPolaris view entities map to Iceberg views, managed through the REST CreateView/LoadView APIs Source
Format v3 tablesYesPolaris registers and serves Iceberg format v3 tables. Confirmed in practice by Alex Merced; the 1.8.0 release notes do not state it explicitly. Source
Credential vendingYesReturns short-lived, scoped storage credentials on table or view load for S3, Azure ADLS and GCS Source
Multi-table commitsYesImplements the REST commitTransaction endpoint; release notes cover commitTransaction fixes and retryable 409 conflicts Source

AWS Glue Data Catalog

Evidence applies to: AWS Glue docs as of 2026-09 (Iceberg REST endpoint; Glue 6.0 for v3). Main documentation

FeatureStatusWhat the documentation says
Serves REST APIYesServes Iceberg REST at glue.<region>.amazonaws.com/iceberg with SigV4; single-level namespaces, no staged create (CTAS) Source
Iceberg viewsNoDocs state View APIs in the Iceberg REST spec are not supported; Glue has its own multi-dialect Data Catalog views Source
Format v3 tablesPartialGlue 6.0 Spark jobs create or upgrade v3 tables (variant, nanosecond timestamps, geo); REST endpoint page lists only v1 and v2 Source
Credential vendingYesLake Formation vends temporary credentials to external engines once full table access for external engines is enabled Source
Multi-table commitsNoCommitTransaction is absent from the documented list of supported Iceberg REST operations Source

Hive Metastore

Evidence applies to: Iceberg 1.11.0 HiveCatalog; Hive 4.x Metastore Iceberg REST (Hive 4.2.1 latest). Main documentation

FeatureStatusWhat the documentation says
Serves REST APIYesHiveCatalog itself uses Thrift, but Hive 4.x Metastore also serves Iceberg REST endpoints (default port 9001 in Docker images) Source
Iceberg viewsYesView support for the Hive catalog added in Iceberg 1.7.0; HMS REST endpoint list includes view operations Source
Format v3 tablesUnknownNo official statement found; Hive engine Iceberg docs only describe v1 and v2 tables. The catalog stores a metadata pointer; the writing engine sets the format version. Source
Credential vendingUnknownNo official statement found; the HMS REST endpoint list shows no credentials endpoint Source
Multi-table commitsYesHMS Iceberg REST advertises POST /v1/{prefix}/transactions/commit in its /v1/config endpoint list Source

Project Nessie

Evidence applies to: Nessie 0.108.8 (2026-09-09). Main documentation

FeatureStatusWhat the documentation says
Serves REST APIYesServes Iceberg REST, which Nessie labels experimental; Nessie manages table and view metadata Source
Iceberg viewsYesVersions Iceberg views alongside tables on branches Source
Format v3 tablesNoRelease notes state Iceberg table spec v3 is not supported (0.103.0); no later statement found Source
Credential vendingYesProvides short-lived, down-scoped credentials or S3 request signing via Iceberg REST; GCS downscoping fixed in 0.108.8 Source
Multi-table commitsYesCross-table transactions via single commits touching many tables, or via branches merged atomically Source

Unity Catalog

Evidence applies to: Databricks Unity Catalog docs as of 2026-09 (DBR 18 LTS+ for v3); OSS Unity Catalog 0.6.0 differs. Main documentation

FeatureStatusWhat the documentation says
Serves REST APIYesDatabricks serves Iceberg REST at /api/2.1/unity-catalog/iceberg-rest (read and write managed Iceberg). OSS UC 0.6.0 only reads UniForm tables Source
Iceberg viewsNoDatabricks docs: external Iceberg clients can't access views Source
Format v3 tablesPartialManaged tables support v3 DVs, variant, row lineage, geo types, write defaults; not initial defaults, unknown type, nanosecond timestamps Source
Credential vendingYesVends short-lived credentials via Iceberg REST: read/write/create for managed Iceberg, read-only for foreign Iceberg Source
Multi-table commitsPartialMulti-table SQL transactions on Databricks compute; Iceberg table support is Private Preview. No REST commitTransaction documented Source

Iceberg JDBC catalog

Evidence applies to: Iceberg 1.11.0 JdbcCatalog. Main documentation

FeatureStatusWhat the documentation says
Serves REST APINoA client-side catalog library: each engine connects to the database itself. It does not serve the REST API. Source
Iceberg viewsYesView support added in Iceberg 1.5.0; requires jdbc.schema-version=V1 in catalog properties Source
Format v3 tablesUnknownNo official statement found on format v3 for the JDBC catalog. The catalog stores a metadata pointer; the writing engine sets the format version. Source
Credential vendingUnknownNo official statement found; docs cover only JDBC connection settings Source
Multi-table commitsUnknownNo official statement found; docs describe atomic single-table commits via database transactions Source

How this was checked

  • Every cell was checked on September 30, 2026 by fetching the cited page and reading the relevant section. Sources are the vendor's or project's own documentation, release notes, or changelog. No third-party posts.
  • Unknown means the official documentation says nothing either way. It is not a polite "no". Many unknowns are features that work in practice but are not documented.
  • No is used only where the documentation states the limitation.
  • Where a product's docs contradict its release notes (Trino's v3 support, Flink's variant type, Snowflake's position deletes), the note says so and the status reflects the more cautious reading.
  • Preview and beta features are counted, and the note names them as such.
  • Iceberg moves quickly. Treat anything older than a few months as a starting point and check the linked source before you commit to an architecture.

The data behind this page: compatibility.json. For background on the choices, see comparing catalogs and comparing table formats.