PostgreSQL 15 builds on the performance improvements of recent releases with
noticeable gains for managing workloads in both local and distributed
deployments, including improved sorting. This release improves the developer
-experience with the addition of the popular `MERGE` command, and adds more
-capabilities for observing the state of the database.
+experience with the addition of the popular
+[`MERGE`](https://www.postgresql.org/docs/15/sql-merge.html) command, and adds
+more capabilities for observing the state of the database.
<HOLD FOR QUOTE>
### Improved Sort Performance and Compression
-In this latest release, PostgreSQL improves on its in-memory and on-disk sorting
-algorithms, with benchmarks showing speedups of 25% - 400% based on which data
-types are sorted. Using `row_number()`, `rank()`, and `count()` as window functions
+In this latest release, PostgreSQL improves on its in-memory and on-disk
+[sorting](https://www.postgresql.org/docs/15/queries-order.html) algorithms,
+with benchmarks showing speedups of 25% - 400% based on which data types are
+sorted. Using `row_number()`, `rank()`, and `count()` as
+[window functions](https://www.postgresql.org/docs/15/functions-window.html)
also have performance benefits in PostgreSQL 15, and queries using
-`SELECT DISTINCT` can now be executed in parallel.
+[`SELECT DISTINCT`](https://www.postgresql.org/docs/15/queries-select-lists.html#QUERIES-DISTINCT)
+can now be
+[executed in parallel](https://www.postgresql.org/docs/15/parallel-query.html).
-Building on work from the previous PostgreSQL release for allowing async remote
-queries, the PostgreSQL foreign data wrapper, `postgres_fdw`, now supports
-asynchronous commits.
+Building on work from the [previous PostgreSQL release](https://www.postgresql.org/about/press/presskit14/)
+for allowing async remote queries, the
+[PostgreSQL foreign data wrapper](https://www.postgresql.org/docs/15/postgres-fdw.html),
+[`postgres_fdw`](https://www.postgresql.org/docs/15/postgres-fdw.html),
+now supports
+[asynchronous commits](https://www.postgresql.org/docs/15/postgres-fdw.html#id-1.11.7.47.11.7).
The performance improvements in PostgreSQL 15 extend to its archiving and backup
-facilities. PostgreSQL 15 adds support for LZ4 and Zstandard (zstd) compression
-to write-ahead log (WAL) files, which can have both space and performance
-benefits for certain workloads. On certain operating systems, PostgreSQL 15
-supports the ability to prefetch WAL file contents and speed up recovery times.
-PostgreSQL's built-in backup command, `pg_basebackup`, now supports server-side
-compression of backup files with a choice of gzip, LZ4, and zstd. PostgreSQL 15
-includes the ability to use custom modules for archiving, which eliminates the
-overhead of using a shell command.
+facilities. PostgreSQL 15 adds support for LZ4 and Zstandard (zstd)
+[compression to write-ahead log (WAL) files](https://www.postgresql.org/docs/15/runtime-config-wal.html#GUC-WAL-COMPRESSION),
+which can have both space and performance benefits for certain workloads. On
+certain operating systems, PostgreSQL 15 supports the ability to
+[prefetch WAL file contents](https://www.postgresql.org/docs/15/runtime-config-wal.html#GUC-RECOVERY-PREFETCH)
+and speed up recovery times. PostgreSQL's built-in backup command,
+[`pg_basebackup`](https://www.postgresql.org/docs/15/app-pgbasebackup.html), now
+supports server-side compression of backup files with a choice of gzip, LZ4, and
+zstd. PostgreSQL 15 includes the ability to use
+[custom modules for archiving](https://www.postgresql.org/docs/15/archive-modules.html),
+which eliminates the overhead of using a shell command.
### Expressive Developer Features
-PostgreSQL 15 includes the SQL standard `MERGE` command. `MERGE` lets you write
-conditional SQL statements that include `INSERT`, `UPDATE`, and `DELETE` actions
-within a single statement.
+PostgreSQL 15 includes the SQL standard
+[`MERGE`](https://www.postgresql.org/docs/15/sql-merge.html) command.
+`MERGE` lets you write conditional SQL statements that include `INSERT`,
+`UPDATE`, and `DELETE` actions within a single statement.
-This latest release adds new functions for using regular expressions to inspect
-strings: `regexp_count()`, `regexp_instr()`, `regexp_like()`, and
+This latest release adds
+[new functions for using regular expressions](https://www.postgresql.org/docs/15/functions-matching.html#FUNCTIONS-POSIX-REGEXP)
+to inspect strings: `regexp_count()`, `regexp_instr()`, `regexp_like()`, and
`regexp_substr()`. PostgreSQL 15 also extends the `range_agg` function to
-aggregate `multirange` data types, which were introduced in the previous
-release.
+aggregate
+[`multirange` data types](https://www.postgresql.org/docs/15/rangetypes.html),
+which were introduced in the
+[previous release](https://www.postgresql.org/about/press/presskit14/).
-PostgreSQL 15 lets users create views that query data using the permissions of
-the caller, not the view creator. This option, called `security_invoker`, adds
-an additional layer of protection to ensure that view callers have the correct
-permissions for working with the underlying data.
+PostgreSQL 15 lets users
+[create views that query data using the permissions of the caller, not the view creator](https://www.postgresql.org/docs/15/sql-createview.html).
+This option, called `security_invoker`, adds an additional layer of protection
+to ensure that view callers have the correct permissions for working with the
+underlying data.
### More Options with Logical Replication
-PostgreSQL 15 provides more flexibility for managing logical replication. This
-release introduces row and column filtering for publishers, letting users choose
-to replicate a subset of data from a table. PostgreSQL 15 adds features to
-simplify conflict management, including the ability to skip replaying a
-conflicting transaction and to automatically disable a subscription if an error
-is detected. This release also includes support for using two-phase commit (2PC)
-with logical replication.
+PostgreSQL 15 provides more flexibility for managing
+[logical replication](https://www.postgresql.org/docs/15/logical-replication.html).
+This release introduces
+[row filtering](https://www.postgresql.org/docs/15/logical-replication-row-filter.html)
+and
+[column filtering](https://www.postgresql.org/docs/15/sql-createpublication.html)
+for
+[publishers](https://www.postgresql.org/docs/15/logical-replication-publication.html),
+letting users choose to replicate a subset of data from a table. PostgreSQL 15
+adds features to simplify
+[conflict management](https://www.postgresql.org/docs/15/logical-replication-conflicts.html),
+including the ability to skip replaying a conflicting transaction and to
+automatically disable a subscription if an error is detected. This release also
+includes support for using two-phase commit (2PC) with logical replication.
### Logging and Configuration Enhancements
-PostgreSQL 15 introduces a new logging format: `jsonlog`. This new format
-outputs log data using a defined JSON structure, which allows PostgreSQL logs to
-be processed in structured logging systems. This release also adds a new
-built-in extension, `pg_walinspect`, that lets users inspect the contents of
-write-ahead log files directly from a SQL interface.
+PostgreSQL 15 introduces a new logging format:
+[`jsonlog`](https://www.postgresql.org/docs/15/runtime-config-logging.html#RUNTIME-CONFIG-LOGGING-JSONLOG).
+This new format outputs log data using a defined JSON structure, which allows
+PostgreSQL logs to be processed in structured logging systems. This release also
+adds a new built-in extension,
+[`pg_walinspect`](https://www.postgresql.org/docs/15/pgwalinspect.html), that
+lets users inspect the contents of write-ahead log files directly from a SQL
+interface.
PostgreSQL 15 gives database administrators more flexibility in how users can
manage PostgreSQL configuration, adding the ability to grant users permission to
alter server-level configuration parameters. Additionally, users can now search
-for information about configuration using the `\dconfig` command from the `psql`
-command-line tool.
+for information about configuration using the `\dconfig` command from the
+[`psql`](https://www.postgresql.org/docs/15/app-psql.html) command-line tool.
### Other Notable Changes
-PostgreSQL server-level statistics are now collected in shared memory,
-eliminating both the statistics collector process and periodically writing these
-stats to disk.
+PostgreSQL
+[server-level statistics](https://www.postgresql.org/docs/15/monitoring-stats.html)
+are now collected in shared memory, eliminating both the statistics collector
+process and periodically writing this data to disk.
-PostgreSQL 15 also revokes the `CREATE` permission from all users except a
-database owner from the `public` (or default) schema.
+PostgreSQL 15 also
+[revokes the `CREATE` permission from all users](https://www.postgresql.org/docs/15/ddl-schemas.html#DDL-SCHEMAS-PATTERNS)
+except a database owner from the `public` (or default) schema.
PostgreSQL 15 removes both the long-deprecated "exclusive backup" mode and
support for Python 2 from PL/Python.