| 14 | 13 | 12 | 11 | 10 | 9.6 | 9.5 | 9.4 | 9.3 | 9.2 | 9.1 | 9.0 | 8.4 | 8.3 | 8.2 | 8.1 |
64-bit large objects | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | No | No | No | No | No | No | No |
Advisory locks | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | No |
Autovacuum enabled by default | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | No | No |
Custom background workers | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | No | No | No | No | No | No | No |
Disk based FSM | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | No | No | No |
Dollar Quoting | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
Dynamic Background Workers | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | No | No | No | No | No | No | No | No |
EXPLAIN (BUFFERS) support | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | No | No | No | No |
EXPLAIN (WAL) support | Yes | Yes | No | No | No | No | No | No | No | No | No | No | No | No | No | No |
Holdable cursors | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
Inserted data can trigger autovacuum | Yes | Yes | No | No | No | No | No | No | No | No | No | No | No | No | No | No |
Integrated autovacuum daemon | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
Loadable plugin infrastructure for monitoring the planner | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | No | No |
Multiple autovacuum workers | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | No | No |
Named restore points | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | No | No | No | No | No |
Parallelized VACUUM for Indexes | Yes | Yes | No | No | No | No | No | No | No | No | No | No | No | No | No | No |
Parallel vacuumdb jobs | Yes | Yes | Yes | Yes | Yes | Yes | Yes | No | No | No | No | No | No | No | No | No |
Payload support for LISTEN/NOTIFY | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | No | No | No | No |
Prefix support for text search synonym dictionary | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | No | No | No | No |
Savepoints | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
Serializable Snapshot Isolation | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | No | No | No | No | No |
SQLDA support for ECPG | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | No | No | No | No |
SQL-standard information schema | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
Support for anonymous shared memory | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | No | No | No | No | No | No | No |
Two Phase commit | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
unnest/array_agg | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | No | No | No |
Updateable cursors | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | No | No |
Vacuum "emergency mode" | Yes | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No |
Version aware psql | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | No | No | No |
Visibility Map for Vacuuming | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | No | No | No |
XML, JSON and YAML output for EXPLAIN | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | No | No | No | No |
| 14 | 13 | 12 | 11 | 10 | 9.6 | 9.5 | 9.4 | 9.3 | 9.2 | 9.1 | 9.0 | 8.4 | 8.3 | 8.2 | 8.1 |
Block-range (BRIN) indexes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | No | No | No | No | No | No | No | No | No |
B-tree bottom-up index deletion | Yes | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No |
B-tree deduplication | Yes | Yes | No | No | No | No | No | No | No | No | No | No | No | No | No | No |
Concurrent GiST indexes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
Covering Indexes for B-trees (INCLUDE) | Yes | Yes | Yes | Yes | No | No | No | No | No | No | No | No | No | No | No | No |
Covering indexes for GiST (INCLUDE) | Yes | Yes | Yes | No | No | No | No | No | No | No | No | No | No | No | No | No |
Deferrable unique constraints | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | No | No | No | No |
Exclusion constraints | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | No | No | No | No |
GIN (Generalized Inverted Index) Indexes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | No |
GIN indexes partial match | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | No | No | No |
GIN Index performance and size improvements | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | No | No | No | No | No | No | No | No |
GiST (Generalized Search Tree) Indexes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
Indexes on expressions | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
Index-only scans | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | No | No | No | No | No | No |
Index-only scans on GiST | Yes | Yes | Yes | Yes | Yes | Yes | Yes | No | No | No | No | No | No | No | No | No |
Index support for IS NULL | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | No | No |
In-memory Bitmap Indexes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
K-nearest neighbor SP-GiST Support | Yes | Yes | Yes | No | No | No | No | No | No | No | No | No | No | No | No | No |
Non-blocking CREATE INDEX | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | No |
Parallel B-tree index scans | Yes | Yes | Yes | Yes | Yes | No | No | No | No | No | No | No | No | No | No | No |
Parallelized CREATE INDEX for B-tree indexes | Yes | Yes | Yes | Yes | No | No | No | No | No | No | No | No | No | No | No | No |
Space-Partitioned GiST (SP-GiST) Indexes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | No | No | No | No | No | No |
SP-GiST indexes for range types | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | No | No | No | No | No | No | No |
WAL support for hash indexes | Yes | Yes | Yes | Yes | Yes | No | No | No | No | No | No | No | No | No | No | No |
| 14 | 13 | 12 | 11 | 10 | 9.6 | 9.5 | 9.4 | 9.3 | 9.2 | 9.1 | 9.0 | 8.4 | 8.3 | 8.2 | 8.1 |
FETCH FIRST .. WITH TIES | Yes | Yes | No | No | No | No | No | No | No | No | No | No | No | No | No | No |
GROUPING SETS, CUBE and ROLLUP support | Yes | Yes | Yes | Yes | Yes | Yes | Yes | No | No | No | No | No | No | No | No | No |
INSERT/UPDATE/DELETE RETURNING | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | No |
LATERAL clause | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | No | No | No | No | No | No | No |
Multirow VALUES | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | No |
ORDER BY NULLS FIRST/LAST | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | No | No |
Recursive Queries | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | No | No | No |
Row-wise comparison | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | No |
SELECT FOR NO KEY UPDATE/SELECT FOR KEY SHARE lock modes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | No | No | No | No | No | No | No |
SQL/JSON path expressions | Yes | Yes | Yes | No | No | No | No | No | No | No | No | No | No | No | No | No |
SQL standard interval handling | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | No | No | No |
TABLE statement | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | No | No | No |
Upsert (INSERT ... ON CONFLICT DO ...) | Yes | Yes | Yes | Yes | Yes | Yes | Yes | No | No | No | No | No | No | No | No | No |
Window functions | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | No | No | No |
WITHIN GROUP clause | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | No | No | No | No | No | No | No | No |
WITH ORDINALITY clause | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | No | No | No | No | No | No | No | No |
WITH Queries (Common Table Expressions) | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | No | No | No |
Writable WITH Queries (Common Table Expressions) | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | No | No | No | No | No |
| 14 | 13 | 12 | 11 | 10 | 9.6 | 9.5 | 9.4 | 9.3 | 9.2 | 9.1 | 9.0 | 8.4 | 8.3 | 8.2 | 8.1 |
Abbreviated Keys | Yes | Yes | Yes | Yes | Yes | Yes | Yes | No | No | No | No | No | No | No | No | No |
Accelerated partition pruning | Yes | Yes | Yes | No | No | No | No | No | No | No | No | No | No | No | No | No |
Asynchronous Commit | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | No | No |
Automatic plan invalidation | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | No | No |
Background Checkpointer | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | No | No | No | No | No | No |
Background Writer | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
Base backup throttling | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | No | No | No | No | No | No | No | No |
CREATE STATISTICS - most-common values (MCV) statistics | Yes | Yes | Yes | No | No | No | No | No | No | No | No | No | No | No | No | No |
CREATE STATISTICS - multicolumn | Yes | Yes | Yes | Yes | Yes | No | No | No | No | No | No | No | No | No | No | No |
CREATE STATISTICS - "OR" and "IN/ANY" statistics | Yes | Yes | No | No | No | No | No | No | No | No | No | No | No | No | No | No |
Cross datatype hashing support | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | No | No |
Distributed checkpointing | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | No | No |
Foreign keys marked as NOT VALID | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | No | No | No | No | No |
Frozen page map | Yes | Yes | Yes | Yes | Yes | Yes | No | No | No | No | No | No | No | No | No | No |
Full Text Search | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | No | No |
Hash aggregation can use disk | Yes | Yes | No | No | No | No | No | No | No | No | No | No | No | No | No | No |
Hashing support for DISTINCT/UNION/INTERSECT/EXCEPT | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | No | No | No |
Hashing support for FULL OUTER JOIN, LEFT OUTER JOIN and RIGHT OUTER JOIN | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | No | No | No | No | No |
Heap Only Tuples (HOT) | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | No | No |
Incremental sort | Yes | Yes | No | No | No | No | No | No | No | No | No | No | No | No | No | No |
Incremental sort for window functions | Yes | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No |
Inlined WITH Queries (Common Table Expressions) | Yes | Yes | Yes | No | No | No | No | No | No | No | No | No | No | No | No | No |
Inlining of SQL-functions | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
Just-in-Time (JIT) compilation for expression evaluation and tuple deforming | Yes | Yes | Yes | Yes | No | No | No | No | No | No | No | No | No | No | No | No |
K-nearest neighbor GiST support | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | No | No | No | No | No |
LZ4 compression for TOAST tables | Yes | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No |
Multi-core scalability for read-only workloads | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | No | No | No | No | No | No |
Multiple temporary tablespaces | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | No | No |
Outer Join reordering | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | No |
Parallel bitmap heap scans | Yes | Yes | Yes | Yes | Yes | No | No | No | No | No | No | No | No | No | No | No |
Parallel full table scans (sequential scans) | Yes | Yes | Yes | Yes | Yes | Yes | No | No | No | No | No | No | No | No | No | No |
Parallel hash joins | Yes | Yes | Yes | Yes | No | No | No | No | No | No | No | No | No | No | No | No |
Parallel JOIN, aggregate | Yes | Yes | Yes | Yes | Yes | Yes | No | No | No | No | No | No | No | No | No | No |
Parallel merge joins | Yes | Yes | Yes | Yes | Yes | No | No | No | No | No | No | No | No | No | No | No |
Parallel query | Yes | Yes | Yes | Yes | Yes | Yes | No | No | No | No | No | No | No | No | No | No |
Parallel restore | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | No | No | No |
Partial sort capability (top-n sorting) | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | No | No |
Partition pruning during query execution | Yes | Yes | Yes | Yes | No | No | No | No | No | No | No | No | No | No | No | No |
pg_prewarm | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | No | No | No | No | No | No | No | No |
Query pipelining | Yes | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No |
Reduced lock levels for ALTER TABLE commands | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | No | No | No | No | No | No | No | No |
SELECT ... FOR UPDATE/SHARE NOWAIT | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
Set costs specific to TABLESPACEs | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | No | No | No | No |
Shared row level locking | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
SKIP LOCKED clause | Yes | Yes | Yes | Yes | Yes | Yes | Yes | No | No | No | No | No | No | No | No | No |
Synchronized sequential scanning | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | No | No |
TABLESAMPLE clause | Yes | Yes | Yes | Yes | Yes | Yes | Yes | No | No | No | No | No | No | No | No | No |
Tablespaces | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
Unlogged tables | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | No | No | No | No | No |
WAL Buffer auto-tuning | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | No | No | No | No | No |
| 14 | 13 | 12 | 11 | 10 | 9.6 | 9.5 | 9.4 | 9.3 | 9.2 | 9.1 | 9.0 | 8.4 | 8.3 | 8.2 | 8.1 |
Cascading streaming replication | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | No | No | No | No | No | No |
Checksum on data pages | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | No | No | No | No | No | No | No |
Configure max WAL retention for replication slots | Yes | Yes | No | No | No | No | No | No | No | No | No | No | No | No | No | No |
Enable/Disable page checksums in an offline cluster | Yes | Yes | Yes | No | No | No | No | No | No | No | No | No | No | No | No | No |
Generic WAL facility | Yes | Yes | Yes | Yes | Yes | Yes | No | No | No | No | No | No | No | No | No | No |
Hot Standby | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | No | No | No | No |
Logical Replication | Yes | Yes | Yes | Yes | Yes | No | No | No | No | No | No | No | No | No | No | No |
Logical replication stream in-progress transactions | Yes | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No |
min_wal_size / max_wal_size | Yes | Yes | Yes | Yes | Yes | Yes | Yes | No | No | No | No | No | No | No | No | No |
Multiple synchronous standbys | Yes | Yes | Yes | Yes | Yes | Yes | No | No | No | No | No | No | No | No | No | No |
Parallel pg_dump | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | No | No | No | No | No | No | No |
pg_basebackup tool | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | No | No | No | No | No |
pg_receivewal (formerly pg_receivexlog) | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | No | No | No | No | No | No |
Point-in-Time Recovery | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
Quorum commit for synchronous replication | Yes | Yes | Yes | Yes | Yes | No | No | No | No | No | No | No | No | No | No | No |
remote_apply mode | Yes | Yes | Yes | Yes | Yes | Yes | No | No | No | No | No | No | No | No | No | No |
Replication Slots | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | No | No | No | No | No | No | No | No |
Streaming-only cascading replication | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | No | No | No | No | No | No | No |
Streaming Replication | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | No | No | No | No |
Synchronous replication | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | No | No | No | No | No |
Time-delayed Standbys | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | No | No | No | No | No | No | No | No |
Verify backup integrity (pg_verifybackup) | Yes | Yes | No | No | No | No | No | No | No | No | No | No | No | No | No | No |
Warm Standby | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | No |
| 14 | 13 | 12 | 11 | 10 | 9.6 | 9.5 | 9.4 | 9.3 | 9.2 | 9.1 | 9.0 | 8.4 | 8.3 | 8.2 | 8.1 |
Channel binding for SCRAM authentication | Yes | Yes | Yes | Yes | No | No | No | No | No | No | No | No | No | No | No | No |
Client can require SCRAM channel binding | Yes | Yes | No | No | No | No | No | No | No | No | No | No | No | No | No | No |
Column level permissions | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | No | No | No |
Default permissions | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | No | No | No | No |
GRANT/REVOKE ON ALL TABLES/SEQUENCES/FUNCTIONS | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | No | No | No | No |
GSSAPI client and server-side encryption | Yes | Yes | Yes | No | No | No | No | No | No | No | No | No | No | No | No | No |
GSSAPI support | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | No | No |
krb5 authentication (without gssapi) | Obsolete | Obsolete | Obsolete | Obsolete | Obsolete | Obsolete | Obsolete | Obsolete | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
Large object access controls | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | No | No | No | No |
LDAP server discovery | Yes | Yes | Yes | No | No | No | No | No | No | No | No | No | No | No | No | No |
Multifactor authentication via valid client SSL/TLS certificate | Yes | Yes | Yes | No | No | No | No | No | No | No | No | No | No | No | No | No |
Native LDAP authentication | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | No |
Native RADIUS authentication | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | No | No | No | No |
Per user/database connection limits | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
ROLES | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
Row-Level Security | Yes | Yes | Yes | Yes | Yes | Yes | Yes | No | No | No | No | No | No | No | No | No |
SCRAM-SHA-256 Authentication | Yes | Yes | Yes | Yes | Yes | No | No | No | No | No | No | No | No | No | No | No |
Search+bind mode operation for LDAP authentication | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | No | No | No | No |
security_barrier option on views | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | No | No | No | No | No | No |
Security Service Provider Interface (SSPI) | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | No | No |
SSL certificate validation in libpq | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | No | No | No |
SSL client certificate authentication | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | No | No | No |
SSPI authentication via GSSAPI | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | No | No | No | No | No |
| 14 | 13 | 12 | 11 | 10 | 9.6 | 9.5 | 9.4 | 9.3 | 9.2 | 9.1 | 9.0 | 8.4 | 8.3 | 8.2 | 8.1 |
ALTER TABLE ENABLE/DISABLE TRIGGER | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
ALTER TABLE / ENABLE REPLICA TRIGGER/RULE | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | No | No |
CALL syntax for executing procedures | Yes | Yes | Yes | Yes | No | No | No | No | No | No | No | No | No | No | No | No |
Column level triggers | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | No | No | No | No |
CREATE PROCEDURE syntax for SQL stored procedures | Yes | Yes | Yes | Yes | No | No | No | No | No | No | No | No | No | No | No | No |
Event triggers | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | No | No | No | No | No | No | No |
FILTER clause for aggregate functions | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | No | No | No | No | No | No | No | No |
ORDER BY support within aggregates | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | No | No | No | No |
Per function GUC settings | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | No | No |
Per function statistics | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | No | No | No |
RETURN QUERY EXECUTE | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | No | No | No |
RETURNS TABLE | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | No | No | No |
Statement level triggers | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
Statement level TRUNCATE triggers | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | No | No | No |
Triggers on views | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | No | No | No | No | No |
Variadic functions | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | No | No | No |
WHEN clause for CREATE TRIGGER | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | No | No | No | No |
| 14 | 13 | 12 | 11 | 10 | 9.6 | 9.5 | 9.4 | 9.3 | 9.2 | 9.1 | 9.0 | 8.4 | 8.3 | 8.2 | 8.1 |
CASE in pl/pgsql | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | No | No | No |
CONTINUE statement for PL/pgSQL | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
CREATE TRANSFORM | Yes | Yes | Yes | Yes | Yes | Yes | Yes | No | No | No | No | No | No | No | No | No |
DO statement for pl/perl | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | No | No | No | No |
DO statement for pl/pgsql | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | No | No | No | No |
EXCEPTION support in PL/pgSQL | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
EXECUTE USING in PL/pgSQL | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | No | No | No |
FOREACH IN ARRAY in pl/pgsql | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | No | No | No | No | No |
IN/OUT/INOUT parameters for pl/pgsql and PL/SQL | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
Named parameters | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
Non-superuser language creation | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | No | No |
pl/pgsql installed by default | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | No | No | No | No |
Polymorphic functions | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
Python 3 support for pl/python | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | No | No | No | No |
Qualified function parameters | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | No | No |
Query parallelism for RETURN QUERY | Yes | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No |
RETURN QUERY in pl/pgsql | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | No | No |
ROWS and COST specification for functions | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | No | No |
Scrollable and updatable cursor support for pl/pgsql | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | No | No |
SQLERRM/SQLSTATE for pl/pgsql | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
Unicode object support in PL/python | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | No | No | No | No |
User defined exceptions | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | No | No | No |
Validator function for pl/perl | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes |