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 |