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.
18 | 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 | ||||||||||||||||||||
UUIDv7 | ||||||||||||||||||||
XML data type |
18 | 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 | ||||||||||||||||||||
Parallelized CREATE INDEX for GIN indexes | ||||||||||||||||||||
Skip scan on multicolumn B-tree indexes | ||||||||||||||||||||
Space-Partitioned GiST (SP-GiST) Indexes | ||||||||||||||||||||
SP-GiST indexes for range types | ||||||||||||||||||||
UNIQUE NULLS NOT DISTINCT | ||||||||||||||||||||
WAL support for hash indexes |
18 | 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 | ||||||||||||||||||||
Temporal constraints | ||||||||||||||||||||
Typed tables | ||||||||||||||||||||
Virtual Generated Columns |
18 | 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 |
18 | 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 |
18 | 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 |
18 | 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 | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
pg_upgrade --swap | ||||||||||||||||||||
Planner statistics preserved on major version upgrade |
18 | 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 |
18 | 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 |
18 | 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 |
18 | 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 |
18 | 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 |
18 | 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 |
18 | 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 | ||||||||||||||||||||
casefold | ||||||||||||||||||||
Column-level collation support | ||||||||||||||||||||
Database level Collation | ||||||||||||||||||||
Default ICU collations for clusters/databases | ||||||||||||||||||||
EUC_JIS_2004/ SHIFT_JIS_2004 support | ||||||||||||||||||||
ICU collations | ||||||||||||||||||||
LIKE comparisons for nondeterministic collations | ||||||||||||||||||||
Multibyte encoding support, incl. UTF8 | ||||||||||||||||||||
Multiple language support | ||||||||||||||||||||
Nondeterministic collations | ||||||||||||||||||||
pg_unicode_fast collation | ||||||||||||||||||||
Unicode string literals and identifiers | ||||||||||||||||||||
UTF8 support on Windows |
18 | 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 | ||||||||||||||||||||
psql pipeline queries | ||||||||||||||||||||
psql named prepared statements | ||||||||||||||||||||
Version aware psql |
18 | 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 |
18 | 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 |