Feature Matrix

This table outlines which features were added in which version. To get more information about a feature, click the link or hover the mouse pointer over the text.

Groups

Filter by version

Backend

  17 16 15 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
Advisory locks
Custom background workers
Disk based FSM
Dynamic Background Workers
EXPLAIN (BUFFERS) support
EXPLAIN (MEMORY)
EXPLAIN (SERIALIZE) support
EXPLAIN (WAL) support
"jsonlog" logging format
Loadable plugin infrastructure for monitoring the planner
Payload support for LISTEN/NOTIFY
pg_stat_checkpointer system view
pg_stat_io - I/O metrics view
pg_wait_events system view
Server statistics in shared memory
SQL-standard information schema
Support for anonymous shared memory
XML, JSON and YAML output for EXPLAIN

Data Types, Functions, & Operators

  17 16 15 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
Arrays of compound types
Array support
ENUM data type
GUID/UUID data type
macaddr8 data type
Multiranges
NULLs in Array
Phrase search
Range types
smallserial type
Type modifier support
XML data type

Indexing & Constraints

  17 16 15 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
B-tree bottom-up index deletion
B-tree deduplication
Concurrent GiST indexes
Covering Indexes for B-trees (INCLUDE)
Covering indexes for GiST (INCLUDE)
Deferrable unique constraints
Exclusion constraints
GIN (Generalized Inverted Index) Indexes
GIN indexes partial match
GIN Index performance and size improvements
GiST (Generalized Search Tree) Indexes
Indexes on expressions
Index-only scans
Index-only scans on GiST
Index support for IS NULL
In-memory Bitmap Indexes
K-nearest neighbor GiST support
K-nearest neighbor SP-GiST Support
Non-blocking CREATE INDEX
Parallel B-tree index scans
Parallelized CREATE INDEX for BRIN indexes
Parallelized CREATE INDEX for B-tree indexes
Space-Partitioned GiST (SP-GiST) Indexes
SP-GiST indexes for range types
UNIQUE NULLS NOT DISTINCT
WAL support for hash indexes

SQL

  17 16 15 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
ANY_VALUE aggregate
FETCH FIRST .. WITH TIES
GROUPING SETS, CUBE and ROLLUP support
INSERT/UPDATE/DELETE RETURNING
LATERAL clause
MERGE
MERGE ... RETURNING
Multirow VALUES
Non-decimal integer literals
ORDER BY NULLS FIRST/LAST
range_agg range type aggregation function
Recursive Queries
regexp_count, regexp_instr, regexp_like
Row-wise comparison
SELECT FOR NO KEY UPDATE/SELECT FOR KEY SHARE lock modes
SQL standard interval handling
SYSTEM_USER
TABLE statement
Underscores (_) for thousands separators
unnest/array_agg
Upsert (INSERT ... ON CONFLICT DO ...)
Window functions
WITHIN GROUP clause
WITH ORDINALITY clause
WITH Queries (Common Table Expressions)
Writable WITH Queries (Common Table Expressions)

Data Definition Language (DDL)

  17 16 15 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 object IF EXISTS
ALTER TABLE ... ADD UNIQUE/PRIMARY KEY USING INDEX
ALTER TABLE ... SET ACCESS METHOD
ALTER TABLE ... SET LOGGED / UNLOGGED
Changing column types (ALTER TABLE .. ALTER COLUMN TYPE)
CREATE ACCESS METHOD
CREATE TABLE ... (LIKE) with foreign tables, views and composite types
DROP object IF EXISTS
ON COMMIT clause for CREATE TEMPORARY TABLE
REINDEX CONCURRENTLY
Stored Generated Columns
Typed tables

Performance

  17 16 15 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
