↑↓ select ↵ open ⌫ change scope Open full search

PG.CENTER connects PostgreSQL documentation, reference, and ecosystem knowledge. Maintained by Pigsty.

DocumentationVersion comparison

POSTGRESQL · VERSION COMPARE

PostgreSQL 9.5 release changes

All features, fixes, and compatibility notes in this release, with related records from other versions.

All changes in this release
All changes in this release

Includes changes after the source version through the target. A major version name means its initial release.

From PostgreSQL 9.0 onward: 17 major branches and 352 release notes. Updated 2026-09-26.

Complete release changes

9.5

2016-01-07

Export JSON
193changesFeatures, fixes, improvements
1releaseGrouped by release
0CVEsVulnerability IDs mentioned in these notes

9.5.0 HistoricalSupport ends 2021-02-11

PostgreSQL 9.5

Migration and compatibility

A dump/restore using pg_dumpall, or use of pg_upgrade, is required for those wishing to migrate data from any previous release.

Version 9.5 contains a number of changes that may affect compatibility with previous releases. Observe the following incompatibilities:

CompatibilityAdjust operator precedence to match the SQL standard

Compatibility

Adjust operator precedence to match the SQL standard (Tom Lane)

The precedence of <=, >= and <> has been reduced to match that of <, > and =. The precedence of IS tests (e.g., x IS NULL) has been reduced to be just below these six comparison operators. Also, multi-keyword operators beginning with NOT now have the precedence of their base operator (for example, NOT BETWEEN now has the same precedence as BETWEEN) whereas before they had inconsistent precedence, behaving like NOT with respect to their left operand but like their base operator with respect to their right operand. The new configuration parameter operator_precedence_warning can be enabled to warn about queries in which these precedence changes result in different parsing choices.

CompatibilityChange pg_ctl's default shutdown mode from smart to fast

Compatibility

Change pg_ctl's default shutdown mode from smart to fast (Bruce Momjian)

This means the default behavior will be to forcibly cancel existing database sessions, not simply wait for them to exit.

CompatibilityUse assignment cast behavior for data type conversions in PL/pgSQL assignments, rather than converting to and from text

Compatibility

Use assignment cast behavior for data type conversions in PL/pgSQL assignments, rather than converting to and from text (Tom Lane)

This change causes conversions of Booleans to strings to produce true or false, not t or f. Other type conversions may succeed in more cases than before; for example, assigning a numeric value 3.9 to an integer variable will now assign 4 rather than failing. If no assignment-grade cast is defined for the particular source and destination types, PL/pgSQL will fall back to its old I/O conversion behavior.

CompatibilityAllow characters in server command-line options to be escaped with a backslash

Compatibility

Allow characters in server command-line options to be escaped with a backslash (Andres Freund)

Formerly, spaces in the options string always separated options, so there was no way to include a space in an option value. Including a backslash in an option value now requires writing \\.

CompatibilityChange the default value of the GSSAPI include_realm parameter to 1, so that by default the realm is not removed from a GSS or SSPI principal name

Compatibility

Change the default value of the GSSAPI include_realm parameter to 1, so that by default the realm is not removed from a GSS or SSPI principal name (Stephen Frost)

CompatibilityReplace configuration parameter checkpoint_segments with min_wal_size and max_wal_size

Compatibility

Replace configuration parameter checkpoint_segments with min_wal_size and max_wal_size (Heikki Linnakangas)

If you previously adjusted checkpoint_segments, the following formula will give you an approximately equivalent setting:

max_wal_size = (3 * checkpoint_segments) * 16MB

Note that the default setting for max_wal_size is much higher than the default checkpoint_segments used to be, so adjusting it might no longer be necessary.

Related records (1)

“Same change” requires complete matching evidence. “Related commits” can cover independent changes, a partial backport, or a follow-up correction; each release keeps its own explanation.

CompatibilityControl the Linux OOM killer via new environment variables PG_OOM_ADJUST_FILE and PG_OOM_ADJUST_VALUE, instead of compile-time options LINUX_OOM_SCORE_ADJ and LINUX_OOM_ADJ

Compatibility

Control the Linux OOM killer via new environment variables PG_OOM_ADJUST_FILE and PG_OOM_ADJUST_VALUE, instead of compile-time options LINUX_OOM_SCORE_ADJ and LINUX_OOM_ADJ (Gurjeet Singh)

Related records (1)

“Same change” requires complete matching evidence. “Related commits” can cover independent changes, a partial backport, or a follow-up correction; each release keeps its own explanation.

CompatibilityDecommission server configuration parameter ssl_renegotiation_limit, which was deprecated in earlier releases

Compatibility

Decommission server configuration parameter ssl_renegotiation_limit, which was deprecated in earlier releases (Andres Freund)

While SSL renegotiation is a good idea in theory, it has caused enough bugs to be considered a net negative in practice, and it is due to be removed from future versions of the relevant standards. We have therefore removed support for it from PostgreSQL. The ssl_renegotiation_limit parameter still exists, but cannot be set to anything but zero (disabled). It's not documented anymore, either.

CompatibilityRemove server configuration parameter autocommit, which was already deprecated and non-operational

Compatibility

Remove server configuration parameter autocommit, which was already deprecated and non-operational (Tom Lane)

CompatibilityRemove the pg_authid catalog's rolcatupdate field, as it had no usefulness

Compatibility

Remove the pg_authid catalog's rolcatupdate field, as it had no usefulness (Adam Brightwell)

CompatibilityThe pg_stat_replication system view's sent field is now NULL, not zero, when it has no valid value

Compatibility

The pg_stat_replication system view's sent field is now NULL, not zero, when it has no valid value (Magnus Hagander)

CompatibilityAllow json and jsonb array extraction operators to accept negative subscripts, which count from the end of JSON arrays

Compatibility

Allow json and jsonb array extraction operators to accept negative subscripts, which count from the end of JSON arrays (Peter Geoghegan, Andrew Dunstan)

Previously, these operators returned NULL for negative subscripts.

FeaturesAdd Block Range Indexes (BRIN)

Server / Indexes

Add Block Range Indexes (BRIN) (Álvaro Herrera)

BRIN indexes store only summary data (such as minimum and maximum values) for ranges of heap blocks. They are therefore very compact and cheap to update; but if the data is naturally clustered, they can still provide substantial speedup of searches.

FeaturesAllow queries to perform accurate distance filtering of bounding-box-indexed objects (polygons, circles) using GiST indexes

Server / Indexes

Allow queries to perform accurate distance filtering of bounding-box-indexed objects (polygons, circles) using GiST indexes (Alexander Korotkov, Heikki Linnakangas)

