> ## Documentation Index
> Fetch the complete documentation index at: https://docs.e6data.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Databricks compatibility

> Which Delta Lake table features, data types, SQL commands and governance controls Query Engine supports, compared with Databricks.

This page compares Query Engine with Databricks for Unity Catalog managed Delta tables. **Min. DBR** is the first Databricks Runtime version with the feature. For table features, **read** means Query Engine can query a table that has the feature enabled, and **write** means it can write to one.

For function-by-function support, see [Databricks function compatibility](/query/compatibility/databricks-functions).

<div className="e6-status-legend"><span className="e6-status e6-status--yes">Yes</span> Supported <span className="e6-status e6-status--partial">Partial</span> Supported with limits <span className="e6-status e6-status--no">No</span> Not supported yet</div>

## Summary

| Area | Yes | Partial | No |
| - | - | - | - |
| [Table features](#table-features) | 23 | 4 | 11 |
| [Data types](#data-types) | 17 | 1 | 7 |
| [DDL](#ddl) | 0 | 0 | 42 |
| [DML](#dml) | 15 | 1 | 15 |
| [Metadata queries and time travel](#metadata-queries-and-time-travel) | 4 | 1 | 5 |
| [Table maintenance](#table-maintenance) | 1 | 0 | 5 |
| [UDFs](#udfs) | 0 | 0 | 6 |
| [Stored procedures and SQL scripting](#stored-procedures-and-sql-scripting) | 0 | 0 | 6 |
| [Object-level access control](#object-level-access-control) | 4 | 0 | 10 |
| [Attribute-based access control (ABAC)](#attribute-based-access-control-abac) | 3 | 0 | 9 |

## Table features

A read-only engine is blocked by an unsupported Reader feature. Writer features only matter for DML.

| Feature | Delta protocol | Min. DBR | Databricks | e6data read | e6data write |
| - | - | - | - | - | - |
| appendOnly | Writer | — | Yes | <span className="e6-status e6-status--yes">Yes</span> | <span className="e6-status e6-status--yes">Yes</span> |
| CHECK constraints | Writer | All | Yes | <span className="e6-status e6-status--yes">Yes</span> | <span className="e6-status e6-status--no">No</span> |
| Generated columns | Writer | All | Yes | <span className="e6-status e6-status--yes">Yes</span> | <span className="e6-status e6-status--no">No</span> |
| Identity columns | Writer | All | Yes | <span className="e6-status e6-status--yes">Yes</span> | <span className="e6-status e6-status--partial">Partial</span> |
| allowColumnDefaults | Writer | — | Yes | <span className="e6-status e6-status--yes">Yes</span> | <span className="e6-status e6-status--yes">Yes</span> |
| Change data feed | Writer | All | Yes | <span className="e6-status e6-status--yes">Yes</span> | <span className="e6-status e6-status--yes">Yes</span> |
| Column mapping (name / id) | Reader + Writer | All | Yes | <span className="e6-status e6-status--yes">Yes</span> | <span className="e6-status e6-status--yes">Yes</span> |
| Deletion vectors | Reader + Writer | All | Yes | <span className="e6-status e6-status--yes">Yes</span> | <span className="e6-status e6-status--no">No</span> |
| TimestampNTZ | Reader + Writer | 13.3 | Yes | <span className="e6-status e6-status--yes">Yes</span> | <span className="e6-status e6-status--no">No</span> |
| Liquid clustering | Writer | 13.3 | Yes | <span className="e6-status e6-status--yes">Yes</span> | <span className="e6-status e6-status--no">No</span> |
| UniForm (Iceberg reads) | Writer | 13.3 | Yes | <span className="e6-status e6-status--yes">Yes</span> | <span className="e6-status e6-status--yes">Yes</span> |
| Row tracking | Writer | 14.3 | Yes | <span className="e6-status e6-status--yes">Yes</span> | <span className="e6-status e6-status--yes">Yes</span> |
| Domain metadata | Writer | — | Yes | <span className="e6-status e6-status--yes">Yes</span> | <span className="e6-status e6-status--yes">Yes</span> |
| V2 checkpoints | Reader + Writer | — | Yes | <span className="e6-status e6-status--yes">Yes</span> | <span className="e6-status e6-status--yes">Yes</span> |
| Type widening | Reader + Writer | 15.4 | Yes | <span className="e6-status e6-status--partial">Partial</span> | <span className="e6-status e6-status--no">No</span> |
| Variant | Reader + Writer | 15.4 | Yes | <span className="e6-status e6-status--partial">Partial</span> | <span className="e6-status e6-status--no">No</span> |
| Collations | — | 16.1 | Yes | <span className="e6-status e6-status--yes">Yes</span> | <span className="e6-status e6-status--no">No</span> |
| Protected checkpoints | Writer | 16.3 | Yes | <span className="e6-status e6-status--partial">Partial</span> | <span className="e6-status e6-status--no">No</span> |
| Catalog commits | Reader + Writer | 16.4 | Yes | <span className="e6-status e6-status--no">No</span> | <span className="e6-status e6-status--no">No</span> |

## Data types

### Numeric

| Data type | Min. DBR | Databricks | e6data |
| - | - | - | - |
| TINYINT | — | Yes | <span className="e6-status e6-status--yes">Yes</span> |
| SMALLINT | — | Yes | <span className="e6-status e6-status--yes">Yes</span> |
| INT | — | Yes | <span className="e6-status e6-status--yes">Yes</span> |
| BIGINT | — | Yes | <span className="e6-status e6-status--yes">Yes</span> |
| DECIMAL(p,s) | — | Yes | <span className="e6-status e6-status--yes">Yes</span> |
| FLOAT | — | Yes | <span className="e6-status e6-status--yes">Yes</span> |
| DOUBLE | — | Yes | <span className="e6-status e6-status--yes">Yes</span> |

### String and binary

| Data type | Min. DBR | Databricks | e6data |
| - | - | - | - |
| STRING | — | Yes | <span className="e6-status e6-status--yes">Yes</span> |
| STRING COLLATE (collated string) | 16.1 | Yes | <span className="e6-status e6-status--no">No</span> |
| BINARY | — | Yes | <span className="e6-status e6-status--no">No</span> |

### Boolean and null

| Data type | Min. DBR | Databricks | e6data |
| - | - | - | - |
| BOOLEAN | — | Yes | <span className="e6-status e6-status--yes">Yes</span> |
| VOID | 18.2 | Yes | <span className="e6-status e6-status--yes">Yes</span> |

### Date and time

| Data type | Min. DBR | Databricks | e6data |
| - | - | - | - |
| DATE | — | Yes | <span className="e6-status e6-status--yes">Yes</span> |
| TIME | — | Yes | <span className="e6-status e6-status--yes">Yes</span> |
| TIMESTAMP | — | Yes | <span className="e6-status e6-status--yes">Yes</span> |
| TIMESTAMP\_NTZ | 13.3 | Yes | <span className="e6-status e6-status--yes">Yes</span> |

### Interval

| Data type | Min. DBR | Databricks | e6data |
| - | - | - | - |
| INTERVAL YEAR TO MONTH | — | Yes | <span className="e6-status e6-status--no">No</span> |
| INTERVAL DAY TO SECOND | — | Yes | <span className="e6-status e6-status--no">No</span> |

### Geospatial

| Data type | Min. DBR | Databricks | e6data |
| - | - | - | - |
| GEOMETRY(srid) | 17.1 | Yes | <span className="e6-status e6-status--no">No</span> |
| GEOGRAPHY(srid) | 17.1 | Partial | <span className="e6-status e6-status--no">No</span> |

### Complex and semi-structured

| Data type | Min. DBR | Databricks | e6data |
| - | - | - | - |
| ARRAY\<elementType> | — | Yes | <span className="e6-status e6-status--yes">Yes</span> |
| MAP\<keyType, valueType> | — | Yes | <span className="e6-status e6-status--yes">Yes</span> |
| STRUCT\<fields> | — | Yes | <span className="e6-status e6-status--yes">Yes</span> |
| VARIANT | 15.4 | Yes | <span className="e6-status e6-status--partial">Partial</span> |
| OBJECT | — | Yes | <span className="e6-status e6-status--no">No</span> |

## DDL

### Catalog and schema

| Capability | Min. DBR | Databricks | e6data |
| - | - | - | - |
| CREATE / ALTER / DROP CATALOG | — | Yes | <span className="e6-status e6-status--no">No</span> |
| CREATE / ALTER / DROP SCHEMA | — | Yes | <span className="e6-status e6-status--no">No</span> |
| USE CATALOG / USE SCHEMA | — | Yes | <span className="e6-status e6-status--no">No</span> |

### CREATE TABLE

| Capability | Min. DBR | Databricks | e6data |
| - | - | - | - |
| CREATE TABLE (managed) | — | Yes | <span className="e6-status e6-status--no">No</span> |
| CREATE TABLE with LOCATION (external) | — | Yes | <span className="e6-status e6-status--no">No</span> |
| CREATE TABLE IF NOT EXISTS | — | Yes | <span className="e6-status e6-status--no">No</span> |
| CREATE OR REPLACE TABLE | — | Yes | <span className="e6-status e6-status--no">No</span> |
| CREATE TABLE AS SELECT (CTAS) | — | Yes | <span className="e6-status e6-status--no">No</span> |
| CREATE TABLE LIKE | — | Yes | <span className="e6-status e6-status--no">No</span> |
| PARTITIONED BY | — | Yes | <span className="e6-status e6-status--no">No</span> |
| CLUSTER BY (liquid) | — | Yes | <span className="e6-status e6-status--no">No</span> |
| NOT NULL | — | Yes | <span className="e6-status e6-status--no">No</span> |
| DEFAULT column values | — | Yes | <span className="e6-status e6-status--no">No</span> |
| GENERATED ALWAYS AS (expr) | — | Yes | <span className="e6-status e6-status--no">No</span> |
| GENERATED AS IDENTITY | — | Yes | <span className="e6-status e6-status--no">No</span> |
| PRIMARY KEY / FOREIGN KEY | — | Yes | <span className="e6-status e6-status--no">No</span> |
| TBLPROPERTIES | — | Yes | <span className="e6-status e6-status--no">No</span> |
| Table and column COMMENT | — | Yes | <span className="e6-status e6-status--no">No</span> |
| CREATE TEMP TABLE | — | Yes | <span className="e6-status e6-status--no">No</span> |
| SHALLOW CLONE / DEEP CLONE | — | Yes | <span className="e6-status e6-status--no">No</span> |

### ALTER TABLE

| Capability | Min. DBR | Databricks | e6data |
| - | - | - | - |
| RENAME TO | — | Yes | <span className="e6-status e6-status--no">No</span> |
| ADD COLUMNS (incl. nested) | — | Yes | <span className="e6-status e6-status--no">No</span> |
| DROP COLUMN | — | Yes | <span className="e6-status e6-status--no">No</span> |
| RENAME COLUMN | — | Yes | <span className="e6-status e6-status--no">No</span> |
| ALTER COLUMN TYPE (widening) | — | Yes | <span className="e6-status e6-status--no">No</span> |
| Reorder columns (FIRST / AFTER) | — | Yes | <span className="e6-status e6-status--no">No</span> |
| SET / DROP NOT NULL | — | Yes | <span className="e6-status e6-status--no">No</span> |
| SET / DROP DEFAULT | — | Yes | <span className="e6-status e6-status--no">No</span> |
| ADD / DROP CONSTRAINT (CHECK) | — | Yes | <span className="e6-status e6-status--no">No</span> |
| SET / UNSET TBLPROPERTIES | — | Yes | <span className="e6-status e6-status--no">No</span> |
| CLUSTER BY change / NONE | — | Yes | <span className="e6-status e6-status--no">No</span> |
| DROP FEATURE (protocol downgrade) | — | Yes | <span className="e6-status e6-status--no">No</span> |
| SET ROW FILTER / SET MASK | — | Yes | <span className="e6-status e6-status--no">No</span> |
| SET TAGS | — | Yes | <span className="e6-status e6-status--no">No</span> |
| OWNER TO | — | Yes | <span className="e6-status e6-status--no">No</span> |

### Views and table lifecycle

| Capability | Min. DBR | Databricks | e6data |
| - | - | - | - |
| CREATE / ALTER / DROP VIEW | — | Yes | <span className="e6-status e6-status--no">No</span> |
| CREATE TEMP VIEW | — | Yes | <span className="e6-status e6-status--no">No</span> |
| Materialized views | — | Yes | <span className="e6-status e6-status--no">No</span> |
| DROP TABLE | — | Yes | <span className="e6-status e6-status--no">No</span> |
| UNDROP TABLE | — | Yes | <span className="e6-status e6-status--no">No</span> |
| TRUNCATE TABLE | — | Yes | <span className="e6-status e6-status--no">No</span> |
| COMMENT ON | — | Yes | <span className="e6-status e6-status--no">No</span> |

## DML

### INSERT

| Capability | Min. DBR | Databricks | e6data |
| - | - | - | - |
| INSERT INTO … VALUES | — | Yes | <span className="e6-status e6-status--yes">Yes</span> |
| INSERT INTO … SELECT | — | Yes | <span className="e6-status e6-status--yes">Yes</span> |
| INSERT with column list | — | Yes | <span className="e6-status e6-status--yes">Yes</span> |
| INSERT … BY NAME | — | Yes | <span className="e6-status e6-status--no">No</span> |
| DEFAULT keyword in VALUES | — | Yes | <span className="e6-status e6-status--no">No</span> |
| INSERT OVERWRITE (full table) | — | Yes | <span className="e6-status e6-status--no">No</span> |
| INSERT OVERWRITE PARTITION (static / dynamic) | — | Yes | <span className="e6-status e6-status--no">No</span> |
| INSERT … REPLACE WHERE | 12.2 LTS | Yes | <span className="e6-status e6-status--no">No</span> |
| INSERT … REPLACE USING | 16.3 | Yes | <span className="e6-status e6-status--no">No</span> |
| INSERT … REPLACE ON | 17.1 | Yes | <span className="e6-status e6-status--no">No</span> |
| INSERT WITH SCHEMA EVOLUTION | — | Yes | <span className="e6-status e6-status--no">No</span> |
| COPY INTO | — | Yes | <span className="e6-status e6-status--no">No</span> |

### UPDATE

| Capability | Min. DBR | Databricks | e6data |
| - | - | - | - |
| UPDATE … WHERE | — | Yes | <span className="e6-status e6-status--yes">Yes</span> |
| ↳ CoW | — | Yes | <span className="e6-status e6-status--yes">Yes</span> |
| ↳ MoR (deletion vectors) | — | Yes | <span className="e6-status e6-status--no">No</span> |
| UPDATE nested struct fields | — | Yes | <span className="e6-status e6-status--partial">Partial</span> |

### DELETE

| Capability | Min. DBR | Databricks | e6data |
| - | - | - | - |
| DELETE … WHERE | — | Yes | <span className="e6-status e6-status--yes">Yes</span> |
| ↳ CoW | — | Yes | <span className="e6-status e6-status--yes">Yes</span> |
| ↳ MoR (deletion vectors) | — | Yes | <span className="e6-status e6-status--no">No</span> |
| DELETE with subquery in WHERE | — | Yes | <span className="e6-status e6-status--yes">Yes</span> |

### MERGE

| Capability | Min. DBR | Databricks | e6data |
| - | - | - | - |
| WHEN MATCHED THEN UPDATE | — | Yes | <span className="e6-status e6-status--yes">Yes</span> |
| ↳ CoW | — | Yes | <span className="e6-status e6-status--yes">Yes</span> |
| ↳ MoR (deletion vectors) | — | Yes | <span className="e6-status e6-status--no">No</span> |
| WHEN MATCHED THEN DELETE | — | Yes | <span className="e6-status e6-status--yes">Yes</span> |
| ↳ CoW | — | Yes | <span className="e6-status e6-status--yes">Yes</span> |
| ↳ MoR (deletion vectors) | — | Yes | <span className="e6-status e6-status--no">No</span> |
| WHEN NOT MATCHED THEN INSERT | — | Yes | <span className="e6-status e6-status--yes">Yes</span> |
| WHEN NOT MATCHED BY SOURCE (UPDATE / DELETE) | — | Yes | <span className="e6-status e6-status--yes">Yes</span> |
| Multiple conditional WHEN clauses | — | Yes | <span className="e6-status e6-status--yes">Yes</span> |
| UPDATE SET \* / INSERT \* | — | Yes | <span className="e6-status e6-status--no">No</span> |
| MERGE WITH SCHEMA EVOLUTION | — | Yes | <span className="e6-status e6-status--no">No</span> |

## Metadata queries and time travel

| Capability | Min. DBR | Databricks | e6data |
| - | - | - | - |
| DESCRIBE HISTORY | — | Yes | <span className="e6-status e6-status--yes">Yes</span> |
| DESCRIBE DETAIL | — | Yes | <span className="e6-status e6-status--yes">Yes</span> |
| DESCRIBE TABLE EXTENDED | — | Yes | <span className="e6-status e6-status--no">No</span> |
| SHOW TBLPROPERTIES | — | Yes | <span className="e6-status e6-status--no">No</span> |
| SHOW CREATE TABLE | — | Yes | <span className="e6-status e6-status--no">No</span> |
| SHOW CATALOGS / SCHEMAS / TABLES / COLUMNS | — | Yes | <span className="e6-status e6-status--partial">Partial</span> |
| information\_schema | — | Yes | <span className="e6-status e6-status--no">No</span> |
| Time travel: VERSION AS OF | — | Yes | <span className="e6-status e6-status--yes">Yes</span> |
| Time travel: TIMESTAMP AS OF | — | Yes | <span className="e6-status e6-status--yes">Yes</span> |
| table\_changes() (CDF read) | — | Yes | <span className="e6-status e6-status--no">No</span> |

## Table maintenance

| Capability | Min. DBR | Databricks | e6data |
| - | - | - | - |
| OPTIMIZE | — | Yes | <span className="e6-status e6-status--no">No</span> |
| OPTIMIZE … ZORDER BY | — | Yes | <span className="e6-status e6-status--no">No</span> |
| VACUUM | — | Yes | <span className="e6-status e6-status--no">No</span> |
| REORG TABLE … APPLY (PURGE) | — | Yes | <span className="e6-status e6-status--no">No</span> |
| RESTORE TABLE (version / timestamp) | — | Yes | <span className="e6-status e6-status--no">No</span> |
| ANALYZE TABLE COMPUTE STATISTICS | — | Yes | <span className="e6-status e6-status--yes">Yes</span> |

## UDFs

| Capability | Min. DBR | Databricks | e6data |
| - | - | - | - |
| SQL scalar UDF (persistent, UC) | — | Yes | <span className="e6-status e6-status--no">No</span> |
| SQL table-valued function | — | Yes | <span className="e6-status e6-status--no">No</span> |
| Python scalar UDF (UC) | — | Yes | <span className="e6-status e6-status--no">No</span> |
| Batch / pandas Python UDF (UC) | — | Yes | <span className="e6-status e6-status--no">No</span> |
| Python UDTF | — | Yes | <span className="e6-status e6-status--no">No</span> |
| Scala / Java UDF, UDAF | — | Yes | <span className="e6-status e6-status--no">No</span> |

## Stored procedures and SQL scripting

| Capability | Min. DBR | Databricks | e6data |
| - | - | - | - |
| CREATE / CALL / DROP PROCEDURE | 17.0 | Yes | <span className="e6-status e6-status--no">No</span> |
| DESCRIBE / SHOW PROCEDURES | 17.0 | Yes | <span className="e6-status e6-status--no">No</span> |
| IN / OUT / INOUT parameters, defaults | 17.0 | Yes | <span className="e6-status e6-status--no">No</span> |
| SQL SECURITY INVOKER / DEFINER | 17.0 | Yes | <span className="e6-status e6-status--no">No</span> |
| SQL scripting (control flow, handlers) | — | Yes | <span className="e6-status e6-status--no">No</span> |
| Nested procedure calls | — | Yes | <span className="e6-status e6-status--no">No</span> |

## Object-level access control

| Capability | Min. DBR | Databricks | e6data native | Inherited from Unity Catalog |
| - | - | - | - | - |
| GRANT / REVOKE on securables | — | Yes | <span className="e6-status e6-status--no">No</span> | <span className="e6-status e6-status--yes">Yes</span> |
| Privilege inheritance (catalog → schema → table) | — | Yes | <span className="e6-status e6-status--no">No</span> | <span className="e6-status e6-status--yes">Yes</span> |
| Dynamic views | — | Yes | <span className="e6-status e6-status--no">No</span> | <span className="e6-status e6-status--no">No</span> |
| Table-level row filters | — | Yes | <span className="e6-status e6-status--no">No</span> | <span className="e6-status e6-status--yes">Yes</span> |
| Table-level column masks | — | Yes | <span className="e6-status e6-status--no">No</span> | <span className="e6-status e6-status--yes">Yes</span> |
| Audit logs | — | Yes | <span className="e6-status e6-status--no">No</span> | <span className="e6-status e6-status--no">No</span> |
| Lineage | — | Yes | <span className="e6-status e6-status--no">No</span> | <span className="e6-status e6-status--no">No</span> |

## Attribute-based access control (ABAC)

Native = access rules defined and enforced inside e6data. Inherited from UC = rules defined in Unity Catalog and enforced by e6data when it queries a UC table.

| Capability | Min. DBR | Databricks | e6data native | Inherited from Unity Catalog |
| - | - | - | - | - |
| Governed tags | — | Yes | <span className="e6-status e6-status--no">No</span> | <span className="e6-status e6-status--yes">Yes</span> |
| Tag-based row filter policies | 16.4 | Yes | <span className="e6-status e6-status--no">No</span> | <span className="e6-status e6-status--yes">Yes</span> |
| Tag-based column mask policies | 16.4 | Yes | <span className="e6-status e6-status--no">No</span> | <span className="e6-status e6-status--no">No</span> |
| Policies scoped at catalog / schema | — | Yes | <span className="e6-status e6-status--no">No</span> | <span className="e6-status e6-status--yes">Yes</span> |
| Auto-apply to newly tagged tables | — | Yes | <span className="e6-status e6-status--no">No</span> | <span className="e6-status e6-status--no">No</span> |
| Automated data classification | — | Yes | <span className="e6-status e6-status--no">No</span> | <span className="e6-status e6-status--no">No</span> |


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.