## D.2. Unsupported Features

The following features defined in SQL:2016 are not implemented in this release of PostgreSQL. In a few cases, equivalent functionality is available.

Identifier | Core? | Description | Comment
--- | --- | --- | ---
B011 |  | Embedded Ada |
B013 |  | Embedded COBOL |
B014 |  | Embedded Fortran |
B015 |  | Embedded MUMPS |
B016 |  | Embedded Pascal |
B017 |  | Embedded PL/I |
B031 |  | Basic dynamic SQL |
B032 |  | Extended dynamic SQL |
B032-01 |  | <describe input statement> |
B033 |  | Untyped SQL-invoked function arguments |
B034 |  | Dynamic specification of cursor attributes |
B035 |  | Non-extended descriptor names |
B041 |  | Extensions to embedded SQL exception declarations |
B051 |  | Enhanced execution rights |
B111 |  | Module language Ada |
B112 |  | Module language C |
B113 |  | Module language COBOL |
B114 |  | Module language Fortran |
B115 |  | Module language MUMPS |
B116 |  | Module language Pascal |
B117 |  | Module language PL/I |
B121 |  | Routine language Ada |
B122 |  | Routine language C |
B123 |  | Routine language COBOL |
B124 |  | Routine language Fortran |
B125 |  | Routine language MUMPS |
B126 |  | Routine language Pascal |
B127 |  | Routine language PL/I |
B128 |  | Routine language SQL |
B200 |  | Polymorphic table functions |
B201 |  | More than one PTF generic table parameter |
B202 |  | PTF Copartitioning |
B203 |  | More than one copartition specification |
B204 |  | PRUNE WHEN EMPTY |
B205 |  | Pass-through columns |
B206 |  | PTF descriptor parameters |
B207 |  | Cross products of partitionings |
B208 |  | PTF component procedure interface |
B209 |  | PTF extended names |
B211 |  | Module language Ada: VARCHAR and NUMERIC support |
B221 |  | Routine language Ada: VARCHAR and NUMERIC support |
F054 |  | TIMESTAMP in DATE type precedence list |
F121 |  | Basic diagnostics management |
F121-01 |  | GET DIAGNOSTICS statement |
F121-02 |  | SET TRANSACTION statement: DIAGNOSTICS SIZE clause |
F122 |  | Enhanced diagnostics management |
F123 |  | All diagnostics |
F263 |  | Comma-separated predicates in simple CASE expression |
F291 |  | UNIQUE predicate |
F301 |  | CORRESPONDING in query expressions |
F312 |  | MERGE statement | consider INSERT ... ON CONFLICT DO UPDATE
F313 |  | Enhanced MERGE statement |
F314 |  | MERGE statement with DELETE branch |
F341 |  | Usage tables | no ROUTINE_*_USAGE tables
F403 |  | Partitioned joined tables |
F404 |  | Range variable for common column names |
F451 |  | Character set definition |
F461 |  | Named character sets |
F492 |  | Optional table constraint enforcement |
F521 |  | Assertions |
F671 |  | Subqueries in CHECK | intentionally omitted
F673 |  | Reads SQL-data routine invocations in CHECK constraints |
F693 |  | SQL-session and client module collations |
F695 |  | Translation support |
F696 |  | Additional translation documentation |
F721 |  | Deferrable constraints | foreign and unique keys only
F741 |  | Referential MATCH types | no partial match yet
F812 | Core | Basic flagging |
F813 |  | Extended flagging |
F821 |  | Local table references |
F831 |  | Full cursor update |
F831-01 |  | Updatable scrollable cursors |
F831-02 |  | Updatable ordered cursors |
F841 |  | LIKE_REGEX predicate |
F842 |  | OCCURRENCES_REGEX function |
F843 |  | POSITION_REGEX function |
F844 |  | SUBSTRING_REGEX function |
F845 |  | TRANSLATE_REGEX function |
F846 |  | Octet support in regular expression operators |
F847 |  | Nonconstant regular expressions |
F866 |  | FETCH FIRST clause: PERCENT option |
R010 |  | Row pattern recognition: FROM clause |
R020 |  | Row pattern recognition: WINDOW clause |
R030 |  | Row pattern recognition: full aggregate support |
S011 | Core | Distinct data types |
S011-01 | Core | USER_DEFINED_TYPES view |
S023 |  | Basic structured types |
S024 |  | Enhanced structured types |
S025 |  | Final structured types |
S026 |  | Self-referencing structured types |
S027 |  | Create method by specific method name |
S028 |  | Permutable UDT options list |
S041 |  | Basic reference types |
S043 |  | Enhanced reference types |
S051 |  | Create table of type | partially supported
S081 |  | Subtables |
S091 |  | Basic array support | partially supported
S091-01 |  | Arrays of built-in data types |
S091-02 |  | Arrays of distinct types |
S091-03 |  | Array expressions |
S094 |  | Arrays of reference types |
S097 |  | Array element assignment |
S151 |  | Type predicate |
S161 |  | Subtype treatment |
S162 |  | Subtype treatment for references |
S202 |  | SQL-invoked routines on multisets |
S231 |  | Structured type locators |
S232 |  | Array locators |
S233 |  | Multiset locators |
S241 |  | Transform functions |
S242 |  | Alter transform statement |
S251 |  | User-defined orderings |
S261 |  | Specific type method |
S271 |  | Basic multiset support |
S272 |  | Multisets of user-defined types |
S274 |  | Multisets of reference types |
S275 |  | Advanced multiset support |
S281 |  | Nested collection types |
S291 |  | Unique constraint on entire row |
S401 |  | Distinct types based on array types |
S402 |  | Distinct types based on distinct types |
S403 |  | ARRAY_MAX_CARDINALITY |
S404 |  | TRIM_ARRAY |
T011 |  | Timestamp in Information Schema |
T021 |  | BINARY and VARBINARY data types |
T022 |  | Advanced support for BINARY and VARBINARY data types |
T023 |  | Compound binary literal |
T024 |  | Spaces in binary literals |
T041 |  | Basic LOB data type support |
T041-01 |  | BLOB data type |
T041-02 |  | CLOB data type |
T041-03 |  | POSITION, LENGTH, LOWER, TRIM, UPPER, and SUBSTRING functions for LOB data types |
T041-04 |  | Concatenation of LOB data types |
T041-05 |  | LOB locator: non-holdable |
T042 |  | Extended LOB data type support |
T043 |  | Multiplier T |
T044 |  | Multiplier P |
T051 |  | Row types |
T053 |  | Explicit aliases for all-fields reference |
T061 |  | UCS support |
T076 |  | DECFLOAT data type |
T101 |  | Enhanced nullability determination |
T111 |  | Updatable joins, unions, and columns |
T175 |  | Generated columns | mostly supported
T176 |  | Sequence generator support | supported except for NEXT VALUE FOR
T180 |  | System-versioned tables |
T181 |  | Application-time period tables |
T211 |  | Basic trigger capability |
T211-06 |  | Support for run-time rules for the interaction of triggers and constraints |
T211-08 |  | Multiple triggers for the same event are executed in the order in which they were created in the catalog | intentionally omitted
T251 |  | SET TRANSACTION statement: LOCAL option |
T272 |  | Enhanced savepoint management |
T301 |  | Functional dependencies | partially supported
T321 | Core | Basic SQL-invoked routines |
T321-05 | Core | RETURN statement |
T322 |  | Declared data type attributes |
T324 |  | Explicit security for SQL routines |
T326 |  | Table functions |
T332 |  | Extended roles | mostly supported
T434 |  | GROUP BY DISTINCT |
T471 |  | Result sets return value |
T472 |  | DESCRIBE CURSOR |
T495 |  | Combined data change and retrieval | different syntax
T502 |  | Period predicates |
T511 |  | Transaction counts |
T522 |  | Default values for IN parameters of SQL-invoked procedures | supported except DEFAULT key word in invocation
T561 |  | Holdable locators |
T571 |  | Array-returning external SQL-invoked functions |
T572 |  | Multiset-returning external SQL-invoked functions |
T601 |  | Local cursor references |
T616 |  | Null treatment option for LEAD and LAG functions |
T618 |  | NTH_VALUE function | function exists, but some options missing
T619 |  | Nested window functions |
T625 |  | LISTAGG |
T641 |  | Multiple column assignment | only some syntax variants supported
T652 |  | SQL-dynamic statements in SQL routines |
T654 |  | SQL-dynamic statements in external routines |
T811 |  | Basic SQL/JSON constructor functions |
T812 |  | SQL/JSON: JSON_OBJECTAGG |
T813 |  | SQL/JSON: JSON_ARRAYAGG with ORDER BY |
T814 |  | Colon in JSON_OBJECT or JSON_OBJECTAGG |
T821 |  | Basic SQL/JSON query operators |
T822 |  | SQL/JSON: IS JSON WITH UNIQUE KEYS predicate |
T823 |  | SQL/JSON: PASSING clause |
T824 |  | JSON_TABLE: specific PLAN clause |
T825 |  | SQL/JSON: ON EMPTY and ON ERROR clauses |
T826 |  | General value expression in ON ERROR or ON EMPTY clauses |
T827 |  | JSON_TABLE: sibling NESTED COLUMNS clauses |
T828 |  | JSON_QUERY |
T829 |  | JSON_QUERY: array wrapper options |
T830 |  | Enforcing unique keys in SQL/JSON constructor functions |
T838 |  | JSON_TABLE: PLAN DEFAULT clause |
T839 |  | Formatted cast of datetimes to/from character strings |
M001 |  | Datalinks |
M002 |  | Datalinks via SQL/CLI |
M003 |  | Datalinks via Embedded SQL |
M004 |  | Foreign data support | partially supported
M005 |  | Foreign schema support |
M006 |  | GetSQLString routine |
M007 |  | TransmitRequest |
M009 |  | GetOpts and GetStatistics routines |
M010 |  | Foreign data wrapper support | different API
M011 |  | Datalinks via Ada |
M012 |  | Datalinks via C |
M013 |  | Datalinks via COBOL |
M014 |  | Datalinks via Fortran |
M015 |  | Datalinks via M |
M016 |  | Datalinks via Pascal |
M017 |  | Datalinks via PL/I |
M018 |  | Foreign data wrapper interface routines in Ada |
M019 |  | Foreign data wrapper interface routines in C | different API
M020 |  | Foreign data wrapper interface routines in COBOL |
M021 |  | Foreign data wrapper interface routines in Fortran |
M022 |  | Foreign data wrapper interface routines in MUMPS |
M023 |  | Foreign data wrapper interface routines in Pascal |
M024 |  | Foreign data wrapper interface routines in PL/I |
M030 |  | SQL-server foreign data support |
M031 |  | Foreign data wrapper general routines |
X012 |  | Multisets of XML type |
X013 |  | Distinct types of XML type |
X015 |  | Fields of XML type |
X025 |  | XMLCast |
X030 |  | XMLDocument |
X038 |  | XMLText |
X065 |  | XMLParse: BLOB input and CONTENT option |
X066 |  | XMLParse: BLOB input and DOCUMENT option |
X068 |  | XMLSerialize: BOM |
X069 |  | XMLSerialize: INDENT |
X073 |  | XMLSerialize: BLOB serialization and CONTENT option |
X074 |  | XMLSerialize: BLOB serialization and DOCUMENT option |
X075 |  | XMLSerialize: BLOB serialization |
X076 |  | XMLSerialize: VERSION |
X077 |  | XMLSerialize: explicit ENCODING option |
X078 |  | XMLSerialize: explicit XML declaration |
X080 |  | Namespaces in XML publishing |
X081 |  | Query-level XML namespace declarations |
X082 |  | XML namespace declarations in DML |
X083 |  | XML namespace declarations in DDL |
X084 |  | XML namespace declarations in compound statements |
X085 |  | Predefined namespace prefixes |
X086 |  | XML namespace declarations in XMLTable |
X091 |  | XML content predicate |
X096 |  | XMLExists | XPath 1.0 only
X100 |  | Host language support for XML: CONTENT option |
X101 |  | Host language support for XML: DOCUMENT option |
X110 |  | Host language support for XML: VARCHAR mapping |
X111 |  | Host language support for XML: CLOB mapping |
X112 |  | Host language support for XML: BLOB mapping |
X113 |  | Host language support for XML: STRIP WHITESPACE option |
X114 |  | Host language support for XML: PRESERVE WHITESPACE option |
X131 |  | Query-level XMLBINARY clause |
X132 |  | XMLBINARY clause in DML |
X133 |  | XMLBINARY clause in DDL |
X134 |  | XMLBINARY clause in compound statements |
X135 |  | XMLBINARY clause in subqueries |
X141 |  | IS VALID predicate: data-driven case |
X142 |  | IS VALID predicate: ACCORDING TO clause |
X143 |  | IS VALID predicate: ELEMENT clause |
X144 |  | IS VALID predicate: schema location |
X145 |  | IS VALID predicate outside check constraints |
X151 |  | IS VALID predicate with DOCUMENT option |
X152 |  | IS VALID predicate with CONTENT option |
X153 |  | IS VALID predicate with SEQUENCE option |
X155 |  | IS VALID predicate: NAMESPACE without ELEMENT clause |
X157 |  | IS VALID predicate: NO NAMESPACE with ELEMENT clause |
X160 |  | Basic Information Schema for registered XML Schemas |
X161 |  | Advanced Information Schema for registered XML Schemas |
X170 |  | XML null handling options |
X171 |  | NIL ON NO CONTENT option |
X181 |  | XML(DOCUMENT(UNTYPED)) type |
X182 |  | XML(DOCUMENT(ANY)) type |
X190 |  | XML(SEQUENCE) type |
X191 |  | XML(DOCUMENT(XMLSCHEMA)) type |
X192 |  | XML(CONTENT(XMLSCHEMA)) type |
X200 |  | XMLQuery |
X201 |  | XMLQuery: RETURNING CONTENT |
X202 |  | XMLQuery: RETURNING SEQUENCE |
X203 |  | XMLQuery: passing a context item |
X204 |  | XMLQuery: initializing an XQuery variable |
X205 |  | XMLQuery: EMPTY ON EMPTY option |
X206 |  | XMLQuery: NULL ON EMPTY option |
X211 |  | XML 1.1 support |
X222 |  | XML passing mechanism BY REF | parser accepts BY REF but ignores it; passing is always BY VALUE
X231 |  | XML(CONTENT(UNTYPED)) type |
X232 |  | XML(CONTENT(ANY)) type |
X241 |  | RETURNING CONTENT in XML publishing |
X242 |  | RETURNING SEQUENCE in XML publishing |
X251 |  | Persistent XML values of XML(DOCUMENT(UNTYPED)) type |
X252 |  | Persistent XML values of XML(DOCUMENT(ANY)) type |
X253 |  | Persistent XML values of XML(CONTENT(UNTYPED)) type |
X254 |  | Persistent XML values of XML(CONTENT(ANY)) type |
X255 |  | Persistent XML values of XML(SEQUENCE) type |
X256 |  | Persistent XML values of XML(DOCUMENT(XMLSCHEMA)) type |
X257 |  | Persistent XML values of XML(CONTENT(XMLSCHEMA)) type |
X260 |  | XML type: ELEMENT clause |
X261 |  | XML type: NAMESPACE without ELEMENT clause |
X263 |  | XML type: NO NAMESPACE with ELEMENT clause |
X264 |  | XML type: schema location |
X271 |  | XMLValidate: data-driven case |
X272 |  | XMLValidate: ACCORDING TO clause |
X273 |  | XMLValidate: ELEMENT clause |
X274 |  | XMLValidate: schema location |
X281 |  | XMLValidate with DOCUMENT option |
X282 |  | XMLValidate with CONTENT option |
X283 |  | XMLValidate with SEQUENCE option |
X284 |  | XMLValidate: NAMESPACE without ELEMENT clause |
X286 |  | XMLValidate: NO NAMESPACE with ELEMENT clause |
X300 |  | XMLTable | XPath 1.0 only
X305 |  | XMLTable: initializing an XQuery variable |