|
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