# PostgreSQL Feature Matrix

|  16  |  15  |  14  |  13  |  12  |  11   
---|---|---|---|---|---|---  
64-bit large objects  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes   
Advisory locks  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes   
Custom background workers  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes   
Disk based FSM  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes   
Dynamic Background Workers  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes   
EXPLAIN (BUFFERS) support  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes   
EXPLAIN (WAL) support  |  Yes  |  Yes  |  Yes  |  Yes  |  No  |  No   
"jsonlog" logging format  |  Yes  |  Yes  |  No  |  No  |  No  |  No   
Loadable plugin infrastructure for monitoring the planner  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes   
Payload support for LISTEN/NOTIFY  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes   
pg_stat_io - I/O metrics view  |  Yes  |  No  |  No  |  No  |  No  |  No   
Server statistics in shared memory  |  Yes  |  Yes  |  No  |  No  |  No  |  No   
SQL-standard information schema  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes   
Support for anonymous shared memory  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes   
XML, JSON and YAML output for EXPLAIN  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes   
|  |  |  |  |  |   
The Postgres Backend (Server) |  16  |  15  |  14  |  13  |  12  |  11   
---|---|---|---|---|---|---  
Arrays of compound types  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes   
Array support  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes   
ENUM data type  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes   
GUID/UUID data type  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes   
macaddr8 data type  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes   
Multiranges  |  Yes  |  Yes  |  Yes  |  No  |  No  |  No   
NULLs in Array  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes   
Phrase search  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes   
Range types  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes   
smallserial type  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes   
Type modifier support  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes   
XML data type  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes   
Data Types, Functions, & Operator capability |  16  |  15  |  14  |  13  |  12  |  11   
---|---|---|---|---|---|---  
Block-range (BRIN) indexes  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes   
B-tree bottom-up index deletion  |  Yes  |  Yes  |  Yes  |  No  |  No  |  No   
B-tree deduplication  |  Yes  |  Yes  |  Yes  |  Yes  |  No  |  No   
Concurrent GiST indexes  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes   
Covering Indexes for B-trees (INCLUDE)  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes   
Covering indexes for GiST (INCLUDE)  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes  |  No   
Deferrable unique constraints  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes   
Exclusion constraints  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes   
GIN (Generalized Inverted Index) Indexes  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes   
GIN indexes partial match  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes   
GIN Index performance and size improvements  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes   
GiST (Generalized Search Tree) Indexes  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes   
Indexes on expressions  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes   
Index-only scans  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes   
Index-only scans on GiST  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes   
Index support for IS NULL  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes   
In-memory Bitmap Indexes  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes   
K-nearest neighbor GiST support  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes   
K-nearest neighbor SP-GiST Support  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes  |  No   
Non-blocking CREATE INDEX  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes   
Parallel B-tree index scans  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes   
Parallelized CREATE INDEX for B-tree indexes  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes   
Space-Partitioned GiST (SP-GiST) Indexes  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes   
SP-GiST indexes for range types  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes   
UNIQUE NULLS NOT DISTINCT  |  Yes  |  Yes  |  No  |  No  |  No  |  No   
WAL support for hash indexes  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes   
Indexing and Constraint features |  16  |  15  |  14  |  13  |  12  |  11   
---|---|---|---|---|---|---  
ANY_VALUE aggregate  |  Yes  |  No  |  No  |  No  |  No  |  No   
FETCH FIRST .. WITH TIES  |  Yes  |  Yes  |  Yes  |  Yes  |  No  |  No   
GROUPING SETS, CUBE and ROLLUP support  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes   
INSERT/UPDATE/DELETE RETURNING  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes   
LATERAL clause  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes   
MERGE  |  Yes  |  Yes  |  No  |  No  |  No  |  No   
Multirow VALUES  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes   
Non-decimal integer literals  |  Yes  |  No  |  No  |  No  |  No  |  No   
ORDER BY NULLS FIRST/LAST  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes   
range_agg range type aggregation function  |  Yes  |  Yes  |  Yes  |  No  |  No  |  No   
Recursive Queries  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes   
regexp_count, regexp_instr, regexp_like  |  Yes  |  Yes  |  No  |  No  |  No  |  No   
Row-wise comparison  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes   
SELECT FOR NO KEY UPDATE/SELECT FOR KEY SHARE lock modes  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes   
SQL standard interval handling  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes   
SYSTEM_USER  |  Yes  |  No  |  No  |  No  |  No  |  No   
TABLE statement  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes   
Underscores (_) for thousands separators  |  Yes  |  No  |  No  |  No  |  No  |  No   
unnest/array_agg  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes   
Upsert (INSERT ... ON CONFLICT DO ...)  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes   
Window functions  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes   
WITHIN GROUP clause  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes   
WITH ORDINALITY clause  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes   
WITH Queries (Common Table Expressions)  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes   
Writable WITH Queries (Common Table Expressions)  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes   
Structured Query Language (SQL) features |  16  |  15  |  14  |  13  |  12  |  11   
---|---|---|---|---|---|---  
ALTER object IF EXISTS  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes   
ALTER TABLE ... ADD UNIQUE/PRIMARY KEY USING INDEX  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes   
ALTER TABLE ... SET ACCESS METHOD  |  Yes  |  Yes  |  No  |  No  |  No  |  No   
ALTER TABLE ... SET LOGGED / UNLOGGED  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes   
Changing column types (ALTER TABLE .. ALTER COLUMN TYPE)  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes   
CREATE ACCESS METHOD  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes  |  No   
CREATE TABLE ... (LIKE) with foreign tables, views and composite types  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes   
DROP object IF EXISTS  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes   
ON COMMIT clause for CREATE TEMPORARY TABLE  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes   
REINDEX CONCURRENTLY  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes  |  No   
Stored Generated Columns  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes  |  No   
Typed tables  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes   
Data Definition Language (DDL) |  16  |  15  |  14  |  13  |  12  |  11   
---|---|---|---|---|---|---  
Abbreviated Keys  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes   
Asynchronous Commit  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes   
Automatic plan invalidation  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes   
Background Checkpointer  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes   
Background Writer  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes   
Base backup throttling  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes   
CREATE STATISTICS - most-common values (MCV) statistics  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes  |  No   
CREATE STATISTICS - multicolumn  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes   
CREATE STATISTICS - "OR" and "IN/ANY" statistics  |  Yes  |  Yes  |  Yes  |  Yes  |  No  |  No   
Cross datatype hashing support  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes   
Distributed checkpointing  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes   
Foreign keys marked as NOT VALID  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes   
Frozen page map  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes   
Full Text Search  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes   
Hash aggregation can use disk  |  Yes  |  Yes  |  Yes  |  Yes  |  No  |  No   
Hashing support for DISTINCT/UNION/INTERSECT/EXCEPT  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes   
Hashing support for FULL OUTER JOIN, LEFT OUTER JOIN and RIGHT OUTER JOIN  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes   
Heap Only Tuples (HOT)  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes   
Improved performance for sorts exceeding working memory  |  Yes  |  Yes  |  No  |  No  |  No  |  No   
Improved window function performance  |  Yes  |  Yes  |  No  |  No  |  No  |  No   
Incremental sort  |  Yes  |  Yes  |  Yes  |  Yes  |  No  |  No   
Incremental sort for SELECT DISTINCT  |  Yes  |  No  |  No  |  No  |  No  |  No   
Incremental sort for window functions  |  Yes  |  Yes  |  Yes  |  No  |  No  |  No   
Inlined WITH Queries (Common Table Expressions)  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes  |  No   
Inlining of SQL-functions  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes   
Just-in-Time (JIT) compilation for expression evaluation and tuple deforming  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes   
Load balancing for libpq / psql  |  Yes  |  No  |  No  |  No  |  No  |  No   
LZ4 compression for TOAST tables  |  Yes  |  Yes  |  Yes  |  No  |  No  |  No   
Multi-core scalability for read-only workloads  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes   
Multiple temporary tablespaces  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes   
Outer Join reordering  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes   
Parallel bitmap heap scans  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes   
Parallel FULL and RIGHT joins  |  Yes  |  No  |  No  |  No  |  No  |  No   
Parallel full table scans (sequential scans)  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes   
Parallel hash joins  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes   
Parallel JOIN, aggregate  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes   
Parallel merge joins  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes   
Parallel query  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes   
Parallel "SELECT DISTINCT" |  Yes  |  Yes  |  No  |  No  |  No  |  No   
Partial sort capability (top-n sorting)  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes   
Query pipelining  |  Yes  |  Yes  |  Yes  |  No  |  No  |  No   
Reduced lock levels for ALTER TABLE commands  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes   
SELECT ... FOR UPDATE/SHARE NOWAIT  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes   
Set costs specific to TABLESPACEs  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes   
Shared row level locking  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes   
SIMD support for ARM  |  Yes  |  No  |  No  |  No  |  No  |  No   
SIMD support for x86  |  Yes  |  No  |  No  |  No  |  No  |  No   
SKIP LOCKED clause  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes   
Synchronized sequential scanning  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes   
TABLESAMPLE clause  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes   
Tablespaces  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes   
Unlogged tables  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes   
WAL Buffer auto-tuning  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes   
Performance  |  16  |  15  |  14  |  13  |  12  |  11   
---|---|---|---|---|---|---  
Improved set of JSON functions and operators  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes   
JSONB data type  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes   
JSONB-modifying operators and functions  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes   
JSONB Subscripting  |  Yes  |  Yes  |  Yes  |  No  |  No  |  No   
JSON data type  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes   
SQL/JSON constructors  |  Yes  |  No  |  No  |  No  |  No  |  No   
SQL/JSON: datetime()  |  Yes  |  Yes  |  Yes  |  Yes  |  No  |  No   
SQL/JSON IS JSON  |  Yes  |  No  |  No  |  No  |  No  |  No   
SQL/JSON path expressions  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes  |  No   
NoSQL/JSON |  16  |  15  |  14  |  13  |  12  |  11   
---|---|---|---|---|---|---  
Accelerated partition pruning  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes  |  No   
Declarative table partitioning  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes   
Default Partition  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes   
Foreign Key references for partitioned tables  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes  |  No   
Foreign table inheritance  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes   
Partitioning by a hash key  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes   
Partition pruning during query execution  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes   
Support for PRIMARY KEY, FOREIGN KEY, indexes, and triggers on partitioned tables  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes   
Table Partitioning  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes   
UPDATE on a partition key  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes   
Partitioning and Inheritance |  16  |  15  |  14  |  13  |  12  |  11   
---|---|---|---|---|---|---  
Materialized Views  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes   
Materialized views with concurrent refresh  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes   
SECURITY INVOKER views  |  Yes  |  Yes  |  No  |  No  |  No  |  No   
Temporary VIEWs  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes   
Updatable views  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes   
WITH CHECK clause  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes   
Views  |  16  |  15  |  14  |  13  |  12  |  11   
---|---|---|---|---|---|---  
ALTER SUBSCRIPTION ... SKIP  |  Yes  |  Yes  |  No  |  No  |  No  |  No   
Cascading streaming replication  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes   
Configure max WAL retention for replication slots  |  Yes  |  Yes  |  Yes  |  Yes  |  No  |  No   
Logical replication  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes   
Logical replication avoids replication loops  |  Yes  |  No  |  No  |  No  |  No  |  No   
Logical replication column lists  |  Yes  |  Yes  |  No  |  No  |  No  |  No   
Logical replication for partitioned tables  |  Yes  |  Yes  |  Yes  |  Yes  |  No  |  No   
Logical replication from standbys  |  Yes  |  No  |  No  |  No  |  No  |  No   
Logical replication initial sync using binary protocol  |  Yes  |  No  |  No  |  No  |  No  |  No   
Logical replication lookups with additional indexes  |  Yes  |  No  |  No  |  No  |  No  |  No   
Logical replication parallel apply of transactions  |  Yes  |  No  |  No  |  No  |  No  |  No   
Logical replication publish all tables in schema  |  Yes  |  Yes  |  No  |  No  |  No  |  No   
Logical replication row filtering  |  Yes  |  Yes  |  No  |  No  |  No  |  No   
Logical replication stream in-progress transactions  |  Yes  |  Yes  |  Yes  |  No  |  No  |  No   
Logical replication subscriber can disable on error  |  Yes  |  Yes  |  No  |  No  |  No  |  No   
Quorum commit for synchronous replication  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes   
Replication Slots  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes   
Streaming-only cascading replication  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes   
Streaming Replication  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes   
Synchronous replication  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes   
Replication capabilities including High Availability Core |  16  |  15  |  14  |  13  |  12  |  11   
---|---|---|---|---|---|---  
Archive modules  |  Yes  |  Yes  |  No  |  No  |  No  |  No   
Checksum on data pages  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes   
Enable/Disable page checksums in an offline cluster  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes  |  No   
Generic WAL facility  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes   
Hot Standby  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes   
lz4 and Zstandard (zstd) compression for WAL full page writes  |  Yes  |  Yes  |  No  |  No  |  No  |  No   
min_wal_size / max_wal_size  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes   
Multiple synchronous standbys  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes   
Named restore points  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes   
Parallel pg_dump  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes   
Parallel restore  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes   
pg_basebackup client decompression  |  Yes  |  Yes  |  No  |  No  |  No  |  No   
pg_basebackup server-side compression  |  Yes  |  Yes  |  No  |  No  |  No  |  No   
pg_basebackup tool  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes   
pg_receivewal (formerly pg_receivexlog)  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes   
Point-in-Time Recovery  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes   
Pre-fetch WAL during recovery  |  Yes  |  Yes  |  No  |  No  |  No  |  No   
remote_apply mode  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes   
Time-delayed Standbys  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes   
Verify backup integrity (pg_verifybackup)  |  Yes  |  Yes  |  Yes  |  Yes  |  No  |  No   
Warm Standby  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes   
Backup, Restore and Data Integrity |  |  |  |  |  |   
---|---|---|---|---|---|---  
COPY from/to STDIN/STDOUT  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes   
COPY FROM ... WHERE  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes  |  No   
COPY with arbitrary SELECT  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes   
CSV support for COPY  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes   
Data Import and Export (Core features only, does not include extensions) |  16  |  15  |  14  |  13  |  12  |  11   
---|---|---|---|---|---|---  
ALTER SYSTEM  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes   
Fractional input for "integer" values  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes  |  No   
Include directives for pg_hba.conf and pg_ident.conf  |  Yes  |  No  |  No  |  No  |  No  |  No   
Per user/database server configuration settings  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes   
pg_config system view  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes   
Regular expression matching in pg_hba.conf and pg_ident.conf  |  Yes  |  No  |  No  |  No  |  No  |  No   
Configuration Management |  16  |  15  |  14  |  13  |  12  |  11   
---|---|---|---|---|---|---  
Channel binding for SCRAM authentication  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes   
Client can require SCRAM channel binding  |  Yes  |  Yes  |  Yes  |  Yes  |  No  |  No   
Client-specified requirements for authentication  |  Yes  |  No  |  No  |  No  |  No  |  No   
Column level permissions  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes   
Default permissions  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes   
GRANT/REVOKE ON ALL TABLES/SEQUENCES/FUNCTIONS  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes   
GSSAPI client and server-side encryption  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes  |  No   
GSSAPI support  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes   
Kerberos credential delegation  |  Yes  |  No  |  No  |  No  |  No  |  No   
Large object access controls  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes   
LDAP server discovery  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes  |  No   
Multifactor authentication via valid client SSL/TLS certificate  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes  |  No   
Native LDAP authentication  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes   
Native RADIUS authentication  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes   
Per user/database connection limits  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes   
Predefined roles  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes   
Privileges for setting configuration parameters  |  Yes  |  Yes  |  No  |  No  |  No  |  No   
ROLES  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes   
Row-Level Security  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes   
SCRAM-SHA-256 Authentication  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes   
Search+bind mode operation for LDAP authentication  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes   
security_barrier option on views  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes   
Security Service Provider Interface (SSPI)  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes   
SSL certificate validation in libpq  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes   
SSL client certificate authentication  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes   
SSPI authentication via GSSAPI  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes   
Support using the client's OS trusted CA.  |  Yes  |  No  |  No  |  No  |  No  |  No   
Security and Compliance |  16  |  15  |  14  |  13  |  12  |  11   
---|---|---|---|---|---|---  
Cursors  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes   
Savepoints  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes   
Serializable Snapshot Isolation  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes   
Two Phase commit  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes   
Updatable cursors  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes   
Transactions and Visibility |  16  |  15  |  14  |  13  |  12  |  11   
---|---|---|---|---|---|---  
Inserted data can trigger autovacuum  |  Yes  |  Yes  |  Yes  |  Yes  |  No  |  No   
Integrated autovacuum daemon  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes   
Page freezing optimizations  |  Yes  |  No  |  No  |  No  |  No  |  No   
Parallelized VACUUM for Indexes  |  Yes  |  Yes  |  Yes  |  Yes  |  No  |  No   
Parallel vacuumdb jobs  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes   
Vacuum "emergency mode" |  Yes  |  Yes  |  Yes  |  No  |  No  |  No   
Visibility Map for Vacuuming  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes   
Vacuum and Maintenance |  16  |  15  |  14  |  13  |  12  |  11   
---|---|---|---|---|---|---  
Certificate authentication with postgres_fdw  |  Yes  |  Yes  |  Yes  |  Yes  |  No  |  No   
Foreign data wrapper query parallelism  |  Yes  |  Yes  |  Yes  |  No  |  No  |  No   
Foreign data wrappers  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes   
Foreign Tables  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes   
IMPORT FOREIGN SCHEMA  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes   
Import foreign table partitions  |  Yes  |  Yes  |  Yes  |  No  |  No  |  No   
Parallel query execution on remote databases  |  Yes  |  Yes  |  Yes  |  No  |  No  |  No   
postgres_fdw parallel commit  |  Yes  |  Yes  |  No  |  No  |  No  |  No   
postgres_fdw pushdown  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes   
PostgreSQL Foreign Data Wrapper  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes   
Writable Foreign Data Wrappers  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes   
Foreign Data Wrappers (SQL/MED) |  16  |  15  |  14  |  13  |  12  |  11   
---|---|---|---|---|---|---  
ALTER TABLE ENABLE/DISABLE TRIGGER  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes   
ALTER TABLE / ENABLE REPLICA TRIGGER/RULE  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes   
BEGIN ATOMIC function bodies  |  Yes  |  Yes  |  Yes  |  No  |  No  |  No   
CALL syntax for executing procedures  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes   
Column level triggers  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes   
CREATE PROCEDURE syntax for SQL stored procedures  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes   
Event triggers  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes   
FILTER clause for aggregate functions  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes   
ORDER BY support within aggregates  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes   
Per function GUC settings  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes   
Per function statistics  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes   
RETURN QUERY EXECUTE  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes   
RETURNS TABLE  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes   
Statement level triggers  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes   
Statement level TRUNCATE triggers  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes   
Triggers on views  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes   
Variadic functions  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes   
WHEN clause for CREATE TRIGGER  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes   
UDFs, Stored Procedures and Triggers |  16  |  15  |  14  |  13  |  12  |  11   
---|---|---|---|---|---|---  
CASE in pl/pgsql  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes   
CONTINUE statement for PL/pgSQL  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes   
CREATE TRANSFORM  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes   
DO statement for pl/perl  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes   
DO statement for pl/pgsql  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes   
EXCEPTION support in PL/pgSQL  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes   
EXECUTE USING in PL/pgSQL  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes   
FOREACH IN ARRAY in pl/pgsql  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes   
IN/OUT/INOUT parameters for pl/pgsql and PL/SQL  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes   
Named parameters  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes   
Non-superuser language creation  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes   
pl/pgsql installed by default  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes   
Polymorphic functions  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes   
Python 3 support for pl/python  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes   
Qualified function parameters  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes   
Query parallelism for RETURN QUERY  |  Yes  |  Yes  |  Yes  |  No  |  No  |  No   
RETURN QUERY in pl/pgsql  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes   
ROWS and COST specification for functions  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes   
Scrollable and updatable cursor support for pl/pgsql  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes   
SQLERRM/SQLSTATE for pl/pgsql  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes   
Unicode object support in PL/python  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes   
User defined exceptions  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes   
Validator function for pl/perl  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes   
Procedural Languages (Core features only, does not include Extensions or External capabilities) |  16  |  15  |  14  |  13  |  12  |  11   
---|---|---|---|---|---|---  
CREATE EXTENSION .. CASCADE  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes   
Extension Installation  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes   
Trusted Extensions  |  Yes  |  Yes  |  Yes  |  Yes  |  No  |  No   
Extensions |  16  |  15  |  14  |  13  |  12  |  11   
---|---|---|---|---|---|---  
Column-level collation support  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes   
Database level Collation  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes   
Default ICU collations for clusters/databases  |  Yes  |  Yes  |  No  |  No  |  No  |  No   
EUC_JIS_2004/ SHIFT_JIS_2004 support  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes   
ICU collations  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes   
Multibyte encoding support, incl. UTF8  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes   
Multiple language support  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes   
Nondeterministic collations  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes  |  No   
Unicode string literals and identifiers  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes   
UTF8 support on Windows  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes   
Internationalization |  16  |  15  |  14  |  13  |  12  |  11   
---|---|---|---|---|---|---  
pgbench  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes   
pg_prewarm  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes   
pg_rewind  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes   
pg_standby  |  Obsolete  |  Obsolete  |  Obsolete  |  Yes  |  Yes  |  Yes   
pg_upgrade  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes   
pg_waldump  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes   
psql \bind  |  Yes  |  No  |  No  |  No  |  No  |  No   
psql \dconfig  |  Yes  |  Yes  |  No  |  No  |  No  |  No   
Version aware psql  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes   
Client Applications (Core only, does not include 3rd party options) |  16  |  15  |  14  |  13  |  12  |  11   
---|---|---|---|---|---|---  
adminpack  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes   
auth_delay  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes   
auto_explain  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes   
btree_gin  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes   
btree_gist  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes   
citext  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes   
dblink  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes   
dblink asyncronous notification support  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes   
file_fdw  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes   
fuzzystrmatch  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes   
hstore  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes   
intarray  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes   
isn (ISBN)  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes   
KNN support for CUBE  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes   
ltree  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes   
pageinspect  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes   
passwordcheck  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes   
pg_buffercache  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes   
pg_freespacemap  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes   
pg_stat_statements  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes   
pg_stat_statements improvements  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes   
pgstattuple  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes   
pg_trgm  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes   
pg_trgm regular expressions indexing  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes   
pg_walinspect  |  Yes  |  Yes  |  No  |  No  |  No  |  No   
seg  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes   
sepgsql  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes   
sslinfo  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes   
tablefunc  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes   
tcn  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes   
unaccent  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes   
uuid-ossp  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes   
Additional Modules |  16  |  15  |  41  |  13  |  12  |  11   
---|---|---|---|---|---|---  
Full SSL support  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes   
IPv6 Support  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes   
V3 client protocol  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes   
Network and Protocol |  16  |  15  |  14  |  13  |  12  |  11   
---|---|---|---|---|---|---  
Microsoft Visual C++ Support  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes   
Native Windows Port  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes   
Spinlock support for the SuperH hardware platform  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes   
Sun Studio compiler on Linux  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes   
Windows x64 support  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes  |  Yes   
Platforms

---
[View this page online](https://www.commandprompt.com/support/postgresql-feature-matrix/)