Previously, to exploit such an index a subquery had to be used to select a large number of rows ordered by bounding-box distance, and the result then had to be filtered further with a more accurate distance calculation.

FeaturesAllow GiST indexes to perform index-only scans

Server / Indexes

Allow GiST indexes to perform index-only scans (Anastasia Lubennikova, Heikki Linnakangas, Andreas Karlsson)

FeaturesAdd configuration parameter gin_pending_list_limit to control the size of GIN pending lists

Server / Indexes

Add configuration parameter gin_pending_list_limit to control the size of GIN pending lists (Fujii Masao)

This value can also be set on a per-index basis as an index storage parameter. Previously the pending-list size was controlled by work_mem, which was awkward because appropriate values for work_mem are often much too large for this purpose.

FeaturesIssue a warning during the creation of hash indexes because they are not crash-safe

Server / Indexes

Issue a warning during the creation of hash indexes because they are not crash-safe (Bruce Momjian)

PerformanceImprove the speed of sorting of varchar, text, and numeric fields via "abbreviated" keys

Server / General Performance

Improve the speed of sorting of varchar, text, and numeric fields via "abbreviated" keys (Peter Geoghegan, Andrew Gierth, Robert Haas)

PerformanceExtend the infrastructure that allows sorting to be performed by inlined, non-SQL-callable comparison functions to cover CREATE INDEX, REINDEX, and CLUSTER

Server / General Performance

Extend the infrastructure that allows sorting to be performed by inlined, non-SQL-callable comparison functions to cover CREATE INDEX, REINDEX, and CLUSTER (Peter Geoghegan)

PerformanceImprove performance of hash joins

Server / General Performance

Improve performance of hash joins (Tomas Vondra, Robert Haas)

PerformanceImprove concurrency of shared buffer replacement

Server / General Performance

Improve concurrency of shared buffer replacement (Robert Haas, Amit Kapila, Andres Freund)

PerformanceReduce the number of page locks and pins during index scans

Server / General Performance

Reduce the number of page locks and pins during index scans (Kevin Grittner)

The primary benefit of this is to allow index vacuums to be blocked less often.

PerformanceMake per-backend tracking of buffer pins more memory-efficient

Server / General Performance

Make per-backend tracking of buffer pins more memory-efficient (Andres Freund)

PerformanceImprove lock scalability

Server / General Performance

Improve lock scalability (Andres Freund)

This particularly addresses scalability problems when running on systems with multiple CPU sockets.

PerformanceAllow the optimizer to remove unnecessary references to left-joined subqueries

Server / General Performance

Allow the optimizer to remove unnecessary references to left-joined subqueries (David Rowley)

PerformanceAllow pushdown of query restrictions into subqueries with window functions, where appropriate

Server / General Performance

Allow pushdown of query restrictions into subqueries with window functions, where appropriate (David Rowley)

PerformanceAllow a non-leakproof function to be pushed down into a security barrier view if the function does not receive any view output columns

Server / General Performance

Allow a non-leakproof function to be pushed down into a security barrier view if the function does not receive any view output columns (Dean Rasheed)

PerformanceTeach the planner to use statistics obtained from an expression index on a boolean-returning function, when a matching function call appears in WHERE

Server / General Performance

Teach the planner to use statistics obtained from an expression index on a boolean-returning function, when a matching function call appears in WHERE (Tom Lane)

PerformanceMake ANALYZE compute basic statistics (null fraction and average column width) even for columns whose data type lacks an equality function

Server / General Performance

Make ANALYZE compute basic statistics (null fraction and average column width) even for columns whose data type lacks an equality function (Oleksandr Shulgin)

PerformanceSpeed up CRC (cyclic redundancy check) computations and switch to CRC-32C

Server / General Performance

Speed up CRC (cyclic redundancy check) computations and switch to CRC-32C (Abhijit Menon-Sen, Heikki Linnakangas)

PerformanceImprove bitmap index scan performance

Server / General Performance

Improve bitmap index scan performance (Teodor Sigaev, Tom Lane)

PerformanceSpeed up CREATE INDEX by avoiding unnecessary memory copies

Server / General Performance

Speed up CREATE INDEX by avoiding unnecessary memory copies (Robert Haas)

PerformanceIncrease the number of buffer mapping partitions

Server / General Performance

Increase the number of buffer mapping partitions (Amit Kapila, Andres Freund, Robert Haas)

This improves performance for highly concurrent workloads.

FeaturesAdd per-table autovacuum logging control via new log_autovacuum_min_duration storage parameter

Server / Monitoring

Add per-table autovacuum logging control via new log_autovacuum_min_duration storage parameter (Michael Paquier)

FeaturesAdd new configuration parameter cluster_name

Server / Monitoring

Add new configuration parameter cluster_name (Thomas Munro)

This string, typically set in postgresql.conf, allows clients to identify the cluster. This name also appears in the process title of all server processes, allowing for easier identification of processes belonging to the same cluster.

FeaturesPrevent non-superusers from changing log_disconnections on connection startup

Server / Monitoring

Prevent non-superusers from changing log_disconnections on connection startup (Fujii Masao)

FeaturesCheck "Subject Alternative Names" in SSL server certificates, if present

Server / SSL

Check "Subject Alternative Names" in SSL server certificates, if present (Alexey Klyukin)

When they are present, this replaces checks against the certificate's "Common Name".

FeaturesAdd system view pg_stat_ssl to report SSL connection information

Server / SSL

Add system view pg_stat_ssl to report SSL connection information (Magnus Hagander)

FeaturesAdd libpq functions to return SSL information in an implementation-independent way

Server / SSL

Add libpq functions to return SSL information in an implementation-independent way (Heikki Linnakangas)

While PQgetssl() can still be used to call OpenSSL functions, it is now considered deprecated because future versions of libpq might support other SSL implementations. When possible, use the new functions PQsslAttribute(), PQsslAttributeNames(), and PQsslInUse() to obtain SSL information in an SSL-implementation-independent way.

FeaturesMake libpq honor any OpenSSL thread callbacks

Server / SSL

Make libpq honor any OpenSSL thread callbacks (Jan Urbanski)

Previously they were overwritten.

FeaturesReplace configuration parameter checkpoint_segments with min_wal_size and max_wal_size

Server / Server Settings

Replace configuration parameter checkpoint_segments with min_wal_size and max_wal_size (Heikki Linnakangas)

