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.
| Backend | 8.1 | 8.2 | 8.3 | 8.4 | 9.0 | 9.1 | 9.2 | 9.3 | 9.4 | 9.5 | 9.6 |
|---|---|---|---|---|---|---|---|---|---|---|---|
| 64-bit large objects | No | No | No | No | No | No | No | Yes | Yes | Yes | Yes |
| Advisory locks | No | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
| ALTER object IF EXISTS | No | No | No | No | No | No | Yes | Yes | Yes | Yes | Yes |
| ALTER SYSTEM | No | No | No | No | No | No | No | No | Yes | Yes | Yes |
| ALTER TABLE ... ADD UNIQUE/PRIMARY KEY USING INDEX | No | No | No | No | No | Yes | Yes | Yes | Yes | Yes | Yes |
| ALTER TABLE ... SET LOGGED / UNLOGGED | No | No | No | No | No | No | No | No | No | Yes | Yes |
| Autovacuum enabled by default | No | No | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
| Changing column types (ALTER TABLE .. ALTER COLUMN TYPE) | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
| Checksum on data pages | No | No | No | No | No | No | No | Yes | Yes | Yes | Yes |
| Column level permissions | No | No | No | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
| Common Table Expressions (WITH RECURSIVE) | No | No | No | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
| Concurrent GiST indexes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
| COPY from/to STDIN/STDOUT | No | No | No | No | No | No | No | Yes | Yes | Yes | Yes |
| COPY with arbitrary SELECT | No | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
| Crash-safe GiST indexes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
| CREATE TABLE ... (LIKE) with foreign tables, views and composite types | No | No | No | No | No | No | Yes | Yes | Yes | Yes | Yes |
| CSV support for COPY | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
| Custom background workers | No | No | No | No | No | No | No | Yes | Yes | Yes | Yes |
| Default permissions | No | No | No | No | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
| Deferrable unique constraints | No | No | No | No | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
| Disk based FSM | No | No | No | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
| Dollar Quoting | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
| DROP object IF EXISTS | No | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
| Dynamic Background Workers | No | No | No | No | No | No | No | No | Yes | Yes | Yes |
| Exclusion constraints | No | No | No | No | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
| EXPLAIN (BUFFERS) support | No | No | No | No | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
| Extension package installation | No | No | No | No | No | Yes | Yes | Yes | Yes | Yes | Yes |
| Foreign table inheritance | No | No | No | No | No | No | No | No | No | Yes | Yes |
| Full code coverage generation support | No | No | No | No | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
| Generic WAL facility | No | No | No | No | No | No | No | No | No | No | Yes |
| GRANT/REVOKE ON ALL TABLES/SEQUENCES/FUNCTIONS | No | No | No | No | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
| GROUPING SETS, CUBE and ROLLUP support | No | No | No | No | No | No | No | No | No | Yes | Yes |
| Holdable cursors | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
| Improved set of JSON functions and operators | No | No | No | No | No | No | No | Yes | Yes | Yes | Yes |
| INSERT ... ON CONFLICT DO NOTHING/UPDATE | No | No | No | No | No | No | No | No | No | Yes | Yes |
| INSERT/UPDATE/DELETE RETURNING | No | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
| Integrated autovacuum daemon | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
| Join removal support | No | No | No | No | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
| JSONB-modifying operators and functions | No | No | No | No | No | No | No | No | No | Yes | Yes |
| LATERAL clause | No | No | No | No | No | No | No | Yes | Yes | Yes | Yes |
| Loadable plugin infrastructure for monitoring the planner | No | No | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
| Materialized views | No | No | No | No | No | No | No | Yes | Yes | Yes | Yes |
| Materialized views with concurrent refresh | No | No | No | No | No | No | No | No | Yes | Yes | Yes |
| min_wal_size / max_wal_size | No | No | No | No | No | No | No | No | No | Yes | Yes |
| Multiple autovacuum workers | No | No | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
| Multiple input aggregates | No | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
| Multirow VALUES | No | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
| MVCC safe CLUSTER | No | No | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
| Named restore points | No | No | No | No | No | Yes | Yes | Yes | Yes | Yes | Yes |
| ON COMMIT clause for CREATE TEMPORARY TABLE | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
| ORDER BY NULLS FIRST/LAST | No | No | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
| Parallel pg_dump | No | No | No | No | No | No | No | Yes | Yes | Yes | Yes |
| Payload support for LISTEN/NOTIFY | No | No | No | No | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
| Per tablespace support for GUCs | No | No | No | No | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
| Per user/database server configuration settings | No | No | No | No | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
| Pg_basebackup tool | No | No | No | No | No | Yes | Yes | Yes | Yes | Yes | Yes |
| pg_config system view | No | No | No | No | No | No | No | No | No | No | Yes |
| pg_receivexlog tool | No | No | No | No | No | No | Yes | Yes | Yes | Yes | Yes |
| Point-in-Time Recovery | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
| Prefix support for text search synonym dictionary | No | No | No | No | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
| Row-wise comparison | No | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
| Savepoints | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
| SELECT FOR NO KEY UPDATE/SELECT FOR KEY SHARE lock modes | No | No | No | No | No | No | No | Yes | Yes | Yes | Yes |
| Serializable Snapshot Isolation | No | No | No | No | No | Yes | Yes | Yes | Yes | Yes | Yes |
| SP-GiST indexes for range types | No | No | No | No | No | No | No | Yes | Yes | Yes | Yes |
| SQLDA support for ECPG | No | No | No | No | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
| SQL-standard information schema | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
| SQL standard interval handling | No | No | No | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
| Support for anonymous shared memory | No | No | No | No | No | No | No | Yes | Yes | Yes | Yes |
| TABLE statement | No | No | No | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
| Temporary VIEWs | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
| Time-delayed Standbys | No | No | No | No | No | No | No | No | Yes | Yes | Yes |
| Two Phase commit | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
| Txid functions | No | No | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
| Typed tables | No | No | No | No | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
| UNNEST/array_agg | No | No | No | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
| Updatable views | No | No | No | No | No | No | No | Yes | Yes | Yes | Yes |
| Updateable cursors | No | No | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
| Version aware psql | No | No | No | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
| Visibility map | No | No | No | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
| WAL-safe B-Tree Indexes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
| Warm Standby | No | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
| Window functions | No | No | No | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
| WITH CHECK clause | No | No | No | No | No | No | No | No | Yes | Yes | Yes |
| WITHIN GROUP clause | No | No | No | No | No | No | No | No | Yes | Yes | Yes |
| WITH ORDINALITY clause | No | No | No | No | No | No | No | No | Yes | Yes | Yes |
| Writable Common Table Expressions | No | No | No | No | No | Yes | Yes | Yes | Yes | Yes | Yes |
| XML, JSON and YAML output for EXPLAIN | No | No | No | No | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
| Replication | 8.1 | 8.2 | 8.3 | 8.4 | 9.0 | 9.1 | 9.2 | 9.3 | 9.4 | 9.5 | 9.6 |
| Cascading streaming replication | No | No | No | No | No | No | Yes | Yes | Yes | Yes | Yes |
| Hot Standby | No | No | No | No | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
| Multiple synchronous standbys | No | No | No | No | No | No | No | No | No | No | Yes |
| remote_apply mode | No | No | No | No | No | No | No | No | No | No | Yes |
| Replication Slots | No | No | No | No | No | No | No | No | Yes | Yes | Yes |
| Streaming-only cascading replication | No | No | No | No | No | No | No | Yes | Yes | Yes | Yes |
| Streaming Replication | No | No | No | No | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
| Synchronous replication | No | No | No | No | No | Yes | Yes | Yes | Yes | Yes | Yes |
| Performance | 8.1 | 8.2 | 8.3 | 8.4 | 9.0 | 9.1 | 9.2 | 9.3 | 9.4 | 9.5 | 9.6 |
| Abbreviated Keys | No | No | No | No | No | No | No | No | No | Yes | Yes |
| Asynchronous Commit | No | No | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
| Automatic plan invalidation | No | No | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
| Background Checkpointer | No | No | No | No | No | No | Yes | Yes | Yes | Yes | Yes |
| Background Writer | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
| Base backup throttling | No | No | No | No | No | No | No | No | Yes | Yes | Yes |
| Block-range indexes | No | No | No | No | No | No | No | No | No | Yes | Yes |
| Cross datatype hashing support | No | No | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
| Distributed checkpointing | No | No | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
| Foreign keys marked as NOT VALID | No | No | No | No | No | Yes | Yes | Yes | Yes | Yes | Yes |
| Frozen page map | No | No | No | No | No | No | No | No | No | No | Yes |
| Full Text Search | No | No | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
| GIN (Generalized Inverted Index) Indexes | No | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
| GIN indexes partial match | No | No | No | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
| GIN Index performance and size improvements | No | No | No | No | No | No | No | No | Yes | Yes | Yes |
| GiST (Generalized Search Tree) Indexes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
| Hashing support for DISTINCT/UNION/INTERSECT/EXCEPT | No | No | No | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
| Hashing support for FULL OUTER JOIN, LEFT OUTER JOIN and RIGHT OUTER JOIN | No | No | No | No | No | Yes | Yes | Yes | Yes | Yes | Yes |
| Hashing support for NUMERIC | No | No | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
| Heap Only Tuples (HOT) | No | No | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
| Indexes on expressions | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
| Index-only scans | No | No | No | No | No | No | Yes | Yes | Yes | Yes | Yes |
| Index-only scans on GiST | No | No | No | No | No | No | No | No | No | Yes | Yes |
| Index support for IS NULL | No | No | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
| Inlining of SQL-functions | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
| In-memory Bitmap Indexes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
| K-nearest neighbor GiST support | No | No | No | No | No | Yes | Yes | Yes | Yes | Yes | Yes |
| Lazy XID allocation | No | No | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
| Multi-core scalability for read-only workloads | No | No | No | No | No | No | Yes | Yes | Yes | Yes | Yes |
| Multiple temporary tablespaces | No | No | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
| Non-blocking CREATE INDEX | No | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
| Outer Join reordering | No | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
| Parallel JOIN, aggregate | No | No | No | No | No | No | No | No | No | No | Yes |
| Parallel query | No | No | No | No | No | No | No | No | No | No | Yes |
| Parallel restore | No | No | No | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
| Parallel seqscan | No | No | No | No | No | No | No | No | No | No | Yes |
| Parallel vacuumdb jobs | No | No | No | No | No | No | No | No | No | Yes | Yes |
| Partial sort capability (top-n sorting) | No | No | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
| pg_prewarm | No | No | No | No | No | No | No | No | Yes | Yes | Yes |
| Reduced lock levels for ALTER TABLE commands | No | No | No | No | No | No | No | No | Yes | Yes | Yes |
| SELECT ... FOR UPDATE/SHARE NOWAIT | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
| Semi- and Antijoins | No | No | No | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
| Shared row level locking | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
| SKIP LOCKED clause | No | No | No | No | No | No | No | No | No | Yes | Yes |
| Space-Partitioned GiST Indexes | No | No | No | No | No | No | Yes | Yes | Yes | Yes | Yes |
| Synchronized sequential scanning | No | No | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
| Table partitioning | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
| TABLESAMPLE clause | No | No | No | No | No | No | No | No | No | Yes | Yes |
| Tablespaces | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
| Unlogged tables | No | No | No | No | No | Yes | Yes | Yes | Yes | Yes | Yes |
| WAL Buffer auto-tuning | No | No | No | No | No | Yes | Yes | Yes | Yes | Yes | Yes |
| Security | 8.1 | 8.2 | 8.3 | 8.4 | 9.0 | 9.1 | 9.2 | 9.3 | 9.4 | 9.5 | 9.6 |
| GSSAPI support | No | No | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
| krb5 authentication (without gssapi) | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Obsolete | Obsolete | Obsolete |
| Large object access controls | No | No | No | No | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
| Native LDAP authentication | No | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
| Native RADIUS authentication | No | No | No | No | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
| Per user/database connection limits | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
| ROLES | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
| Row-Level Security | No | No | No | No | No | No | No | No | No | Yes | Yes |
| Search+bind mode operation for LDAP authentication | No | No | No | No | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
| security_barrier option on views | No | No | No | No | No | No | Yes | Yes | Yes | Yes | Yes |
| Security Service Provider Interface (SSPI) | No | No | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
| SSL certificate validation in libpq | No | No | No | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
| SSL client certificate authentication | No | No | No | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
| SSPI authentication via GSSAPI | No | No | No | No | No | Yes | Yes | Yes | Yes | Yes | Yes |
| Network | 8.1 | 8.2 | 8.3 | 8.4 | 9.0 | 9.1 | 9.2 | 9.3 | 9.4 | 9.5 | 9.6 |
| Full SSL support | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
| IPv6 Support | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
| V2 client protocol | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
| V3 client protocol | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
| Internationalisation | 8.1 | 8.2 | 8.3 | 8.4 | 9.0 | 9.1 | 9.2 | 9.3 | 9.4 | 9.5 | 9.6 |
| Column-level collation support | No | No | No | No | No | Yes | Yes | Yes | Yes | Yes | Yes |
| Database level Collation | No | No | No | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
| EUC_JIS_2004/ SHIFT_JIS_2004 support | No | No | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
| Multibyte encoding support, incl. UTF8 | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
| Multiple language support | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
| Unicode string literals and identifiers | No | No | No | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
| UTF8 support on Windows | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
| Platforms | 8.1 | 8.2 | 8.3 | 8.4 | 9.0 | 9.1 | 9.2 | 9.3 | 9.4 | 9.5 | 9.6 |
| Microsoft Visual C++ Support | No | No | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
| Native Windows Port | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
| Spinlock support for the SuperH hardware platform | No | No | No | No | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
| Sun Studio compiler on Linux | No | No | No | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
| Windows x64 support | No | No | No | No | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
| Datatypes | 8.1 | 8.2 | 8.3 | 8.4 | 9.0 | 9.1 | 9.2 | 9.3 | 9.4 | 9.5 | 9.6 |
| Arrays of compound types | No | No | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
| Array support | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
| CREATE EXTENSION CASCADE | No | No | No | No | No | No | No | No | No | No | Yes |
| ENUM data type | No | No | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
| GUID/UUID data type | No | No | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
| IS0 8601 interval syntax | No | No | No | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
| JSONB data type | No | No | No | No | No | No | No | No | Yes | Yes | Yes |
| JSON data type | No | No | No | No | No | No | Yes | Yes | Yes | Yes | Yes |
| NULLs in Array | No | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
| Phrase search | No | No | No | No | No | No | No | No | No | No | Yes |
| Range types | No | No | No | No | No | No | Yes | Yes | Yes | Yes | Yes |
| smallserial type | No | No | No | No | No | No | Yes | Yes | Yes | Yes | Yes |
| Type modifier support | No | No | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
| XML data type | No | No | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
| Foreign Data Wrappers | 8.1 | 8.2 | 8.3 | 8.4 | 9.0 | 9.1 | 9.2 | 9.3 | 9.4 | 9.5 | 9.6 |
| contrib/file_fdw | No | No | No | No | No | Yes | Yes | Yes | Yes | Yes | Yes |
| contrib/postgres_fdw | No | No | No | No | No | No | No | Yes | Yes | Yes | Yes |
| Foreign data wrappers | No | No | No | No | No | Yes | Yes | Yes | Yes | Yes | Yes |
| Foreign Tables | No | No | No | No | No | Yes | Yes | Yes | Yes | Yes | Yes |
| IMPORT FOREIGN SCHEMA | No | No | No | No | No | No | No | No | No | Yes | Yes |
| postgres_fdw pushdown | No | No | No | No | No | No | No | No | No | No | Yes |
| Writable Foreign Data Wrappers | No | No | No | No | No | No | No | Yes | Yes | Yes | Yes |
| Functions and triggers | 8.1 | 8.2 | 8.3 | 8.4 | 9.0 | 9.1 | 9.2 | 9.3 | 9.4 | 9.5 | 9.6 |
| ALTER TABLE ENABLE/DISABLE TRIGGER | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
| ALTER TABLE / ENABLE REPLICA TRIGGER/RULE | No | No | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
| Column level triggers | No | No | No | No | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
| Event triggers | No | No | No | No | No | No | No | Yes | Yes | Yes | Yes |
| FILTER clause for aggregate functions | No | No | No | No | No | No | No | No | Yes | Yes | Yes |
| Function argument names | No | No | No | No | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
| ORDER BY support within aggregates | No | No | No | No | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
| Per function GUC settings | No | No | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
| Per function statistics | No | No | No | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
| RETURN QUERY EXECUTE | No | No | No | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
| RETURNS TABLE | No | No | No | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
| Statement level triggers | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
| Statement level TRUNCATE triggers | No | No | No | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
| Triggers on views | No | No | No | No | No | Yes | Yes | Yes | Yes | Yes | Yes |
| Variadic functions | No | No | No | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
| WHEN clause for CREATE TRIGGER | No | No | No | No | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
| Procedural Languages | 8.1 | 8.2 | 8.3 | 8.4 | 9.0 | 9.1 | 9.2 | 9.3 | 9.4 | 9.5 | 9.6 |
| CASE in pl/pgsql | No | No | No | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
| CONTINUE statement for PL/pgSQL | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
| CREATE TRANSFORM | No | No | No | No | No | No | No | No | No | Yes | Yes |
| DO statement for pl/perl | No | No | No | No | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
| DO statement for pl/pgsql | No | No | No | No | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
| EXCEPTION support in PL/pgSQL | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
| EXECUTE USING in PL/pgSQL | No | No | No | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
| FOREACH IN ARRAY in pl/pgsql | No | No | No | No | No | Yes | Yes | Yes | Yes | Yes | Yes |
| IN/OUT/INOUT parameters for pl/pgsql and PL/SQL | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
| Named parameters | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
| Non-superuser language creation | No | No | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
| Number of function arguments increased to 100 | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
| pl/pgsql installed by default | No | No | No | No | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
| Polymorphic functions | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
| Python 3 support for pl/python | No | No | No | No | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
| Qualified function parameters | No | No | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
| RETURN QUERY in pl/pgsql | No | No | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
| ROWS and COST specification for functions | No | No | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
| Scrollable and updatable cursor support for pl/pgsql | No | No | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
| SQLERRM/SQLSTATE for pl/pgsql | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
| Unicode object support in PL/python | No | No | No | No | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
| User defined exceptions | No | No | No | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
| Validator function for pl/perl | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
| contrib modules | 8.1 | 8.2 | 8.3 | 8.4 | 9.0 | 9.1 | 9.2 | 9.3 | 9.4 | 9.5 | 9.6 |
| contrib/adminpack | No | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
| contrib/auth_delay | No | No | No | No | No | Yes | Yes | Yes | Yes | Yes | Yes |
| contrib/autoexplain | No | No | No | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
| contrib/btree_gin | No | No | No | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
| contrib/btree_gist | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
| contrib/citext | No | No | No | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
| contrib/dblink | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
| contrib/dblink asyncronous notification support | No | No | No | No | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
| contrib/dbsize | Obsolete | Obsolete | Obsolete | Obsolete | Obsolete | Obsolete | Obsolete | Obsolete | Obsolete | Obsolete | Obsolete |
| contrib/fuzzystrmatch | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
| contrib/hstore | No | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
| contrib/hstore improvements | No | No | No | No | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
| contrib/intarray | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
| contrib/isn (ISBN) | No | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
| contrib/ltree | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
| contrib/pageinspect | No | No | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
| contrib/passwordcheck | No | No | No | No | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
| contrib/pg_autovacuum | Obsolete | Obsolete | Obsolete | Obsolete | Obsolete | Obsolete | Obsolete | Obsolete | Obsolete | Obsolete | Obsolete |
| contrib/pgbench | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
| contrib/pg_buffercache | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
| contrib/pg_freespacemap | No | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
| contrib/pg_rewind | No | No | No | No | No | No | No | No | No | Yes | Yes |
| contrib/pg_standby | No | No | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
| contrib/pg_stat_statements | No | No | No | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
| contrib/pg_stat_statements improvements | No | No | No | No | No | No | Yes | Yes | Yes | Yes | Yes |
| contrib/pgstattuple | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
| contrib/pg_trgm | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
| contrib/pg_trgm regular expressions indexing | No | No | No | No | No | No | No | Yes | Yes | Yes | Yes |
| contrib/pg_upgrade | No | No | No | No | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
| contrib/pg_xlogdump | No | No | No | No | No | No | No | Yes | Yes | Yes | Yes |
| contrib/seg | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
| contrib/sepgsql | No | No | No | No | No | Yes | Yes | Yes | Yes | Yes | Yes |
| contrib/sslinfo | No | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
| contrib/tablefunc | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
| contrib/tcn | No | No | No | No | No | No | Yes | Yes | Yes | Yes | Yes |
| contrib/tsearch2 | Yes | Yes | Obsolete | Obsolete | Obsolete | Obsolete | Obsolete | Obsolete | Obsolete | Obsolete | Obsolete |
| contrib/tsearch2 compat wrapper | No | No | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
| contrib/tsearch2 UTF8 support | No | Yes | Obsolete | Obsolete | Obsolete | Obsolete | Obsolete | Obsolete | Obsolete | Obsolete | Obsolete |
| contrib/unaccent | No | No | No | No | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
| contrib/userlocks | Yes | Obsolete | Obsolete | Obsolete | Obsolete | Obsolete | Obsolete | Obsolete | Obsolete | Obsolete | Obsolete |
| contrib/uuid-ossp | No | No | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
| contrib/xml2 | Yes | Yes | Yes | Obsolete | Obsolete | Obsolete | Obsolete | Obsolete | Obsolete | Obsolete | Obsolete |
| KNN support for CUBE | No | No | No | No | No | No | No | No | No | No | Yes |