The PostgreSQL Global Development Group has released an update to all supported versions of PostgreSQL, including 15.4, 14.9, 13.12, 12.16, and 11.21, as well as the third beta release of PostgreSQL 16. This release fixes two security vulnerabilities and over 40 bugs reported over the last several months.
If you use BRIN
indexes to look up NULL
values, you will need to reindex
them after upgrading to this release. On PostgreSQL 12 and above, you can use
REINDEX CONCURRENTLY
to avoid blocking writes to the affected index and table, for example:
REINDEX INDEX CONCURRENTLY your_index_name;
For the full list of changes, please review the release notes.
PostgreSQL 11 will stop receiving fixes on November 9, 2023. If you are running PostgreSQL 11 in a production environment, we suggest that you make plans to upgrade to a newer, supported version of PostgreSQL. Please see our versioning policy for more information.
@substitutions@
within quoting allow SQL injection.Supported, Vulnerable Versions: 11 - 15. The security team typically does not test unsupported versions, but this problem is quite old.
An extension script
is vulnerable if it uses @extowner@
, @extschema@
, or @extschema:...@
inside a quoting construct (dollar quoting, ''
, or ""
). No bundled extension
is vulnerable. Vulnerable uses do appear in a documentation example and in
non-bundled extensions. Hence, the attack prerequisite is an administrator
having installed files of a vulnerable, trusted, non-bundled extension. Subject
to that prerequisite, this enables an attacker having database-level CREATE
privilege to execute arbitrary code as the bootstrap superuser. PostgreSQL will
block this attack in the core server, so there's no need to modify individual
extensions.
The PostgreSQL project thanks Micah Gate, Valerie Woolard, Tim Carey-Smith, and Christoph Berg for reporting this problem.
MERGE
fails to enforce UPDATE
or SELECT
row security policies.Supported, Vulnerable Versions: 15.
PostgreSQL 15 introduced the MERGE
command, which fails to test new rows against row security policies defined for
UPDATE
and
SELECT
. If UPDATE
and SELECT
policies forbid some row that INSERT
policies do not forbid, a
user could store such rows. Subsequent consequences are application-dependent.
This affects only databases that have used
CREATE POLICY
to define a row security policy.
The PostgreSQL project thanks Dean Rasheed for reporting this problem.
This release marks the third beta release of PostgreSQL 16 and puts the community one step closer to general availability tentatively around the end of the third quarter.
In the spirit of the open source PostgreSQL community, we strongly encourage you to test the new features of PostgreSQL 16 on your systems to help us eliminate bugs or other issues that may exist. While we do not advise you to run PostgreSQL 16 Beta 3 in production environments, we encourage you to find ways to run your typical application workloads against this beta release.
Your testing and feedback will help the community ensure that PostgreSQL 16 upholds our standards of delivering a stable, reliable release of the world's most advanced open source relational database. Please read more about our beta testing process and how you can contribute:
https://www.postgresql.org/developer/beta/
You can find information about all of the PostgreSQL 16 features and changes in the release notes:
https://www.postgresql.org/docs/16/release-16.html
This update fixes over 40 bugs that were reported in the last several months. The issues listed below affect PostgreSQL 15. Some of these issues may also affect other supported versions of PostgreSQL.
NULL
values in BRIN
indexes. This fix does not apply to existing BRIN indexes -- you will need to
run REINDEX
to fix
any BRIN indexes used to search for NULL values.ALTER EXTENSION ... SET SCHEMA
to error if the extension contains any objects outside the extension's schema.SERIALIZABLE
transaction isolation mode.datetime()
method.pg_hba.conf
and pg_ident.conf
to 10,240 bytes.FATAL
error instead of a C++ exception.VACUUM
to continue after detecting certain types of B-tree index corruption. While this fix allows VACUUM to continue, you still need to REINDEX
to fix the broken index.fsync
on a newly created but empty table.pg_waldump
and walsender
.difference()
function to correctly handle empty input.intarray
,
including disallowing oversize input arrays in a GiST index.pg_dump
to
correctly handle SQL-standard function bodies (BEGIN ATOMIC
) that require
parse-time dependencies on unique indexes.For the full list of changes available, please review the release notes.
\drg
command to psql
to display information about role grants.pg_waldump --save-fullpage
.VACUUM
worker.Please see the release notes for a complete list of new and changed features:
https://www.postgresql.org/docs/16/release-16.html
All PostgreSQL update releases are cumulative. As with other minor releases,
users are not required to dump and reload their database or use pg_upgrade
in
order to apply this update release; you may simply shutdown PostgreSQL and
update its binaries.
If you use BRIN
indexes to look up NULL
values, you will need to reindex
them after upgrading to this release. On PostgreSQL 12 and above, you can use
REINDEX CONCURRENTLY
to avoid blocking writes to the affected index and table, for example:
REINDEX INDEX CONCURRENTLY your_index_name;
Users who have skipped one or more update releases may need to run additional post-update steps; please see the release notes from earlier versions for details.
For more details, please see the release notes.
To upgrade to PostgreSQL 16 Beta 3 from a previous PostgreSQL 16 Beta version,
or a previous major version of PostgreSQL, you will need to use a strategy
similar to upgrading between major versions of PostgreSQL (e.g. pg_upgrade
or
pg_dump
/ pg_restore
). For more information, please visit the documentation
section on upgrading.
The stability of each PostgreSQL release greatly depends on you, the community, to test the upcoming version with your workloads and testing tools in order to find bugs and regressions before the general availability of PostgreSQL 16. As this is a Beta, minor changes to database behaviors, feature details, and APIs are still possible. Your feedback and testing will help determine the final tweaks on the new features, so please test in the near future. The quality of user testing helps determine when we can make a final release.
A list of open issues is publicly available in the PostgreSQL wiki. You can report bugs using this form on the PostgreSQL website:
https://www.postgresql.org/account/submitbug/
If you have corrections or suggestions for this release announcement, please send them to the pgsql-www@lists.postgresql.org public mailing list.