This change allows the allocation of a large number of WAL files without keeping them after they are no longer needed. Therefore the default for max_wal_size has been set to 1GB, much larger than the old default for checkpoint_segments. Also note that standby servers perform restartpoints to try to limit their WAL space consumption to max_wal_size; previously they did not pay any attention to checkpoint_segments.

Related records (1)

“Same change” requires complete matching evidence. “Related commits” can cover independent changes, a partial backport, or a follow-up correction; each release keeps its own explanation.

FeaturesControl the Linux OOM killer via new environment variables PG_OOM_ADJUST_FILE and PG_OOM_ADJUST_VALUE

Server / Server Settings

Control the Linux OOM killer via new environment variables PG_OOM_ADJUST_FILE and PG_OOM_ADJUST_VALUE (Gurjeet Singh)

The previous OOM control infrastructure involved compile-time options LINUX_OOM_SCORE_ADJ and LINUX_OOM_ADJ, which are no longer supported. The new behavior is available in all builds.

Related records (1)

“Same change” requires complete matching evidence. “Related commits” can cover independent changes, a partial backport, or a follow-up correction; each release keeps its own explanation.

FeaturesAllow recording of transaction commit time stamps when configuration parameter track_commit_timestamp is enabled

Server / Server Settings

Allow recording of transaction commit time stamps when configuration parameter track_commit_timestamp is enabled (Álvaro Herrera, Petr Jelínek)

Time stamp information can be accessed using functions pg_xact_commit_timestamp() and pg_last_committed_xact().

FeaturesAllow local_preload_libraries to be set by ALTER ROLE SET

Server / Server Settings

Allow local_preload_libraries to be set by ALTER ROLE SET (Peter Eisentraut, Kyotaro Horiguchi)

FeaturesAllow autovacuum workers to respond to configuration parameter changes during a run

Server / Server Settings

Allow autovacuum workers to respond to configuration parameter changes during a run (Michael Paquier)

FeaturesMake configuration parameter debug_assertions read-only

Server / Server Settings

Make configuration parameter debug_assertions read-only (Andres Freund)

This means that assertions can no longer be turned off if they were enabled at compile time, allowing for more efficient code optimization. This change also removes the postgres -A option.

FeaturesAllow setting effective_io_concurrency on systems where it has no effect

Server / Server Settings

Allow setting effective_io_concurrency on systems where it has no effect (Peter Eisentraut)

FeaturesAdd system view pg_file_settings to show the contents of the server's configuration files

Server / Server Settings

Add system view pg_file_settings to show the contents of the server's configuration files (Sawada Masahiko)

FeaturesAdd pending_restart to the system view pg_settings to indicate a change has been made but will not take effect until a database restart

Server / Server Settings

Add pending_restart to the system view pg_settings to indicate a change has been made but will not take effect until a database restart (Peter Eisentraut)

FeaturesAllow ALTER SYSTEM values to be reset with ALTER SYSTEM RESET

Server / Server Settings

Allow ALTER SYSTEM values to be reset with ALTER SYSTEM RESET (Vik Fearing)

This command removes the specified setting from postgresql.auto.conf.

FeaturesCreate mechanisms for tracking the progress of replication, including methods for identifying the origin of individual changes during logical replication

Replication and Recovery

Create mechanisms for tracking the progress of replication, including methods for identifying the origin of individual changes during logical replication (Andres Freund)

This is helpful when implementing replication solutions.

FeaturesRework truncation of the multixact commit log to be properly WAL-logged

Replication and Recovery

Rework truncation of the multixact commit log to be properly WAL-logged (Andres Freund)

This makes things substantially simpler and more robust.

FeaturesAdd recovery.conf parameter recovery_target_action to control post-recovery activity

Replication and Recovery

Add recovery.conf parameter recovery_target_action to control post-recovery activity (Petr Jelínek)

This replaces the old parameter pause_at_recovery_target.

FeaturesAdd new archive_mode value always to allow standbys to always archive received WAL files

Replication and Recovery

Add new archive_mode value always to allow standbys to always archive received WAL files (Fujii Masao)

FeaturesAdd configuration parameter wal_retrieve_retry_interval to control WAL read retry after failure

Replication and Recovery

Add configuration parameter wal_retrieve_retry_interval to control WAL read retry after failure (Alexey Vasiliev, Michael Paquier)

This is particularly helpful for warm standbys.

FeaturesAllow compression of full-page images stored in WAL

Replication and Recovery

Allow compression of full-page images stored in WAL (Rahila Syed, Michael Paquier)

This feature reduces WAL volume, at the cost of more CPU time spent on WAL logging and WAL replay. It is controlled by a new configuration parameter wal_compression, which currently is off by default.

FeaturesArchive WAL files with suffix .partial during standby promotion

Replication and Recovery

Archive WAL files with suffix .partial during standby promotion (Heikki Linnakangas)

FeaturesAdd configuration parameter log_replication_commands to log replication commands

Replication and Recovery

Add configuration parameter log_replication_commands to log replication commands (Fujii Masao)

By default, replication commands, e.g., IDENTIFY_SYSTEM, are not logged, even when log_statement is set to all.

FeaturesReport the processes holding replication slots in pg_replication_slots

Replication and Recovery

Report the processes holding replication slots in pg_replication_slots (Craig Ringer)

The new output column is active_pid.

FeaturesAllow recovery.conf's primary_conninfo setting to use connection URIs, e.g., postgres://

Replication and Recovery

Allow recovery.conf's primary_conninfo setting to use connection URIs, e.g., postgres:// (Alexander Shulgin)

FeaturesAllow INSERTs that would generate constraint conflicts to be turned into UPDATEs or ignored

Queries

Allow INSERTs that would generate constraint conflicts to be turned into UPDATEs or ignored (Peter Geoghegan, Heikki Linnakangas, Andres Freund)

The syntax is INSERT ... ON CONFLICT DO NOTHING/UPDATE. This is the Postgres implementation of the popular UPSERT command.

Related records (1)

“Same change” requires complete matching evidence. “Related commits” can cover independent changes, a partial backport, or a follow-up correction; each release keeps its own explanation.

FeaturesAdd GROUP BY analysis features GROUPING SETS, CUBE and ROLLUP

Queries

Add GROUP BY analysis features GROUPING SETS, CUBE and ROLLUP (Andrew Gierth, Atri Sharma)

FeaturesAllow setting multiple target columns in an UPDATE from the result of a single sub-SELECT

Queries

Allow setting multiple target columns in an UPDATE from the result of a single sub-SELECT (Tom Lane)

This is accomplished using the syntax UPDATE tab SET (col1, col2, ...) = (SELECT ...).

FeaturesAdd SELECT option SKIP LOCKED to skip locked rows

