Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

SQL at a glance

A scannable answer to “is X supported?”. Every row points at the detailed SQL Reference page that carries the dialect-comparison columns and the source line. This page is the index, not the authority. When a row and a reference page disagree, the reference page wins.

Statements

DDL

StatementSupportedPage
CREATE SCHEMA / DROP SCHEMA / ALTER SCHEMA RENAMEyesDDL
CREATE TABLE (cols) with V3 column defaultsyesDDL
CREATE TABLE ... PARTITIONED BY (transform(col))yes (bucket, truncate, year, month, day, hour, identity)DDL
CREATE TABLE AS SELECT / CREATE OR REPLACE TABLE AS SELECTyesDDL
CREATE TABLE LIKEyes (schema only)DDL
ALTER TABLE ADD/DROP/RENAME COLUMN, nullability, type promotionyesDDL
ALTER TABLE RENAME TO, SET TBLPROPERTIES, COMMENT ONyesDDL
Partition evolution (ADD/DROP/REPLACE PARTITION FIELD)yesDDL
Branches and tags (CREATE/DROP BRANCH, CREATE/DROP TAG)yesDDL
CREATE [OR REPLACE] VIEWyesDDL

DML

StatementSupportedPage
SELECT with WHERE / GROUP BY / HAVING / ORDER BY / LIMITyesDML
WITH and WITH RECURSIVE CTEsyesDML
SELECT * EXCLUDE / SELECT * REPLACEyesDML
Joins (INNER/LEFT/RIGHT/FULL, SEMI/ANTI, USING, LATERAL)yesDML
TABLESAMPLE BERNOULLIyesDML
Time travel (FOR VERSION AS OF, FOR SYSTEM_TIME AS OF, FOR INCREMENTAL BETWEEN)yesDML
INSERT INTO ... VALUES / INSERT INTO ... SELECT / INSERT OVERWRITEyesDML
UPDATE ... SET ... WHERE (CoW or MoR)yesDML
DELETE FROM ... WHERE, TRUNCATE TABLE (CoW or MoR)yesDML
MERGE INTO ... WHEN MATCHED / NOT MATCHEDyesDML
COPY (...) TO 'path' (FORMAT ...)yesDML

Copy-on-Write is the default for UPDATE / DELETE / MERGE. Set write.delete.mode = 'merge-on-read' (and the update / merge siblings) per table to switch.

CALL procedures

ProcedureSupportedPage
system.rewrite_data_filesyesCALL procedures
system.expire_snapshotsyesCALL procedures
system.remove_orphan_filesyesCALL procedures
system.rewrite_manifestsyesCALL procedures
system.suggest_bloom_filter_columnsyes (SQE-specific)CALL procedures
rewrite_position_deletes, cherrypick_snapshot, expire_snapshots_by_idnot exposedCALL procedures

SHOW and EXPLAIN

StatementSupportedPage
SHOW CATALOGS / SCHEMAS / TABLES / VIEWS / COLUMNSyesSHOW and EXPLAIN
SHOW CREATE TABLE, SHOW STATS, DESCRIBEyesSHOW and EXPLAIN
EXPLAIN, EXPLAIN ANALYZE, EXPLAIN FULLyes (FULL is SQE-specific)SHOW and EXPLAIN
information_schema.tables / columns / schemata / viewsyesSHOW and EXPLAIN

GRANT, REVOKE, and policy

The security SQL surface parses today. The active enforcer is passthrough by default, so the masks and filters below are a documented surface rather than a live control out of the box. See Limitations.

StatementSupportedPage
GRANT / REVOKE (SQL standard)yes (parsed)GRANT and REVOKE
GRANT ... MASKED WITH (column masks)parsed; enforcement off by defaultGRANT and REVOKE
GRANT ... ROWS WHERE (row filters)parsed; enforcement off by defaultGRANT and REVOKE
SHOW GRANTS, SHOW EFFECTIVE GRANTS, CHECK ACCESSyes (SQE-specific)GRANT and REVOKE
WITH GRANT OPTION, column-level INSERT grants, aggregate masksnot supportedGRANT and REVOKE

Functions

Function names are case-insensitive. SQE registers DataFusion built-ins plus a Trino-compatibility layer (Trino-named aliases for things DataFusion calls differently). Each page lists the Trino, Snowflake, Spark SQL, and DuckDB equivalents per function.

FamilyNotable supportedPage
Conditional / nullif, iff, case, coalesce, nullif, greatest, least, nvl, nvl2, typeof, tryConditional
Stringconcat, substring, trim, lower, upper, regex, split, format, normalisationString
Mathtrig, rounding, logs, exponents, sign, modular, base conversionMath
Date / timeconstruction, extraction, formatting, parsing, arithmetic, time zones; Trino year() / month() / day_of_week()Date and time
Array / map / struct40+ nested functions plus map_agg, histogramArray, map, struct
JSONtwo surfaces: Trino-named (json_extract, json_parse) and the json_get_* familyJSON
Encoding / hashing / URLbase64, hex, md5, sha224..512, url_extract_*, url_encode, url_decodeEncoding, URL
Aggregatecount, sum, avg, statistical, regression, array_agg, string_agg / listagg, histogram, map_agg, approximationAggregate
Windowrow_number, rank, lag, lead, first_value, frames (ROWS/RANGE/GROUPS BETWEEN)Window

Table-valued functions

FunctionPurposePage
read_parquet, read_csv, read_json, read_deltaRead external files (local, S3, HTTPS, hf://)Table-valued functions
SELECT * FROM 'file.ext'Quoted-string auto-detect by extensionTable-valued functions
table_snapshots, table_history, table_files, table_manifests, table_partitions, table_refsIceberg metadataTable-valued functions
generate_series, range, unnestGeneratorsTable-valued functions

Intentionally not in SQE

These are absent on purpose. The reasoning lives on the SQL Reference overview.

ConstructWhy it is out
PIVOT, UNPIVOT, QUALIFY, ASOF JOIN, FROM-first syntaxDataFusion’s parser does not accept them. Tracked upstream.
Lambda expressions, list comprehensionsNo AST node for closures in DataFusion.
Oracle / Snowflake DECODEName collides with DataFusion’s decode(input, encoding). Use CASE WHEN.
IIF (T-SQL)Covered by if and iff, both registered.
postgres_table_scanner, mysql_table_scanner, sqlite_scannerOut of scope. SQE is Iceberg-first.
spatial, vss, fts, excelNiche. Use a tool built for the job.