doc: first draft of PG 15 release notes
authorBruce Momjian <bruce@momjian.us>
Tue, 10 May 2022 15:35:28 +0000 (11:35 -0400)
committerBruce Momjian <bruce@momjian.us>
Tue, 10 May 2022 15:35:28 +0000 (11:35 -0400)
doc/src/sgml/release-15.sgml

index bee24b236a6ee7d30e2afe8f4208cda74bef4a95..eebd17db5e8d295ee3e277ef4bc9c299106b69b0 100644 (file)
-<!-- doc/src/sgml/release-15.sgml -->
-<!-- See header comment in release.sgml about typical markup -->
+<sect1 id="release-15">
+  <title>Release 15</title>
+
+  <formalpara>
+   <title>Release date:</title>
+   <para>AS OF 2022-05-09</para>
+  </formalpara>
+
+  <sect2>
+   <title>Overview</title>
+
+   <para>
+    <productname>PostgreSQL</productname> 15 contains many new features and
+    enhancements, including:
+   </para>
+
+   <itemizedlist>
+    <listitem><para></para></listitem>
+   </itemizedlist>
+
+   <para>
+    The above items and other new features
+    of <productname>PostgreSQL</productname> 15 are explained in more
+    detail in the sections below.
+   </para>
+
+  </sect2>
+
+  <sect2>
+
+  <title>Migration to Version 15</title>
+
+    <para>
+     A dump/restore using <xref linkend="app-pg-dumpall"/> or use of <xref
+     linkend="pgupgrade"/> or logical replication is required for those
+     wishing to migrate data from any previous release.  See <xref
+     linkend="upgrading"/> for general information on migrating to new major
+     releases.
+    </para>
+
+    <para>
+     Version 15 contains a number of changes that may affect compatibility
+     with previous releases.  Observe the following incompatibilities:
+    </para>
+
+   <itemizedlist>
+
+<!--
+Author: Noah Misch <noah@leadboat.com>
+2021-09-09 [b073c3ccd] Revoke PUBLIC CREATE from public schema, now owned by pg
+-->
+
+<listitem>
+<para>
+Remove PUBLIC 'creation' permission on the 'public' schema (Noah Misch)
+</para>
+
+<para>
+This is a change in the default for newly-created databases in existing clusters and for new clusters;  usage permissions on the 'public' schema has not been changed.  Databases restored from previous
+Postgres releases will be restored with their current permissions.  Users wishing to have the old permissions on new objects will need to grant 'create' permission for PUBLIC on the 'public' schema;  this
+change can be made on 'template1' to cause all new databases to have these permissions.  template1 permissions for pg_dumpall and pg_upgrade?
+</para>
+</listitem>
+
+<!--
+Author: Noah Misch <noah@leadboat.com>
+2021-09-09 [b073c3ccd] Revoke PUBLIC CREATE from public schema, now owned by pg
+-->
+
+<listitem>
+<para>
+Change the owner of the 'public' schema to 'pg_database_owner' (Noah Misch)
+</para>
+
+<para>
+Previously it was the literal user name of the database owner.  Databases restored from previous Postgres releases will be restored with their current owner specification.
+</para>
+</listitem>
+
+<!--
+Author: Stephen Frost <sfrost@snowman.net>
+2022-04-06 [39969e2a1] Remove exclusive backup mode
+-->
+
+<listitem>
+<para>
+Remove exclusive backup mode (David Steele, Nathan Bossart)
+</para>
+
+<para>
+This mode could cause server startup failure if the database server stopped abruptly while in this mode.  The non-exclusive backup mode requires a continuous database connection during the backup.
+</para>
+</listitem>
+
+<!--
+Author: Peter Geoghegan <pg@bowt.ie>
+2022-02-16 [8f388f6f5] Increase hash_mem_multiplier default to 2.0.
+-->
+
+<listitem>
+<para>
+Increase hash_mem_multiplier default to 2.0 (Peter Geoghegan)
+</para>
+
+<para>
+This allows query hash operations to use double the amount of work_mem memory as other operations.
+</para>
+</listitem>
+
+<!--
+Author: Andres Freund <andres@anarazel.de>
+2022-03-07 [76a29adee] plpython: Remove plpythonu, plpython2u and associated tr
+-->
+
+<listitem>
+<para>
+Remove server-side language plpython2u and generic Python language plpythonu (Andres Freund)
+</para>
+</listitem>
+
+<!--
+Author: Tom Lane <tgl@sss.pgh.pa.us>
+2022-01-19 [a3d6264bb] interval_out() must be marked STABLE, not IMMUTABLE.
+-->
+
+<listitem>
+<para>
+Mark the interval output function as stable, not immutable, since it depends on IntervalStyle (Tom Lane)
+</para>
+
+<para>
+This will cause the creation of indexes relying on the text output of interval values to fail.
+</para>
+</listitem>
+
+<!--
+Author: Tom Lane <tgl@sss.pgh.pa.us>
+2021-11-06 [cbe25dcff] Disallow making an empty lexeme via array_to_tsvector().
+-->
+
+<listitem>
+<para>
+Allow tsvector_delete_arr() and tsvector_setweight_by_filter() accept empty array elements (Jean-Christophe Arnu)
+</para>
+
+<para>
+These lexemes are not stored so the acceptance of empty array elements is not a problem.
+</para>
+</listitem>
+
+<!--
+Author: Tom Lane <tgl@sss.pgh.pa.us>
+2021-11-06 [cbe25dcff] Disallow making an empty lexeme via array_to_tsvector().
+-->
+
+<listitem>
+<para>
+Generate an error if array_to_tsvector() is passed an empty array element (Jean-Christophe Arnu)
+</para>
+
+<para>
+This is prohibited because lexemes should never be empty.  Users of previous Postgres releases should verify that no empty lexemes are stored because they can lead to dump/restore failures and inconsistent
+results.
+</para>
+</listitem>
+
+<!--
+Author: Peter Eisentraut <peter@eisentraut.org>
+2021-12-06 [e9e63b702] Fix inappropriate uses of PG_GETARG_UINT32()
+-->
+
+<listitem>
+<para>
+Generate an error when char() is supplied with a negative argument (Peter Eisentraut)
+</para>
+</listitem>
+
+<!--
+Author: John Naylor <john.naylor@postgresql.org>
+2021-07-14 [c203dcddf] Remove unused function parameter in get_qual_from_partbo
+-->
+
+<listitem>
+<para>
+Remove unused function parameter in get_qual_from_partbound() (Hou Zhijie)
+</para>
+</listitem>
+
+<!--
+Author: Peter Eisentraut <peter@eisentraut.org>
+2022-01-12 [a18b6d2dc] ecpg: Catch zero-length Unicode identifiers correctly
+-->
+
+<listitem>
+<para>
+Prevent Unicode zero-length identifiers, e.g., U&amp;"" (Peter Eisentraut)
+</para>
+
+<para>
+Non-Unicode zero-length identifiers were already prevented.
+</para>
+</listitem>
+
+<!--
+Author: Tom Lane <tgl@sss.pgh.pa.us>
+2021-12-15 [2a712066d] Remove pg_dump's - -no-synchronized-snapshots switch.
+-->
+
+<listitem>
+<para>
+Remove pg_dump's --no-synchronized-snapshots option since all supported server versions support synchronized snapshots (Tom Lane)
+</para>
+</listitem>
+
+<!--
+Author: Tom Lane <tgl@sss.pgh.pa.us>
+2022-02-15 [2523928b2] Reject change of output-column collation in CREATE OR RE
+-->
+
+<listitem>
+<para>
+Prevent CREATE OR REPLACE VIEW from changing the collation of an output column (Tom Lane)
+</para>
+</listitem>
+
+<!--
+Author: Peter Eisentraut <peter@eisentraut.org>
+2022-02-16 [2549f0661] Reject trailing junk after numeric literals
+-->
+
+<listitem>
+<para>
+Prevent numeric literals from having non-numeric training characters (Peter Eisentraut)
+</para>
+
+<para>
+Previously literals like '123abc' would be interpreted as '123' and 'abc'.
+</para>
+</listitem>
+
+<!--
+Author: Peter Eisentraut <peter@eisentraut.org>
+2022-03-28 [e26114c81] Make JSON path numeric literals more correct
+-->
+
+<listitem>
+<para>
+Adjust JSON numeric literal processing to match the SQL/JSON-standard (Peter Eisentraut)
+</para>
+
+<para>
+This accepts numeric formats like ".1" and "1.", and disallow trailing junk after numeric literals, like "1.type()".
+</para>
+</listitem>
+
+<!--
+Author: Tom Lane <tgl@sss.pgh.pa.us>
+2022-04-03 [591e088dd] Fix portability issues in datetime parsing.
+-->
+
+<listitem>
+<para>
+Improve consistency of interval parsing with trailing periods (Tom Lane)
+</para>
+
+<para>
+Some platforms disallowed trailing periods.
+</para>
+</listitem>
+
+<!--
+Author: Tom Lane <tgl@sss.pgh.pa.us>
+2022-02-28 [54bd1e43c] Handle integer overflow in interval justification functi
+-->
+
+<listitem>
+<para>
+Detect integer overflow in interval justification functions (Joe Koshakow)
+</para>
+
+<para>
+Specifically, functions justify_interval(), justify_hours(), and justify_days() are affected.
+</para>
+</listitem>
+
+<!--
+Author: Robert Haas <rhaas@postgresql.org>
+2022-03-28 [79de9842a] Remove the ability of a role to administer itself.
+-->
+
+<listitem>
+<para>
+Remove the default ADMIN OPTION privilege a login role has on its own role membership (Robert Haas)
+</para>
+
+<para>
+Previously, login roles could add/remove members of its own role, even without ADMIN OPTION privilege.
+</para>
+</listitem>
+
+<!--
+Author: Jeff Davis <jdavis@postgresql.org>
+2022-01-07 [a2ab9c06e] Respect permissions within logical replication.
+-->
+
+<listitem>
+<para>
+Prevent logical replication into tables where the subscription owner is subject to the table's row-level security policies (Mark Dilger)
+</para>
+
+<para>
+This effectively means that only super users, roles with bypassrls, and table owners can replicate into tables with row-level security policies.  (The actual row-level security policies are not checked,
+only whether row-level security policies are enforced for subscribing users.)
+</para>
+</listitem>
+
+<!--
+Author: Jeff Davis <jdavis@postgresql.org>
+2022-01-08 [96a6f11c0] More cleanup of a2ab9c06ea.
+-->
+
+<listitem>
+<para>
+Prevent UPDATE and DELETE logical replication operations on tables where the subscription owner does not have SELECT permission on the table (Jeff Davis)
+</para>
+
+<para>
+UPDATE and DELETE perform SELECT, so require the subscription owner to have table SELECT permission.
+</para>
+</listitem>
+
+<!--
+Author: Tom Lane <tgl@sss.pgh.pa.us>
+2022-02-28 [2e517818f] Fix SPI's handling of errors during transaction commit.
+-->
+
+<listitem>
+<para>
+Modify SPI's SPI_commit() and SPI_commit_and_chain() to automatically start a new transaction at completion (Peter Eisentraut, Tom Lane)
+</para>
+
+<para>
+BACKPATCHED?
+</para>
+</listitem>
+
+<!--
+Author: Tom Lane <tgl@sss.pgh.pa.us>
+2022-03-24 [ce95c5437] Fix pg_statio_all_tables view for multiple TOAST indexes
+-->
+
+<listitem>
+<para>
+Fix pg_statio_all_tables to sum values for the rare case of TOAST tables with multiple indexes (Andrei Zubkov)
+</para>
+
+<para>
+Previously such cases would have one row for each index.
+</para>
+</listitem>
+
+<!--
+Author: Peter Eisentraut <peter@eisentraut.org>
+2021-12-01 [75d22069e] Warning on SET of nonexisting setting with a prefix rese
+Author: Tom Lane <tgl@sss.pgh.pa.us>
+2021-12-27 [2ed8a8cc5] Rethink handling of settings with a prefix reserved by a
+Author: Tom Lane <tgl@sss.pgh.pa.us>
+2022-02-21 [88103567c] Disallow setting bogus GUCs within an extension's reserv
+-->
+
+<listitem>
+<para>
+Disallow setting of server variables matching the prefixes of installed extension (Florin Irion, Tom Lane)
+</para>
+
+<para>
+This also deletes any matching server variables during extension load.
+</para>
+</listitem>
+
+<!--
+Author: Andres Freund <andres@anarazel.de>
+2022-04-06 [6f0cf8787] pgstat: remove stats_temp_directory.
+-->
+
+<listitem>
+<para>
+Remove unnecessary server variable stats_temp_directory (Andres Freund, Kyotaro Horiguchi)
+</para>
+</listitem>
+
+<!--
+Author: Tom Lane <tgl@sss.pgh.pa.us>
+2021-11-28 [3804539e4] Replace random(), pg_erand48(), etc with a better PRNG A
+Author: Tom Lane <tgl@sss.pgh.pa.us>
+2022-04-12 [d4f109e4a] Doc: update description of random() function.
+-->
+
+<listitem>
+<para>
+Improve the algorithm used to compute random() (Fabien Coelho)
+</para>
+
+<para>
+This will cause setseed() followed by random() to return a different value on older servers.
+</para>
+</listitem>
+
+<!--
+Author: Tom Lane <tgl@sss.pgh.pa.us>
+2021-11-12 [f8abb0f5e] postgres_fdw: suppress casts on constants in limited cas
+-->
+
+<listitem>
+<para>
+Reduce casting of constants in postgres_fdw queries (Dian Fay)
+</para>
+
+<para>
+If column types were mismatched between local and remote databases, such casting could cause errors.
+</para>
+</listitem>
+
+<!--
+Author: Tom Lane <tgl@sss.pgh.pa.us>
+2022-02-14 [fd2abeb7c] Delete contrib/xml2's legacy implementation of xml_is_we
+-->
+
+<listitem>
+<para>
+Remove contrib/xml2's function xml_is_well_formed() (Tom Lane)
+</para>
+
+<para>
+This function has been implemented in the core backend since Postgres 9.1.
+</para>
+</listitem>
+
+<!--
+Author: Tom Lane <tgl@sss.pgh.pa.us>
+2021-07-06 [955b3e0f9] Allow CustomScan providers to say whether they support p
+-->
+
+<listitem>
+<para>
+Allow CustomScan providers to indicate if they support projections (Sven Klemm)
+</para>
+
+<para>
+The default is now that custom scan providers can't support projections, so they need to be updated for this release.
+</para>
+</listitem>
+
+   </itemizedlist>
+
+  </sect2>
+
+  <sect2>
+   <title>Changes</title>
+
+     <para>
+      Below you will find a detailed account of the changes between
+      <productname>PostgreSQL</productname> 15 and the previous major
+      release.
+     </para>
+
+   <sect3>
+    <title>Server</title>
+
+    <itemizedlist>
+
+<!--
+Author: Peter Eisentraut <peter@eisentraut.org>
+2022-02-14 [37851a8b8] Database-level collation version tracking
+-->
+
+<listitem>
+<para>
+Record and check the collation of each database (Peter Eisentraut)
+</para>
+
+<para>
+This is designed to detect collation mismatches to avoid data corruption.  Function pg_database_collation_actual_version() reports the underlying operating system collation version, and ALTER DATABASE ...
+REFRESH sets the database to match the operating system collation version.  DETAILS?
+</para>
+</listitem>
+
+<!--
+Author: Peter Eisentraut <peter@eisentraut.org>
+2022-03-17 [f2553d430] Add option to use ICU as global locale provider
+-->
+
+<listitem>
+<para>
+Allow ICU collations to be set as the default for clusters and databases (Peter Eisentraut)
+</para>
+
+<para>
+Previously, ICU collations could only be specified in CREATE COLLATION and used with the COLLATE clause.
+</para>
+</listitem>
+
+<!--
+Author: Michael Paquier <michael@paquier.xyz>
+2022-03-29 [a2c84990b] Add system view pg_ident_file_mappings
+-->
+
+<listitem>
+<para>
+Add system view pg_ident_file_mappings to report pg_ident.conf information (Julien Rouhaud)
+</para>
+</listitem>
+
+    </itemizedlist>
+
+    <sect4>
+     <title><link linkend="ddl-partitioning">Partitioning</link></title>
+
+     <itemizedlist>
+
+<!--
+Author: David Rowley <drowley@postgresql.org>
+2021-08-03 [475dbd0b7] Track a Bitmapset of non-pruned partitions in RelOptInfo
+-->
+
+<listitem>
+<para>
+Improve planning time for queries referencing partitioned tables (David Rowley)
+</para>
+
+<para>
+Specifically this helps if only a small number of the many partitions are relevant.
+</para>
+</listitem>
+
+<!--
+Author: David Rowley <drowley@postgresql.org>
+2021-08-03 [db632fbca] Allow ordered partition scans in more cases
+-->
+
+<listitem>
+<para>
+Allow ordered scans of partitions to avoid sorting in more cases (David Rowley)
+</para>
+
+<para>
+Previously, a partitioned table with any LIST partition containing multiple values could not be used for ordered partition scans.  Now only non-pruned LIST partitions are checked.  This also helps with
+partitioned tables with DEFAULT partitions.
+</para>
+</listitem>
+
+<!--
+Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
+2022-03-20 [ba9a7e392] Enforce foreign key correctly during cross-partition upd
+-->
+
+<listitem>
+<para>
+Improve the trigger behavior of updates on partitioned tables that move rows between partitions (Amit Langote)
+</para>
+
+<para>
+Previously, such updates fired delete triggers on the source partition and fired insert triggers on the target partition.  PostgreSQL will now fire an update trigger on the partition root.  This makes
+foreign key behavior more consistent.  ALL TRIGGERS?
+</para>
+</listitem>
+
+<!--
+Author: Amit Kapila <akapila@postgresql.org>
+2021-12-08 [a61bff2bf] De-duplicate the result of pg_publication_tables view.
+-->
+
+<listitem>
+<para>
+Remove incorrect duplicate partition tables in system view pg_publication_tables (Hou Zhijie)
+</para>
+</listitem>
+
+<!--
+Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
+2022-04-02 [cfdd03f45] Allow CLUSTER on partitioned tables
+Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
+2022-04-14 [3f19e176a] Have CLUSTER ignore partitions not owned by caller
+-->
+
+<listitem>
+<para>
+Allow CLUSTER on partitioned tables (Justin Pryzby)
+</para>
+</listitem>
+
+<!--
+Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
+2021-07-22 [80ba4bb38] Make ALTER TRIGGER RENAME consistent for partitioned tab
+-->
+
+<listitem>
+<para>
+Fix ALTER TRIGGER RENAME on partitioned tables to rename partitions (Arne Roland, Álvaro Herrera)
+</para>
+
+<para>
+Also prohibit cloned triggers from being renamed.
+</para>
+</listitem>
+
+     </itemizedlist>
+
+    </sect4>
+
+    <sect4>
+     <title>Indexes</title>
+
+     <itemizedlist>
+
+<!--
+Author: Peter Geoghegan <pg@bowt.ie>
+2021-10-02 [2903f1404] Enable deduplication in system catalog indexes.
+-->
+
+<listitem>
+<para>
+Allow system and TOAST B-tree indexes to efficiently store duplicates (Peter Geoghegan)
+</para>
+
+<para>
+Previously de-duplication was disabled for these types of indexes.
+</para>
+</listitem>
+
+<!--
+Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
+2021-10-18 [65014000b] Replace polyphase merge algorithm with a simple balanced
+Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
+2021-10-25 [166f94377] Clarify the logic in a few places in the new balanced me
+-->
+
+<listitem>
+<para>
+Improve sorting performance (Heikki Linnakangas)
+</para>
+
+<para>
+Specifically, switch to a batch sorting algorithm that uses more output streams internally.
+</para>
+</listitem>
+
+<!--
+Author: Alexander Korotkov <akorotkov@postgresql.org>
+2022-02-07 [f1ea98a79] Reduce non-leaf keys overlap in GiST indexes produced by
+-->
+
+<listitem>
+<para>
+Improve lookup performance of GiST indexes built using sorting (Aliaksandr Kalenik, Sergei Shoulbakov, Andrey Borodin)
+</para>
+</listitem>
+
+<!--
+Author: Tomas Vondra <tomas.vondra@postgresql.org>
+2021-11-30 [5753d4ee3] Ignore BRIN indexes when checking for HOT udpates
+-->
+
+<listitem>
+<para>
+Prevent changes to columns only indexed by BRIN indexes from preventing HOT updates (Josef Simanek)
+</para>
+</listitem>
+
+<!--
+Author: Peter Eisentraut <peter@eisentraut.org>
+2022-02-03 [94aa7cc5f] Add UNIQUE null treatment option
+-->
+
+<listitem>
+<para>
+Allow unique constraints and indexes to treat NULL values as not distinct (Peter Eisentraut)
+</para>
+
+<para>
+The Postgres default has always been to treat NULL indexed values as distinct, but this can now be changed by creating constraints and indexes using UNIQUE NULLS NOT DISTINCT.
+</para>
+</listitem>
+
+<!--
+Author: Tom Lane <tgl@sss.pgh.pa.us>
+2021-11-17 [a148f8bc0] Add a planner support function for starts_with().
+-->
+
+<listitem>
+<para>
+Allow ^@ and starts_with() to use btree indexes if using a C collation (Tom Lane)
+</para>
+
+<para>
+Previously these could only use SP-GiST indexes.
+</para>
+</listitem>
+
+     </itemizedlist>
+
+    </sect4>
+
+    <sect4>
+     <title>Optimizer</title>
+
+     <itemizedlist>
+
+<!--
+Author: Tomas Vondra <tomas.vondra@postgresql.org>
+2022-01-16 [269b532ae] Add stxdinherit flag to pg_statistic_ext_data
+-->
+
+<listitem>
+<para>
+Have extended statistics track statistics for a table's children separately (Tomas Vondra, Justin Pryzby)
+</para>
+
+<para>
+Regular statistics already tracked child and non-child statistics separately.
+</para>
+</listitem>
+
+<!--
+Author: Tomas Vondra <tomas.vondra@postgresql.org>
+2022-03-31 [db0d67db2] Optimize order of GROUP BY keys
+-->
+
+<listitem>
+<para>
+Allow GROUP BY sorting to optimize column order (Dmitry Dolgov, Teodor Sigaev, Tomas Vondra)
+</para>
+
+<para>
+This optimization can be disabled using the server variable enable_group_by_reordering.
+</para>
+</listitem>
+
+<!--
+Author: Tom Lane <tgl@sss.pgh.pa.us>
+2022-03-24 [0bd7af082] Invent recursive_worktable_factor GUC to replace hard-wi
+-->
+
+<listitem>
+<para>
+Add server variable recursive_worktable_factor to allow the user to specify the expected recursive query worktable size (Simon Riggs)
+</para>
+
+<para>
+WHAT IS A WORKTABLE?  NOT DEFINED.
+</para>
+</listitem>
+
+     </itemizedlist>
+
+    </sect4>
+
+    <sect4>
+     <title>General Performance</title>
+
+     <itemizedlist>
+
+<!--
+Author: David Rowley <drowley@postgresql.org>
+2021-07-07 [29f45e299] Use a hash table to speed up NOT IN(values)
+-->
+
+<listitem>
+<para>
+Allow hash lookup for NOT IN clauses with many constants (David Rowley, James Coleman)
+</para>
+
+<para>
+Previously the code always sequentially scanned the list of values.
+</para>
+</listitem>
+
+<!--
+Author: John Naylor <john.naylor@postgresql.org>
+2021-12-20 [911588a3f] Add fast path for validating UTF-8 text
+-->
+
+<listitem>
+<para>
+Improve validation of ASCII and UTF-8 text by processing 16 bytes at a time (John Naylor)
+</para>
+
+<para>
+This will improve text-heavy operations like COPY FROM.
+</para>
+</listitem>
+
+<!--
+Author: Michael Paquier <michael@paquier.xyz>
+2021-06-29 [4035cd5d4] Add support for LZ4 with compression of full-page writes
+Author: Michael Paquier <michael@paquier.xyz>
+2022-03-11 [e9537321a] Add support for zstd with compression of full-page write
+-->
+
+<listitem>
+<para>
+Allow WAL full page writes to use LZ4 and ZSTD compression (Andrey Borodin, Justin Pryzby)
+</para>
+
+<para>
+This is controlled by the wal_compression server setting.
+</para>
+</listitem>
+
+<!--
+Author: Thomas Munro <tmunro@postgresql.org>
+2021-07-19 [2dbe89057] Support direct I/O on macOS.
+-->
+
+<listitem>
+<para>
+Add direct I/O support to macOS (Thomas Munro)
+</para>
+
+<para>
+This only works if max_wal_senders=0 and wal_level=minimal.
+</para>
+</listitem>
+
+<!--
+Author: Peter Geoghegan <pg@bowt.ie>
+2022-04-03 [0b018faba] Set relfrozenxid to oldest extant XID seen by VACUUM.
+-->
+
+<listitem>
+<para>
+Allow vacuum to be more aggressive in setting the oldest frozenxid (Peter Geoghegan)
+</para>
+</listitem>
+
+<!--
+Author: Etsuro Fujita <efujita@postgresql.org>
+2022-04-06 [c2bb02bc2] Allow asynchronous execution in more cases.
+-->
+
+<listitem>
+<para>
+Allow a query referencing multiple foreign tables to perform parallel foreign table scans in more cases (Andrey Lepikhov, Etsuro Fujita)
+</para>
+</listitem>
+
+<!--
+Author: David Rowley <drowley@postgresql.org>
+2022-04-08 [9d9c02ccd] Teach planner and executor about monotonic window funcs
+-->
+
+<listitem>
+<para>
+Improve the performance of window functions that use row_number(), rank(), and count() (David Rowley)
+</para>
+</listitem>
+
+     </itemizedlist>
+
+    </sect4>
+
+    <sect4>
+     <title>Monitoring</title>
+
+     <itemizedlist>
+
+<!--
+Author: Robert Haas <rhaas@postgresql.org>
+2021-12-13 [64da07c41] Default to log_checkpoints=on, log_autovacuum_min_durati
+-->
+
+<listitem>
+<para>
+Enable default logging of checkpoints and slow autovacuum operations (Bharath Rupireddy)
+</para>
+
+<para>
+Specifically, this changes the default of log_checkpoints to on and log_autovacuum_min_duration to 10 minutes.  This will cause idle servers to generate log output, which might cause problems on
+resource-constrained servers with insufficient log file removal.  The defaults should be changed in such cases.
+</para>
+</listitem>
+
+<!--
+Author: Robert Haas <rhaas@postgresql.org>
+2021-10-25 [9ce346eab] Report progress of startup operations that take a long t
+Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
+2021-11-05 [e543906e2] Document default and changeability of log_startup_progre
+-->
+
+<listitem>
+<para>
+Generate periodic log message during slow server starts (Nitin Jadhav, Robert Haas, Álvaro Herrera)
+</para>
+
+<para>
+Messages report the cause of the delay.  The time interval for notification is controlled by the new server variable log_startup_progress_interval.
+</para>
+</listitem>
+
+<!--
+Author: Andres Freund <andres@anarazel.de>
+2022-04-06 [5891c7a8e] pgstat: store statistics in shared memory.
+Author: Andres Freund <andres@anarazel.de>
+2022-04-07 [b3abca681] pgstat: Update docs to match the shared memory stats rea
+-->
+
+<listitem>
+<para>
+Store server-level statistics in shared memory (Kyotaro Horiguchi, Andres Freund, Melanie Plageman)
+</para>
+
+<para>
+Previously this was updated via UDP packets, stored in the file system, and read by sessions.  There is no longer a statistics collector process.
+</para>
+</listitem>
+
+<!--
+Author: Peter Geoghegan <pg@bowt.ie>
+2022-02-11 [872770fd6] Add VACUUM instrumentation for scanned pages, relfrozenx
+Author: Peter Geoghegan <pg@bowt.ie>
+2022-03-13 [6e20f4600] VACUUM VERBOSE: tweak scanned_pages logic.
+Author: Peter Geoghegan <pg@bowt.ie>
+2022-04-15 [bdb71dbe8] VACUUM VERBOSE: Show dead items for an empty table.
+-->
+
+<listitem>
+<para>
+Add additional information to VACUUM VERBOSE and autovacuum logging messages (Peter Geoghegan)
+</para>
+</listitem>
+
+<!--
+Author: Michael Paquier <michael@paquier.xyz>
+2022-04-08 [efb0ef909] Track I/O timing for temporary file blocks in EXPLAIN (B
+-->
+
+<listitem>
+<para>
+Add EXPLAIN (BUFFERS) output for temporary file block I/O (Masahiko Sawada)
+</para>
+</listitem>
+
+<!--
+Author: Michael Paquier <michael@paquier.xyz>
+2022-01-17 [dc686681e] Introduce log_destination=jsonlog
+-->
+
+<listitem>
+<para>
+Allow log output in JSON format (Sehrope Sarkuni, Michael Paquier)
+</para>
+
+<para>
+The new setting is log_destination=jsonlog.
+</para>
+</listitem>
+
+<!--
+Author: Fujii Masao <fujii@postgresql.org>
+2021-09-02 [e04267844] Enhance pg_stat_reset_single_table_counters function.
+-->
+
+<listitem>
+<para>
+Allow pg_stat_reset_single_table_counters() to reset the counters of relations shared across all databases (B Sadhu, Prasad Patro)
+</para>
+</listitem>
+
+<!--
+Author: Fujii Masao <fujii@postgresql.org>
+2021-11-22 [1b06d7bac] Report wait events for local shell commands like archive
+-->
+
+<listitem>
+<para>
+Add wait events for local shell commands (Fujii Masao)
+</para>
+
+<para>
+Specifically the new wait events are related to commands archive_command, archive_cleanup_command, restore_command and recovery_end_command.
+</para>
+</listitem>
+
+     </itemizedlist>
+
+    </sect4>
+
+    <sect4>
+     <title>Privileges</title>
+
+     <itemizedlist>
+
+<!--
+Author: Dean Rasheed <dean.a.rasheed@gmail.com>
+2022-03-22 [7faa5fc84] Add support for security invoker views.
+-->
+
+<listitem>
+<para>
+Allows view access to be controlled by privileges of the view user (Christoph Heiss)
+</para>
+
+<para>
+Previously, view access could only be based on the view owner.
+</para>
+</listitem>
+
+<!--
+Author: Robert Haas <rhaas@postgresql.org>
+2022-01-28 [7f6772317] Adjust server-side backup to depend on pg_write_server_f
+-->
+
+<listitem>
+<para>
+Allow members of the pg_write_server_files predefined role to perform server-side base backups (Dagfinn Ilmari Mannsåker)
+</para>
+
+<para>
+Previously only the super users could perform such backups.
+</para>
+</listitem>
+
+<!--
+Author: Tom Lane <tgl@sss.pgh.pa.us>
+2022-04-06 [a0ffa885e] Allow granting SET and ALTER SYSTEM privileges on GUC pa
+-->
+
+<listitem>
+<para>
+Allow GRANT to assign permission to change server variables via SET and ALTER SYSTEM (Mark Dilger)
+</para>
+
+<para>
+New function has_parameter_privilege() reports on this privilege.
+</para>
+</listitem>
+
+<!--
+Author: Jeff Davis <jdavis@postgresql.org>
+2021-11-09 [4168a4745] Add pg_checkpointer predefined role for CHECKPOINT comma
+-->
+
+<listitem>
+<para>
+Allow members of the pg_checkpointer predefined role to run the CHECKPOINT command (Jeff Davis)
+</para>
+
+<para>
+Previously these views could only be run by super users.
+</para>
+</listitem>
+
+<!--
+Author: Jeff Davis <jdavis@postgresql.org>
+2021-10-27 [77ea4f943] Grant memory views to pg_read_all_stats.
+-->
+
+<listitem>
+<para>
+Allow members of the pg_read_all_stats predefined role to access the views pg_backend_memory_contexts and pg_shmem_allocations (Bharath Rupireddy)
+</para>
+
+<para>
+Previously these views could only be run by super users.
+</para>
+</listitem>
+
+<!--
+Author: Jeff Davis <jdavis@postgresql.org>
+2021-10-26 [f0b051e32] Allow GRANT on pg_log_backend_memory_contexts().
+-->
+
+<listitem>
+<para>
+Allow GRANT to assign permissions on pg_log_backend_memory_contexts() (Jeff Davis)
+</para>
+
+<para>
+Previously this function could only be run by super users.
+</para>
+</listitem>
+
+     </itemizedlist>
+
+    </sect4>
+
+    <sect4>
+     <title>Server Configuration</title>
+
+     <itemizedlist>
+
+<!--
+Author: Michael Paquier <michael@paquier.xyz>
+2021-09-08 [bd1788051] Introduce GUC shared_memory_size
+Author: Michael Paquier <michael@paquier.xyz>
+2021-09-09 [3b231596c] Make shared_memory_size a preset option
+-->
+
+<listitem>
+<para>
+Add server variable shared_memory_size to report the size of allocated shared memory (Nathan Bossart)
+</para>
+</listitem>
+
+<!--
+Author: Michael Paquier <michael@paquier.xyz>
+2021-09-21 [43c1c4f65] Introduce GUC shared_memory_size_in_huge_pages
+Author: Michael Paquier <michael@paquier.xyz>
+2022-03-24 [bbd4951b7] doc: Improve postgres command for shared_memory_size_in_
+-->
+
+<listitem>
+<para>
+Add server variable shared_memory_size_in_huge_pages to report the number of huge memory pages required (Nathan Bossart)
+</para>
+
+<para>
+This is only supported on Linux.
+</para>
+</listitem>
+
+<!--
+Author: Michael Paquier <michael@paquier.xyz>
+2021-09-16 [0c39c2920] Support "postgres -C" with runtime-computed GUCs
+-->
+
+<listitem>
+<para>
+Allow "postgres -C" to properly report runtime-computed values (Nathan Bossart)
+</para>
+
+<para>
+Previously runtime-computed values data_checksums, wal_segment_size, and data_directory_mode would report values that would not be accurate on the running server.  They also can only be
+</para>
+</listitem>
+
+<!--
+Author: Michael Paquier <michael@paquier.xyz>
+2022-01-31 [d10e41d42] Introduce pg_settings_get_flags() to find flags associat
+-->
+
+<listitem>
+<para>
+Add function pg_settings_get_flags() to get the flags of server-side variables (Justin Pryzby)
+</para>
+</listitem>
+
+<!--
+Author: Thomas Munro <tmunro@postgresql.org>
+2022-01-15 [7170f2159] Allow "in place" tablespaces.
+-->
+
+<listitem>
+<para>
+Add server variable allow_in_place_tablespaces for tablespace testing (Thomas Munro)
+</para>
+</listitem>
+
+     </itemizedlist>
+
+    </sect4>
+
+   </sect3>
+
+   <sect3>
+    <title>Streaming Replication and Recovery</title>
+
+    <itemizedlist>
+
+<!--
+Author: Robert Haas <rhaas@postgresql.org>
+2022-02-11 [dab298471] Add suport for server-side LZ4 base backup compression.
+Author: Robert Haas <rhaas@postgresql.org>
+2022-03-08 [7cf085f07] Add support for zstd base backup compression.
+Author: Robert Haas <rhaas@postgresql.org>
+2022-03-30 [51c0d186d] Allow parallel zstd compression when taking a base backu
+-->
+
+<listitem>
+<para>
+Add support for LZ4 and ZSTD compression of server-side base backups (Jeevan Ladhe, Robert Haas)
+</para>
+</listitem>
+
+<!--
+Author: Thomas Munro <tmunro@postgresql.org>
+2021-08-02 [7ff23c6d2] Run checkpointer and bgwriter in crash recovery.
+-->
+
+<listitem>
+<para>
+Run checkpointer and bgwriter during crash recovery (Thomas Munro)
+</para>
+</listitem>
+
+<!--
+Author: Thomas Munro <tmunro@postgresql.org>
+2022-04-07 [5dc0418fa] Prefetch data referenced by the WAL, take II.
+-->
+
+<listitem>
+<para>
+Allow WAL processing to pre-fetch needed file contents (Thomas Munro)
+</para>
+
+<para>
+This is controlled by the server variable recovery_prefetch.
+</para>
+</listitem>
+
+<!--
+Author: Robert Haas <rhaas@postgresql.org>
+2022-02-03 [5ef1eefd7] Allow archiving via loadable modules.
+-->
+
+<listitem>
+<para>
+Add server variable archive_library to specify the library to be called for archiving (Nathan Bossart)
+</para>
+</listitem>
+
+<!--
+Author: Michael Paquier <michael@paquier.xyz>
+2021-11-23 [1922d7c6e] Add SQL functions to monitor the directory contents of r
+-->
+
+<listitem>
+<para>
+Add SQL functions to monitor the directory contents of replication slots (Bharath Rupireddy)
+</para>
+
+<para>
+Specifically, the functions are pg_ls_logicalsnapdir(), pg_ls_logicalmapdir(), and pg_ls_replslotdir().  They can be run by members of the predefined pg_monitor role.
+</para>
+</listitem>
+
+<!--
+Author: Jeff Davis <jdavis@postgresql.org>
+2021-07-09 [8e7811e95] Eliminate replication protocol error related to IDENTIFY
+-->
+
+<listitem>
+<para>
+No longer require IDENTIFY_SYSTEM to be run before START_REPLICATION (Jeff Davis)
+</para>
+</listitem>
+
+    </itemizedlist>
+
+    <sect4>
+     <title><link linkend="logical-replication">Logical Replication</link></title>
+
+     <itemizedlist>
+
+<!--
+Author: Amit Kapila <akapila@postgresql.org>
+2021-10-27 [5a2832465] Allow publishing the tables of schema.
+Author: Amit Kapila <akapila@postgresql.org>
+2021-12-08 [1a2aaeb0d] Fix changing the ownership of ALL TABLES IN SCHEMA publi
+-->
+
+<listitem>
+<para>
+Allow publication of all tables in a schema (Vignesh C, Hou Zhijie, Amit Kapila)
+</para>
+
+<para>
+For example, this syntax is now supported:  CREATE PUBLICATION pub1 FOR ALL TABLES IN SCHEMA s1,s2;  ALTER PUBLICATION supports a similar syntax.  Tables added to the listed schemas in the future will also
+be replicated.
+</para>
+</listitem>
+
+<!--
+Author: Amit Kapila <akapila@postgresql.org>
+2022-02-22 [52e4f0cd4] Allow specifying row filters for logical replication of
+Author: Tomas Vondra <tomas.vondra@postgresql.org>
+2022-03-17 [5a0796622] Fix row filters with multiple publications
+Author: Amit Kapila <akapila@postgresql.org>
+2022-04-18 [676eeb6dd] Add additional documentation for row filters.
+-->
+
+<listitem>
+<para>
+Allow publication content to be filtered using a WHERE clause (Hou Zhijie, Euler Taveira, Peter Smith, Ajin Cherian, Tomas Vondra, Amit Kapila)
+</para>
+</listitem>
+
+<!--
+Author: Tomas Vondra <tomas.vondra@postgresql.org>
+2022-03-26 [923def9a5] Allow specifying column lists for logical replication
+-->
+
+<listitem>
+<para>
+Allow publications to be restricted to specific columns (Tomas Vondra, Álvaro Herrera, Rahila Syed)
+</para>
+</listitem>
+
+<!--
+Author: Tomas Vondra <tomas.vondra@postgresql.org>
+2022-03-24 [75b1521da] Add decoding of sequences to built-in replication
+-->
+
+<listitem>
+<para>
+Allow logical replication to transfer sequence changes (Tomas Vondra, Cary Huang)
+</para>
+
+<para>
+The sequence option must be specified in the publication.  A new system view pg_publication_sequences shows published sequences.
+</para>
+</listitem>
+
+<!--
+Author: Peter Eisentraut <peter@eisentraut.org>
+2022-04-07 [344d62fb9] Unlogged sequences
+-->
+
+<listitem>
+<para>
+Create unlogged sequences and allow them to be skipped in logical replication (Peter Eisentraut)
+</para>
+
+<para>
+Individual sequence changes are not WAL logged so there is no performance benefit on the primary.
+</para>
+</listitem>
+
+<!--
+Author: Amit Kapila <akapila@postgresql.org>
+2022-03-22 [208c5d65b] Add ALTER SUBSCRIPTION ... SKIP.
+-->
+
+<listitem>
+<para>
+Allow skipping of transactions on a subscriber using ALTER SUBSCRIPTION ... SKIP (Masahiko Sawada)
+</para>
+</listitem>
+
+<!--
+Author: Amit Kapila <akapila@postgresql.org>
+2021-07-14 [a8fd13cab] Add support for prepared transactions to built-in logica
+Author: Amit Kapila <akapila@postgresql.org>
+2021-08-04 [63cf61cde] Add prepare API support for streaming transactions in lo
+-->
+
+<listitem>
+<para>
+Add support for prepared transactions to built-in logical replication (Peter Smith, Ajin Cherian, Amit Kapila, Nikhil Sontakke, Stas Kelvich)
+</para>
+</listitem>
+
+<!--
+Author: Amit Kapila <akapila@postgresql.org>
+2021-06-30 [cda03cfed] Allow enabling two-phase option via replication protocol
+-->
+
+<listitem>
+<para>
+Add two-phase information to the logical replication stream (Ajin Cherian)
+</para>
+
+<para>
+The new CREATE_REPLICATION_SLOT option is called TWO_PHASE.  pg_recvlogical now supports a new --two-phase option during slot creation.
+</para>
+</listitem>
+
+<!--
+Author: Tom Lane <tgl@sss.pgh.pa.us>
+2021-11-02 [f3d4019da] Ensure consistent logical replication of datetime and fl
+-->
+
+<listitem>
+<para>
+Adjust subscriber server variables to match the publisher so datetime and float8 values are interpreted consistently (Japin Li)
+</para>
+
+<para>
+Some publishers might be relying on inconsistent behavior.
+</para>
+</listitem>
+
+<!--
+Author: Amit Kapila <akapila@postgresql.org>
+2021-11-30 [8d74fc96d] Add a view to show the stats of subscription workers.
+Author: Amit Kapila <akapila@postgresql.org>
+2022-03-01 [7a8507329] Reconsider pg_stat_subscription_workers view.
+-->
+
+<listitem>
+<para>
+Add system view pg_stat_subscription_stats to report on subscriber activity (Masahiko Sawada)
+</para>
+
+<para>
+New function pg_stat_reset_subscription_stats() allows the resetting of subscriber statistics.
+</para>
+</listitem>
+
+     </itemizedlist>
+
+    </sect4>
+
+   </sect3>
+
+   <sect3>
+    <title><link linkend="sql-select"><command>SELECT</command></link>, <link linkend="sql-insert"><command>INSERT</command></link></title>
+
+    <itemizedlist>
+
+<!--
+Author: David Rowley <drowley@postgresql.org>
+2021-08-22 [22c4e88eb] Allow parallel DISTINCT
+-->
+
+<listitem>
+<para>
+Allow SELECT DISTINCT to be parallelized (David Rowley)
+</para>
+</listitem>
+
+    </itemizedlist>
+
+   </sect3>
+
+   <sect3>
+    <title>Utility Commands</title>
+
+    <itemizedlist>
+
+<!--
+Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
+2022-03-28 [7103ebb7a] Add support for MERGE SQL command
+-->
+
+<listitem>
+<para>
+Add SQL MERGE command to adjust one table to match another (Pavan Deolasee, Álvaro Herrera, Amit Langote, Simon Riggs)
+</para>
+
+<para>
+This is similar to INSERT ... ON CONFLICT but more batch-oriented.
+</para>
+</listitem>
+
+<!--
+Author: Peter Eisentraut <peter@eisentraut.org>
+2022-01-28 [43f33dc01] Add HEADER support to COPY text format
+Author: Peter Eisentraut <peter@eisentraut.org>
+2022-03-30 [072132f04] Add header matching mode to COPY FROM
+-->
+
+<listitem>
+<para>
+Add support for HEADER option in COPY text format (Rémi Lapeyre)
+</para>
+
+<para>
+The new options causes the column names to be output, and optionally verified on input.
+</para>
+</listitem>
+
+<!--
+Author: Robert Haas <rhaas@postgresql.org>
+2022-03-29 [9c08aea6a] Add new block-by-block strategy for CREATE DATABASE.
+-->
+
+<listitem>
+<para>
+Add new default WAL-logged method for database creation (Dilip Kumar)
+</para>
+
+<para>
+This avoids the need for checkpoints during database creation;  the old method is still available.
+</para>
+</listitem>
+
+<!--
+Author: Robert Haas <rhaas@postgresql.org>
+2022-01-24 [aa0105141] pg_upgrade: Preserve database OIDs.
+-->
+
+<listitem>
+<para>
+Allow CREATE DATABASE to set the database OID (Shruthi KC, Antonin Houska)
+</para>
+</listitem>
+
+<!--
+Author: Thomas Munro <tmunro@postgresql.org>
+2022-02-12 [4eb217631] Fix DROP {DATABASE,TABLESPACE} on Windows.
+-->
+
+<listitem>
+<para>
+Prevent DROP DATABASE, DROP TABLESPACE, and ALTER DATABASE SET TABLESPACE from occasionally failing during concurrent use on Windows (Thomas Munro)
+</para>
+</listitem>
+
+<!--
+Author: Peter Eisentraut <peter@eisentraut.org>
+2021-12-08 [d6f96ed94] Allow specifying column list for foreign key ON DELETE S
+-->
+
+<listitem>
+<para>
+Allow foreign key ON DELETE SET actions to affect only specified columns (Paul Martinez)
+</para>
+
+<para>
+Previously, all of the columns in the foreign key were always effected.
+</para>
+</listitem>
+
+<!--
+Author: Tom Lane <tgl@sss.pgh.pa.us>
+2021-07-27 [48c5c9068] Use the "pg_temp" schema alias in EXPLAIN and related ou
+-->
+
+<listitem>
+<para>
+When EXPLAIN references the temporary object schema, refer to it as "pg_temp" (Amul Sul)
+</para>
+
+<para>
+Previous the actual schema name was used.
+</para>
+</listitem>
+
+<!--
+Author: Michael Paquier <michael@paquier.xyz>
+2021-07-28 [b0483263d] Add support for SET ACCESS METHOD in ALTER TABLE
+-->
+
+<listitem>
+<para>
+Allow ALTER TABLE to modify a table's ACCESS METHOD (Justin Pryzby, Jeff Davis)
+</para>
+</listitem>
+
+<!--
+Author: Michael Paquier <michael@paquier.xyz>
+2021-08-10 [7b565843a] Add call to object access hook at the end of table rewri
+-->
+
+<listitem>
+<para>
+Properly call object access hooks when ALTER TABLE causes table rewrites (Michael Paquier)
+</para>
+</listitem>
+
+    </itemizedlist>
+
+   </sect3>
+
+   <sect3>
+    <title>Data Types</title>
+
+    <itemizedlist>
+
+<!--
+Author: Dean Rasheed <dean.a.rasheed@gmail.com>
+2021-07-26 [085f931f5] Allow numeric scale to be negative or greater than preci
+-->
+
+<listitem>
+<para>
+Allow numeric scale to be negative or greater than precision (Dean Rasheed, Tom Lane)
+</para>
+
+<para>
+This allows rounding of values to the left of the decimal point, e.g., '1234'::numeric(4, -2) returns 1200.
+</para>
+</listitem>
+
+<!--
+Author: Bruce Momjian <bruce@momjian.us>
+2021-08-03 [95ab1e0a9] interval:  round values when spilling to months
+-->
+
+<listitem>
+<para>
+When specifying fractional interval values in units greater than months, round to the nearest month (Bruce Momjian)
+</para>
+
+<para>
+For example, report '1.99 years' as '2 years', not '1 year 11 months'.
+</para>
+</listitem>
+
+<!--
+Author: Tom Lane <tgl@sss.pgh.pa.us>
+2022-04-02 [e39f99046] Fix overflow hazards in interval input and output conver
+-->
+
+<listitem>
+<para>
+Improve overflow detection when casting values to interval (Joe Koshakow)
+</para>
+</listitem>
+
+<!--
+Author: John Naylor <john.naylor@postgresql.org>
+2021-08-26 [bab982161] Update display widths as part of updating Unicode
+Author: Peter Eisentraut <peter@eisentraut.org>
+2021-09-15 [f7e56f1f5] Update Unicode data to Unicode 14.0.0
+-->
+
+<listitem>
+<para>
+Update the display width information for modern Unicode characters, like emojis (Jacob Champion)
+</para>
+
+<para>
+Also update from Unicode 5.0 to 14.0.0.  There is now an automated way to keep Postgres updated with Unicode releases.
+</para>
+</listitem>
+
+    </itemizedlist>
+
+   </sect3>
+
+   <sect3>
+    <title>Functions</title>
+
+    <itemizedlist>
+
+<!--
+Author: Peter Eisentraut <peter@eisentraut.org>
+2022-03-30 [7ae1619bc] Add range_agg with multirange inputs
+-->
+
+<listitem>
+<para>
+Add multirange input to range_agg() (Paul Jungwirth)
+</para>
+</listitem>
+
+<!--
+Author: Fujii Masao <fujii@postgresql.org>
+2022-02-10 [400fc6b64] Add min() and max() aggregates for xid8.
+-->
+
+<listitem>
+<para>
+Add min() and max() aggregates for the xid8 data type (Ken Kato)
+</para>
+</listitem>
+
+<!--
+Author: Tom Lane <tgl@sss.pgh.pa.us>
+2021-08-03 [642433707] Add assorted new regexp_xxx SQL functions.
+-->
+
+<listitem>
+<para>
+Add regular expression functions for compatibility with other relational systems (Gilles Darold, Tom Lane)
+</para>
+
+<para>
+Specifically, the new functions are regexp_count(), regexp_instr(), regexp_like(), and regexp_substr().  Some new optional arguments were also added to regexp_replace().
+</para>
+</listitem>
 
-<sect1 id="release-15">
- <title>Release 15</title>
+<!--
+Author: Tom Lane <tgl@sss.pgh.pa.us>
+2021-11-06 [cbe25dcff] Disallow making an empty lexeme via array_to_tsvector().
+-->
+
+<!--
+Author: Tom Lane <tgl@sss.pgh.pa.us>
+2021-12-13 [c5c192d7b] Implement poly_distance().
+-->
+
+<listitem>
+<para>
+Add the ability to compute the distance between polygons (Tom Lane)
+</para>
+</listitem>
+
+<!--
+Author: Robert Haas <rhaas@postgresql.org>
+2022-03-14 [9dde82899] Support "of", "tzh", and "tzm" format codes.
+-->
+
+<listitem>
+<para>
+Add to_char() format codes "of", "tzh", and "tzm" format codes (Nitin Jadhav)
+</para>
+
+<para>
+The upper-case versions of these were already supported.
+</para>
+</listitem>
+
+<!--
+Author: Tom Lane <tgl@sss.pgh.pa.us>
+2021-09-06 [388e71af8] Make timetz_zone() stable, and correct a bug for DYNTZ a
+-->
+
+<listitem>
+<para>
+Improve the optimization of timetz_zone() by stabilizing its value at transaction start (Aleksander Alekseev, Tom Lane)
+</para>
+</listitem>
+
+<!--
+Author: David Rowley <drowley@postgresql.org>
+2021-07-09 [ca2e4472b] Teach pg_size_pretty and pg_size_bytes about petabytes
+-->
+
+<listitem>
+<para>
+Add support for petabyte units to pg_size_pretty() and pg_size_bytes() (David Christensen)
+</para>
+</listitem>
+
+<!--
+Author: Tom Lane <tgl@sss.pgh.pa.us>
+2021-07-27 [024515cac] In event triggers, use "pg_temp" only for our own temp s
+-->
+
+<listitem>
+<para>
+Change pg_event_trigger_ddl_commands() to output references to non-local temporary schemas using the actual schema name (Tom Lane)
+</para>
+
+<para>
+Previously this function referred to temporary schemas as "pg_temp".
+</para>
+</listitem>
+
+     </itemizedlist>
+
+    <sect4>
+    <title>JSON</title>
+
+     <itemizedlist>
+
+<!--
+Author: Andrew Dunstan <andrew@dunslane.net>
+2022-03-27 [f79b803dc] Common SQL/JSON clauses
+Author: Andrew Dunstan <andrew@dunslane.net>
+2022-03-27 [f4fb45d15] SQL/JSON constructors
+Author: Andrew Dunstan <andrew@dunslane.net>
+2022-03-30 [606948b05] SQL JSON functions
+Author: Andrew Dunstan <andrew@dunslane.net>
+2022-03-31 [49082c2cc] RETURNING clause for JSON() and JSON_SCALAR()
+Author: Andrew Dunstan <andrew@dunslane.net>
+2022-04-07 [a6baa4bad] Documentation for SQL/JSON features
+-->
+
+<listitem>
+<para>
+Add SQL/JSON-standard JSON constructors (Nikita Glukhov)
+</para>
+
+<para>
+The construction functions are JSON(), JSON_SCALAR(), and JSON_SERIALIZE(), JSON_ARRAY(),  JSON_ARRAYAGG(),  JSON_OBJECT(), and  JSON_OBJECTAGG().  They have a few functional advantages over the existing JSON functions.
+</para>
+</listitem>
+
+<!--
+Author: Andrew Dunstan <andrew@dunslane.net>
+2022-03-29 [1a36bc9db] SQL/JSON query functions
+-->
+
+<listitem>
+<para>
+Add SQL/JSON query functions JSON_EXISTS(), JSON_QUERY(), and JSON_VALUE() (Nikita Glukhov)
+</para>
+</listitem>
+
+<!--
+Author: Andrew Dunstan <andrew@dunslane.net>
+2022-03-28 [33a377608] IS JSON predicate
+-->
+
+<listitem>
+<para>
+Add JSON predicates to test JSON/JSONB values (Nikita Glukhov)
+</para>
+
+<para>
+The clauses are IS JSON [ VALUE | ARRAY | OBJECT | SCALAR |  [WITH | WITHOUT ] UNIQUE KEYS ].
+</para>
+</listitem>
+
+<!--
+Author: Andrew Dunstan <andrew@dunslane.net>
+2022-04-04 [4e34747c8] JSON_TABLE
+Author: Andrew Dunstan <andrew@dunslane.net>
+2022-04-05 [fadb48b00] PLAN clauses for JSON_TABLE
+-->
+
+<listitem>
+<para>
+Add JSON_TABLE function to cause JSON data to be treated as a table (Nikita Glukhov)
+</para>
+</listitem>
+
+     </itemizedlist>
+
+    </sect4>
+
+   </sect3>
+
+   <sect3>
+    <title><link linkend="plpgsql">PL/pgSQL</link></title>
+
+    <itemizedlist>
+
+<!--
+Author: Tom Lane <tgl@sss.pgh.pa.us>
+2022-04-30 [ccd10a9bf] Tighten enforcement of variable CONSTANT markings in plp
+-->
+
+<listitem>
+<para>
+Fix inforcement of PL/pgSQL variable CONSTANT markings (Tom Lane)
+</para>
+
+<para>
+Previously, a variable used as a CALL output parameter or refcursor OPEN variable would not enforce CONSTANT.
+</para>
+</listitem>    </itemizedlist>
+
+
+
+   </sect3>
+
+   <sect3>
+    <title>Client Interfaces</title>
+
+    <itemizedlist>
+
+<!--
+Author: Peter Eisentraut <peter@eisentraut.org>
+2022-04-01 [c1932e542] libpq: Allow IP address SANs in server certificates
+-->
+
+<listitem>
+<para>
+Allow IP address matching against a server's certificate Subject Alternative Name (Jacob Champion)
+</para>
+</listitem>
+
+<!--
+Author: Tom Lane <tgl@sss.pgh.pa.us>
+2022-02-28 [a59c79564] Allow root-owned SSL private keys in libpq, not only the
+-->
+
+<listitem>
+<para>
+Allow libpq's SSL private to be owned by the root user (David Steele)
+</para>
+</listitem>
+
+<!--
+Author: Daniel Gustafsson <dgustafsson@postgresql.org>
+2022-03-29 [ebc8b7d44] Enable SSL library detection via PQsslAttribute()
+-->
+
+<listitem>
+<para>
+Allow PQsslAttribute() to report the SSL library type without requiring a libpq connection (Jacob Champion)
+</para>
+</listitem>
+
+<!--
+Author: Tom Lane <tgl@sss.pgh.pa.us>
+2022-01-18 [5987feb70] Make PQcancel use the PGconn's tcp_user_timeout and keep
+-->
+
+<listitem>
+<para>
+Change query cancellations sent by the client to use the same TCP settings as normal client connections (Jelte Fennema)
+</para>
+
+<para>
+This allows configured TCP timeouts to apply to query cancel connections.
+</para>
+</listitem>
+
+<!--
+Author: Tom Lane <tgl@sss.pgh.pa.us>
+2022-02-18 [ce1e7a2f7] Don't let libpq "event" procs break the state of PGresul
+Author: Tom Lane <tgl@sss.pgh.pa.us>
+2022-02-18 [2e372869a] Don't let libpq PGEVT_CONNRESET callbacks break a PGconn
+-->
+
+<listitem>
+<para>
+Prevent libpq event callback failures from forcing an error result (Tom Lane)
+</para>
+</listitem>
+
+    </itemizedlist>
+
+   </sect3>
+
+   <sect3>
+    <title>Client Applications</title>
+
+    <itemizedlist>
+
+<!--
+Author: Tom Lane <tgl@sss.pgh.pa.us>
+2022-01-09 [376ce3e40] Prefer $HOME when looking up the current user's home dir
+-->
+
+<listitem>
+<para>
+On Unix platforms, have client applications like psql check $HOME for the user's home directory before checking the operating system definition (Anders Kaseorg)
+</para>
+</listitem>
+
+    </itemizedlist>
+
+    <sect4>
+    <title><xref linkend="app-psql"/></title>
+
+     <itemizedlist>
+
+<!--
+Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
+2021-07-14 [eec57115e] In psql \copy from, send data to server in larger chunks
+-->
+
+<listitem>
+<para>
+Improve performance of psql's \copy command (Heikki Linnakangas)
+</para>
+</listitem>
+
+<!--
+Author: Tom Lane <tgl@sss.pgh.pa.us>
+2021-12-20 [33d3eeadb] Add a \getenv command to psql.
+-->
+
+<listitem>
+<para>
+Add psql command \getenv to assign the value of an environment variable to a psql variable (Tom Lane)
+</para>
+</listitem>
+
+<!--
+Author: Tom Lane <tgl@sss.pgh.pa.us>
+2022-01-06 [328dfbdab] Extend psql's \lo_list/\dl to be able to print large obj
+-->
+
+<listitem>
+<para>
+Add '+' option to psql's \lo_list/\dl to show object privileges (Pavel Luzanov)
+</para>
+</listitem>
+
+<!--
+Author: Tom Lane <tgl@sss.pgh.pa.us>
+2022-04-07 [3e707fbb4] psql: add \dconfig command to show server's configuratio
+Author: Tom Lane <tgl@sss.pgh.pa.us>
+2022-04-11 [5e70d8b5d] Tweak the default behavior of psql's \dconfig.
+Author: Tom Lane <tgl@sss.pgh.pa.us>
+2022-04-13 [139d46ee2] Further tweak the default behavior of psql's \dconfig.
+-->
+
+<listitem>
+<para>
+Add psql \dconfig to report server variables (Mark Dilger, Tom Lane)
+</para>
+
+<para>
+This is similar to the server-side SHOW command but can process patterns.
+</para>
+</listitem>
+
+<!--
+Author: Thomas Munro <tmunro@postgresql.org>
+2021-07-13 [7c09d2797] Add PSQL_WATCH_PAGER for psql's \watch command.
+-->
+
+<listitem>
+<para>
+Add pager option for psql's \watch command (Pavel Stehule, Thomas Munro)
+</para>
+
+<para>
+This is only supported on Unix, and is controlled by PSQL_WATCH_PAGER.
+</para>
+</listitem>
+
+<!--
+Author: Tom Lane <tgl@sss.pgh.pa.us>
+2021-12-01 [83884682f] psql: include intra-query "- -" comments in what's sent t
+Author: Tom Lane <tgl@sss.pgh.pa.us>
+2021-12-01 [c2f654930] psql: treat "- -" comments between queries as separate hi
+-->
+
+<listitem>
+<para>
+Have psql send intra-query double-hyphen comments to the server (Tom Lane, Greg Nancarrow)
+</para>
+
+<para>
+Previously such comments were removed from the query before being sent.  Double-hyphen comments that are before query text are not sent, and are not recorded as separate psql history entries.
+</para>
+</listitem>
+
+<!--
+Author: Tom Lane <tgl@sss.pgh.pa.us>
+2021-12-01 [3d858af07] psql: initialize comment-begin setting to a useful value
+-->
+
+<listitem>
+<para>
+Adjust psql's readline meta-# to insert a double-hyphen comment marker (Tom Lane)
+</para>
+
+<para>
+Previously an unhelpful pound marker was inserted.
+</para>
+</listitem>
+
+<!--
+Author: Peter Eisentraut <peter@eisentraut.org>
+2022-04-04 [7844c9918] psql: Show all query results by default
+-->
+
+<listitem>
+<para>
+Have psql output all output if multiple queries are passed to the server at once (Fabien Coelho)
+</para>
+
+<para>
+This can be disabled setting SHOW_ALL_RESULTS.
+</para>
+</listitem>
+
+<!--
+Author: Michael Paquier <michael@paquier.xyz>
+2021-08-10 [e2ce88b58] Add tab completion for DECLARE .. ASENSITIVE in psql
+Author: Michael Paquier <michael@paquier.xyz>
+2021-08-25 [346511313] Add tab completion for EXPLAIN .. EXECUTE in psql
+Author: Michael Paquier <michael@paquier.xyz>
+2021-08-30 [d3fa87657] Add more tab completion support for ALTER TABLE ADD in p
+Author: Michael Paquier <michael@paquier.xyz>
+2021-08-31 [f2bbadce6] Add tab completion for data types after ALTER TABLE ADD
+Author: Fujii Masao <fujii@postgresql.org>
+2021-09-01 [b0c066297] Improve tab-completion for CREATE PUBLICATION.
+Author: Fujii Masao <fujii@postgresql.org>
+2021-10-05 [0b0d277c3] psql: Improve tab-completion for LOCK TABLE.
+Author: Michael Paquier <michael@paquier.xyz>
+2021-11-05 [a5b336b8b] Improve psql tab completion for COMMENT
+Author: Michael Paquier <michael@paquier.xyz>
+2021-11-19 [0cd6d3b3c] Improve psql tab completion for transforms, domains and
+Author: Michael Paquier <michael@paquier.xyz>
+2021-11-29 [f44ceb46e] Improve psql tab completion for views, FDWs, sequences a
+Author: Michael Paquier <michael@paquier.xyz>
+2021-12-01 [9270778f4] Improve psql tab completion for various DROP commands
+Author: Tom Lane <tgl@sss.pgh.pa.us>
+2022-01-03 [dfe67c0e8] Tab completion: don't offer valid constraints in VALIDAT
+Author: Fujii Masao <fujii@postgresql.org>
+2022-01-15 [74527c3e0] Add tab-completion for CREATE FOREIGN TABLE.
+Author: Peter Eisentraut <peter@eisentraut.org>
+2022-01-27 [fefce9ef9] psql: Add tab completion for ALTER COLLATION / REFRESH V
+Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
+2022-01-28 [95787e849] Tab-complete ALTER PUBLICATION ADD TABLE with list of ta
+Author: Tom Lane <tgl@sss.pgh.pa.us>
+2022-01-30 [02b8048ba] psql: improve tab-complete's handling of variant SQL nam
+Author: Tom Lane <tgl@sss.pgh.pa.us>
+2022-02-01 [020258fbd] Treat case of tab-completion keywords a bit more careful
+Author: Tom Lane <tgl@sss.pgh.pa.us>
+2022-02-09 [f0cd9097c] Further tweaks for psql's new tab-completion logic.
+Author: Tom Lane <tgl@sss.pgh.pa.us>
+2022-03-20 [7fa3db367] psql: handle tab completion of timezone names after "SET
+Author: Tomas Vondra <tomas.vondra@postgresql.org>
+2022-03-25 [2d2232933] Update tab-completion for CREATE PUBLICATION with sequen
+Author: Tom Lane <tgl@sss.pgh.pa.us>
+2022-04-13 [b5607b074] Fix case sensitivity in psql's tab completion for GUC na
+-->
+
+<listitem>
+<para>
+Improve psql's tab completion (Shinya Kato, Dagfinn Ilmari Mannsåker, Peter Smith, Koyu Tanigawa, Ken Kato, David Fetter, Haiying Tang, Peter Eisentraut, Álvaro Herrera, Tom Lane, Masahiko Sawada)
+</para>
+</listitem>
+
+<!--
+Author: Tom Lane <tgl@sss.pgh.pa.us>
+2021-12-16 [cf0cab868] Remove psql support for server versions preceding 9.2.
+-->
+
+<listitem>
+<para>
+Limit support of psql to servers running PostgreSQL 9.2 and later (Tom Lane)
+</para>
+</listitem>
+
+     </itemizedlist>
+
+    </sect4>
+
+   </sect3>
+
+   <sect3>
+    <title>Server Applications</title>
+
+    <itemizedlist>
+
+<!--
+Author: Robert Haas <rhaas@postgresql.org>
+2022-01-20 [3500ccc39] Support base backup targets.
+-->
+
+<listitem>
+<para>
+Add new pg_basebackup option --target to control the base backup location (Robert Haas)
+</para>
+
+<para>
+New output options are 'server' to write the backup locally and 'blackhole' to discard the backup (for testing).
+</para>
+</listitem>
+
+<!--
+Author: Robert Haas <rhaas@postgresql.org>
+2022-02-11 [751b8d23b] pg_basebackup: Allow client-side LZ4 (de)compression.
+Author: Robert Haas <rhaas@postgresql.org>
+2022-03-08 [7cf085f07] Add support for zstd base backup compression.
+-->
+
+<listitem>
+<para>
+Allow pg_basebackup to decompress LZ4 and ZSTD compressed server-side base backups, and LZ4 and ZSTD compress output files (Dipesh Pandit, Jeevan Ladhe)
+</para>
+</listitem>
+
+<!--
+Author: Michael Paquier <michael@paquier.xyz>
+2022-01-21 [5c649fe15] Extend the options of pg_basebackup to control compressi
+Author: Robert Haas <rhaas@postgresql.org>
+2022-01-24 [0ad803291] Server-side gzip compression.
+Author: Robert Haas <rhaas@postgresql.org>
+2022-01-25 [e1f860f13] Tidy up a few cosmetic issues related to pg_basebackup.
+-->
+
+<listitem>
+<para>
+Allow pg_basebackup's --compress option to control the compression method (Michael Paquier, Robert Haas)
+</para>
+
+<para>
+New options include "server-gzip" (gzip on the server), "client-gzip" (same as "gzip").
+</para>
+</listitem>
+
+<!--
+Author: Robert Haas <rhaas@postgresql.org>
+2022-01-28 [d45099425] Allow server-side compression to be used with -Fp.
+-->
+
+<listitem>
+<para>
+Allow pg_basebackup to compress on the server slide and decompress on the client side before storage (Dipesh Pandit)
+</para>
+
+<para>
+This is accomplished by specifying compression on the server side and plain output format.
+</para>
+</listitem>
+
+<!--
+Author: Michael Paquier <michael@paquier.xyz>
+2021-11-05 [babbbb595] Add support for LZ4 compression in pg_receivewal
+Author: Michael Paquier <michael@paquier.xyz>
+2022-04-13 [042a923ad] Rework compression options of pg_receivewal
+-->
+
+<listitem>
+<para>
+Add the LZ4 compression method to pg_receivewal (Georgios Kokolatos)
+</para>
+
+<para>
+This is enabled via --compression-method=lz4 and requires binaries to be built using --with-lz4.
+</para>
+</listitem>
+
+<!--
+Author: Michael Paquier <michael@paquier.xyz>
+2021-11-04 [d62bcc8b0] Rework compression options of pg_receivewal
+-->
+
+<listitem>
+<para>
+Redesign pg_receivewal's compression options (Georgios Kokolatos)
+</para>
+
+<para>
+The new --compression-method option controls the type of compression, rather than just relying on --compress.
+</para>
+</listitem>
+
+<!--
+Author: Michael Paquier <michael@paquier.xyz>
+2021-10-26 [f61e1dd2c] Allow pg_receivewal to stream from a slot's restart LSN
+-->
+
+<listitem>
+<para>
+Improve pg_receivewal's ability to restart at the proper WAL location (Ronan Dunklau)
+</para>
+
+<para>
+Previously, pg_receivewal would start based on the WAL file stored in the local archive directory, or at the sending server's current WAL flush location.  With this change, if the sending server is running
+Postgres 15 or later, the local archive directory is empty, and a replication slot is specified, the replication slots restart point will be used.
+</para>
+</listitem>
+
+    </itemizedlist>
+
+    <sect4>
+
+     <title>pg_dump</title>
+
+     <itemizedlist>
+
+<!--
+Author: Noah Misch <noah@leadboat.com>
+2021-06-28 [a7a7be1f2] Dump public schema ownership and security labels.
+Author: Noah Misch <noah@leadboat.com>
+2021-06-28 [7ac10f692] Dump COMMENT ON SCHEMA public.
+-->
+
+<listitem>
+<para>
+Have pg_dump dump "public" schema ownership changes and security labels (Noah Misch)
+</para>
+
+<para>
+It also dumps "public" schema comments.
+</para>
+</listitem>
+
+<!--
+Author: Tom Lane <tgl@sss.pgh.pa.us>
+2021-12-06 [989596152] Avoid per-object queries in performance-critical paths i
+Author: Tom Lane <tgl@sss.pgh.pa.us>
+2021-12-06 [be85727a3] Use PREPARE/EXECUTE for repetitive per-object queries in
+Author: Tom Lane <tgl@sss.pgh.pa.us>
+2021-12-31 [d5e8930f5] pg_dump: minor performance improvements from eliminating
+-->
+
+<listitem>
+<para>
+Improve performance of dumping databases with many objects (Tom Lane)
+</para>
+
+<para>
+This will also improve the performance of pg_upgrade.
+</para>
+</listitem>
+
+<!--
+Author: Tom Lane <tgl@sss.pgh.pa.us>
+2021-12-06 [65aaed22a] Account for TOAST data while scheduling parallel dumps.
+-->
+
+<listitem>
+<para>
+Improve the parallel pg_dump performance of TOAST tables (Tom Lane)
+</para>
+</listitem>
+
+<!--
+Author: Michael Paquier <michael@paquier.xyz>
+2022-01-17 [215862886] Add support for - -no-table-access-method in pg_{dump,dum
+-->
+
+<listitem>
+<para>
+Add dump/restore option --no-table-access-method to force restore to use only the default table access method (Justin Pryzby)
+</para>
+
+<para>
+This is for portability in restoring from systems using non-default table access methods.
+</para>
+</listitem>
+
+<!--
+Author: Tom Lane <tgl@sss.pgh.pa.us>
+2021-12-14 [30e7c175b] Remove pg_dump/pg_dumpall support for dumping from pre-9
+-->
+
+<listitem>
+<para>
+Limit support of pg_dump and pg_dumpall to servers running PostgreSQL 9.2 and later (Tom Lane)
+</para>
+</listitem>
+
+     </itemizedlist>
+
+    </sect4>
+
+    <sect4>
+
+     <title>pg_upgrade</title>
+
+     <itemizedlist>
+
+<!--
+Author: Andres Freund <andres@anarazel.de>
+2022-02-21 [27b02e070] pg_upgrade: Don't print progress status when output is n
+-->
+
+<listitem>
+<para>
+Remove status reporting during pg_upgrade operation if the output is not a terminal (Andres Freund)
+</para>
+
+<para>
+The status reporting output can be enabled for non-tty usage by using --verbose.
+</para>
+</listitem>
+
+<!--
+Author: Daniel Gustafsson <dgustafsson@postgresql.org>
+2022-03-24 [26ebb0e28] List offending databases in pg_upgrade datallowconn chec
+-->
+
+<listitem>
+<para>
+Have pg_upgrade report all databases with invalid connection settings (Jeevan Ladhe)
+</para>
+
+<para>
+Previously only the first invalid connection setting database was reported.
+</para>
+</listitem>
+
+<!--
+Author: Michael Paquier <michael@paquier.xyz>
+2022-02-06 [38bfae365] pg_upgrade: Move all the files generated internally to a
+Author: Michael Paquier <michael@paquier.xyz>
+2022-02-15 [a00849630] Fix thinko with subdirectories generated by pg_upgrade f
+-->
+
+<listitem>
+<para>
+Store pg_upgrade temporary files in a new cluster subdirectory called "pg_upgrade_output".d (Justin Pryzby)
+</para>
+
+<para>
+Previously temporary files were stored in the current directory.
+</para>
+</listitem>
+
+<!--
+Author: Robert Haas <rhaas@postgresql.org>
+2022-01-17 [9a974cbcb] pg_upgrade: Preserve relfilenodes and tablespace OIDs.
+Author: Robert Haas <rhaas@postgresql.org>
+2022-01-24 [aa0105141] pg_upgrade: Preserve database OIDs.
+-->
+
+<listitem>
+<para>
+Have pg_upgrade preserve relfilenodes, tablespace, and database OIDs between old and new clusters (Shruthi KC, Antonin Houska)
+</para>
+</listitem>
+
+<!--
+Author: Michael Paquier <michael@paquier.xyz>
+2021-12-18 [3d5ffccb6] Add option -N/- -no-sync to pg_upgrade
+-->
+
+<listitem>
+<para>
+Add a --no-sync option to pg_upgrade (Michael Paquier)
+</para>
+
+<para>
+This useful only for testing.
+</para>
+</listitem>
+
+<!--
+Author: Tom Lane <tgl@sss.pgh.pa.us>
+2021-12-14 [e469f0aaf] Remove pg_upgrade support for upgrading from pre-9.2 ser
+-->
+
+<listitem>
+<para>
+Limit support of pg_upgrade to old servers running PostgreSQL 9.2 and later (Tom Lane)
+</para>
+</listitem>
+
+     </itemizedlist>
+
+    </sect4>
+
+    <sect4>
+
+     <title>pg_waldump</title>
+
+     <itemizedlist>
+
+<!--
+Author: Thomas Munro <tmunro@postgresql.org>
+2022-03-24 [127aea2a6] Add additional filtering options to pg_waldump.
+Author: Thomas Munro <tmunro@postgresql.org>
+2022-03-25 [52b556843] Improve command line options for pg_waldump.
+-->
+
+<listitem>
+<para>
+Allow pg_waldump to be filtered by relation file node, block number, fork number, and full page images (David Christensen, Thomas Munro)
+</para>
+</listitem>
+
+<!--
+Author: Michael Paquier <michael@paquier.xyz>
+2021-12-02 [f2c52eeba] pg_waldump: Emit stats summary when interrupted by SIGIN
+-->
+
+<listitem>
+<para>
+Have pg_waldump report statistics before an interrupted exit (Bharath Rupireddy)
+</para>
+
+<para>
+For example, issuing a control-C in a terminal running "pg_waldump --stats --follow" will report the current statistics before exiting.  This does not work on Windows.
+</para>
+</listitem>
+
+<!--
+Author: Michael Paquier <michael@paquier.xyz>
+2021-12-13 [c8b733c4c] Improve description of some WAL records with transaction
+-->
+
+<listitem>
+<para>
+Improve descriptions of some transaction WAL records reported by pg_waldump (Masahiko Sawada, Michael Paquier)
+</para>
+</listitem>
+
+<!--
+Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
+2021-07-01 [c8bf5098c] Allow specifying pg_waldump - -rmgr option multiple times
+-->
+
+<listitem>
+<para>
+Allow pg_waldump to dump information about multiple resource managers (Heikki Linnakangas)
+</para>
+
+<para>
+This is enabled by specifying the --rmgr option multiple times.
+</para>
+</listitem>
+
+<!--
+Author: Michael Paquier <michael@paquier.xyz>
+2022-04-07 [0d5c38757] Add option - -config-file to pg_rewind
+-->
+
+<listitem>
+<para>
+Add pg_rewind option --config-file to simplify use when server configuration files are stored outside the data directory (Gunnar "Nick" Bluth)
+</para>
+</listitem>
+
+     </itemizedlist>
+
+    </sect4>
+
+   </sect3>
+
+   <sect3>
+    <title>Documentation</title>
+
+    <itemizedlist>
+
+<!--
+Author: Fujii Masao <fujii@postgresql.org>
+2021-10-05 [f6b5d05ba] doc: Document pg_encoding_to_char() and pg_char_to_encod
+-->
+
+<listitem>
+<para>
+Add documentation for pg_encoding_to_char() and pg_char_to_encoding() (Ian Lawrence Barwick)
+</para>
+</listitem>
+
+<!--
+Author: Peter Eisentraut <peter@eisentraut.org>
+2022-03-30 [b21c4cf95] doc: Document range_intersect_agg(anymultirange)
+-->
+
+<listitem>
+<para>
+Add documentation for range_intersect_agg(anymultirange) (Paul Jungwirth)
+</para>
+</listitem>
+
+<!--
+Author: Tom Lane <tgl@sss.pgh.pa.us>
+2021-10-09 [2ae5d72f0] Doc: improve documentation for ^@ starts-with operator.
+-->
+
+<listitem>
+<para>
+Document the ^@ starts-with operator (Tom Lane)
+</para>
+</listitem>
+
+    </itemizedlist>
+
+   </sect3>
+
+   <sect3>
+   <title>Source Code</title>
+
+    <itemizedlist>
+
+<!--
+Author: Andres Freund <andres@anarazel.de>
+2021-12-30 [93d973494] ci: Add continuous integration for github repositories v
+-->
+
+<listitem>
+<para>
+Add support for continuous integration testing using cirrus-ci (Andres Freund, Thomas Munro, Melanie Plageman)
+</para>
+</listitem>
+
+<!--
+Author: Robert Haas <rhaas@postgresql.org>
+2022-02-18 [6c417bbcc] Add support for building with ZSTD.
+-->
+
+<listitem>
+<para>
+Add configure option --with-zstd to enable ZSTD build (Jeevan Ladhe, Robert Haas, Michael Paquier)
+</para>
+</listitem>
+
+<!--
+Author: Peter Eisentraut <peter@eisentraut.org>
+2021-11-22 [d6d1dfcc9] Add ABI extra field to fmgr magic block
+-->
+
+<listitem>
+<para>
+Add module field which can be customized for non-community PostgreSQL distributions (Peter Eisentraut)
+</para>
+
+<para>
+A module field mismatch would generate an error.
+</para>
+</listitem>
+
+<!--
+Author: Tom Lane <tgl@sss.pgh.pa.us>
+2021-12-11 [07eee5a0d] Create a new type category for "internal use" types.
+-->
+
+<listitem>
+<para>
+Create a new pg_type.typcategory value for "char" (Tom Lane)
+</para>
+
+<para>
+Some internal-use-only types have also been assigned this new pg_type.typcategory.
+</para>
+</listitem>
+
+<!--
+Author: Robert Haas <rhaas@postgresql.org>
+2022-01-18 [cc333f323] Modify pg_basebackup to use a new COPY subprotocol for b
+-->
+
+<listitem>
+<para>
+Add new protocol message TARGET to specific a new COPY method to be for base backups (Robert Haas)
+</para>
+
+<para>
+Modify pg_basebackup to use this method.
+</para>
+</listitem>
+
+<!--
+Author: Robert Haas <rhaas@postgresql.org>
+2022-01-24 [0ad803291] Server-side gzip compression.
+Author: Robert Haas <rhaas@postgresql.org>
+2022-03-23 [ffd53659c] Replace BASE_BACKUP COMPRESSION_LEVEL option with COMPRE
+-->
+
+<listitem>
+<para>
+Add new protocol message COMPRESSION and COMPRESSION_DETAIL to specify the compression method and level (Robert Haas)
+</para>
+</listitem>
+
+<!--
+Author: Robert Haas <rhaas@postgresql.org>
+2022-02-10 [9cd28c2e5] Remove server support for old BASE_BACKUP command syntax
+Author: Robert Haas <rhaas@postgresql.org>
+2022-02-10 [0d4513b61] Remove server support for the previous base backup proto
+-->
+
+<listitem>
+<para>
+Remove server support for old BASE_BACKUP command syntax and base backup protocol (Robert Haas)
+</para>
+</listitem>
+
+<!--
+Author: Robert Haas <rhaas@postgresql.org>
+2022-03-15 [e4ba69f3f] Allow extensions to add new backup targets.
+-->
+
+<listitem>
+<para>
+Add support for extensions to set custom backup targets (Robert Haas)
+</para>
+</listitem>
+
+<!--
+Author: Jeff Davis <jdavis@postgresql.org>
+2022-04-06 [5c279a6d3] Custom WAL Resource Managers.
+-->
+
+<listitem>
+<para>
+Add extensions to define their own WAL resource managers (Jeff Davis)
+</para>
+</listitem>
+
+<!--
+Author: Robert Haas <rhaas@postgresql.org>
+2022-04-08 [8ec569479] Apply PGDLLIMPORT markings broadly.
+-->
+
+<listitem>
+<para>
+Automatically export server variables using PGDLLIMPORT on Windows (Robert Haas)
+</para>
+
+<para>
+Previously only specific variables where exported.
+</para>
+</listitem>
+
+<!--
+Author: Peter Eisentraut <peter@eisentraut.org>
+2021-11-05 [db7d1a7b0] pgcrypto: Remove non-OpenSSL support
+-->
+
+<listitem>
+<para>
+Require OpenSSL to build pgcrypto binaries (Peter Eisentraut)
+</para>
+</listitem>
+
+<!--
+Author: Andres Freund <andres@anarazel.de>
+2022-02-16 [19252e8ec] plpython: Reject Python 2 during build configuration.
+-->
+
+<listitem>
+<para>
+Disallow building with Python 2 (Andres Freund)
+</para>
+</listitem>
+
+<!--
+Author: Tom Lane <tgl@sss.pgh.pa.us>
+2021-10-07 [92e6a98c3] Adjust configure to insist on Perl version &gt;= 5.8.3.
+-->
+
+<listitem>
+<para>
+Adjust configure to require Perl version 5.8.3 or later (Dagfinn Ilmari Mannsåker)
+</para>
+</listitem>
+
+    </itemizedlist>
+
+   </sect3>
+
+   <sect3>
+    <title>Additional Modules</title>
+
+    <itemizedlist>
+
+<!--
+Author: Jeff Davis <jdavis@postgresql.org>
+2022-04-08 [2258e76f9] Add contrib/pg_walinspect.
+-->
+
+<listitem>
+<para>
+Add contrib/pg_walinspect (Bharath Rupireddy)
+</para>
+
+<para>
+This gives SQL-level output similar to pg_waldump.
+</para>
+</listitem>
+
+<!--
+Author: Robert Haas <rhaas@postgresql.org>
+2022-02-03 [5ef1eefd7] Allow archiving via loadable modules.
+-->
+
+<listitem>
+<para>
+Add contrib module basic_archive to perform archiving via a library (Nathan Bossart)
+</para>
+</listitem>
+
+<!--
+Author: Robert Haas <rhaas@postgresql.org>
+2022-03-15 [c6306db24] Add 'basebackup_to_shell' contrib module.
+Author: Robert Haas <rhaas@postgresql.org>
+2022-03-30 [26a0c025e] Document basebackup_to_shell.required_role.
+-->
+
+<listitem>
+<para>
+Add contrib module 'basebackup_to_shell' as a custom backup target (Robert Haas)
+contrib module.
+</para>
+</listitem>
+
+<!--
+Author: Michael Paquier <michael@paquier.xyz>
+2022-04-08 [76cbf7edb] pg_stat_statements: Track I/O timing for temporary file
+-->
+
+<listitem>
+<para>
+Add pg_stat_statements output for temporary file block I/O (Masahiko Sawada)
+</para>
+</listitem>
+
+<!--
+Author: Magnus Hagander <magnus@hagander.net>
+2022-04-08 [57d6aea00] Add JIT counters to pg_stat_statements
+-->
+
+<listitem>
+<para>
+Add JIT counters to pg_stat_statements (Magnus Hagander)
+</para>
+</listitem>
+
+<!--
+Author: Peter Eisentraut <peter@eisentraut.org>
+2021-09-28 [c3b011d99] Support amcheck of sequences
+-->
+
+<listitem>
+<para>
+Allow amcheck to check sequences (Mark Dilger)
+</para>
+</listitem>
+
+<!--
+Author: Robert Haas <rhaas@postgresql.org>
+2021-11-05 [bd807be69] amcheck: Add additional TOAST pointer checks.
+-->
+
+<listitem>
+<para>
+Improve amcheck sanity checks for TOAST tables (Mark Dilger)
+</para>
+</listitem>
+
+<!--
+Author: Tomas Vondra <tomas.vondra@postgresql.org>
+2021-11-06 [57e3c5160] Add bool GiST opclass to btree_gist
+Author: Tomas Vondra <tomas.vondra@postgresql.org>
+2021-11-08 [e2fbb8837] Fix gist_bool_ops to use gbtreekey2
+Author: Tomas Vondra <tomas.vondra@postgresql.org>
+2021-12-11 [4c6145b51] Add bool to btree_gist documentation
+-->
+
+<listitem>
+<para>
+Allow btree_gist indexes on boolean columns (Emre Hasegeli)
+</para>
+
+<para>
+These can be used for exclusion constraints.
+</para>
+</listitem>
+
+<!--
+Author: Tom Lane <tgl@sss.pgh.pa.us>
+2022-01-12 [134d97463] Include permissive/enforcing state in sepgsql log messag
+-->
+
+<listitem>
+<para>
+Indicate the permissive/enforcing state in sepgsql log messages (Dave Page)
+</para>
+</listitem>
+
+<!--
+Author: Tatsuo Ishii <ishii@postgresql.org>
+2022-03-23 [4a39f87ac] Allow pgbench to retry in some cases.
+-->
+
+<listitem>
+<para>
+Allow pgbench to retry after serialization and deadlock failures (Yugo Nagata, Marina Polyakova)
+</para>
+</listitem>
+
+<!--
+Author: Michael Paquier <michael@paquier.xyz>
+2021-07-12 [127404fbe] pageinspect: Improve page_header() for pages of 32kB
+-->
+
+<listitem>
+<para>
+Fix pageinspect's page_header() to handle 32 kilobyte page sizes (Quan Zongliang)
+</para>
+
+<para>
+Previously improper negative values could be returned in certain cases.
+</para>
+</listitem>
+
+     </itemizedlist>
+
+    <sect4>
+     <title><link linkend="postgres-fdw"><application>postgres_fdw</application></link></title>
+
+     <itemizedlist>
+
+<!--
+Author: Tom Lane <tgl@sss.pgh.pa.us>
+2021-07-30 [5d44fff01] In postgres_fdw, allow CASE expressions to be pushed to
+-->
+
+<listitem>
+<para>
+Allow postgres_fdw to push down CASE expressions (Alexander Pyhalov)
+</para>
+</listitem>
+
+<!--
+Author: Fujii Masao <fujii@postgresql.org>
+2021-09-07 [449ab6350] postgres_fdw: Allow application_name of remote connectio
+-->
+
+<listitem>
+<para>
+Add server variable postgres_fdw.application_name to control the application name of postgres_fdw connections (Hayato Kuroda)
+</para>
+
+<para>
+Previously the remote application_name could only be set on the remote server or the postgres_fdw connection specification.
+</para>
+</listitem>
+
+<!--
+Author: Fujii Masao <fujii@postgresql.org>
+2021-12-24 [6e0cb3dec] postgres_fdw: Allow postgres_fdw.application_name to inc
+Author: Fujii Masao <fujii@postgresql.org>
+2022-02-18 [94c49d534] postgres_fdw: Make postgres_fdw.application_name support
+-->
+
+<listitem>
+<para>
+Allow informational escape sequences to be used in postgres_fdw's application name (Hayato Kuroda, Fujii Masao)
+</para>
+</listitem>
+
+<!--
+Author: Etsuro Fujita <efujita@postgresql.org>
+2022-02-24 [04e706d42] postgres_fdw: Add support for parallel commit.
+-->
+
+<listitem>
+<para>
+Allow parallel commit on postgres_fdw servers (Etsuro Fujita)
+</para>
+
+<para>
+This is enabled with the "parallel_commit" postgres_fdw option.
+</para>
+</listitem>
+
+     </itemizedlist>
+
+    </sect4>
+
+   </sect3>
+
+  </sect2>
+
+  <sect2 id="release-15-acknowledgements">
+   <title>Acknowledgments</title>
 
- <formalpara>
-  <title>Release date:</title>
-  <para>2022-??-??</para>
- </formalpara>
+   <para>
+    The following individuals (in alphabetical order) have contributed
+    to this release as patch authors, committers, reviewers, testers,
+    or reporters of issues.
+   </para>
 
- <para>
-  This is just a placeholder for now.
- </para>
+   <simplelist>
+    <member></member>
+   </simplelist>
+  </sect2>
 
 </sect1>