SQL standards & PostgreSQL conformance
Every ISO/IEC 9075 (SQL) feature, cross-referenced with which PostgreSQL release supports it — from 9.1 to 18 — with the syntax/implementation notes PostgreSQL records, what each release added, and what is still unimplemented.
About the data. The ISO/IEC 9075 standard text itself is copyrighted
and is not redistributed here. What this page archives and cross-references
is PostgreSQL's own machine-readable conformance assessment
(src/backend/catalog/sql_features.txt, exposed live as
information_schema.sql_features), read at each release tag of the
postgres git history. Feature IDs
(F031, T611, T821 …) and names are the
standard's; the supported? judgement and the comments are
PostgreSQL's. Rebuilt from the git history, so it tracks new releases
automatically.
Support by PostgreSQL version
How many of the standard's catalogued features each release implements, and how many it added over its predecessor:
| PostgreSQL | SQL features supported | Added vs previous |
|---|---|---|
| 9.1 | 184 | — |
| 9.2 | 187 | +4 |
| 9.3 | 189 | +2 |
| 9.4 | 191 | +2 |
| 9.5 | 197 | +6 |
| 9.6 | 197 | — |
| 10 | 210 | +13 |
| 11 | 212 | +2 |
| 12 | 225 | +14 |
| 13 | 234 | +9 |
| 14 | 239 | +6 |
| 15 | 244 | +5 |
| 16 | 297 | +53 |
| 17 | 319 | +22 |
| 18 | 320 | +1 |
What each recent release added
The SQL-standard features that became supported in each version (the “different” side — new syntax and implementation):
- 12 → 13 +9
E182Module language,F181Multiple module support,F311Schema definition statement,F385Drop column generation expression clause,F394Optional normal form specification,F867FETCH FIRST clause: WITH TIES option,T612Advanced OLAP operations,T653SQL-schema statements in external routines … and 1 more- 13 → 14 +6
F341Usage tables,F404Range variable for common column names,S404TRIM_ARRAY,T133Enhanced cycle mark values,T332Extended roles,T434GROUP BY DISTINCT- 14 → 15 +5
B128Routine language SQL,F292UNIQUE null treatment,F312MERGE statement,F313Enhanced MERGE statement,F314MERGE statement with DELETE branch- 15 → 16 +53
F035REVOKE with CASCADE,F036REVOKE statement performed by non-owner,F037REVOKE statement: GRANT OPTION FOR clause,F038REVOKE of a WITH GRANT OPTION privilege,F112Isolation level READ UNCOMMITTED,F113Isolation level READ COMMITTED,F114Isolation level REPEATABLE READ,F303INTERSECT DISTINCT table operator … and 45 more- 16 → 17 +22
T821Basic SQL/JSON query operators,T823SQL/JSON: PASSING clause,T825SQL/JSON: ON EMPTY and ON ERROR clauses,T826General value expression in ON ERROR or ON EMPTY clauses,T827JSON_TABLE: sibling NESTED COLUMNS clauses,T828JSON_QUERY,T829JSON_QUERY: array wrapper options,T865SQL/JSON item method: bigint() … and 14 more- 17 → 18 +1
F492Optional table constraint enforcement
The two big recent jumps: 16 filled 53 gaps (isolation-level and
REVOKE conformance, set-operator spellings, and more), and
17 landed the SQL/JSON query operators
(JSON_TABLE, JSON_QUERY, JSON_EXISTS,
JSON_VALUE) from SQL:2016.
Coverage by feature area
Where PostgreSQL 18 is complete and where the standard has features it does not implement (the “same vs different” at a glance). Core SQL (the mandatory features every conforming implementation must have) is fully supported; Datalink and SQL-standard row types are intentionally unimplemented; SQL/XML and the structured user-defined types are partial.
| Feature area | Supported in 18 | Total in standard |
|---|---|---|
| Additional features | 115 | 185 |
| Core SQL (optional features) | 121 | 155 |
| XML (SQL/XML) | 48 | 137 |
| User-defined types / structured | 14 | 49 |
| Binding / embedded SQL | 3 | 44 |
| Datalink / foreign data | 0 | 25 |
| Core SQL (mandatory) | 19 | 19 |
| Row types | 0 | 3 |
Full feature matrix
Search by feature id, name, or area; filter to a version. “Y” = supported, “·” = not supported, in that release. Needs JavaScript; the summaries above do not.
Use this data
- The raw matrix is at
/sql-conformance.json(CC0 to the extent our compilation is protectable; the underlying feature list is PostgreSQL's). - Live, per your own server:
SELECT * FROM information_schema.sql_features; - Trace any feature to the commit that implemented it: search the feature name or id on /search, or
git_searchvia the MCP server. - PostgreSQL's prose conformance appendix: Appendix D, SQL Conformance.