Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
Delta Lake table protocols specify which features a client must support to read or write a table. This page covers protocol versions, table features, compatibility requirements, and how Azure Databricks manages protocol upgrades. See also Review table details with describe detail.
Table protocol and compatibility
Every Delta Lake table has a protocol specification which indicates the set of capabilities required to read from and write to the table. Applications use the protocol specification to determine if they can support all the features that the table uses. If an application can't support a feature in the current protocol of a table, then that application can't read or write that table.
Most new capabilities Delta Lake require you to upgrade the table protocol.
The following table lists key terms that describe Delta Lake protocols:
| Term | Description |
|---|---|
| Delta Lake client | Any system that reads or writes to a Delta Lake table. |
| Read protocol | Specifies the support required for a Delta Lake client to read a table. |
| Write protocol | Specifies the support required for a Delta Lake client to write to a table. |
minReaderVersion |
Integer value of the reader protocol. Valid values are 1, 2, or 3. |
minWriterVersion |
Integer value of the writer protocol. Valid values are integers 2 through 7. |
| Table feature | A fine-grained alternative to protocol versions used when minReaderVersion = 3 and minWriterVersion = 7. Table features map to optionally enabled Delta Lake features. |
| Writer feature | A table feature that requires write client support but does not block read-only access. |
| Reader feature | A table feature that requires both read and write client support. See Protocol versions and table features. |
Write protocols and writer features only affect compatibility with writer clients, allowing read-only access to the table from legacy workloads.
Not all Delta Lake features are compatible with each other.
Some table features can't be dropped once enabled. See Drop a Delta Lake table feature and downgrade table protocol.
Protocol versions and table features
All Delta Lake tables include an integer-based protocol version represented by minReaderVersion and minWriterVersion. Each version bundles multiple features together, and features are cumulative across versions. To comply with the Delta Lake protocol, clients must implement support for all features in a given version, including all previously released features.
In Databricks Runtime 12.2 LTS and above, table features replace the integer-based protocol with granular flags that indicate which features a table uses. This allows finer-grained compatibility checks between clients and tables.
Table writer features affect the way data is written. They require minWriterVersion=7 but don't block reader clients.
Table reader features affect the way data is read. All reader features are also writer features, and require minReaderVersion=3 and minWriterVersion=7. A client can't write to a table that it can't read.
When table features are enabled, they appear in the protocol as readerFeatures or writerFeatures. Delta Lake resolves the table protocol to the lowest version that supports all enabled features. See Lowest possible protocol.
Note
Azure Databricks includes non-breaking partial support for table features in all supported Databricks Runtime versions. OSS Delta Lake clients choose how to implement support for given features.
Protocol changes
The protocol for a table changes under the following conditions:
- If a new feature is enabled, the protocol is upgraded.
- If a table feature is dropped, the protocol is downgraded.
Turning off a table feature does not result in a protocol downgrade. You must drop the feature to fully remove it from the protocol. Not all table features can be dropped. See Drop a Delta Lake table feature and downgrade table protocol.
All protocol change operations conflict with concurrent writes. Streaming reads fail when they encounter a commit that changes table metadata. To continue, restart the affected streams. For recommended methods, see Production considerations for Structured Streaming.
Note
Databricks recommends that you never directly alter the minReaderVersion and minWriterVersion table properties. Changing these properties does not prevent protocol upgrades, and setting them to a lower value does not downgrade the table. See Drop a Delta Lake table feature and downgrade table protocol.
What triggers a protocol upgrade
When you enable a feature, the table protocol is automatically upgraded.
Protocol upgrades are triggered in the following ways:
- Enable automatically based on the syntax used in
CREATEorALTERstatements. For example,CLUSTER BYin aCREATE TABLEstatement automatically enables liquid clustering, andGENERATED ALWAYS ASenables generated columns. - Enable explicitly through table properties. For example, setting
'delta.enableDeletionVectors' = trueenables deletion vectors. - Enabling a feature might automatically enable required features. For example, enabling UniForm automatically enables column mapping, and enabling liquid clustering automatically enables checkpoint V2. Review the relevant Azure Databricks documentation to determine which table features a given feature requires.
Reader features upgrade both the read and write protocols. For example, column mapping is a reader feature and requires upgrading both protocols because data is stored differently in storage.
Writer features, such as CHECK constraints, only upgrade the write protocol.
Warning
Most protocol version upgrades are irreversible and might break existing Delta Lake table readers, writers, or both. Upgrade specific tables only when needed, and verify that all current and future production tools support the new protocol version.
Protocol downgrades are available for some features. See Drop a Delta Lake table feature and downgrade table protocol.
Lowest possible protocol
Delta Lake resolves the table protocol to the lowest version that supports all enabled features. This can only lower minReaderVersion or minWriterVersion, never raise them. Table features are never removed automatically. Use DROP FEATURE to remove a table feature from the protocol.
If all enabled features are fully supported at a lower integer-based protocol version, the table might revert to that version and drop readerFeatures or writerFeatures from the protocol. This doesn't disable any features. Lower protocol versions increase compatibility because all clients must respect them.
Azure Databricks and Databricks Runtime compatibility
Azure Databricks introduces support for new Delta Lake features in Databricks Runtime releases:
- Tables written by a lower Databricks Runtime version have full read and write support in higher Databricks Runtime versions.
- Tables written by a higher Databricks Runtime version might use table features not supported in lower Databricks Runtime versions.
- Some features allow writes from lower Databricks Runtime versions without fully applying all optimizations for the enabled feature.
If you only use Delta Lake tables through Azure Databricks, you only need to track feature support using minimum Databricks Runtime requirements. If you read or write tables from external systems, you must verify that those clients support the table features enabled on your tables.
Backported table feature support
In Databricks Runtime 12.2 LTS and above, table features replaced the integer-based protocol with granular flags that indicate which features a table uses.
Azure Databricks has backported table feature support to Databricks Runtime 11.3 LTS and below, instead of only supporting integer protocol versions, but only for features already supported in that release.
For example, you can read from and write to a table with generated columns enabled using table features in Databricks Runtime 9.1 LTS. However, you can't use Databricks Runtime 9.1 LTS to read from and write to a table with identity columns enabled using table features because identity columns requires Databricks Runtime 10.4 LTS and above.
When using table features with backported support, some operations available in a given Databricks Runtime version might not be available in the corresponding OSS Delta Lake version. If your architecture includes OSS Delta Lake clients, test compatibility before enabling table features on production tables.
Delta Lake features and required Databricks Runtime versions
The following table lists the lowest Databricks Runtime version with full support for each feature, such that all generally available capabilities for both reads and writes are supported.
| Feature | Requires Databricks Runtime version or later | Documentation |
|---|---|---|
CHECK constraints |
All supported Databricks Runtime versions | CHECK constraint |
| Change data feed | All supported Databricks Runtime versions | Use change data feed on Azure Databricks |
| Generated columns | All supported Databricks Runtime versions | Delta Lake generated columns |
| Column mapping | All supported Databricks Runtime versions | Rename and drop columns with Delta Lake column mapping |
| Identity columns | All supported Databricks Runtime versions | Identity columns |
| Table features | All supported Databricks Runtime versions | Protocol versions and table features |
| Deletion vectors | All supported Databricks Runtime versions | Deletion vectors in Databricks |
| TimestampNTZ | Databricks Runtime 13.3 LTS | TIMESTAMP_NTZ type |
| UniForm | Databricks Runtime 13.3 LTS | Read Delta Lake tables with Iceberg clients using UniForm |
| Liquid clustering | Databricks Runtime 13.3 LTS | Use liquid clustering for tables |
| Row tracking | Databricks Runtime 14.3 LTS | Row tracking in Azure Databricks |
| Type widening | Databricks Runtime 15.4 LTS | Type widening |
| Variant | Databricks Runtime 15.4 LTS | Variant type support for Apache Iceberg and Delta Lake |
| Collations | Databricks Runtime 16.1 | Collation support for Delta Lake |
| Protected checkpoints | Databricks Runtime 16.3 | Drop a Delta Lake table feature and downgrade table protocol |
| Catalog commits | Databricks Runtime 16.4 LTS | Catalog commits |
See Databricks Runtime release notes versions and compatibility.
Note
Lakeflow Spark Declarative Pipelines and Databricks SQL automatically upgrade runtime environments with regular releases to support new features. See Lakeflow Spark Declarative Pipelines release notes and the release upgrade process and Databricks SQL release notes.
Features by protocol version
Note
For Databricks Runtime compatibility, see Azure Databricks and Databricks Runtime compatibility.
Delta Lake uses separate minReaderVersion and minWriterVersion values to specify protocol capabilities. The open source Delta Lake protocol has standardized on table features, but some clients still use legacy protocol versioning. Because some clients might not support all features, Databricks recommends that you verify with your client documentation and test compatibility before enabling new features on production tables.
Apache Iceberg uses a single format-version instead of separate reader and writer versions. An Iceberg format version indicates which features are available but doesn't mandate their use. Features are opt-in, except for row tracking which is mandatory in format version 3. When a feature shows N/A in the Iceberg column, it's a Delta-specific feature without a direct Iceberg equivalent.
The following table lists protocol version requirements for Delta Lake and Apache Iceberg table features. The feature type indicates whether a feature must be respected for writes only or for both reads and writes.
| Feature | Delta minWriterVersion |
Delta minReaderVersion |
Iceberg format-version |
Feature type |
|---|---|---|---|---|
| Basic functionality | 2 | 1 | 1 | Writer |
CHECK constraints |
3 | 1 | N/A | Writer |
| Change data feed | 4 | 1 | N/A | Writer |
| Generated columns | 4 | 1 | N/A | Writer |
| Column mapping | 5 | 2 | N/A | Reader and writer |
| Identity columns | 6 | 1 | N/A | Writer |
| Row tracking | 7 | 1 | 3 | Writer |
| Deletion vectors | 7 | 3 | 3 | Reader and writer |
| TimestampNTZ | 7 | 3 | 1 | Reader and writer |
| Liquid clustering | 7 | 3 | 1 | Reader and writer (1) |
| Iceberg readers (UniForm) | 7 | 2 | N/A | Writer (2) |
| Type widening | 7 | 3 | N/A | Reader and writer |
| Variant | 7 | 3 | 3 | Reader and writer |
| Variant shredding | 7 | 3 | 3 | Reader and writer |
| Collations | 7 | 3 | N/A | Reader and writer |
| Protected checkpoints | 7 | 1 | N/A | Writer |
| Catalog commits | 7 | 3 | N/A | Reader and writer |