Queries

Add SELECT option SKIP LOCKED to skip locked rows (Thomas Munro)

This does not throw an error for locked rows like NOWAIT does.

FeaturesAdd SELECT option TABLESAMPLE to return a subset of a table

Queries

Add SELECT option TABLESAMPLE to return a subset of a table (Petr Jelínek)

This feature supports the SQL-standard table sampling methods. In addition, there are provisions for user-defined table sampling methods.

FeaturesSuggest possible matches for mistyped column names

Queries

Suggest possible matches for mistyped column names (Peter Geoghegan, Robert Haas)

FeaturesAdd more details about sort ordering in EXPLAIN output

Utility Commands

Add more details about sort ordering in EXPLAIN output (Marius Timmer, Lukas Kreft, Arne Scheffer)

Details include COLLATE, DESC, USING, and NULLS FIRST/LAST.

FeaturesMake VACUUM log the number of pages skipped due to pins

Utility Commands

Make VACUUM log the number of pages skipped due to pins (Jim Nasby)

FeaturesMake TRUNCATE properly update the pg_stat* tuple counters

Utility Commands

Make TRUNCATE properly update the pg_stat* tuple counters (Alexander Shulgin)

FeaturesAllow REINDEX to reindex an entire schema using the SCHEMA option

Utility Commands / REINDEX

Allow REINDEX to reindex an entire schema using the SCHEMA option (Sawada Masahiko)

FeaturesAdd VERBOSE option to REINDEX

Utility Commands / REINDEX

Add VERBOSE option to REINDEX (Sawada Masahiko)

FeaturesPrevent REINDEX DATABASE and SCHEMA from outputting object names, unless VERBOSE is used

Utility Commands / REINDEX

Prevent REINDEX DATABASE and SCHEMA from outputting object names, unless VERBOSE is used (Simon Riggs)

FeaturesRemove obsolete FORCE option from REINDEX

Utility Commands / REINDEX

Remove obsolete FORCE option from REINDEX (Fujii Masao)

FeaturesAdd row-level security control

Object Manipulation

Add row-level security control (Craig Ringer, KaiGai Kohei, Adam Brightwell, Dean Rasheed, Stephen Frost)

This feature allows row-by-row control over which users can add, modify, or even see rows in a table. This is controlled by new commands CREATE/ALTER/DROP POLICY and ALTER TABLE ... ENABLE/DISABLE ROW SECURITY.

FeaturesAllow changing of the WAL logging status of a table after creation with ALTER TABLE ... SET LOGGED / UNLOGGED

Object Manipulation

Allow changing of the WAL logging status of a table after creation with ALTER TABLE ... SET LOGGED / UNLOGGED (Fabrízio de Royes Mello)

FeaturesAdd IF NOT EXISTS clause to CREATE TABLE AS, CREATE INDEX, CREATE SEQUENCE, and CREATE MATERIALIZED VIEW

Object Manipulation

Add IF NOT EXISTS clause to CREATE TABLE AS, CREATE INDEX, CREATE SEQUENCE, and CREATE MATERIALIZED VIEW (Fabrízio de Royes Mello)

FeaturesAdd support for IF EXISTS to ALTER TABLE ... RENAME CONSTRAINT

Object Manipulation

Add support for IF EXISTS to ALTER TABLE ... RENAME CONSTRAINT (Bruce Momjian)

FeaturesAllow some DDL commands to accept CURRENT_USER or SESSION_USER, meaning the current user or session user, in place of a specific user name

Object Manipulation

Allow some DDL commands to accept CURRENT_USER or SESSION_USER, meaning the current user or session user, in place of a specific user name (Kyotaro Horiguchi, Álvaro Herrera)

This feature is now supported in ALTER USER, ALTER GROUP, ALTER ROLE, GRANT, and ALTER object OWNER TO commands.

FeaturesSupport comments on domain constraints

Object Manipulation

Support comments on domain constraints (Álvaro Herrera)

FeaturesReduce lock levels of some create and alter trigger and foreign key commands

Object Manipulation

Reduce lock levels of some create and alter trigger and foreign key commands (Simon Riggs, Andreas Karlsson)

FeaturesAllow LOCK TABLE ... ROW EXCLUSIVE MODE for those with INSERT privileges on the target table

Object Manipulation

Allow LOCK TABLE ... ROW EXCLUSIVE MODE for those with INSERT privileges on the target table (Stephen Frost)

Previously this command required UPDATE, DELETE, or TRUNCATE privileges.

FeaturesApply table and domain CHECK constraints in order by name

Object Manipulation

Apply table and domain CHECK constraints in order by name (Tom Lane)

The previous ordering was indeterminate.

FeaturesAllow CREATE/ALTER DATABASE to manipulate datistemplate and datallowconn

Object Manipulation

Allow CREATE/ALTER DATABASE to manipulate datistemplate and datallowconn (Vik Fearing)

This allows these per-database settings to be changed without manually modifying the pg_database system catalog.

FeaturesAdd support for IMPORT FOREIGN SCHEMA

Object Manipulation / Foreign Tables

Add support for IMPORT FOREIGN SCHEMA (Ronan Dunklau, Michael Paquier, Tom Lane)

This command allows automatic creation of local foreign tables that match the structure of existing tables on a remote server.

FeaturesAllow CHECK constraints to be placed on foreign tables

Object Manipulation / Foreign Tables

Allow CHECK constraints to be placed on foreign tables (Shigeru Hanada, Etsuro Fujita)

Such constraints are assumed to be enforced on the remote server, and are not enforced locally. However, they are assumed to hold for purposes of query optimization, such as constraint exclusion.

FeaturesAllow foreign tables to participate in inheritance

Object Manipulation / Foreign Tables

Allow foreign tables to participate in inheritance (Shigeru Hanada, Etsuro Fujita)

To let this work naturally, foreign tables are now allowed to have check constraints marked as not valid, and to set storage and OID characteristics, even though these operations are effectively no-ops for a foreign table.

FeaturesAllow foreign data wrappers and custom scans to implement join pushdown

Object Manipulation / Foreign Tables

Allow foreign data wrappers and custom scans to implement join pushdown (KaiGai Kohei)

FeaturesWhenever a ddl_command_end event trigger is installed, capture details of DDL activity for it to inspect

Object Manipulation / Event Triggers

Whenever a ddl_command_end event trigger is installed, capture details of DDL activity for it to inspect (Álvaro Herrera)

This information is available through a set-returning function pg_event_trigger_ddl_commands(), or by inspection of C data structures if that function doesn't provide enough detail.