Asynchronous Commit
Automatic plan invalidation
Background Checkpointer
Background Writer
Base backup throttling
CREATE STATISTICS - most-common values (MCV) statistics
CREATE STATISTICS - multicolumn
CREATE STATISTICS - "OR" and "IN/ANY" statistics
Cross datatype hashing support
Distributed checkpointing
Foreign keys marked as NOT VALID
Frozen page map
Full Text Search
Hash aggregation can use disk
Hashing support for DISTINCT/UNION/INTERSECT/EXCEPT
Hashing support for FULL OUTER JOIN, LEFT OUTER JOIN and RIGHT OUTER JOIN
Heap Only Tuples (HOT)
Improved performance for sorts exceeding working memory
Improved window function performance
Incremental sort
Incremental sort for SELECT DISTINCT
Incremental sort for window functions
Inlined WITH Queries (Common Table Expressions)
Inlining of SQL-functions
Just-in-Time (JIT) compilation for expression evaluation and tuple deforming
Load balancing for libpq / psql
LZ4 compression for TOAST tables
Multi-core scalability for read-only workloads
Multiple temporary tablespaces
Outer Join reordering
Parallel bitmap heap scans
Parallel FULL and RIGHT joins
Parallel full table scans (sequential scans)
Parallel hash joins
Parallel JOIN, aggregate
Parallel merge joins
Parallel query
Parallel "SELECT DISTINCT"
Partial sort capability (top-n sorting)
Query pipelining
Reduced lock levels for ALTER TABLE commands
SELECT ... FOR UPDATE/SHARE NOWAIT
Set costs specific to TABLESPACEs
Shared row level locking
SIMD support for ARM
SIMD support for x86
SKIP LOCKED clause
Synchronized sequential scanning
TABLESAMPLE clause
Tablespaces
Unlogged tables
WAL Buffer auto-tuning

JSON

  17 16 15 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
Improved set of JSON functions and operators
JSONB data type
JSONB-modifying operators and functions
JSONB Subscripting
JSON data type
SQL/JSON constructors
SQL/JSON: datetime()
SQL/JSON IS JSON
SQL/JSON JSON_TABLE
SQL/JSON path expressions
SQL/JSON query functions

Partitioning & Inheritance

  17 16 15 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
Accelerated partition pruning
Declarative table partitioning
Default Partition
Foreign Key references for partitioned tables
Foreign table inheritance
Partitioning by a hash key
Partition pruning during query execution
Support for PRIMARY KEY, FOREIGN KEY, indexes, and triggers on partitioned tables
Table Partitioning
UPDATE on a partition key

Views & Materialized Views

  17 16 15 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
Materialized Views
Materialized views with concurrent refresh
SECURITY INVOKER views
Temporary VIEWs
Updatable views
WITH CHECK clause

Replication

  17 16 15 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 SUBSCRIPTION ... SKIP
Cascading streaming replication
Configure max WAL retention for replication slots
Failover support for logical replication slots
Logical replication
Logical replication avoids replication loops
Logical replication column lists
Logical replication for partitioned tables
Logical replication from standbys
Logical replication initial sync using binary protocol
Logical replication lookups with additional indexes
Logical replication parallel apply of transactions
Logical replication publish all tables in schema
Logical replication row filtering
Logical replication slots migrate through pg_upgrade migrate
Logical replication stream in-progress transactions
Logical replication subscriber can disable on error
Quorum commit for synchronous replication
Replication Slots
Streaming-only cascading replication
Streaming Replication
Synchronous replication

Backup, Restore, & Data Integrity

  17 16 15 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
Archive modules
Checksum on data pages
Enable/Disable page checksums in an offline cluster
Generic WAL facility
Hot Standby
lz4 and Zstandard (zstd) compression for WAL full page writes
min_wal_size / max_wal_size
Multiple synchronous standbys
Named restore points
Parallel pg_dump
Parallel restore
pg_basebackup client decompression
pg_basebackup incremental backup
pg_basebackup server-side compression
pg_basebackup tool
pg_dump, pg_dumpall, pg_restore --filter
pg_receivewal (formerly pg_receivexlog)
Point-in-Time Recovery
Pre-fetch WAL during recovery
remote_apply mode
Time-delayed Standbys
Verify backup integrity (pg_verifybackup)
Warm Standby

Data Import & Export

  17 16 15 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
COPY from/to STDIN/STDOUT
COPY FROM ... WHERE
COPY ... ON_ERROR
COPY with arbitrary SELECT
CSV support for COPY

Configuration Management

  17 16 15 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 SYSTEM
Fractional input for "integer" values
Include directives for pg_hba.conf and pg_ident.conf
Per user/database server configuration settings
pg_config system view
Regular expression matching in pg_hba.conf and pg_ident.conf

Security

  17 16 15 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
Client can require SCRAM channel binding
Client-specified requirements for authentication
Column level permissions
Default permissions
Direct TLS negotiation ("sslnegotiation")
GRANT/REVOKE ON ALL TABLES/SEQUENCES/FUNCTIONS
GSSAPI client and server-side encryption
GSSAPI support
Kerberos credential delegation
krb5 authentication (without gssapi)
Large object access controls
LDAP server discovery
Multifactor authentication via valid client SSL/TLS certificate
Native LDAP authentication
Native RADIUS authentication
Per user/database connection limits
Predefined roles
Privileges for setting configuration parameters
ROLES
Row-Level Security
SCRAM-SHA-256 Authentication
Search+bind mode operation for LDAP authentication
security_barrier option on views
Security Service Provider Interface (SSPI)
SSL certificate validation in libpq
SSL client certificate authentication
SSPI authentication via GSSAPI
Support using the client's OS trusted CA.