FeaturesAllow event triggers on table rewrites caused by ALTER TABLE

Object Manipulation / Event Triggers

Allow event triggers on table rewrites caused by ALTER TABLE (Dimitri Fontaine)

FeaturesAdd event trigger support for database-level COMMENT, SECURITY LABEL, and GRANT/REVOKE

Object Manipulation / Event Triggers

Add event trigger support for database-level COMMENT, SECURITY LABEL, and GRANT/REVOKE (Álvaro Herrera)

FeaturesAdd columns to the output of pg_event_trigger_dropped_objects

Object Manipulation / Event Triggers

Add columns to the output of pg_event_trigger_dropped_objects (Álvaro Herrera)

This allows simpler processing of delete operations.

FeaturesAllow the xml data type to accept empty or all-whitespace content values

Data Types

Allow the xml data type to accept empty or all-whitespace content values (Peter Eisentraut)

This is required by the SQL/XML specification.

FeaturesAllow macaddr input using the format xxxx-xxxx-xxxx

Data Types

Allow macaddr input using the format xxxx-xxxx-xxxx (Herwin Weststrate)

FeaturesDisallow non-SQL-standard syntax for interval with both precision and field specifications

Data Types

Disallow non-SQL-standard syntax for interval with both precision and field specifications (Bruce Momjian)

Per the standard, such type specifications should be written as, for example, INTERVAL MINUTE TO SECOND(2). PostgreSQL formerly allowed this to be written as INTERVAL(2) MINUTE TO SECOND, but it must now be written in the standard way.

FeaturesAdd selectivity estimators for inet/cidr operators and improve estimators for text search functions

Data Types

Add selectivity estimators for inet/cidr operators and improve estimators for text search functions (Emre Hasegeli, Tom Lane)

FeaturesAdd data types regrole and regnamespace to simplify entering and pretty-printing the OID of a role or namespace

Data Types

Add data types regrole and regnamespace to simplify entering and pretty-printing the OID of a role or namespace (Kyotaro Horiguchi)

FeaturesAdd jsonb functions jsonb_set() and jsonb_pretty()

Data Types / JSON

Add jsonb functions jsonb_set() and jsonb_pretty() (Dmitry Dolgov, Andrew Dunstan, Petr Jelínek)

Related records (1)

“Same change” requires complete matching evidence. “Related commits” can cover independent changes, a partial backport, or a follow-up correction; each release keeps its own explanation.

FeaturesAdd jsonb generator functions to_jsonb(), jsonb_object(), jsonb_build_object(), jsonb_build_array(), jsonb_agg(), and jsonb_object_agg()

Data Types / JSON

Add jsonb generator functions to_jsonb(), jsonb_object(), jsonb_build_object(), jsonb_build_array(), jsonb_agg(), and jsonb_object_agg() (Andrew Dunstan)

Equivalent functions already existed for type json.

FeaturesReduce casting requirements to/from json and jsonb

Data Types / JSON

Reduce casting requirements to/from json and jsonb (Tom Lane)

FeaturesAllow text, text array, and integer values to be subtracted from jsonb documents

Data Types / JSON

Allow text, text array, and integer values to be subtracted from jsonb documents (Dmitry Dolgov, Andrew Dunstan)

FeaturesAdd jsonb || operator

Data Types / JSON

Add jsonb || operator (Dmitry Dolgov, Andrew Dunstan)

Related records (1)

“Same change” requires complete matching evidence. “Related commits” can cover independent changes, a partial backport, or a follow-up correction; each release keeps its own explanation.

FeaturesAdd json_strip_nulls() and jsonb_strip_nulls() functions to remove JSON null values from documents

Data Types / JSON

Add json_strip_nulls() and jsonb_strip_nulls() functions to remove JSON null values from documents (Andrew Dunstan)

FeaturesAdd generate_series() for numeric values

Functions

Add generate_series() for numeric values (Plato Malugin)

FeaturesAllow array_agg() and ARRAY() to take arrays as inputs

Functions

Allow array_agg() and ARRAY() to take arrays as inputs (Ali Akbar, Tom Lane)

FeaturesAdd functions array_position() and array_positions() to return subscripts of array values

Functions

Add functions array_position() and array_positions() to return subscripts of array values (Pavel Stehule)

FeaturesAdd a point-to-polygon distance operator <->

Functions

Add a point-to-polygon distance operator <-> (Alexander Korotkov)

FeaturesAllow multibyte characters as escapes in SIMILAR TO and SUBSTRING

Functions

Allow multibyte characters as escapes in SIMILAR TO and SUBSTRING (Jeff Davis)

Previously, only a single-byte character was allowed as an escape.

FeaturesAdd a width_bucket() variant that supports any sortable data type and non-uniform bucket widths

Functions

Add a width_bucket() variant that supports any sortable data type and non-uniform bucket widths (Petr Jelínek)

FeaturesAdd an optional missing_ok argument to pg_read_file() and related functions

Functions

Add an optional missing_ok argument to pg_read_file() and related functions (Michael Paquier, Heikki Linnakangas)

FeaturesAllow => to specify named parameters in function calls

Functions

Allow => to specify named parameters in function calls (Pavel Stehule)

Previously only := could be used. This requires removing the possibility for => to be a user-defined operator. Creation of user-defined => operators has been issuing warnings since PostgreSQL 9.0.

FeaturesAdd POSIX-compliant rounding for platforms that use PostgreSQL-supplied rounding functions

Functions

Add POSIX-compliant rounding for platforms that use PostgreSQL-supplied rounding functions (Pedro Gimeno Fortea)

FeaturesAdd function pg_get_object_address() to return OIDs that uniquely identify an object, and function pg_identify_object_as_address() to return object information based on OIDs

Functions / System Information Functions and Views

Add function pg_get_object_address() to return OIDs that uniquely identify an object, and function pg_identify_object_as_address() to return object information based on OIDs (Álvaro Herrera)

FeaturesLoosen security checks for viewing queries in pg_stat_activity, executing pg_cancel_backend(), and executing pg_terminate_backend()

Functions / System Information Functions and Views

Loosen security checks for viewing queries in pg_stat_activity, executing pg_cancel_backend(), and executing pg_terminate_backend() (Stephen Frost)

Previously, only the specific role owning the target session could perform these operations; now membership in that role is sufficient.

FeaturesAdd pg_stat_get_snapshot_timestamp() to output the time stamp of the statistics snapshot

Functions / System Information Functions and Views

Add pg_stat_get_snapshot_timestamp() to output the time stamp of the statistics snapshot (Matt Kelly)

This represents the last time the snapshot file was written to the file system.

FeaturesAdd mxid_age() to compute multi-xid age

Functions / System Information Functions and Views

Add mxid_age() to compute multi-xid age (Bruce Momjian)

FeaturesAdd min()/max() aggregates for inet/cidr data types

Functions / Aggregates

Add min()/max() aggregates for inet/cidr data types (Haribabu Kommi)

FeaturesUse 128-bit integers, where supported, as accumulators for some aggregate functions

Functions / Aggregates

Use 128-bit integers, where supported, as accumulators for some aggregate functions (Andreas Karlsson)

FeaturesImprove support for composite types in PL/Python

Server-Side Languages

Improve support for composite types in PL/Python (Ed Behn, Ronan Dunklau)

This allows PL/Python functions to return arrays of composite types.

FeaturesReduce lossiness of PL/Python floating-point value conversions

Server-Side Languages

Reduce lossiness of PL/Python floating-point value conversions (Marko Kreen)

FeaturesAllow specification of conversion routines between SQL data types and data types of procedural languages

Server-Side Languages

Allow specification of conversion routines between SQL data types and data types of procedural languages (Peter Eisentraut)

This change adds new commands CREATE/DROP TRANSFORM. This also adds optional transformations between the hstore and ltree types to/from PL/Perl and PL/Python.

PerformanceImprove PL/pgSQL array performance

Server-Side Languages / PL/pgSQL Server-Side Language

Improve PL/pgSQL array performance (Tom Lane)

FeaturesAdd an ASSERT statement in PL/pgSQL

Server-Side Languages / PL/pgSQL Server-Side Language

Add an ASSERT statement in PL/pgSQL (Pavel Stehule)

FeaturesAllow more PL/pgSQL keywords to be used as identifiers

Server-Side Languages / PL/pgSQL Server-Side Language

Allow more PL/pgSQL keywords to be used as identifiers (Tom Lane)

FeaturesMove pg_archivecleanup, pg_test_fsync, pg_test_timing, and pg_xlogdump from contrib to src/bin

Client Applications

Move pg_archivecleanup, pg_test_fsync, pg_test_timing, and pg_xlogdump from contrib to src/bin (Peter Eisentraut)

This should result in these programs being installed by default in most installations.

FeaturesAdd pg_rewind, which allows re-synchronizing a master server after failback

Client Applications

Add pg_rewind, which allows re-synchronizing a master server after failback (Heikki Linnakangas)

FeaturesAllow pg_receivexlog to manage physical replication slots

Client Applications

Allow pg_receivexlog to manage physical replication slots (Michael Paquier)

This is controlled via new --create-slot and --drop-slot options.

FeaturesAllow pg_receivexlog to synchronously flush WAL to storage using new --synchronous option

Client Applications

Allow pg_receivexlog to synchronously flush WAL to storage using new --synchronous option (Furuya Osamu, Fujii Masao)

Without this, WAL files are fsync'ed only on close.

FeaturesAllow vacuumdb to vacuum in parallel using new --jobs option

Client Applications

Allow vacuumdb to vacuum in parallel using new --jobs option (Dilip Kumar)

FeaturesIn vacuumdb, do not prompt for the same password repeatedly when multiple connections are necessary

Client Applications

In vacuumdb, do not prompt for the same password repeatedly when multiple connections are necessary (Haribabu Kommi, Michael Paquier)

FeaturesAdd --verbose option to reindexdb

Client Applications

Add --verbose option to reindexdb (Sawada Masahiko)

FeaturesMake pg_basebackup use a tablespace mapping file when using tar format, to support symbolic links and file paths of 100+ characters in length on MS Windows

Client Applications

Make pg_basebackup use a tablespace mapping file when using tar format, to support symbolic links and file paths of 100+ characters in length on MS Windows (Amit Kapila)

FeaturesAdd pg_xlogdump option --stats to display summary statistics

Client Applications

Add pg_xlogdump option --stats to display summary statistics (Abhijit Menon-Sen)

FeaturesAllow psql to produce AsciiDoc output

Client Applications / psql

Allow psql to produce AsciiDoc output (Szymon Guz)

FeaturesAdd an errors mode that displays only failed commands to psql's ECHO variable

Client Applications / psql

Add an errors mode that displays only failed commands to psql's ECHO variable (Pavel Stehule)

This behavior can also be selected with psql's -b option.

FeaturesProvide separate column, header, and border linestyle control in psql's unicode linestyle

Client Applications / psql

Provide separate column, header, and border linestyle control in psql's unicode linestyle (Pavel Stehule)

Single or double lines are supported; the default is single.

FeaturesAdd new option %l in psql's PROMPT variables to display the current multiline statement line number

Client Applications / psql

Add new option %l in psql's PROMPT variables to display the current multiline statement line number (Sawada Masahiko)

FeaturesAdd \pset option pager_min_lines to control pager invocation

Client Applications / psql

Add \pset option pager_min_lines to control pager invocation (Andrew Dunstan)

FeaturesImprove psql line counting used when deciding to invoke the pager

Client Applications / psql

Improve psql line counting used when deciding to invoke the pager (Andrew Dunstan)

Featurespsql now fails if the file specified by an --output or --log-file switch cannot be written

Client Applications / psql

psql now fails if the file specified by an --output or --log-file switch cannot be written (Tom Lane, Daniel Vérité)

Previously, it effectively ignored the switch in such cases.

FeaturesAdd psql tab completion when setting the search_path variable

Client Applications / psql

Add psql tab completion when setting the search_path variable (Jeff Janes)

Currently only the first schema can be tab-completed.

FeaturesImprove psql's tab completion for triggers and rules

Client Applications / psql

Improve psql's tab completion for triggers and rules (Andreas Karlsson)

FeaturesAdd psql \? help sections variables and options

Client Applications / psql / Backslash Commands

Add psql \? help sections variables and options (Pavel Stehule)

\? variables shows psql's special variables and \? options shows the command-line options. \? commands shows the meta-commands, which is the traditional output and remains the default. These help displays can also be obtained with the command-line option --help=section.

FeaturesShow tablespace size in psql's \db+

Client Applications / psql / Backslash Commands

Show tablespace size in psql's \db+ (Fabrízio de Royes Mello)

FeaturesShow data type owners in psql's \dT+

Client Applications / psql / Backslash Commands

Show data type owners in psql's \dT+ (Magnus Hagander)

FeaturesAllow psql's \watch to output \timing information

Client Applications / psql / Backslash Commands

Allow psql's \watch to output \timing information (Fujii Masao)