Transactions and Visibility

  17 16 15 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
Cursors
Savepoints
Serializable Snapshot Isolation
Two Phase commit
Updatable cursors

VACUUM and Maintenance

  17 16 15 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
Inserted data can trigger autovacuum
Integrated autovacuum daemon
Page freezing optimizations
Parallelized VACUUM for Indexes
Parallel vacuumdb jobs
Radix tree memory structure for vacuum
Vacuum "emergency mode"
Visibility Map for Vacuuming

Foreign Data Wrappers

  17 16 15 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
Certificate authentication with postgres_fdw
Foreign data wrapper query parallelism
Foreign data wrappers
Foreign Tables
IMPORT FOREIGN SCHEMA
Import foreign table partitions
Parallel query execution on remote databases
postgres_fdw parallel commit
postgres_fdw pushdown
PostgreSQL Foreign Data Wrapper
Writable Foreign Data Wrappers

Custom Functions, Stored Procedures, & Triggers

  17 16 15 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
ALTER TABLE / ENABLE REPLICA TRIGGER/RULE
BEGIN ATOMIC function bodies
CALL syntax for executing procedures
Column level triggers
CREATE PROCEDURE syntax for SQL stored procedures
Event triggers
FILTER clause for aggregate functions
ORDER BY support within aggregates
Per function GUC settings
Per function statistics
RETURN QUERY EXECUTE
RETURNS TABLE
Statement level triggers
Statement level TRUNCATE triggers
Triggers on views
Variadic functions
WHEN clause for CREATE TRIGGER

Procedural Languages

  17 16 15 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
CONTINUE statement for PL/pgSQL
CREATE TRANSFORM
DO statement for pl/perl
DO statement for pl/pgsql
EXCEPTION support in PL/pgSQL
EXECUTE USING in PL/pgSQL
FOREACH IN ARRAY in pl/pgsql
IN/OUT/INOUT parameters for pl/pgsql and PL/SQL
Named parameters
Non-superuser language creation
pl/pgsql installed by default
Polymorphic functions
Python 3 support for pl/python
Qualified function parameters
Query parallelism for RETURN QUERY
RETURN QUERY in pl/pgsql
ROWS and COST specification for functions
Scrollable and updatable cursor support for pl/pgsql
SQLERRM/SQLSTATE for pl/pgsql
Unicode object support in PL/python
User defined exceptions
Validator function for pl/perl

Extensions

  17 16 15 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
CREATE EXTENSION .. CASCADE
Extension Installation
Trusted Extensions

Internationalisation

  17 16 15 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
Built-in, platform independent immutable collation
Column-level collation support
Database level Collation
Default ICU collations for clusters/databases
EUC_JIS_2004/ SHIFT_JIS_2004 support
ICU collations
Multibyte encoding support, incl. UTF8
Multiple language support
Nondeterministic collations
Unicode string literals and identifiers
UTF8 support on Windows

Client Applications

  17 16 15 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
pgbench
pg_combinebackup
pg_createsubscriber
pg_prewarm
pg_rewind
pg_standby
pg_upgrade
pg_waldump
pg_walsummary
pg_xlogdump
psql \bind
psql \dconfig
Version aware psql

Additional Modules (contrib)

  17 16 15 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
adminpack
auth_delay
auto_explain
btree_gin
btree_gist
citext
dblink
dblink asyncronous notification support
file_fdw
fuzzystrmatch
hstore
intarray
isn (ISBN)
KNN support for CUBE
ltree
pageinspect
passwordcheck
pg_buffercache
pg_freespacemap
pg_stat_statements
pg_stat_statements improvements
pgstattuple
pg_trgm
pg_trgm regular expressions indexing
pg_walinspect
seg
sepgsql
sslinfo
tablefunc
tcn
tsearch2 compatibility wrapper
unaccent
uuid-ossp
xml2

Network

  17 16 15 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
Full SSL support
IPv6 Support
V2 client protocol
V3 client protocol

Platforms

  17 16 15 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
Microsoft Visual C++ Support
Native Windows Port
Spinlock support for the SuperH hardware platform
Sun Studio compiler on Linux
Windows x64 support