Also prevent --echo-hidden from echoing \watch queries, since that is generally unwanted.

FeaturesMake psql's \sf and \ef commands honor ECHO_HIDDEN

Client Applications / psql / Backslash Commands

Make psql's \sf and \ef commands honor ECHO_HIDDEN (Andrew Dunstan)

FeaturesImprove psql tab completion for \set, \unset, and :variable names

Client Applications / psql / Backslash Commands

Improve psql tab completion for \set, \unset, and :variable names (Pavel Stehule)

FeaturesAllow tab completion of role names in psql \c commands

Client Applications / psql / Backslash Commands

Allow tab completion of role names in psql \c commands (Ian Barwick)

FeaturesAllow pg_dump to share a snapshot taken by another session using --snapshot

Client Applications / pg_dump

Allow pg_dump to share a snapshot taken by another session using --snapshot (Simon Riggs, Michael Paquier)

The remote snapshot must have been exported by pg_export_snapshot() or logical replication slot creation. This can be used to share a consistent snapshot across multiple pg_dump processes.

FeaturesSupport table sizes exceeding 8GB in tar archive format

Client Applications / pg_dump

Support table sizes exceeding 8GB in tar archive format (Tom Lane)

The POSIX standard for tar format does not allow elements of a tar archive to exceed 8GB, but most modern implementations of tar support an extension that does allow it. Use the extension format when necessary, rather than failing.

Related records (1)

“Same change” requires complete matching evidence. “Related commits” can cover independent changes, a partial backport, or a follow-up correction; each release keeps its own explanation.

FeaturesMake pg_dump always print the server and pg_dump versions

Client Applications / pg_dump

Make pg_dump always print the server and pg_dump versions (Jing Wang)

Previously, version information was only printed in --verbose mode.

FeaturesRemove the long-ignored -i/--ignore-version option from pg_dump, pg_dumpall, and pg_restore

Client Applications / pg_dump

Remove the long-ignored -i/--ignore-version option from pg_dump, pg_dumpall, and pg_restore (Fujii Masao)

FeaturesSupport multiple pg_ctl -o options, concatenating their values

Client Applications / pg_ctl

Support multiple pg_ctl -o options, concatenating their values (Bruce Momjian)

Related records (1)

“Same change” requires complete matching evidence. “Related commits” can cover independent changes, a partial backport, or a follow-up correction; each release keeps its own explanation.

FeaturesAllow control of pg_ctl's event source logging on MS Windows

Client Applications / pg_ctl

Allow control of pg_ctl's event source logging on MS Windows (MauMau)

This only controls pg_ctl, not the server, which has separate settings in postgresql.conf.

FeaturesIf the server's listen address is set to a wildcard value (0.0.0.0 in IPv4 or :: in IPv6), connect via the loopback address rather than trying to use the wildcard address literally

Client Applications / pg_ctl

If the server's listen address is set to a wildcard value (0.0.0.0 in IPv4 or :: in IPv6), connect via the loopback address rather than trying to use the wildcard address literally (Kondo Yuta)

This fix primarily affects Windows, since on other platforms pg_ctl will prefer to use a Unix-domain socket.

Related records (1)

“Same change” requires complete matching evidence. “Related commits” can cover independent changes, a partial backport, or a follow-up correction; each release keeps its own explanation.

FeaturesMove pg_upgrade from contrib to src/bin

Client Applications / pg_upgrade

Move pg_upgrade from contrib to src/bin (Peter Eisentraut)

In connection with this change, the functionality previously provided by the pg_upgrade_support module has been moved into the core server.

FeaturesSupport multiple pg_upgrade -o/-O options, concatenating their values

Client Applications / pg_upgrade

Support multiple pg_upgrade -o/-O options, concatenating their values (Bruce Momjian)

Related records (1)

“Same change” requires complete matching evidence. “Related commits” can cover independent changes, a partial backport, or a follow-up correction; each release keeps its own explanation.

FeaturesImprove database collation comparisons in pg_upgrade

Client Applications / pg_upgrade

Improve database collation comparisons in pg_upgrade (Heikki Linnakangas)

FeaturesRemove support for upgrading from 8.3 clusters

Client Applications / pg_upgrade

Remove support for upgrading from 8.3 clusters (Bruce Momjian)

FeaturesMove pgbench from contrib to src/bin

Client Applications / pgbench

Move pgbench from contrib to src/bin (Peter Eisentraut)

Bug fixesFix calculation of TPS number "excluding connections establishing"

Client Applications / pgbench

Fix calculation of TPS number "excluding connections establishing" (Tatsuo Ishii, Fabien Coelho)

The overhead for connection establishment was miscalculated whenever the number of pgbench threads was less than the number of client connections. Although this is clearly a bug, we won't back-patch it into pre-9.5 branches since it makes TPS numbers not comparable to previous results.

FeaturesAllow counting of pgbench transactions that take over a specified amount of time

Client Applications / pgbench

Allow counting of pgbench transactions that take over a specified amount of time (Fabien Coelho)

This is controlled by a new --latency-limit option.

FeaturesAllow pgbench to generate Gaussian/exponential distributions using \setrandom

Client Applications / pgbench

Allow pgbench to generate Gaussian/exponential distributions using \setrandom (Kondo Mitsumasa, Fabien Coelho)

FeaturesAllow pgbench's \set command to handle arithmetic expressions containing more than one operator, and add % (modulo) to the set of operators it supports

Client Applications / pgbench

Allow pgbench's \set command to handle arithmetic expressions containing more than one operator, and add % (modulo) to the set of operators it supports (Robert Haas, Fabien Coelho)

FeaturesSimplify WAL record format

Source Code

Simplify WAL record format (Heikki Linnakangas)

This allows external tools to more easily track what blocks are modified.

FeaturesImprove the representation of transaction commit and abort WAL records

Source Code

Improve the representation of transaction commit and abort WAL records (Andres Freund)

FeaturesAdd atomic memory operations API

Source Code

Add atomic memory operations API (Andres Freund)

FeaturesAllow custom path and scan methods

Source Code

Allow custom path and scan methods (KaiGai Kohei, Tom Lane)

This allows extensions greater control over the optimizer and executor.

FeaturesAllow foreign data wrappers to do post-filter locking

Source Code

Allow foreign data wrappers to do post-filter locking (Etsuro Fujita)

FeaturesForeign tables can now take part in INSERT ... ON CONFLICT DO NOTHING queries

Source Code

Foreign tables can now take part in INSERT ... ON CONFLICT DO NOTHING queries (Peter Geoghegan, Heikki Linnakangas, Andres Freund)

Foreign data wrappers must be modified to handle this. INSERT ... ON CONFLICT DO UPDATE is not supported on foreign tables.

Related records (1)

“Same change” requires complete matching evidence. “Related commits” can cover independent changes, a partial backport, or a follow-up correction; each release keeps its own explanation.

FeaturesImprove hash_create()'s API for selecting simple-binary-key hash functions

Source Code

Improve hash_create()'s API for selecting simple-binary-key hash functions (Teodor Sigaev, Tom Lane)

FeaturesImprove parallel execution infrastructure

Source Code

Improve parallel execution infrastructure (Robert Haas, Amit Kapila, Noah Misch, Rushabh Lathia, Jeevan Chalke)

FeaturesRemove Alpha (CPU) and Tru64 (OS) ports

Source Code

Remove Alpha (CPU) and Tru64 (OS) ports (Andres Freund)

FeaturesRemove swap-byte-based spinlock implementation for ARMv5 and earlier CPUs

Source Code

Remove swap-byte-based spinlock implementation for ARMv5 and earlier CPUs (Robert Haas)

ARMv5's weak memory ordering made this locking implementation unsafe. Spinlock support is still possible on newer gcc implementations with atomics support.

FeaturesGenerate an error when excessively long (100+ character) file paths are written to tar files

Source Code

Generate an error when excessively long (100+ character) file paths are written to tar files (Peter Eisentraut)

Tar does not support such overly-long paths.

FeaturesChange index operator class for columns pg_seclabel.provider and pg_shseclabel.provider to be text_pattern_ops

Source Code

Change index operator class for columns pg_seclabel.provider and pg_shseclabel.provider to be text_pattern_ops (Tom Lane)

This avoids possible problems with these indexes when different databases of a cluster have different default collations.

FeaturesChange the spinlock primitives to function as compiler barriers

Source Code

Change the spinlock primitives to function as compiler barriers (Robert Haas)

FeaturesAllow higher-precision time stamp resolution on Windows 8, Windows Server 2012, and later Windows systems

Source Code / MS Windows

Allow higher-precision time stamp resolution on Windows 8, Windows Server 2012, and later Windows systems (Craig Ringer)

FeaturesInstall shared libraries to bin in MS Windows

Source Code / MS Windows

Install shared libraries to bin in MS Windows (Peter Eisentraut, Michael Paquier)

FeaturesInstall src/test/modules together with contrib on MSVC builds

Source Code / MS Windows

Install src/test/modules together with contrib on MSVC builds (Michael Paquier)

FeaturesAllow configure's --with-extra-version option to be honored by the MSVC build

Source Code / MS Windows

Allow configure's --with-extra-version option to be honored by the MSVC build (Michael Paquier)

FeaturesPass PGFILEDESC into MSVC contrib builds

Source Code / MS Windows

Pass PGFILEDESC into MSVC contrib builds (Michael Paquier)

FeaturesAdd icons to all MSVC-built binaries and version information to all MS Windows binaries

Source Code / MS Windows

Add icons to all MSVC-built binaries and version information to all MS Windows binaries (Noah Misch)

MinGW already had such icons.

FeaturesAdd optional-argument support to the internal getopt_long() implementation

Source Code / MS Windows

Add optional-argument support to the internal getopt_long() implementation (Michael Paquier, Andres Freund)

This is used by the MSVC build.

FeaturesAdd statistics for minimum, maximum, mean, and standard deviation times to pg_stat_statements

Additional Modules

Add statistics for minimum, maximum, mean, and standard deviation times to pg_stat_statements (Mitsumasa Kondo, Andrew Dunstan)

FeaturesAdd pgcrypto function pgp_armor_headers() to extract PGP armor headers

Additional Modules

Add pgcrypto function pgp_armor_headers() to extract PGP armor headers (Marko Tiikkaja, Heikki Linnakangas)

FeaturesAllow empty replacement strings in unaccent

Additional Modules

Allow empty replacement strings in unaccent (Mohammad Alhashash)

This is useful in languages where diacritic signs are represented as separate characters.

FeaturesAllow multicharacter source strings in unaccent

Additional Modules

Allow multicharacter source strings in unaccent (Tom Lane)

This could be useful in languages where diacritic signs are represented as separate characters. It also allows more complex unaccent dictionaries.

FeaturesAdd contrib modules tsm_system_rows and tsm_system_time to allow additional table sampling methods

Additional Modules

Add contrib modules tsm_system_rows and tsm_system_time to allow additional table sampling methods (Petr Jelínek)

FeaturesAdd GIN index inspection functions to pageinspect

Additional Modules

Add GIN index inspection functions to pageinspect (Heikki Linnakangas, Peter Geoghegan, Michael Paquier)

FeaturesAdd information about buffer pins to pg_buffercache display

Additional Modules

Add information about buffer pins to pg_buffercache display (Andres Freund)

FeaturesAllow pgstattuple to report approximate answers with less overhead using pgstattuple_approx()

Additional Modules

Allow pgstattuple to report approximate answers with less overhead using pgstattuple_approx() (Abhijit Menon-Sen)

FeaturesMove dummy_seclabel, test_shm_mq, test_parser, and worker_spi from contrib to src/test/modules

Additional Modules

Move dummy_seclabel, test_shm_mq, test_parser, and worker_spi from contrib to src/test/modules (Álvaro Herrera)

These modules are only meant for server testing, so they do not need to be built or installed when packaging PostgreSQL.

How is this comparison generated?

The comparison follows PostgreSQL release notes from just after the source through the target version. For a major upgrade, maintenance releases from each older branch are included only up to the next major release date, and never after the target date. A major version such as 18 means its initial release, 18.0. Previews and development snapshots are labeled separately.

Entries come from the original English manuals. Release coverage and commit evidence are verified against upstream sources. Every entry retains its complete explanation and source link. Categories aid browsing; read the full notes for impact, conditions, and migration steps.

Fixes can be backported to several branches. Confirmed duplicates are merged conservatively, with every branch explanation retained. A note describing several independent fixes is excluded only when all are already present in the source. Major-release features remain distinct from related maintenance patches unless their complete original descriptions match. Uncertain matches are retained. This is a release-note history, not an exhaustive comparison of compiled binaries.

CVE results are calculated independently from the PostgreSQL security registry and vulnerability records. A CVE counts as gained protection only when the source is affected and the target is fixed or unaffected. Remaining vulnerabilities are listed separately. Security entries and distinct CVEs are counted separately.

Interaction inspired by pgversions.com and pgversionreport. Content comes from PostgreSQL release notes. See the release notes archive.