relnotes: add links to the release notes, indent, word wrap
authorBruce Momjian <[email protected]>
Sat, 11 Jun 2022 18:37:50 +0000 (14:37 -0400)
committerBruce Momjian <[email protected]>
Sat, 11 Jun 2022 18:37:50 +0000 (14:37 -0400)
doc/src/sgml/func.sgml
doc/src/sgml/release-15.sgml

index 478a216dbbb683b5cc615d26ebc341af77e06582..7b652460a18fa807fe56937b0547f929a71ccb98 100644 (file)
@@ -18047,7 +18047,7 @@ FROM
 
  </sect2>
 
- <sect2>
+ <sect2 id="functions-sqljson-table">
   <title>JSON_TABLE</title>
   <indexterm>
    <primary>json_table</primary>
index d47244067935936cfbe8a9d4a2d6ec09ff2d798f..8a26fcff11953a2d419eabc9685182f3094bd6d8 100644 (file)
@@ -10,8 +10,8 @@
    <title>Overview</title>
 
    <para>
-    <productname>PostgreSQL</productname> 15 contains many new features and
-    enhancements, including:
+    <productname>PostgreSQL</productname> 15 contains many new features
+    and enhancements, including:
    </para>
 
    <itemizedlist>
    </itemizedlist>
 
    <para>
-    The above items and other new features
-    of <productname>PostgreSQL</productname> 15 are explained in more
-    detail in the sections below.
+    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>
+   <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.
+     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>
@@ -50,318 +50,393 @@ Author: Noah Misch <[email protected]>
 2021-09-09 [b073c3ccd] Revoke PUBLIC CREATE from public schema, now owned by pg
 -->
 
-<listitem>
-<para>
-Remove <literal>PUBLIC</literal> 'creation' permission on the 'public' schema (Noah Misch)
-</para>
+    <listitem>
+     <para>
+      Remove <literal>PUBLIC</literal> creation permission on the <link
+      linkend="ddl-schemas-public"><literal>public</literal> schema</link>
+      (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 <literal>PUBLIC</literal> on the 'public' schema;  this
-change can be made on 'template1' to cause all new databases to have these permissions.  template1 permissions for <application>pg_dumpall</application> and <application>pg_upgrade</application>?
-</para>
-</listitem>
+     <para>
+      This is a change in the default for newly-created databases in existing
+      clusters and for new clusters;  <literal>USAGE</literal> permissions on
+      the <literal>public</literal> 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 <literal>CREATE</literal> permission
+      for <literal>PUBLIC</literal> on the <literal>public</literal> schema;
+      this change can be made on <literal>template1</literal> to cause all new
+      databases to have these permissions.  <literal>template1</literal>
+      permissions for <application>pg_dumpall</application> and
+      <application>pg_upgrade</application>?
+     </para>
+    </listitem>
 
 <!--
 Author: Noah Misch <[email protected]>
 2021-09-09 [b073c3ccd] Revoke PUBLIC CREATE from public schema, now owned by pg
 -->
 
-<listitem>
-<para>
-Change the owner of the <literal>public</literal> schema to <literal>pg_database_owner</literal> (Noah Misch)
-</para>
+    <listitem>
+     <para>
+      Change the owner of the <literal>public</literal> schema to
+      <literal>pg_database_owner</literal> (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>
+     <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 <[email protected]>
 2022-04-06 [39969e2a1] Remove exclusive backup mode
 -->
 
-<listitem>
-<para>
-Remove long-deprecated exclusive backup mode (David Steele, Nathan Bossart)
-</para>
+    <listitem>
+     <para>
+      Remove long-deprecated exclusive <link linkend="backup-base-backup">backup
+      mode</link> (David Steele, Nathan Bossart)
+     </para>
 
-<para>
-If the database server stops abruptly while in this mode, the server could fail to start.  The non-exclusive backup mode requires a continuous database connection during the
-backup.  Functions <function>pg_start_backup()</function>/<function>pg_stop_backup()</function> have been renamed to <function>pg_backup_start()</function>/<function>pg_backup_stop()</function>, and the functions <function>pg_backup_start_time()</function> and <function>pg_is_in_backup()</function> have been removed.
-</para>
-</listitem>
+     <para>
+      If the database server stops abruptly while in this mode, the
+      server could fail to start.  The non-exclusive backup mode requires
+      a continuous database connection during the backup.  Functions
+      <function>pg_start_backup()</function>/<function>pg_stop_backup()</function>
+      have been renamed to
+      <function>pg_backup_start()</function>/<function>pg_backup_stop()</function>,
+      and the functions <function>pg_backup_start_time()</function> and
+      <function>pg_is_in_backup()</function> have been removed.
+     </para>
+    </listitem>
 
 <!--
 Author: Peter Geoghegan <[email protected]>
 2022-02-16 [8f388f6f5] Increase hash_mem_multiplier default to 2.0.
 -->
 
-<listitem>
-<para>
-Increase <varname>hash_mem_multiplier</varname> default to 2.0 (Peter Geoghegan)
-</para>
+    <listitem>
+     <para>
+      Increase <link
+      linkend="guc-hash-mem-multiplier"><varname>hash_mem_multiplier</varname></link>
+      default to 2.0 (Peter Geoghegan)
+     </para>
 
-<para>
-This allows query hash operations to use double the amount of <varname>work_mem</varname> memory as other operations.
-</para>
-</listitem>
+     <para>
+      This allows query hash operations to use double the amount of <link
+      linkend="guc-work-mem"><varname>work_mem</varname></link> memory as
+      other operations.
+     </para>
+    </listitem>
 
 <!--
 Author: Andres Freund <[email protected]>
 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>
+    <listitem>
+     <para>
+      Remove server-side language <link
+      linkend="plpython"><literal>plpython2u</literal></link> and generic Python
+      language <literal>plpythonu</literal> (Andres Freund)
+     </para>
+    </listitem>
 
 <!--
 Author: Tom Lane <[email protected]>
 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>
+    <listitem>
+     <para>
+      Mark the <link linkend="datatype-datetime"><type>interval</type></link>
+      output function as stable, not immutable, since it depends on <link
+      linkend="guc-intervalstyle"><varname>IntervalStyle</varname></link>
+      (Tom Lane)
+     </para>
 
-<para>
-This will cause the creation of indexes relying on the text output of interval values to fail.
-</para>
-</listitem>
+     <para>
+      This will cause the creation of indexes relying on the text output of
+      <type>interval</type> values to fail.
+     </para>
+    </listitem>
 
 <!--
 Author: Tom Lane <[email protected]>
 2021-11-06 [cbe25dcff] Disallow making an empty lexeme via array_to_tsvector().
 -->
 
-<listitem>
-<para>
-Generate an error if <function>array_to_tsvector()</function> is passed an empty array element (Jean-Christophe Arnu)
-</para>
+    <listitem>
+     <para>
+      Generate an error if <link
+      linkend="textsearch-functions-table"><function>array_to_tsvector()</function></link>
+      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>
+     <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 <[email protected]>
 2021-12-06 [e9e63b702] Fix inappropriate uses of PG_GETARG_UINT32()
 -->
 
-<listitem>
-<para>
-Generate an error when <function>char()</function> is supplied with a negative argument (Peter Eisentraut)
-</para>
-</listitem>
+    <listitem>
+     <para>
+      Generate an error when <link
+      linkend="functions-string-other"><function>chr()</function></link> is
+      supplied with a negative argument (Peter Eisentraut)
+     </para>
+    </listitem>
 
 <!--
 Author: Peter Eisentraut <[email protected]>
 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>
+    <listitem>
+     <para>
+      Prevent Unicode zero-length <link
+      linkend="sql-syntax-identifiers">identifiers</link>, e.g., U&amp;""
+      (Peter Eisentraut)
+     </para>
 
-<para>
-Non-Unicode zero-length identifiers were already prevented.
-</para>
-</listitem>
+     <para>
+      Non-Unicode zero-length identifiers were already prevented.
+     </para>
+    </listitem>
 
 <!--
 Author: Tom Lane <[email protected]>
 2021-12-15 [2a712066d] Remove pg_dump's - -no-synchronized-snapshots switch.
 -->
 
-<listitem>
-<para>
-Remove <application>pg_dump</application>'s <option>--no-synchronized-snapshots</option> option since all supported server versions support synchronized snapshots (Tom Lane)
-</para>
-</listitem>
+    <listitem>
+     <para>
+      Remove <link
+      linkend="sql-syntax-identifiers"><application>pg_dump</application></link>'s
+      <option>--no-synchronized-snapshots</option> option since all supported
+      server versions support synchronized snapshots (Tom Lane)
+     </para>
+    </listitem>
 
 <!--
 Author: Tom Lane <[email protected]>
 2022-02-15 [2523928b2] Reject change of output-column collation in CREATE OR RE
 -->
 
-<listitem>
-<para>
-Prevent <command>CREATE OR REPLACE VIEW</command> from changing the collation of an output column (Tom Lane)
-</para>
-</listitem>
+    <listitem>
+     <para>
+      Prevent <link linkend="sql-createview"><command>CREATE OR REPLACE
+      VIEW</command></link> from changing the collation of an output column
+      (Tom Lane)
+     </para>
+    </listitem>
 
 <!--
 Author: Peter Eisentraut <[email protected]>
 2022-02-16 [2549f0661] Reject trailing junk after numeric literals
 -->
 
-<listitem>
-<para>
-Prevent numeric literals from having non-numeric trailing characters (Peter Eisentraut)
-</para>
+    <listitem>
+     <para>
+      Prevent <link linkend="sql-syntax-constants-numeric">numeric
+      literals</link> from having non-numeric trailing characters (Peter
+      Eisentraut)
+     </para>
 
-<para>
-Previously literals like '123abc' would be interpreted as '123' and 'abc'.
-</para>
-</listitem>
+     <para>
+      Previously literals like <literal>123abc</literal> would be interpreted
+      as <literal>123</literal> and <literal>abc</literal>.
+     </para>
+    </listitem>
 
 <!--
 Author: Peter Eisentraut <[email protected]>
 2022-03-28 [e26114c81] Make JSON path numeric literals more correct
 -->
 
-<listitem>
-<para>
-Adjust <acronym>JSON</acronym> numeric literal processing to match the <acronym>SQL</acronym>/<acronym>JSON</acronym>-standard (Peter Eisentraut)
-</para>
+    <listitem>
+     <para>
+      Adjust <link linkend="datatype-json"><acronym>JSON</acronym></link>
+      numeric literal processing to match the
+      <acronym>SQL</acronym>/<acronym>JSON</acronym>-standard (Peter Eisentraut)
+     </para>
 
-<para>
-This accepts numeric formats like ".1" and "1.", and disallows trailing junk after numeric literals, like "1.type()".
-</para>
-</listitem>
+     <para>
+      This accepts numeric formats like <literal>.1</literal> and
+      <literal>1.</literal>, and disallows trailing junk after numeric literals,
+      like <literal>1.type()</literal>.
+     </para>
+    </listitem>
 
 <!--
 Author: Tom Lane <[email protected]>
 2022-04-03 [591e088dd] Fix portability issues in datetime parsing.
 -->
 
-<listitem>
-<para>
-Improve consistency of interval parsing with trailing periods (Tom Lane)
-</para>
+    <listitem>
+     <para>
+      Improve consistency of <link linkend="datatype-datetime">interval</link>
+      parsing with trailing periods (Tom Lane)
+     </para>
 
-<para>
-Some platforms disallowed trailing periods.
-</para>
-</listitem>
+     <para>
+      Some platforms disallowed trailing periods.
+     </para>
+    </listitem>
 
 <!--
 Author: Bruce Momjian <[email protected]>
 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>
+    <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>
+     <para>
+      For example, report <literal>1.99 years</literal> as <literal>2
+      years</literal>, not <literal>1 year 11 months</literal>.
+     </para>
+    </listitem>
 
 <!--
 Author: Tom Lane <[email protected]>
 2022-02-28 [54bd1e43c] Handle integer overflow in interval justification functi
 -->
 
-<listitem>
-<para>
-Detect integer overflow in interval justification functions (Joe Koshakow)
-</para>
+    <listitem>
+     <para>
+      Detect integer overflow in <link
+      linkend="functions-datetime-table">interval justification functions</link>
+      (Joe Koshakow)
+     </para>
 
-<para>
-Specifically, functions <function>justify_interval()</function>, <function>justify_hours()</function>, and <function>justify_days()</function> are affected.
-</para>
-</listitem>
+     <para>
+      Specifically, functions <function>justify_interval()</function>,
+      <function>justify_hours()</function>, and
+      <function>justify_days()</function> are affected.
+     </para>
+    </listitem>
 
 <!--
 Author: Robert Haas <[email protected]>
 2022-03-28 [79de9842a] Remove the ability of a role to administer itself.
 -->
 
-<listitem>
-<para>
-Remove the default <literal>ADMIN OPTION</literal> privilege a login role has on its own role membership (Robert Haas)
-</para>
+    <listitem>
+     <para>
+      Remove the default <link linkend="sql-createrole"><literal>ADMIN
+      OPTION</literal></link> 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 <literal>ADMIN OPTION</literal> privilege.
-</para>
-</listitem>
+     <para>
+      Previously, login roles could add/remove members of its own role, even
+      without <literal>ADMIN OPTION</literal> privilege.
+     </para>
+    </listitem>
 
 <!--
 Author: Jeff Davis <[email protected]>
 2022-01-07 [a2ab9c06e] Respect permissions within logical replication.
 -->
 
-<listitem>
-<para>
-Allow logical replication to run as the owner of the subscription (Mark Dilger)
-</para>
+    <listitem>
+     <para>
+      Allow <link linkend="logical-replication">logical replication</link>
+      to run as the owner of the subscription (Mark Dilger)
+     </para>
 
-<para>
-Because row-level security policies are not checked, only superusers, roles with bypassrls, and table owners can replicate into tables with row-level security policies.
-</para>
-</listitem>
+     <para>
+      Because row-level security policies are not checked, only superusers,
+      roles with <literal>bypassrls</literal>, and table owners can replicate
+      into tables with row-level security policies.
+     </para>
+    </listitem>
 
 <!--
 Author: Jeff Davis <[email protected]>
 2022-01-08 [96a6f11c0] More cleanup of a2ab9c06ea.
 -->
 
-<listitem>
-<para>
-Prevent <command>UPDATE</command> and <command>DELETE</command> logical replication operations on tables where the subscription owner does not have <command>SELECT</command> permission on the table (Jeff Davis)
-</para>
+    <listitem>
+     <para>
+      Prevent <command>UPDATE</command> and <command>DELETE</command> <link
+      linkend="logical-replication">logical replication</link> operations on
+      tables where the subscription owner does not have <command>SELECT</command>
+      permission on the table (Jeff Davis)
+     </para>
 
-<para>
-<command>UPDATE</command> and <command>DELETE</command> perform <command>SELECT</command>, so require the subscription owner to have table <command>SELECT</command> permission.
-</para>
-</listitem>
+     <para>
+      <command>UPDATE</command> and <command>DELETE</command> perform
+      <command>SELECT</command>, so require the subscription owner to have
+      table <command>SELECT</command> permission.
+     </para>
+    </listitem>
 
 <!--
 Author: Tom Lane <[email protected]>
 2021-07-27 [48c5c9068] Use the "pg_temp" schema alias in EXPLAIN and related ou
 -->
 
-<listitem>
-<para>
-When <command>EXPLAIN</command> references the temporary object schema, refer to it as <literal>pg_temp</literal> (Amul Sul)
-</para>
+    <listitem>
+     <para>
+      When <link linkend="sql-explain"><command>EXPLAIN</command></link>
+      references the temporary object schema, refer to it as
+      <literal>pg_temp</literal> (Amul Sul)
+     </para>
 
-<para>
-Previously the actual schema name was used.
-</para>
-</listitem>
+     <para>
+      Previously the actual schema name was used.
+     </para>
+    </listitem>
 
 <!--
 Author: Tom Lane <[email protected]>
 2022-02-28 [2e517818f] Fix SPI's handling of errors during transaction commit.
 -->
 
-<listitem>
-<para>
-Modify <acronym>SPI</acronym>'s <function>SPI_commit()</function> and <function>SPI_commit_and_chain()</function> to automatically start a new transaction at completion (Peter Eisentraut, Tom Lane)
-</para>
+    <listitem>
+     <para>
+      Modify <link linkend="spi"><acronym>SPI</acronym></link>'s
+      <function>SPI_commit()</function> and
+      <function>SPI_commit_and_chain()</function> to automatically start a new
+      transaction at completion (Peter Eisentraut, Tom Lane)
+     </para>
 
-<para>
-BACKPATCHED?
-</para>
-</listitem>
+     <para>
+      BACKPATCHED?
+     </para>
+    </listitem>
 
 <!--
 Author: Tom Lane <[email protected]>
 2022-03-24 [ce95c5437] Fix pg_statio_all_tables view for multiple TOAST indexes
 -->
 
-<listitem>
-<para>
-Fix <structname>pg_statio_all_tables</structname> to sum values for the rare case of <acronym>TOAST</acronym> tables with multiple indexes (Andrei Zubkov)
-</para>
+    <listitem>
+     <para>
+      Fix <link
+      linkend="monitoring-pg-statio-all-tables-view"><structname>pg_statio_all_tables</structname></link>
+      to sum values for the rare case of <acronym>TOAST</acronym> tables with
+      multiple indexes (Andrei Zubkov)
+     </para>
 
-<para>
-Previously such cases would have one row for each index.
-</para>
-</listitem>
+     <para>
+      Previously such cases would have one row for each index.
+     </para>
+    </listitem>
 
 <!--
 Author: Peter Eisentraut <[email protected]>
@@ -372,26 +447,28 @@ Author: Tom Lane <[email protected]>
 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>
+    <listitem>
+     <para>
+      Disallow setting of <link linkend="config-setting">server variables</link>
+      matching the prefixes of installed extension (Florin Irion, Tom Lane)
+     </para>
 
-<para>
-This also deletes any matching server variables during extension load.
-</para>
-</listitem>
+     <para>
+      This also deletes any matching server variables during extension load.
+     </para>
+    </listitem>
 
 <!--
 Author: Andres Freund <[email protected]>
 2022-04-06 [6f0cf8787] pgstat: remove stats_temp_directory.
 -->
 
-<listitem>
-<para>
-Remove unnecessary server variable <varname>stats_temp_directory</varname> (Andres Freund, Kyotaro Horiguchi)
-</para>
-</listitem>
+    <listitem>
+     <para>
+      Remove unnecessary server variable <varname>stats_temp_directory</varname>
+      (Andres Freund, Kyotaro Horiguchi)
+     </para>
+    </listitem>
 
 <!--
 Author: Tom Lane <[email protected]>
@@ -400,60 +477,68 @@ Author: Tom Lane <[email protected]>
 2022-04-12 [d4f109e4a] Doc: update description of random() function.
 -->
 
-<listitem>
-<para>
-Improve the algorithm used to compute <function>random()</function> (Fabien Coelho)
-</para>
+    <listitem>
+     <para>
+      Improve the algorithm used to compute <link
+      linkend="functions-math-random-table"><function>random()</function></link>
+      (Fabien Coelho)
+     </para>
 
-<para>
-This will cause <function>random()</function> to differ from what was emitted by prior versions for the same seed values.
-</para>
-</listitem>
+     <para>
+      This will cause <function>random()</function> to differ from what was
+      emitted by prior versions for the same seed values.
+     </para>
+    </listitem>
 
 <!--
 Author: Tom Lane <[email protected]>
 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>
+    <listitem>
+     <para>
+      Reduce casting of constants in <link
+      linkend="postgres-fdw">postgres_fdw</link> queries (Dian Fay)
+     </para>
 
-<para>
-If column types were mismatched between local and remote databases, such casting could cause errors.
-</para>
-</listitem>
+     <para>
+      If column types were mismatched between local and remote databases,
+      such casting could cause errors.
+     </para>
+    </listitem>
 
 <!--
 Author: Tom Lane <[email protected]>
 2022-02-14 [fd2abeb7c] Delete contrib/xml2's legacy implementation of xml_is_we
 -->
 
-<listitem>
-<para>
-Remove contrib/xml2's function <function>xml_is_well_formed()</function> (Tom Lane)
-</para>
+    <listitem>
+     <para>
+      Remove <link linkend="xml2">xml2</link>'s function
+      <function>xml_is_well_formed()</function> (Tom Lane)
+     </para>
 
-<para>
-This function has been implemented in the core backend since Postgres 9.1.
-</para>
-</listitem>
+     <para>
+      This function has been implemented in the core backend since Postgres 9.1.
+     </para>
+    </listitem>
 
 <!--
 Author: Tom Lane <[email protected]>
 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>
+    <listitem>
+     <para>
+      Allow <link linkend="custom-scan">custom scan provders</link> 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>
+     <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>
 
@@ -462,11 +547,11 @@ The default is now that custom scan providers can't support projections, so they
   <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>
+   <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>
@@ -478,44 +563,54 @@ Author: Peter Eisentraut <[email protected]>
 2022-02-14 [37851a8b8] Database-level collation version tracking
 -->
 
-<listitem>
-<para>
-Record and check the collation of each database (Peter Eisentraut)
-</para>
+     <listitem>
+      <para>
+       Record and check the collation of each <link
+       linkend="sql-createdatabase">database</link> (Peter Eisentraut)
+      </para>
 
-<para>
-This is designed to detect collation mismatches to avoid data corruption.  Function <function>pg_database_collation_actual_version()</function> reports the underlying operating system collation version, and <command>ALTER DATABASE ...
-REFRESH</command> sets the database to match the operating system collation version.  DETAILS?
-</para>
-</listitem>
+      <para>
+       This is designed to detect collation mismatches to avoid data corruption.
+       Function <function>pg_database_collation_actual_version()</function>
+       reports the underlying operating system collation version, and
+       <command>ALTER DATABASE ...  REFRESH</command> sets the database to match
+       the operating system collation version.  DETAILS?
+      </para>
+     </listitem>
 
 <!--
 Author: Peter Eisentraut <[email protected]>
 2022-03-17 [f2553d430] Add option to use ICU as global locale provider
 -->
 
-<listitem>
-<para>
-Allow <acronym>ICU</acronym> collations to be set as the default for clusters and databases (Peter Eisentraut)
-</para>
+     <listitem>
+      <para>
+       Allow <link linkend="locale"><acronym>ICU</acronym></link> collations to
+       be set as the default for clusters and databases (Peter Eisentraut)
+      </para>
 
-<para>
-Previously, <acronym>ICU</acronym> collations could only be specified in <command>CREATE COLLATION</command> and used with the <literal>COLLATE</literal> clause.
-</para>
-</listitem>
+      <para>
+       Previously, <acronym>ICU</acronym> collations could only be
+       specified in <link linkend="sql-createcollation"><command>CREATE
+       COLLATION</command></link> and used with the <literal>COLLATE</literal>
+       clause.
+      </para>
+     </listitem>
 
 <!--
 Author: Michael Paquier <[email protected]>
 2022-03-29 [a2c84990b] Add system view pg_ident_file_mappings
 -->
 
-<listitem>
-<para>
-Add system view <structname>pg_ident_file_mappings</structname> to report <filename>pg_ident.conf</filename> information (Julien Rouhaud)
-</para>
-</listitem>
+     <listitem>
+      <para>
+       Add system view <link
+       linkend="view-pg-ident-file-mappings"><structname>pg_ident_file_mappings</structname></link>
+       to report <filename>pg_ident.conf</filename> information (Julien Rouhaud)
+      </para>
+     </listitem>
 
-    </itemizedlist>
+       </itemizedlist>
 
     <sect4>
      <title><link linkend="ddl-partitioning">Partitioning</link></title>
@@ -527,45 +622,55 @@ Author: David Rowley <[email protected]>
 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>
+      <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>
+       <para>
+        Specifically this helps if only a small number of the many partitions
+        are relevant.
+       </para>
+      </listitem>
 
 <!--
 Author: David Rowley <[email protected]>
 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>
+      <listitem>
+       <para>
+        Allow ordered scans of partitions to avoid sorting in more cases (David
+        Rowley)
+       </para>
 
-<para>
-Previously, a partitioned table with a <literal>DEFAULT</literal> partition or a <literal>LIST</literal> partition containing multiple values could not be used for ordered partition scans.  Now they can be used if these partitions are pruned.
-</para>
-</listitem>
+       <para>
+        Previously, a partitioned table with a <literal>DEFAULT</literal> partition
+        or a <literal>LIST</literal> partition containing multiple values could
+        not be used for ordered partition scans.  Now they can be used if these
+        partitions are pruned.
+       </para>
+      </listitem>
 
 <!--
 Author: Alvaro Herrera <[email protected]>
 2022-03-20 [ba9a7e392] Enforce foreign key correctly during cross-partition upd
 -->
 
-<listitem>
-<para>
-Improve foreign key behavior of updates on partitioned tables that move rows between partitions (Amit Langote)
-</para>
+      <listitem>
+       <para>
+        Improve foreign key behavior of updates on partitioned tables that move
+        rows between partitions (Amit Langote)
+       </para>
 
-<para>
-Previously, such updates ran delete actions on the source partition and insert actions on the target partition.  <productname>PostgreSQL</productname> will now run update actions on the referenced partition root.
-</para>
-</listitem>
+       <para>
+        Previously, such updates ran delete actions on the
+        source partition and insert actions on the target partition.
+        <productname>PostgreSQL</productname> will now run update actions on the
+        referenced partition root.
+       </para>
+      </listitem>
 
 <!--
 Author: Alvaro Herrera <[email protected]>
@@ -574,26 +679,29 @@ Author: Alvaro Herrera <[email protected]>
 2022-04-14 [3f19e176a] Have CLUSTER ignore partitions not owned by caller
 -->
 
-<listitem>
-<para>
-Allow <command>CLUSTER</command> on partitioned tables (Justin Pryzby)
-</para>
-</listitem>
+      <listitem>
+       <para>
+        Allow <link linkend="sql-cluster"><command>CLUSTER</command></link>
+        on partitioned tables (Justin Pryzby)
+       </para>
+      </listitem>
 
 <!--
 Author: Alvaro Herrera <[email protected]>
 2021-07-22 [80ba4bb38] Make ALTER TRIGGER RENAME consistent for partitioned tab
 -->
 
-<listitem>
-<para>
-Fix <command>ALTER TRIGGER RENAME</command> on partitioned tables to properly rename triggers an all partitions (Arne Roland, Álvaro Herrera)
-</para>
+      <listitem>
+       <para>
+        Fix <link linkend="sql-altertable"><command>ALTER TRIGGER
+        RENAME</command></link> on partitioned tables to properly rename triggers
+        an all partitions (Arne Roland, Álvaro Herrera)
+       </para>
 
-<para>
-Also prohibit cloned triggers from being renamed.
-</para>
-</listitem>
+       <para>
+        Also prohibit cloned triggers from being renamed.
+       </para>
+      </listitem>
 
      </itemizedlist>
 
@@ -609,67 +717,79 @@ Author: Peter Geoghegan <[email protected]>
 2021-10-02 [2903f1404] Enable deduplication in system catalog indexes.
 -->
 
-<listitem>
-<para>
-Enable system and <acronym>TOAST</acronym> btree indexes to efficiently store duplicates (Peter Geoghegan)
-</para>
+      <listitem>
+       <para>
+        Enable system and <link
+        linkend="storage-toast"><acronym>TOAST</acronym></link> btree indexes to
+        efficiently store duplicates (Peter Geoghegan)
+       </para>
 
-<para>
-Previously de-duplication was disabled for these types of indexes.
-</para>
-</listitem>
+       <para>
+        Previously de-duplication was disabled for these types of indexes.
+       </para>
+      </listitem>
 
 <!--
 Author: Alexander Korotkov <[email protected]>
 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>
+      <listitem>
+       <para>
+        Improve lookup performance of <link
+        linkend="gist"><acronym>GiST</acronym></link> indexes built using sorting
+        (Aliaksandr Kalenik, Sergei Shoulbakov, Andrey Borodin)
+       </para>
+      </listitem>
 
 <!--
 Author: Tomas Vondra <[email protected]>
 2021-11-30 [5753d4ee3] Ignore BRIN indexes when checking for HOT udpates
 -->
 
-<listitem>
-<para>
-Prevent changes to columns only indexed by <acronym>BRIN</acronym> indexes from disabling <acronym>HOT</acronym> updates (Josef Simanek)
-</para>
-</listitem>
+      <listitem>
+       <para>
+        Prevent changes to columns only indexed by <link
+        linkend="brin"><acronym>BRIN</acronym></link> indexes from disabling
+        <acronym>HOT</acronym> updates (Josef Simanek)
+       </para>
+      </listitem>
 
 <!--
 Author: Peter Eisentraut <[email protected]>
 2022-02-03 [94aa7cc5f] Add UNIQUE null treatment option
 -->
 
-<listitem>
-<para>
-Allow unique constraints and indexes to treat <literal>NULL</literal> values as not distinct (Peter Eisentraut)
-</para>
+      <listitem>
+       <para>
+        Allow unique constraints and indexes to treat <literal>NULL</literal>
+        values as not distinct (Peter Eisentraut)
+       </para>
 
-<para>
-Previously <literal>NULL</literal> values were always indexed as distinct values, but this can now be changed by creating constraints and indexes using <literal>UNIQUE NULLS NOT DISTINCT</literal>.
-</para>
-</listitem>
+       <para>
+        Previously <literal>NULL</literal> values were always indexed as distinct
+        values, but this can now be changed by creating constraints and indexes
+        using <literal>UNIQUE NULLS NOT DISTINCT</literal>.
+       </para>
+      </listitem>
 
 <!--
 Author: Tom Lane <[email protected]>
 2021-11-17 [a148f8bc0] Add a planner support function for starts_with().
 -->
 
-<listitem>
-<para>
-Allow ^@ and <function>starts_with()</function> to use btree indexes if using a C collation (Tom Lane)
-</para>
+      <listitem>
+       <para>
+        Allow <link linkend="functions-string-other"><literal>^@</literal></link>
+        and <function>starts_with()</function> to use btree indexes if using a
+        C collation (Tom Lane)
+       </para>
 
-<para>
-Previously these could only use <acronym>SP-GiST</acronym> indexes.
-</para>
-</listitem>
+       <para>
+        Previously these could only use <link
+        linkend="spgist"><acronym>SP-GiST</acronym></link> indexes.
+       </para>
+      </listitem>
 
      </itemizedlist>
 
@@ -685,45 +805,54 @@ Author: Tomas Vondra <[email protected]>
 2022-01-16 [269b532ae] Add stxdinherit flag to pg_statistic_ext_data
 -->
 
-<listitem>
-<para>
-Allow extended statistics to record statistics for a parent with all its children (Tomas Vondra, Justin Pryzby)
-</para>
+      <listitem>
+       <para>
+        Allow <link linkend="sql-createstatistics">extended statistics</link>
+        to record statistics for a parent with all its children (Tomas Vondra,
+        Justin Pryzby)
+       </para>
 
-<para>
-Regular statistics already tracked parent and parent/all-children statistics separately.
-</para>
-</listitem>
+       <para>
+        Regular statistics already tracked parent and parent/all-children
+        statistics separately.
+       </para>
+      </listitem>
 
 <!--
 Author: Tomas Vondra <[email protected]>
 2022-03-31 [db0d67db2] Optimize order of GROUP BY keys
 -->
 
-<listitem>
-<para>
-Allow <literal>GROUP BY</literal> sorting to optimize column order (Dmitry Dolgov, Teodor Sigaev, Tomas Vondra)
-</para>
+      <listitem>
+       <para>
+        Allow <link linkend="queries-group"><literal>GROUP BY</literal></link>
+        sorting to optimize column order (Dmitry Dolgov, Teodor Sigaev, Tomas
+        Vondra)
+       </para>
 
-<para>
-This optimization can be disabled using the server variable <varname>enable_group_by_reordering</varname>.
-</para>
-</listitem>
+       <para>
+        This optimization can be disabled using the server variable <link
+        linkend="guc-enable-groupby-reordering"><varname>enable_group_by_reordering</varname></link>.
+       </para>
+      </listitem>
 
 <!--
 Author: Tom Lane <[email protected]>
 2022-03-24 [0bd7af082] Invent recursive_worktable_factor GUC to replace hard-wi
 -->
 
-<listitem>
-<para>
-Add server variable <varname>recursive_worktable_factor</varname> to allow the user to specify the expected recursive query worktable size (Simon Riggs)
-</para>
+      <listitem>
+       <para>
+        Add server variable <link
+        linkend="guc-recursive-worktable-factor"><varname>recursive_worktable_factor</varname></link>
+        to allow the user to specify the expected recursive query worktable size
+        (Simon Riggs)
+       </para>
 
-<para>
-WHAT IS A WORKTABLE?  NOT DEFINED.
-</para>
-</listitem>
+       <para>
+        WHAT IS A WORKTABLE?  NOT DEFINED.
+       </para>
+      </listitem>
 
      </itemizedlist>
 
@@ -739,30 +868,35 @@ Author: David Rowley <[email protected]>
 2021-07-07 [29f45e299] Use a hash table to speed up NOT IN(values)
 -->
 
-<listitem>
-<para>
-Allow hash lookup for <literal>NOT IN</literal> clauses with many constants (David Rowley, James Coleman)
-</para>
+      <listitem>
+       <para>
+        Allow hash lookup for <link linkend="functions-subquery-notin"><literal>NOT
+        IN</literal></link> clauses with many constants (David Rowley, James
+        Coleman)
+       </para>
 
-<para>
-Previously the code always sequentially scanned the list of values.
-</para>
-</listitem>
+       <para>
+        Previously the code always sequentially scanned the list of values.
+       </para>
+      </listitem>
 
 <!--
 Author: John Naylor <[email protected]>
 2021-12-20 [911588a3f] Add fast path for validating UTF-8 text
 -->
 
-<listitem>
-<para>
-Improve validation of <acronym>UTF</acronym>-8 text (even if only <acronym>ASCII</acronym>) by processing 16 bytes at a time (John Naylor, Heikki Linnakangas)
-</para>
+      <listitem>
+       <para>
+        Improve validation of <acronym>UTF</acronym>-8 text (even if only
+        <acronym>ASCII</acronym>) by processing 16 bytes at a time (John Naylor,
+        Heikki Linnakangas)
+       </para>
 
-<para>
-This will improve text-heavy operations like <command>COPY FROM</command>.
-</para>
-</listitem>
+       <para>
+        This will improve text-heavy operations like <link
+        linkend="sql-copy"><command>COPY FROM</command></link>.
+       </para>
+      </listitem>
 
 <!--
 Author: Heikki Linnakangas <[email protected]>
@@ -771,15 +905,18 @@ Author: Heikki Linnakangas <[email protected]>
 2021-10-25 [166f94377] Clarify the logic in a few places in the new balanced me
 -->
 
-<listitem>
-<para>
-Improve performance for sorts that exceed <varname>work_mem</varname> (Heikki Linnakangas)
-</para>
+      <listitem>
+       <para>
+        Improve performance for sorts that exceed <link
+        linkend="guc-work-mem"><varname>work_mem</varname></link> (Heikki
+        Linnakangas)
+       </para>
 
-<para>
-Specifically, switch to a batch sorting algorithm that uses more output streams internally.
-</para>
-</listitem>
+       <para>
+        Specifically, switch to a batch sorting algorithm that uses more output
+        streams internally.
+       </para>
+      </listitem>
 
 <!--
 Author: David Rowley <[email protected]>
@@ -790,11 +927,12 @@ Author: John Naylor <[email protected]>
 2022-04-02 [697492434] Specialize tuplesort routines for different kinds of abb
 -->
 
-<listitem>
-<para>
-Improve performance and reduce memory consumption of in-memory sorts (Ronan Dunklau, David Rowley, Thomas Munro, John Naylor)
-</para>
-</listitem>
+      <listitem>
+       <para>
+        Improve performance and reduce memory consumption of in-memory sorts
+        (Ronan Dunklau, David Rowley, Thomas Munro, John Naylor)
+       </para>
+      </listitem>
 
 <!--
 Author: Michael Paquier <[email protected]>
@@ -803,74 +941,87 @@ Author: Michael Paquier <[email protected]>
 2022-03-11 [e9537321a] Add support for zstd with compression of full-page write
 -->
 
-<listitem>
-<para>
-Allow <acronym>WAL</acronym> full page writes to use LZ4 and Zstandard compression (Andrey Borodin, Justin Pryzby)
-</para>
+      <listitem>
+       <para>
+        Allow <acronym>WAL</acronym> <link linkend="guc-full-page-writes">full
+        page writes</link> to use LZ4 and Zstandard compression (Andrey Borodin,
+        Justin Pryzby)
+       </para>
 
-<para>
-This is controlled by the <varname>wal_compression</varname> server setting.
-</para>
-</listitem>
+       <para>
+        This is controlled by the <link
+        linkend="guc-wal-compression"><varname>wal_compression</varname></link>
+        server setting.
+       </para>
+      </listitem>
 
 <!--
 Author: Thomas Munro <[email protected]>
 2021-07-19 [2dbe89057] Support direct I/O on macOS.
 -->
 
-<listitem>
-<para>
-Add direct I/O support to macOS (Thomas Munro)
-</para>
+      <listitem>
+       <para>
+        Add <link linkend="guc-wal-sync-method">direct I/O</link> support to macOS
+        (Thomas Munro)
+       </para>
 
-<para>
-This only works if <literal>max_wal_senders=0</literal> and <literal>wal_level=minimal</literal>, and only for <acronym>WAL</acronym>.
-</para>
-</listitem>
+       <para>
+        This only works if <literal>max_wal_senders=0</literal> and
+        <literal>wal_level=minimal</literal>, and only for <acronym>WAL</acronym>.
+       </para>
+      </listitem>
 
 <!--
 Author: Peter Geoghegan <[email protected]>
 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>
+      <listitem>
+       <para>
+        Allow <link linkend="routine-vacuuming">vacuum</link> to be more aggressive
+        in setting the oldest frozenxid (Peter Geoghegan)
+       </para>
+      </listitem>
 
 <!--
 Author: Etsuro Fujita <[email protected]>
 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>
+      <listitem>
+       <para>
+        Allow a query referencing multiple <link linkend="ddl-foreign-data">foreign
+        tables</link> to perform parallel foreign table scans in more cases
+        (Andrey Lepikhov, Etsuro Fujita)
+       </para>
+      </listitem>
 
 <!--
 Author: David Rowley <[email protected]>
 2022-04-08 [9d9c02ccd] Teach planner and executor about monotonic window funcs
 -->
 
-<listitem>
-<para>
-Improve the performance of window functions that use <function>row_number()</function>, <function>rank()</function>, and <function>count()</function> (David Rowley)
-</para>
-</listitem>
+      <listitem>
+       <para>
+        Improve the performance of <link linkend="functions-window">window
+        functions</link> that use <function>row_number()</function>,
+        <function>rank()</function>, and <function>count()</function> (David
+        Rowley)
+       </para>
+      </listitem>
 
 <!--
 Author: Tom Lane <[email protected]>
 2022-04-06 [a82a5eee3] Use ISB as a spin-delay instruction on ARM64.
 -->
 
-<listitem>
-<para>
-Improve the performance of spinlocks on high-core-count ARM64 systems (Geoffrey Blake)
-</para>
-</listitem>
+      <listitem>
+       <para>
+        Improve the performance of spinlocks on high-core-count ARM64 systems
+        (Geoffrey Blake)
+       </para>
+      </listitem>
 
      </itemizedlist>
 
@@ -886,16 +1037,22 @@ Author: Robert Haas <[email protected]>
 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>
+      <listitem>
+       <para>
+        Enable default logging of checkpoints and slow autovacuum operations
+        (Bharath Rupireddy)
+       </para>
 
-<para>
-Specifically, this changes the default of <varname>log_checkpoints</varname> to on and <varname>log_autovacuum_min_duration</varname> 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>
+       <para>
+        Specifically, this changes the default of <link
+        linkend="guc-log-checkpoints"><varname>log_checkpoints</varname></link>
+        to on and <link
+        linkend="guc-log-autovacuum-min-duration"><varname>log_autovacuum_min_duration</varname></link>
+        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 <[email protected]>
@@ -904,15 +1061,18 @@ Author: Alvaro Herrera <[email protected]>
 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)
-</para>
+      <listitem>
+       <para>
+        Generate periodic log message during slow server starts (Nitin Jadhav,
+        Robert Haas)
+       </para>
 
-<para>
-Messages report the cause of the delay.  The time interval for notification is controlled by the new server variable <varname>log_startup_progress_interval</varname>.
-</para>
-</listitem>
+       <para>
+        Messages report the cause of the delay.  The time interval for
+        notification is controlled by the new server variable <link
+        linkend="guc-log-startup-progress-interval"><varname>log_startup_progress_interval</varname></link>.
+       </para>
+      </listitem>
 
 <!--
 Author: Andres Freund <[email protected]>
@@ -921,15 +1081,18 @@ Author: Andres Freund <[email protected]>
 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>
+      <listitem>
+       <para>
+        Store <link linkend="monitoring-stats">server-level statistics</link>
+        in shared memory (Kyotaro Horiguchi, Andres Freund, Melanie Plageman)
+       </para>
 
-<para>
-Previously this was updated via <acronym>UDP</acronym> packets, stored in the file system, and read by sessions.  There is no longer a statistics collector process.
-</para>
-</listitem>
+       <para>
+        Previously this was updated via <acronym>UDP</acronym> packets, stored in
+        the file system, and read by sessions.  There is no longer a statistics
+        collector process.
+       </para>
+      </listitem>
 
 <!--
 Author: Peter Geoghegan <[email protected]>
@@ -940,63 +1103,74 @@ Author: Peter Geoghegan <[email protected]>
 2022-04-15 [bdb71dbe8] VACUUM VERBOSE: Show dead items for an empty table.
 -->
 
-<listitem>
-<para>
-Add additional information to <command>VACUUM VERBOSE</command> and autovacuum logging messages (Peter Geoghegan)
-</para>
-</listitem>
+      <listitem>
+       <para>
+        Add additional information to <command>VACUUM VERBOSE</command> and
+        autovacuum logging messages (Peter Geoghegan)
+       </para>
+      </listitem>
 
 <!--
 Author: Michael Paquier <[email protected]>
 2022-04-08 [efb0ef909] Track I/O timing for temporary file blocks in EXPLAIN (B
 -->
 
-<listitem>
-<para>
-Add <command>EXPLAIN (BUFFERS)</command> output for temporary file block I/O (Masahiko Sawada)
-</para>
-</listitem>
+      <listitem>
+       <para>
+        Add <link linkend="sql-explain"><command>EXPLAIN (BUFFERS)</command></link>
+        output for temporary file block I/O (Masahiko Sawada)
+       </para>
+      </listitem>
 
 <!--
 Author: Michael Paquier <[email protected]>
 2022-01-17 [dc686681e] Introduce log_destination=jsonlog
 -->
 
-<listitem>
-<para>
-Allow log output in <acronym>JSON</acronym> format (Sehrope Sarkuni, Michael Paquier)
-</para>
+      <listitem>
+       <para>
+        Allow <link linkend="guc-log-destination">log output</link> in
+        <acronym>JSON</acronym> format (Sehrope Sarkuni, Michael Paquier)
+       </para>
 
-<para>
-The new setting is <literal>log_destination=jsonlog</literal>.
-</para>
-</listitem>
+       <para>
+        The new setting is <literal>log_destination=jsonlog</literal>.
+       </para>
+      </listitem>
 
 <!--
 Author: Fujii Masao <[email protected]>
 2021-09-02 [e04267844] Enhance pg_stat_reset_single_table_counters function.
 -->
 
-<listitem>
-<para>
-Allow <function>pg_stat_reset_single_table_counters()</function> to reset the counters of relations shared across all databases (B Sadhu, Prasad Patro)
-</para>
-</listitem>
+      <listitem>
+       <para>
+        Allow <link
+        linkend="monitoring-stats-funcs-table"><function>pg_stat_reset_single_table_counters()</function></link>
+        to reset the counters of relations shared across all databases (B Sadhu,
+        Prasad Patro)
+       </para>
+      </listitem>
 
 <!--
 Author: Fujii Masao <[email protected]>
 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>
+      <listitem>
+       <para>
+        Add <link linkend="wait-event-table">wait events</link> for local shell
+        commands (Fujii Masao)
+       </para>
 
-<para>
-Specifically the new wait events are related to commands <varname>archive_command</varname>, <varname>archive_cleanup_command</varname>, <varname>restore_command</varname> and <varname>recovery_end_command</varname>.
-</para>
-</listitem>
+       <para>
+        Specifically the new wait events are related to
+        commands <varname>archive_command</varname>,
+        <varname>archive_cleanup_command</varname>,
+        <varname>restore_command</varname> and
+        <varname>recovery_end_command</varname>.
+       </para>
+      </listitem>
 
      </itemizedlist>
 
@@ -1012,90 +1186,108 @@ Author: Dean Rasheed <[email protected]>
 2022-03-22 [7faa5fc84] Add support for security invoker views.
 -->
 
-<listitem>
-<para>
-Allow view access to be controlled by privileges of the view user (Christoph Heiss)
-</para>
+      <listitem>
+       <para>
+        Allow <link linkend="sql-createview">view access</link> 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>
+       <para>
+        Previously, view access could only be based on the view owner.
+       </para>
+      </listitem>
 
 <!--
 Author: Robert Haas <[email protected]>
 2022-01-28 [7f6772317] Adjust server-side backup to depend on pg_write_server_f
 -->
 
-<listitem>
-<para>
-Allow members of the <literal>pg_write_server_files</literal> predefined role to perform server-side base backups (Dagfinn Ilmari Mannsåker)
-</para>
+      <listitem>
+       <para>
+        Allow members of the <link
+        linkend="predefined-roles-table"><literal>pg_write_server_files</literal></link>
+        predefined role to perform server-side base backups (Dagfinn Ilmari
+        Mannsåker)
+       </para>
 
-<para>
-Previously only the superusers could perform such backups.
-</para>
-</listitem>
+       <para>
+        Previously only the superusers could perform such backups.
+       </para>
+      </listitem>
 
 <!--
 Author: Tom Lane <[email protected]>
 2022-04-06 [a0ffa885e] Allow granting SET and ALTER SYSTEM privileges on GUC pa
 -->
 
-<listitem>
-<para>
-Allow <command>GRANT</command> to assign permission to change server variables via <command>SET</command> and <command>ALTER SYSTEM</command> (Mark Dilger)
-</para>
+      <listitem>
+       <para>
+        Allow <link linkend="sql-grant"><command>GRANT</command></link> to
+        assign permission to change server variables via <command>SET</command>
+        and <command>ALTER SYSTEM</command> (Mark Dilger)
+       </para>
 
-<para>
-New function <function>has_parameter_privilege()</function> reports on this privilege.
-</para>
-</listitem>
+       <para>
+        New function <function>has_parameter_privilege()</function> reports on
+        this privilege.
+       </para>
+      </listitem>
 
 <!--
 Author: Jeff Davis <[email protected]>
 2021-11-09 [4168a4745] Add pg_checkpointer predefined role for CHECKPOINT comma
 -->
 
-<listitem>
-<para>
-Add predefined role <literal>pg_checkpointer</literal> that allows members to run <command>CHECKPOINT</command> (Jeff Davis)
-</para>
+      <listitem>
+       <para>
+        Add predefined role <link
+        linkend="predefined-roles-table"><literal>pg_checkpointer</literal></link>
+        that allows members to run <command>CHECKPOINT</command> (Jeff Davis)
+       </para>
 
-<para>
-Previously checkpoints could only be run by superusers.
-</para>
-</listitem>
+       <para>
+        Previously checkpoints could only be run by superusers.
+       </para>
+      </listitem>
 
 <!--
 Author: Jeff Davis <[email protected]>
 2021-10-27 [77ea4f943] Grant memory views to pg_read_all_stats.
 -->
 
-<listitem>
-<para>
-Allow members of the <literal>pg_read_all_stats</literal> predefined role to access the views <structname>pg_backend_memory_contexts</structname> and <structname>pg_shmem_allocations</structname> (Bharath Rupireddy)
-</para>
+      <listitem>
+       <para>
+        Allow members of the <link
+        linkend="predefined-roles-table"><literal>pg_read_all_stats</literal></link>
+        predefined role to access the views <link
+        linkend="view-pg-backend-memory-contexts"><structname>pg_backend_memory_contexts</structname></link>
+        and <link
+        linkend="view-pg-shmem-allocations"><structname>pg_shmem_allocations</structname></link>
+        (Bharath Rupireddy)
+       </para>
 
-<para>
-Previously these views could only be accessed by superusers.
-</para>
-</listitem>
+       <para>
+        Previously these views could only be accessed by superusers.
+       </para>
+      </listitem>
 
 <!--
 Author: Jeff Davis <[email protected]>
 2021-10-26 [f0b051e32] Allow GRANT on pg_log_backend_memory_contexts().
 -->
 
-<listitem>
-<para>
-Allow <command>GRANT</command> to assign permissions on <function>pg_log_backend_memory_contexts()</function> (Jeff Davis)
-</para>
+      <listitem>
+       <para>
+        Allow <link linkend="sql-grant"><command>GRANT</command></link>
+        to assign permissions on <link
+        linkend="view-pg-backend-memory-contexts"><function>pg_log_backend_memory_contexts()</function></link>
+        (Jeff Davis)
+       </para>
 
-<para>
-Previously this function could only be run by superusers.
-</para>
-</listitem>
+       <para>
+        Previously this function could only be run by superusers.
+       </para>
+      </listitem>
 
      </itemizedlist>
 
@@ -1113,11 +1305,13 @@ Author: Michael Paquier <[email protected]>
 2021-09-09 [3b231596c] Make shared_memory_size a preset option
 -->
 
-<listitem>
-<para>
-Add server variable <varname>shared_memory_size</varname> to report the size of allocated shared memory (Nathan Bossart)
-</para>
-</listitem>
+      <listitem>
+       <para>
+        Add server variable <link
+        linkend="guc-shared-memory-size"><varname>shared_memory_size</varname></link>
+        to report the size of allocated shared memory (Nathan Bossart)
+       </para>
+      </listitem>
 
 <!--
 Author: Michael Paquier <[email protected]>
@@ -1126,30 +1320,40 @@ Author: Michael Paquier <[email protected]>
 2022-03-24 [bbd4951b7] doc: Improve postgres command for shared_memory_size_in_
 -->
 
-<listitem>
-<para>
-Add server variable <varname>shared_memory_size_in_huge_pages</varname> to report the number of huge memory pages required (Nathan Bossart)
-</para>
+      <listitem>
+       <para>
+        Add server variable <link
+        linkend="guc-shared-memory-size-in-huge-pages"><varname>shared_memory_size_in_huge_pages</varname></link>
+        to report the number of huge memory pages required (Nathan Bossart)
+       </para>
 
-<para>
-This is only supported on Linux.
-</para>
-</listitem>
+       <para>
+        This is only supported on Linux.
+       </para>
+      </listitem>
 
 <!--
 Author: Michael Paquier <[email protected]>
 2021-09-16 [0c39c2920] Support "postgres -C" with runtime-computed GUCs
 -->
 
-<listitem>
-<para>
-Allow <command>postgres -C</command> to properly report runtime-computed values (Nathan Bossart)
-</para>
-
-<para>
-Previously runtime-computed values <varname>data_checksums</varname>, <varname>wal_segment_size</varname>, and <varname>data_directory_mode</varname> would report values that would not be accurate on the running server.  However, this does not work on a running server.
-</para>
-</listitem>
+      <listitem>
+       <para>
+        Allow <link linkend="app-postgres"><command>postgres -C</command></link>
+        to properly report runtime-computed values (Nathan Bossart)
+       </para>
+
+       <para>
+        Previously runtime-computed values <link
+        linkend="guc-data-checksums"><varname>data_checksums</varname></link>,
+        <link
+        linkend="guc-wal-segment-size"><varname>wal_segment_size</varname></link>,
+        and <link
+        linkend="guc-data-directory-mode"><varname>data_directory_mode</varname></link>
+        would report values that would not be accurate on the running server.
+        However, this does not work on a running server.
+       </para>
+      </listitem>
 
      </itemizedlist>
 
@@ -1171,63 +1375,71 @@ Author: Robert Haas <[email protected]>
 2022-03-30 [51c0d186d] Allow parallel zstd compression when taking a base backu
 -->
 
-<listitem>
-<para>
-Add support for LZ4 and Zstandard compression of server-side base backups (Jeevan Ladhe, Robert Haas)
-</para>
-</listitem>
+     <listitem>
+      <para>
+       Add support for LZ4 and Zstandard compression of server-side <link
+       linkend="backup-base-backup">base backups</link> (Jeevan Ladhe, Robert
+       Haas)
+      </para>
+     </listitem>
 
 <!--
 Author: Thomas Munro <[email protected]>
 2021-08-02 [7ff23c6d2] Run checkpointer and bgwriter in crash recovery.
 -->
 
-<listitem>
-<para>
-Run checkpointer and bgwriter during crash recovery (Thomas Munro)
-</para>
-</listitem>
+     <listitem>
+      <para>
+       Run checkpointer and bgwriter during crash recovery (Thomas Munro)
+      </para>
+     </listitem>
 
 <!--
 Author: Thomas Munro <[email protected]>
 2022-04-07 [5dc0418fa] Prefetch data referenced by the WAL, take II.
 -->
 
-<listitem>
-<para>
-Allow <acronym>WAL</acronym> processing to pre-fetch needed file contents (Thomas Munro)
-</para>
+     <listitem>
+      <para>
+       Allow <acronym>WAL</acronym> processing to pre-fetch needed file contents
+       (Thomas Munro)
+      </para>
 
-<para>
-This is controlled by the server variable <varname>recovery_prefetch</varname>.
-</para>
-</listitem>
+      <para>
+       This is controlled by the server variable <link
+       linkend="guc-recovery-prefetch"><varname>recovery_prefetch</varname></link>.
+      </para>
+     </listitem>
 
 <!--
 Author: Robert Haas <[email protected]>
 2022-02-03 [5ef1eefd7] Allow archiving via loadable modules.
 -->
 
-<listitem>
-<para>
-Add server variable <varname>archive_library</varname> to specify the library to be called for archiving (Nathan Bossart)
-</para>
+     <listitem>
+      <para>
+       Add server variable <link
+       linkend="guc-archive-library"><varname>archive_library</varname></link>
+       to specify the library to be called for archiving (Nathan Bossart)
+      </para>
 
-<para>
-Previously only shell commands could be called to perform archiving.
-</para>
-</listitem>
+      <para>
+       Previously only shell commands could be called to perform archiving.
+      </para>
+     </listitem>
 
 <!--
 Author: Jeff Davis <[email protected]>
 2021-07-09 [8e7811e95] Eliminate replication protocol error related to IDENTIFY
 -->
 
-<listitem>
-<para>
-No longer require <literal>IDENTIFY_SYSTEM</literal> to be run before <literal>START_REPLICATION</literal> (Jeff Davis)
-</para>
-</listitem>
+     <listitem>
+      <para>
+       No longer require <link
+       linkend="protocol-replication"><literal>IDENTIFY_SYSTEM</literal></link>
+       to be run before <literal>START_REPLICATION</literal> (Jeff Davis)
+      </para>
+     </listitem>
 
     </itemizedlist>
 
@@ -1243,16 +1455,20 @@ Author: Amit Kapila <[email protected]>
 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>
+      <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:  <command>CREATE PUBLICATION pub1 FOR ALL TABLES IN SCHEMA s1,s2;</command>  <command>ALTER PUBLICATION</command> supports a similar syntax.  Tables added to the listed schemas in the future will also
-be replicated.
-</para>
-</listitem>
+       <para>
+        For example, this syntax is now supported:  <link
+        linkend="sql-createpublication"><command>CREATE PUBLICATION pub1
+        FOR ALL TABLES IN SCHEMA s1,s2;</command></link>  <command>ALTER
+        PUBLICATION</command> supports a similar syntax.  Tables added to the
+        listed schemas in the future will also be replicated.
+       </para>
+      </listitem>
 
 <!--
 Author: Amit Kapila <[email protected]>
@@ -1263,33 +1479,38 @@ Author: Amit Kapila <[email protected]>
 2022-04-18 [676eeb6dd] Add additional documentation for row filters.
 -->
 
-<listitem>
-<para>
-Allow publication content to be filtered using a <literal>WHERE</literal> clause (Hou Zhijie, Euler Taveira, Peter Smith, Ajin Cherian, Tomas Vondra, Amit Kapila)
-</para>
-</listitem>
+      <listitem>
+       <para>
+        Allow publication content to be filtered using a <literal>WHERE</literal>
+        clause (Hou Zhijie, Euler Taveira, Peter Smith, Ajin Cherian, Tomas Vondra,
+        Amit Kapila)
+       </para>
+      </listitem>
 
 <!--
 Author: Tomas Vondra <[email protected]>
 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>
+      <listitem>
+       <para>
+        Allow <link linkend="sql-createpublication">publications</link> to be
+        restricted to specific columns (Tomas Vondra, Álvaro Herrera, Rahila Syed)
+       </para>
+      </listitem>
 
 <!--
 Author: Amit Kapila <[email protected]>
 2022-03-22 [208c5d65b] Add ALTER SUBSCRIPTION ... SKIP.
 -->
 
-<listitem>
-<para>
-Allow skipping of transactions on a subscriber using <command>ALTER SUBSCRIPTION ... SKIP</command> (Masahiko Sawada)
-</para>
-</listitem>
+      <listitem>
+       <para>
+        Allow skipping of transactions on a subscriber using <link
+        linkend="sql-altersubscription"><command>ALTER SUBSCRIPTION
+        ... SKIP</command></link> (Masahiko Sawada)
+       </para>
+      </listitem>
 
 <!--
 Author: Amit Kapila <[email protected]>
@@ -1298,86 +1519,102 @@ Author: Amit Kapila <[email protected]>
 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>
+      <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 <[email protected]>
 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>
+      <listitem>
+       <para>
+        Add two-phase information to the logical replication stream (Ajin Cherian)
+       </para>
 
-<para>
-The new <literal>CREATE_REPLICATION_SLOT</literal> option is called <literal>TWO_PHASE</literal>.  <application>pg_recvlogical</application> now supports a new <option>--two-phase</option> option during slot creation.
-</para>
-</listitem>
+       <para>
+        The new <link
+        linkend="protocol-replication"><literal>CREATE_REPLICATION_SLOT</literal></link>
+        option is called <literal>TWO_PHASE</literal>.
+        <application>pg_recvlogical</application> now supports a new
+        <option>--two-phase</option> option during slot creation.
+       </para>
+      </listitem>
 
 <!--
 Author: Amit Kapila <[email protected]>
 2022-03-30 [d5a9d86d8] Skip empty transactions for logical replication.
 -->
 
-<listitem>
-<para>
-Prevent logical replication of empty transactions (Ajin Cherian, Hou Zhijie, Euler Taveira)
-</para>
+      <listitem>
+       <para>
+        Prevent logical replication of empty transactions (Ajin Cherian, Hou
+        Zhijie, Euler Taveira)
+       </para>
 
-<para>
-Previously, write transactions would send empty transactions to subscribers if subscribed tables were not modified.
-</para>
-</listitem>
+       <para>
+        Previously, write transactions would send empty transactions to subscribers
+        if subscribed tables were not modified.
+       </para>
+      </listitem>
 
 <!--
 Author: Michael Paquier <[email protected]>
 2021-11-23 [1922d7c6e] Add SQL functions to monitor the directory contents of r
 -->
 
-<listitem>
-<para>
-Add <acronym>SQL</acronym> functions to monitor the directory contents of logical replication slots (Bharath Rupireddy)
-</para>
+      <listitem>
+       <para>
+        Add <acronym>SQL</acronym> functions to monitor the directory contents
+        of logical replication slots (Bharath Rupireddy)
+       </para>
 
-<para>
-Specifically, the functions are <function>pg_ls_logicalsnapdir()</function>, <function>pg_ls_logicalmapdir()</function>, and <function>pg_ls_replslotdir()</function>.  They can be run by members of the predefined <literal>pg_monitor</literal> role.
-</para>
-</listitem>
+       <para>
+        Specifically, the functions are <link
+        linkend="functions-admin-genfile-table"><function>pg_ls_logicalsnapdir()</function></link>,
+        <function>pg_ls_logicalmapdir()</function>, and
+        <function>pg_ls_replslotdir()</function>.  They can be run by members of
+        the predefined <literal>pg_monitor</literal> role.
+       </para>
+      </listitem>
 
 <!--
 Author: Amit Kapila <[email protected]>
 2022-03-14 [705e20f85] Optionally disable subscriptions on error.
 -->
 
-<listitem>
-<para>
-Allow subscribers to stop logical replication application on error (Osumi Takamichi, Mark Dilger)
-</para>
+      <listitem>
+       <para>
+        Allow subscribers to stop logical replication application on error (Osumi
+        Takamichi, Mark Dilger)
+       </para>
 
-<para>
-This is enabled with the subscriber option <literal>disable_on_error</literal> and avoids possible infinite error loops during stream application.
-</para>
-</listitem>
+       <para>
+        This is enabled with the subscriber option <link
+        linkend="sql-createsubscription"><literal>disable_on_error</literal></link>
+        and avoids possible infinite error loops during stream application.
+       </para>
+      </listitem>
 
 <!--
 Author: Tom Lane <[email protected]>
 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>
+      <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>
+       <para>
+        Some publishers might be relying on inconsistent behavior.
+       </para>
+      </listitem>
 
 <!--
 Author: Amit Kapila <[email protected]>
@@ -1386,26 +1623,32 @@ Author: Amit Kapila <[email protected]>
 2022-03-01 [7a8507329] Reconsider pg_stat_subscription_workers view.
 -->
 
-<listitem>
-<para>
-Add system view <structname>pg_stat_subscription_stats</structname> to report on subscriber activity (Masahiko Sawada)
-</para>
+      <listitem>
+       <para>
+        Add system view <link
+        linkend="monitoring-pg-stat-subscription-stats"><structname>pg_stat_subscription_stats</structname></link>
+        to report on subscriber activity (Masahiko Sawada)
+       </para>
 
-<para>
-New function <function>pg_stat_reset_subscription_stats()</function> allows the resetting of subscriber statistics.
-</para>
-</listitem>
+       <para>
+        New function <link
+        linkend="monitoring-stats-functions"><function>pg_stat_reset_subscription_stats()</function></link>
+        allows the resetting of subscriber statistics.
+       </para>
+      </listitem>
 
 <!--
 Author: Amit Kapila <[email protected]>
 2021-12-08 [a61bff2bf] De-duplicate the result of pg_publication_tables view.
 -->
 
-<listitem>
-<para>
-Remove incorrect duplicate partitions in system view <structname>pg_publication_tables</structname> (Hou Zhijie)
-</para>
-</listitem>
+      <listitem>
+       <para>
+        Remove incorrect duplicate partitions in system view <link
+        linkend="view-pg-publication-tables"><structname>pg_publication_tables</structname></link>
+        (Hou Zhijie)
+       </para>
+      </listitem>
 
      </itemizedlist>
 
@@ -1423,11 +1666,11 @@ Author: David Rowley <[email protected]>
 2021-08-22 [22c4e88eb] Allow parallel DISTINCT
 -->
 
-<listitem>
-<para>
-Allow <command>SELECT DISTINCT</command> to be parallelized (David Rowley)
-</para>
-</listitem>
+     <listitem>
+      <para>
+       Allow <command>SELECT DISTINCT</command> to be parallelized (David Rowley)
+      </para>
+     </listitem>
 
     </itemizedlist>
 
@@ -1443,15 +1686,18 @@ Author: Alvaro Herrera <[email protected]>
 2022-03-28 [7103ebb7a] Add support for MERGE SQL command
 -->
 
-<listitem>
-<para>
-Add <acronym>SQL</acronym> <command>MERGE</command> command to adjust one table to match another (Simon Riggs, Pavan Deolasee, Álvaro Herrera, Amit Langote)
-</para>
+     <listitem>
+      <para>
+       Add <acronym>SQL</acronym> <command>MERGE</command> command to adjust
+       one table to match another (Simon Riggs, Pavan Deolasee, Álvaro Herrera,
+       Amit Langote)
+      </para>
 
-<para>
-This is similar to <command>INSERT ... ON CONFLICT</command> but more batch-oriented.
-</para>
-</listitem>
+      <para>
+       This is similar to <command>INSERT ... ON CONFLICT</command> but more
+       batch-oriented.
+      </para>
+     </listitem>
 
 <!--
 Author: Peter Eisentraut <[email protected]>
@@ -1460,89 +1706,107 @@ Author: Peter Eisentraut <[email protected]>
 2022-03-30 [072132f04] Add header matching mode to COPY FROM
 -->
 
-<listitem>
-<para>
-Add support for <literal>HEADER</literal> option in <command>COPY</command> text format (Rémi Lapeyre)
-</para>
+     <listitem>
+      <para>
+       Add support for <literal>HEADER</literal> option in <link
+       linkend="sql-copy"><command>COPY</command></link> text format (Rémi
+       Lapeyre)
+      </para>
 
-<para>
-The new option causes the column names to be output, and optionally verified on input.
-</para>
-</listitem>
+      <para>
+       The new option causes the column names to be output, and optionally
+       verified on input.
+      </para>
+     </listitem>
 
 <!--
 Author: Robert Haas <[email protected]>
 2022-03-29 [9c08aea6a] Add new block-by-block strategy for CREATE DATABASE.
 -->
 
-<listitem>
-<para>
-Add new default <acronym>WAL</acronym>-logged method for database creation (Dilip Kumar)
-</para>
+     <listitem>
+      <para>
+       Add new default <acronym>WAL</acronym>-logged method for <link
+       linkend="sql-createdatabase">database creation</link> (Dilip Kumar)
+      </para>
 
-<para>
-This avoids the need for checkpoints during database creation;  the old method is still available.
-</para>
-</listitem>
+      <para>
+       This avoids the need for checkpoints during database creation;  the old
+       method is still available.
+      </para>
+     </listitem>
 
 <!--
 Author: Robert Haas <[email protected]>
 2022-01-24 [aa0105141] pg_upgrade: Preserve database OIDs.
 -->
 
-<listitem>
-<para>
-Allow <command>CREATE DATABASE</command> to set the database <acronym>OID</acronym> (Shruthi KC, Antonin Houska)
-</para>
-</listitem>
+     <listitem>
+      <para>
+       Allow <link linkend="sql-createdatabase"><command>CREATE
+       DATABASE</command></link> to set the database <acronym>OID</acronym>
+       (Shruthi KC, Antonin Houska)
+      </para>
+     </listitem>
 
 <!--
 Author: Thomas Munro <[email protected]>
 2022-02-12 [4eb217631] Fix DROP {DATABASE,TABLESPACE} on Windows.
 -->
 
-<listitem>
-<para>
-Prevent <command>DROP DATABASE</command>, <command>DROP TABLESPACE</command>, and <command>ALTER DATABASE SET TABLESPACE</command> from occasionally failing during concurrent use on Windows (Thomas Munro)
-</para>
-</listitem>
+     <listitem>
+      <para>
+       Prevent <link linkend="sql-dropdatabase"><command>DROP
+       DATABASE</command></link>, <link linkend="sql-droptablespace"><command>DROP
+       TABLESPACE</command></link>, and <link
+       linkend="sql-alterdatabase"><command>ALTER DATABASE SET
+       TABLESPACE</command></link> from occasionally failing during concurrent
+       use on Windows (Thomas Munro)
+      </para>
+     </listitem>
 
 <!--
 Author: Peter Eisentraut <[email protected]>
 2021-12-08 [d6f96ed94] Allow specifying column list for foreign key ON DELETE S
 -->
 
-<listitem>
-<para>
-Allow foreign key <literal>ON DELETE SET</literal> actions to affect only specified columns (Paul Martinez)
-</para>
+     <listitem>
+      <para>
+       Allow foreign key <link linkend="ddl-constraints-fk"><literal>ON DELETE
+       SET</literal></link> actions to affect only specified columns (Paul
+       Martinez)
+      </para>
 
-<para>
-Previously, all of the columns in the foreign key were always affected.
-</para>
-</listitem>
+      <para>
+       Previously, all of the columns in the foreign key were always affected.
+      </para>
+     </listitem>
 
 <!--
 Author: Michael Paquier <[email protected]>
 2021-07-28 [b0483263d] Add support for SET ACCESS METHOD in ALTER TABLE
 -->
 
-<listitem>
-<para>
-Allow <command>ALTER TABLE</command> to modify a table's <literal>ACCESS METHOD</literal> (Justin Pryzby, Jeff Davis)
-</para>
-</listitem>
+     <listitem>
+      <para>
+       Allow <link linkend="sql-altertable"><command>ALTER TABLE</command></link>
+       to modify a table's <literal>ACCESS METHOD</literal> (Justin Pryzby,
+       Jeff Davis)
+      </para>
+     </listitem>
 
 <!--
 Author: Michael Paquier <[email protected]>
 2021-08-10 [7b565843a] Add call to object access hook at the end of table rewri
 -->
 
-<listitem>
-<para>
-Properly call object access hooks when <command>ALTER TABLE</command> causes table rewrites (Michael Paquier)
-</para>
-</listitem>
+     <listitem>
+      <para>
+       Properly call object access hooks when <link
+       linkend="sql-altertable"><command>ALTER TABLE</command></link> causes
+       table rewrites (Michael Paquier)
+      </para>
+     </listitem>
 
     </itemizedlist>
 
@@ -1558,37 +1822,41 @@ Author: Dean Rasheed <[email protected]>
 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>
+     <listitem>
+      <para>
+       Allow <link linkend="datatype-numeric"><type>numeric</type></link> 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>
+      <para>
+       This allows rounding of values to the left of the decimal point, e.g.,
+       <literal>'1234'::numeric(4, -2)</literal> returns 1200.
+      </para>
+     </listitem>
 
 <!--
 Author: Tom Lane <[email protected]>
 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>
+     <listitem>
+      <para>
+       Improve overflow detection when casting values to <link
+       linkend="datatype-datetime">interval</link> (Joe Koshakow)
+      </para>
+     </listitem>
 
 <!--
 Author: Peter Eisentraut <[email protected]>
 2022-04-07 [344d62fb9] Unlogged sequences
 -->
 
-<listitem>
-<para>
-Allow the creation of unlogged sequences (Peter Eisentraut)
-</para>
-</listitem>
+     <listitem>
+      <para>
+       Allow the creation of unlogged <link
+       linkend="sql-createsequence">sequences</link> (Peter Eisentraut)
+      </para>
+     </listitem>
 
 <!--
 Author: John Naylor <[email protected]>
@@ -1597,15 +1865,17 @@ Author: Peter Eisentraut <[email protected]>
 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>
+     <listitem>
+      <para>
+       Update the display width information of 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>
+      <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>
 
@@ -1621,120 +1891,147 @@ Author: Peter Eisentraut <[email protected]>
 2022-03-30 [7ae1619bc] Add range_agg with multirange inputs
 -->
 
-<listitem>
-<para>
-Add multirange input to <function>range_agg()</function> (Paul Jungwirth)
-</para>
-</listitem>
+     <listitem>
+      <para>
+       Add multirange input to <link
+       linkend="functions-aggregate-table"><function>range_agg()</function></link>
+       (Paul Jungwirth)
+      </para>
+     </listitem>
 
 <!--
 Author: Fujii Masao <[email protected]>
 2022-02-10 [400fc6b64] Add min() and max() aggregates for xid8.
 -->
 
-<listitem>
-<para>
-Add <function>min()</function> and <function>max()</function> aggregates for the xid8 data type (Ken Kato)
-</para>
-</listitem>
+     <listitem>
+      <para>
+       Add <link linkend="tutorial-agg"><function>MIN()</function></link>
+       and <function>MAX()</function> aggregates for the <link
+       linkend="datatype-int"><type>xid8</type></link> data type (Ken Kato)
+      </para>
+     </listitem>
 
 <!--
 Author: Tom Lane <[email protected]>
 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>
+     <listitem>
+      <para>
+       Add regular expression functions for compatibility with other relational
+       systems (Gilles Darold, Tom Lane)
+      </para>
 
-<para>
-Specifically, the new functions are <function>regexp_count()</function>, <function>regexp_instr()</function>, <function>regexp_like()</function>, and <function>regexp_substr()</function>.  Some new optional arguments were also added to <function>regexp_replace()</function>.
-</para>
-</listitem>
+      <para>
+       Specifically, the new functions are <link
+       linkend="functions-string-other"><function>regexp_count()</function></link>,
+       <function>regexp_instr()</function>, <function>regexp_like()</function>,
+       and <function>regexp_substr()</function>.  Some new optional arguments
+       were also added to <function>regexp_replace()</function>.
+      </para>
+     </listitem>
 
 <!--
 Author: Tom Lane <[email protected]>
 2021-12-13 [c5c192d7b] Implement poly_distance().
 -->
 
-<listitem>
-<para>
-Add the ability to compute the distance between polygons (Tom Lane)
-</para>
-</listitem>
+     <listitem>
+      <para>
+       Add the ability to compute the distance between <link
+       linkend="datatype-polygon"><type>polygons</type></link> (Tom Lane)
+      </para>
+     </listitem>
 
 <!--
 Author: Robert Haas <[email protected]>
 2022-03-14 [9dde82899] Support "of", "tzh", and "tzm" format codes.
 -->
 
-<listitem>
-<para>
-Add <function>to_char()</function> format codes "of", "tzh", and "tzm" format codes (Nitin Jadhav)
-</para>
+     <listitem>
+      <para>
+       Add <link
+       linkend="functions-formatting-table"><function>to_char()</function></link>
+       format codes <literal>of</literal>, <literal>tzh</literal>, and
+       <literal>tzm</literal> format codes (Nitin Jadhav)
+      </para>
 
-<para>
-The upper-case versions of these were already supported.
-</para>
-</listitem>
+      <para>
+       The upper-case versions of these were already supported.
+      </para>
+     </listitem>
 
 <!--
 Author: Tom Lane <[email protected]>
 2021-09-06 [388e71af8] Make timetz_zone() stable, and correct a bug for DYNTZ a
 -->
 
-<listitem>
-<para>
-Improve the optimization of <function>timetz_zone()</function> by stabilizing its value at transaction start (Aleksander Alekseev, Tom Lane)
-</para>
-</listitem>
+     <listitem>
+      <para>
+       Improve the optimization of <function>timetz_zone()</function> by
+       stabilizing its value at transaction start (Aleksander Alekseev, Tom Lane)
+      </para>
+
+      <para>
+       HOW IS THIS USED?
+      </para>
+     </listitem>
 
 <!--
 Author: Tom Lane <[email protected]>
 2021-11-06 [cbe25dcff] Disallow making an empty lexeme via array_to_tsvector().
 -->
 
-<listitem>
-<para>
-Allow <function>tsvector_delete_arr()</function> and <function>tsvector_setweight_by_filter()</function> to accept empty array elements (Jean-Christophe Arnu)
-</para>
+     <listitem>
+      <para>
+       Allow <function>tsvector_delete_arr()</function> and
+       <function>tsvector_setweight_by_filter()</function> to 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>
+      <para>
+       These lexemes are not stored so the acceptance of empty array elements
+       is not a problem.  NOT DOCUMENTED, USER API?
+      </para>
+     </listitem>
 
 <!--
 Author: David Rowley <[email protected]>
 2021-07-09 [ca2e4472b] Teach pg_size_pretty and pg_size_bytes about petabytes
 -->
 
-<listitem>
-<para>
-Add support for petabyte units to <function>pg_size_pretty()</function> and <function>pg_size_bytes()</function> (David Christensen)
-</para>
-</listitem>
+     <listitem>
+      <para>
+       Add support for petabyte units to <link
+       linkend="functions-admin-dbsize"><function>pg_size_pretty()</function></link>
+       and <function>pg_size_bytes()</function> (David Christensen)
+      </para>
+     </listitem>
 
 <!--
 Author: Tom Lane <[email protected]>
 2021-07-27 [024515cac] In event triggers, use "pg_temp" only for our own temp s
 -->
 
-<listitem>
-<para>
-Change <function>pg_event_trigger_ddl_commands()</function> to output references to non-local temporary schemas using the actual schema name (Tom Lane)
-</para>
+     <listitem>
+      <para>
+       Change <link
+       linkend="pg-event-trigger-ddl-command-end-functions"><function>pg_event_trigger_ddl_commands()</function></link>
+       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 <literal>pg_temp</literal>.
-</para>
-</listitem>
+      <para>
+       Previously this function referred to temporary schemas as
+       <literal>pg_temp</literal>.
+      </para>
+     </listitem>
 
-     </itemizedlist>
+    </itemizedlist>
 
     <sect4>
-    <title><acronym>JSON</acronym></title>
+     <title><acronym>JSON</acronym></title>
 
      <itemizedlist>
 
@@ -1751,41 +2048,56 @@ Author: Andrew Dunstan <[email protected]>
 2022-04-07 [a6baa4bad] Documentation for SQL/JSON features
 -->
 
-<listitem>
-<para>
-Add <acronym>SQL</acronym>/<acronym>JSON</acronym>-standard <acronym>JSON</acronym> constructors (Nikita Glukhov)
-</para>
+      <listitem>
+       <para>
+        Add <acronym>SQL</acronym>/<acronym>JSON</acronym>-standard
+        <acronym>JSON</acronym> constructors (Nikita Glukhov)
+       </para>
 
-<para>
-The construction functions are <function>JSON()</function>, <function>JSON_SCALAR()</function>, and <function>JSON_SERIALIZE()</function>, <function>JSON_ARRAY()</function>,  <function>JSON_ARRAYAGG()</function>,  <function>JSON_OBJECT()</function>, and  <function>JSON_OBJECTAGG()</function>.  They have a few functional advantages over the existing JSON functions.
-</para>
-</listitem>
+       <para>
+        The construction functions are <link
+        linkend="functions-sqljson-producing"><function>json()</function></link>,
+        <function>json_scalar()</function>, and
+        <function>json_serialize()</function>, <function>json_array()</function>,
+        <function>json_arrayagg()</function>,  <function>json_object()</function>,
+        and  <function>json_objectagg()</function>.  They have a few functional
+        advantages over the existing JSON functions.
+       </para>
+      </listitem>
 
 <!--
 Author: Andrew Dunstan <[email protected]>
 2022-03-29 [1a36bc9db] SQL/JSON query functions
 -->
 
-<listitem>
-<para>
-Add <acronym>SQL</acronym>/<acronym>JSON</acronym> query functions <function>JSON_EXISTS()</function>, <function>JSON_QUERY()</function>, and <function>JSON_VALUE()</function> (Nikita Glukhov)
-</para>
-</listitem>
+      <listitem>
+       <para>
+        Add <acronym>SQL</acronym>/<acronym>JSON</acronym> query functions <link
+        linkend="functions-sqljson-querying"><function>json_exists()</function></link>,
+        <function>json_query()</function>, and <function>json_value()</function>
+        (Nikita Glukhov)
+       </para>
+      </listitem>
 
 <!--
 Author: Andrew Dunstan <[email protected]>
 2022-03-28 [33a377608] IS JSON predicate
 -->
 
-<listitem>
-<para>
-Add <acronym>JSON</acronym> predicates to test <type>JSON</type>/<type>JSONB</type> values (Nikita Glukhov)
-</para>
+      <listitem>
+       <para>
+        Add <acronym>JSON</acronym> predicates to test
+        <type>JSON</type>/<type>JSONB</type> values (Nikita Glukhov)
+       </para>
 
-<para>
-The clauses are <literal>IS JSON</literal> [ <literal>VALUE</literal> | <literal>ARRAY</literal> | <literal>OBJECT</literal> | <literal>SCALAR</literal> |  [<literal>WITH</literal> | <literal>WITHOUT</literal> ] <literal>UNIQUE KEYS</literal> ].
-</para>
-</listitem>
+       <para>
+        The clauses are <link linkend="functions-sqljson-misc"><literal>IS
+        JSON</literal></link> [ <literal>VALUE</literal> | <literal>ARRAY</literal>
+      | <literal>OBJECT</literal> | <literal>SCALAR</literal> |
+        [<literal>WITH</literal> | <literal>WITHOUT</literal> ] <literal>UNIQUE
+        KEYS</literal> ].
+       </para>
+      </listitem>
 
 <!--
 Author: Andrew Dunstan <[email protected]>
@@ -1794,11 +2106,14 @@ Author: Andrew Dunstan <[email protected]>
 2022-04-05 [fadb48b00] PLAN clauses for JSON_TABLE
 -->
 
-<listitem>
-<para>
-Add function <function>JSON_TABLE()</function> to cause <acronym>JSON</acronym> data to be treated as a table (Nikita Glukhov)
-</para>
-</listitem>
+      <listitem>
+       <para>
+        Add function <link
+        linkend="functions-sqljson-table"><function>JSON_TABLE()</function></link>
+        to cause <acronym>JSON</acronym> data to be treated as a table (Nikita
+        Glukhov)
+       </para>
+      </listitem>
 
      </itemizedlist>
 
@@ -1816,22 +2131,26 @@ Author: Tom Lane <[email protected]>
 2022-04-30 [ccd10a9bf] Tighten enforcement of variable CONSTANT markings in plp
 -->
 
-<listitem>
-<para>
-Fix enforcement of PL/pgSQL variable <literal>CONSTANT</literal> markings (Tom Lane)
-</para>
-
-<para>
-Previously, a variable used as a <command>CALL</command> output parameter or refcursor <command>OPEN</command> variable would not enforce <literal>CONSTANT</literal>.
-</para>
-</listitem>    </itemizedlist>
+     <listitem>
+      <para>
+       Fix enforcement of PL/pgSQL variable <literal>CONSTANT</literal> markings
+       (Tom Lane)
+      </para>
 
+      <para>
+       Previously, a variable used as a <link
+       linkend="plpgsql-statements-calling-procedure"><command>CALL</command></link>
+       output parameter or refcursor <command>OPEN</command> variable would not
+       enforce <literal>CONSTANT</literal>.
+      </para>
+     </listitem>
 
+    </itemizedlist>
 
    </sect3>
 
    <sect3>
-    <title>Client Interfaces</title>
+    <title><link linkend="libpq">libpq</link></title>
 
     <itemizedlist>
 
@@ -1840,37 +2159,43 @@ Author: Peter Eisentraut <[email protected]>
 2022-04-01 [c1932e542] libpq: Allow IP address SANs in server certificates
 -->
 
-<listitem>
-<para>
-Allow <acronym>IP</acronym> address matching against a server certificate's Subject Alternative Name (Jacob Champion)
-</para>
-</listitem>
+     <listitem>
+      <para>
+       Allow <acronym>IP</acronym> address matching against a server certificate's
+       Subject Alternative Name (Jacob Champion)
+      </para>
+     </listitem>
 
 <!--
 Author: Daniel Gustafsson <[email protected]>
 2022-03-29 [ebc8b7d44] Enable SSL library detection via PQsslAttribute()
 -->
 
-<listitem>
-<para>
-Allow <function>PQsslAttribute()</function> to report the <acronym>SSL</acronym> library type without requiring a libpq connection (Jacob Champion)
-</para>
-</listitem>
+     <listitem>
+      <para>
+       Allow <function>PQsslAttribute()</function> to report the
+       <acronym>SSL</acronym> library type without requiring a libpq connection
+       (Jacob Champion)
+      </para>
+     </listitem>
 
 <!--
 Author: Tom Lane <[email protected]>
 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 <acronym>TCP</acronym> settings as normal client connections (Jelte Fennema)
-</para>
+     <listitem>
+      <para>
+       Change query cancellations sent by the client to use the same
+       <acronym>TCP</acronym> settings as normal client connections (Jelte
+       Fennema)
+      </para>
 
-<para>
-This allows configured <acronym>TCP</acronym> timeouts to apply to query cancel connections.
-</para>
-</listitem>
+      <para>
+       This allows configured <acronym>TCP</acronym> timeouts to apply to query
+       cancel connections.
+      </para>
+     </listitem>
 
 <!--
 Author: Tom Lane <[email protected]>
@@ -1879,11 +2204,12 @@ Author: Tom Lane <[email protected]>
 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>
+     <listitem>
+      <para>
+       Prevent libpq event callback failures from forcing an error result
+       (Tom Lane)
+      </para>
+     </listitem>
 
     </itemizedlist>
 
@@ -1899,51 +2225,59 @@ Author: Tom Lane <[email protected]>
 2022-01-09 [376ce3e40] Prefer $HOME when looking up the current user's home dir
 -->
 
-<listitem>
-<para>
-On Unix platforms, have client applications like <application>psql</application> check <envar>HOME</envar> environment variable for the user's home directory before checking the operating system definition (Anders Kaseorg)
-</para>
-</listitem>
+     <listitem>
+      <para>
+       On Unix platforms, have client applications like <link
+       linkend="app-psql"><application>psql</application></link> check
+       <envar>HOME</envar> environment variable for the user's home directory
+       before checking the operating system definition (Anders Kaseorg)
+      </para>
+     </listitem>
 
     </itemizedlist>
 
-    <sect4>
-    <title><xref linkend="app-psql"/></title>
+     <sect4>
+      <title><xref linkend="app-psql"/></title>
 
-     <itemizedlist>
+      <itemizedlist>
 
 <!--
 Author: Heikki Linnakangas <[email protected]>
 2021-07-14 [eec57115e] In psql \copy from, send data to server in larger chunks
 -->
 
-<listitem>
-<para>
-Improve performance of <application>psql</application>'s \copy command (Heikki Linnakangas)
-</para>
-</listitem>
+       <listitem>
+        <para>
+        Improve performance of <application>psql</application>'s \copy command
+        (Heikki Linnakangas)
+       </para>
+      </listitem>
 
 <!--
 Author: Tom Lane <[email protected]>
 2021-12-20 [33d3eeadb] Add a \getenv command to psql.
 -->
 
-<listitem>
-<para>
-Add <application>psql</application> command \getenv to assign the value of an environment variable to a <application>psql</application> variable (Tom Lane)
-</para>
-</listitem>
+      <listitem>
+       <para>
+        Add <application>psql</application> command \getenv to assign the value
+        of an environment variable to a <application>psql</application> variable
+        (Tom Lane)
+       </para>
+      </listitem>
 
 <!--
 Author: Tom Lane <[email protected]>
 2022-01-06 [328dfbdab] Extend psql's \lo_list/\dl to be able to print large obj
 -->
 
-<listitem>
-<para>
-Add '+' option to <application>psql</application>'s <literal>\lo_list</literal>/<literal>\dl</literal> to show object privileges (Pavel Luzanov)
-</para>
-</listitem>
+      <listitem>
+       <para>
+        Add '+' option to <application>psql</application>'s
+        <literal>\lo_list</literal>/<literal>\dl</literal> to show object
+        privileges (Pavel Luzanov)
+       </para>
+      </listitem>
 
 <!--
 Author: Tom Lane <[email protected]>
@@ -1954,30 +2288,34 @@ Author: Tom Lane <[email protected]>
 2022-04-13 [139d46ee2] Further tweak the default behavior of psql's \dconfig.
 -->
 
-<listitem>
-<para>
-Add <application>psql</application> \dconfig to report server variables (Mark Dilger, Tom Lane)
-</para>
+      <listitem>
+       <para>
+        Add <application>psql</application> \dconfig to report server variables
+        (Mark Dilger, Tom Lane)
+       </para>
 
-<para>
-This is similar to the server-side <command>SHOW</command> command but can process patterns.
-</para>
-</listitem>
+       <para>
+        This is similar to the server-side <command>SHOW</command> command but
+        can process patterns.
+       </para>
+      </listitem>
 
 <!--
 Author: Thomas Munro <[email protected]>
 2021-07-13 [7c09d2797] Add PSQL_WATCH_PAGER for psql's \watch command.
 -->
 
-<listitem>
-<para>
-Add pager option for <application>psql</application>'s \watch command (Pavel Stehule, Thomas Munro)
-</para>
+      <listitem>
+       <para>
+        Add pager option for <application>psql</application>'s \watch command
+        (Pavel Stehule, Thomas Munro)
+       </para>
 
-<para>
-This is only supported on Unix, and is controlled by <envar>PSQL_WATCH_PAGER</envar>.
-</para>
-</listitem>
+       <para>
+        This is only supported on Unix, and is controlled by
+        <envar>PSQL_WATCH_PAGER</envar>.
+       </para>
+      </listitem>
 
 <!--
 Author: Tom Lane <[email protected]>
@@ -1986,45 +2324,50 @@ Author: Tom Lane <[email protected]>
 2021-12-01 [c2f654930] psql: treat "- -" comments between queries as separate hi
 -->
 
-<listitem>
-<para>
-Have <application>psql</application> send intra-query double-hyphen comments to the server (Tom Lane, Greg Nancarrow)
-</para>
+      <listitem>
+       <para>
+        Have <application>psql</application> 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 <application>psql</application> history entries.
-</para>
-</listitem>
+       <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 <application>psql</application> history entries.
+       </para>
+      </listitem>
 
 <!--
 Author: Tom Lane <[email protected]>
 2021-12-01 [3d858af07] psql: initialize comment-begin setting to a useful value
 -->
 
-<listitem>
-<para>
-Adjust <application>psql</application>'s readline meta-# to insert a double-hyphen comment marker (Tom Lane)
-</para>
+      <listitem>
+       <para>
+        Adjust <application>psql</application>'s readline meta-# to insert a
+        double-hyphen comment marker (Tom Lane)
+       </para>
 
-<para>
-Previously an unhelpful pound marker was inserted.
-</para>
-</listitem>
+       <para>
+        Previously an unhelpful pound marker was inserted.
+       </para>
+      </listitem>
 
 <!--
 Author: Peter Eisentraut <[email protected]>
 2022-04-04 [7844c9918] psql: Show all query results by default
 -->
 
-<listitem>
-<para>
-Have <application>psql</application> output all results if multiple queries are passed to the server at once (Fabien Coelho)
-</para>
+      <listitem>
+       <para>
+        Have <application>psql</application> output all results if multiple
+        queries are passed to the server at once (Fabien Coelho)
+       </para>
 
-<para>
-This can be disabled by setting <envar>SHOW_ALL_RESULTS</envar>.
-</para>
-</listitem>
+       <para>
+        This can be disabled by setting <envar>SHOW_ALL_RESULTS</envar>.
+       </para>
+      </listitem>
 
 <!--
 Author: Michael Paquier <[email protected]>
@@ -2069,22 +2412,26 @@ Author: Tom Lane <[email protected]>
 2022-04-13 [b5607b074] Fix case sensitivity in psql's tab completion for GUC na
 -->
 
-<listitem>
-<para>
-Improve <application>psql</application>'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>
+      <listitem>
+       <para>
+        Improve <application>psql</application>'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 <[email protected]>
 2021-12-16 [cf0cab868] Remove psql support for server versions preceding 9.2.
 -->
 
-<listitem>
-<para>
-Limit support of <application>psql</application> to servers running <productname>PostgreSQL</productname> 9.2 and later (Tom Lane)
-</para>
-</listitem>
+      <listitem>
+       <para>
+        Limit support of <application>psql</application> to servers running
+        <productname>PostgreSQL</productname> 9.2 and later (Tom Lane)
+       </para>
+      </listitem>
 
      </itemizedlist>
 
@@ -2102,15 +2449,20 @@ Author: Robert Haas <[email protected]>
 2022-01-20 [3500ccc39] Support base backup targets.
 -->
 
-<listitem>
-<para>
-Add new <application>pg_basebackup</application> option <option>--target</option> to control the base backup location (Robert Haas)
-</para>
+     <listitem>
+      <para>
+       Add new <link
+       linkend="app-pgbasebackup"><application>pg_basebackup</application></link>
+       option <option>--target</option> 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>
+      <para>
+       New output options are <literal>server</literal> to write the backup
+       locally and <literal>blackhole</literal> to discard the backup (for
+       testing).
+      </para>
+     </listitem>
 
 <!--
 Author: Robert Haas <[email protected]>
@@ -2119,11 +2471,13 @@ Author: Robert Haas <[email protected]>
 2022-03-08 [7cf085f07] Add support for zstd base backup compression.
 -->
 
-<listitem>
-<para>
-Allow <application>pg_basebackup</application> to decompress LZ4 and Zstandard compressed server-side base backups, and compress output files with LZ4 and Zstandard (Dipesh Pandit, Jeevan Ladhe)
-</para>
-</listitem>
+     <listitem>
+      <para>
+       Allow <application>pg_basebackup</application> to decompress LZ4 and
+       Zstandard compressed server-side base backups, and compress output files
+       with LZ4 and Zstandard (Dipesh Pandit, Jeevan Ladhe)
+      </para>
+     </listitem>
 
 <!--
 Author: Michael Paquier <[email protected]>
@@ -2134,30 +2488,35 @@ Author: Robert Haas <[email protected]>
 2022-01-25 [e1f860f13] Tidy up a few cosmetic issues related to pg_basebackup.
 -->
 
-<listitem>
-<para>
-Allow <application>pg_basebackup</application>'s <option>--compress</option> option to control the compression method and options (Michael Paquier, Robert Haas)
-</para>
+     <listitem>
+      <para>
+       Allow <application>pg_basebackup</application>'s
+       <option>--compress</option> option to control the compression method and
+       options (Michael Paquier, Robert Haas)
+      </para>
 
-<para>
-New options include <literal>server-gzip</literal> (gzip on the server), <literal>client-gzip</literal> (same as <literal>gzip</literal>).
-</para>
-</listitem>
+      <para>
+       New options include <literal>server-gzip</literal> (gzip on the server),
+       <literal>client-gzip</literal> (same as <literal>gzip</literal>).
+      </para>
+     </listitem>
 
 <!--
 Author: Robert Haas <[email protected]>
 2022-01-28 [d45099425] Allow server-side compression to be used with -Fp.
 -->
 
-<listitem>
-<para>
-Allow <application>pg_basebackup</application> to compress on the server side and decompress on the client side before storage (Dipesh Pandit)
-</para>
+     <listitem>
+      <para>
+       Allow <application>pg_basebackup</application> to compress on the server
+       side 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>
+      <para>
+       This is accomplished by specifying compression on the server side and
+       plain output format.
+      </para>
+     </listitem>
 
 <!--
 Author: Michael Paquier <[email protected]>
@@ -2166,59 +2525,82 @@ Author: Michael Paquier <[email protected]>
 2022-04-13 [042a923ad] Rework compression options of pg_receivewal
 -->
 
-<listitem>
-<para>
-Add the LZ4 compression method to <application>pg_receivewal</application> (Georgios Kokolatos)
-</para>
+     <listitem>
+      <para>
+       Add the LZ4 compression method to <link
+       linkend="app-pgreceivewal"><application>pg_receivewal</application></link>
+       (Georgios Kokolatos)
+      </para>
 
-<para>
-This is enabled via <literal>--compress=lz4</literal> and requires binaries to be built using <option>--with-lz4</option>.
-</para>
-</listitem>
+      <para>
+       This is enabled via <literal>--compress=lz4</literal> and requires binaries
+       to be built using <option>--with-lz4</option>.
+      </para>
+     </listitem>
 
 <!--
 Author: Michael Paquier <[email protected]>
 2021-11-04 [d62bcc8b0] Rework compression options of pg_receivewal
 -->
 
-<listitem>
-<para>
-Add additional capabilities to <application>pg_receivewal</application>'s <option>--compress</option> option (Georgios Kokolatos)
-</para>
-</listitem>
+     <listitem>
+      <para>
+       Add additional capabilities to <application>pg_receivewal</application>'s
+       <option>--compress</option> option (Georgios Kokolatos)
+      </para>
+     </listitem>
 
 <!--
 Author: Michael Paquier <[email protected]>
 2021-10-26 [f61e1dd2c] Allow pg_receivewal to stream from a slot's restart LSN
 -->
 
-<listitem>
-<para>
-Improve <application>pg_receivewal</application>'s ability to restart at the proper <acronym>WAL</acronym> location (Ronan Dunklau)
-</para>
+     <listitem>
+      <para>
+       Improve <application>pg_receivewal</application>'s ability to restart at
+       the proper <acronym>WAL</acronym> location (Ronan Dunklau)
+      </para>
 
-<para>
-Previously, <application>pg_receivewal</application> would start based on the <acronym>WAL</acronym> file stored in the local archive directory, or at the sending server's current <acronym>WAL</acronym> 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 slot's restart point will be used.
-</para>
-</listitem>
+      <para>
+       Previously, <application>pg_receivewal</application> would start based
+       on the <acronym>WAL</acronym> file stored in the local archive directory,
+       or at the sending server's current <acronym>WAL</acronym> 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 slot's restart point will be used.
+      </para>
+     </listitem>
+
+<!--
+Author: Michael Paquier <[email protected]>
+2022-04-07 [0d5c38757] Add option - -config-file to pg_rewind
+-->
+
+     <listitem>
+      <para>
+       Add <application>pg_rewind</application> option
+       <option>--config-file</option> to simplify use when server configuration
+       files are stored outside the data directory (Gunnar Bluth)
+      </para>
+     </listitem>
 
 <!--
 Author: Tatsuo Ishii <[email protected]>
 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>
+     <listitem>
+      <para>
+       Allow <link linkend="pgbench"><application>pgbench</application></link>
+       to retry after serialization and deadlock failures (Yugo Nagata, Marina
+       Polyakova)
+      </para>
+     </listitem>
 
     </itemizedlist>
 
     <sect4>
-
-     <title><application>pg_dump</application></title>
+     <title><link linkend="app-pgdump"><application>pg_dump</application></link></title>
 
      <itemizedlist>
 
@@ -2229,15 +2611,16 @@ Author: Noah Misch <[email protected]>
 2021-06-28 [7ac10f692] Dump COMMENT ON SCHEMA public.
 -->
 
-<listitem>
-<para>
-Have <application>pg_dump</application> dump "public" schema ownership changes and security labels (Noah Misch)
-</para>
+      <listitem>
+       <para>
+        Have <application>pg_dump</application> dump <literal>public</literal>
+        schema ownership changes and security labels (Noah Misch)
+       </para>
 
-<para>
-It also dumps "public" schema comments.
-</para>
-</listitem>
+       <para>
+        It also dumps <literal>public</literal> schema comments.
+       </para>
+      </listitem>
 
 <!--
 Author: Tom Lane <[email protected]>
@@ -2248,56 +2631,61 @@ Author: Tom Lane <[email protected]>
 2021-12-31 [d5e8930f5] pg_dump: minor performance improvements from eliminating
 -->
 
-<listitem>
-<para>
-Improve performance of dumping databases with many objects (Tom Lane)
-</para>
+      <listitem>
+       <para>
+        Improve performance of dumping databases with many objects (Tom Lane)
+       </para>
 
-<para>
-This will also improve the performance of <application>pg_upgrade</application>.
-</para>
-</listitem>
+       <para>
+        This will also improve the performance of <link
+        linkend="pgupgrade"><application>pg_upgrade</application></link>.
+       </para>
+      </listitem>
 
 <!--
 Author: Tom Lane <[email protected]>
 2021-12-06 [65aaed22a] Account for TOAST data while scheduling parallel dumps.
 -->
 
-<listitem>
-<para>
-Improve the parallel <application>pg_dump</application> performance of <acronym>TOAST</acronym> tables (Tom Lane)
-</para>
-</listitem>
+      <listitem>
+       <para>
+        Improve the parallel <application>pg_dump</application> performance of
+        <acronym>TOAST</acronym> tables (Tom Lane)
+       </para>
+      </listitem>
 
 <!--
 Author: Michael Paquier <[email protected]>
 2022-01-17 [215862886] Add support for - -no-table-access-method in pg_{dump,dum
 -->
 
-<listitem>
-<para>
-Add dump/restore option <option>--no-table-access-method</option> to force restore to only use the default table access method (Justin Pryzby)
-</para>
-</listitem>
+      <listitem>
+       <para>
+        Add dump/restore option <option>--no-table-access-method</option> to
+        force restore to only use the default table access method (Justin Pryzby)
+       </para>
+      </listitem>
 
 <!--
 Author: Tom Lane <[email protected]>
 2021-12-14 [30e7c175b] Remove pg_dump/pg_dumpall support for dumping from pre-9
 -->
 
-<listitem>
-<para>
-Limit support of <application>pg_dump</application> and <application>pg_dumpall</application> to servers running <productname>PostgreSQL</productname> 9.2 and later (Tom Lane)
-</para>
-</listitem>
+      <listitem>
+       <para>
+        Limit support of <application>pg_dump</application> and <link
+        linkend="app-pg-dumpall"><application>pg_dumpall</application></link>
+        to servers running <productname>PostgreSQL</productname> 9.2 and later
+        (Tom Lane)
+       </para>
+      </listitem>
 
      </itemizedlist>
 
     </sect4>
 
     <sect4>
-
-     <title><application>pg_upgrade</application></title>
+     <title><link linkend="pgupgrade"><application>pg_upgrade</application></link></title>
 
      <itemizedlist>
 
@@ -2306,30 +2694,35 @@ Author: Andres Freund <[email protected]>
 2022-02-21 [27b02e070] pg_upgrade: Don't print progress status when output is n
 -->
 
-<listitem>
-<para>
-Disable default status reporting during <application>pg_upgrade</application> operation if the output is not a terminal (Andres Freund)
-</para>
+      <listitem>
+       <para>
+        Disable default status reporting during
+        <application>pg_upgrade</application> 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 <option>--verbose</option>.
-</para>
-</listitem>
+       <para>
+        The status reporting output can be enabled for non-tty usage by using
+        <option>--verbose</option>.
+       </para>
+      </listitem>
 
 <!--
 Author: Daniel Gustafsson <[email protected]>
 2022-03-24 [26ebb0e28] List offending databases in pg_upgrade datallowconn chec
 -->
 
-<listitem>
-<para>
-Have <application>pg_upgrade</application> report all databases with invalid connection settings (Jeevan Ladhe)
-</para>
+      <listitem>
+       <para>
+        Have <application>pg_upgrade</application> report all databases with
+        invalid connection settings (Jeevan Ladhe)
+       </para>
 
-<para>
-Previously only the first database with an invalid connection setting was reported.
-</para>
-</listitem>
+       <para>
+        Previously only the first database with an invalid connection setting
+        was reported.
+       </para>
+      </listitem>
 
 <!--
 Author: Michael Paquier <[email protected]>
@@ -2338,15 +2731,17 @@ Author: Michael Paquier <[email protected]>
 2022-02-15 [a00849630] Fix thinko with subdirectories generated by pg_upgrade f
 -->
 
-<listitem>
-<para>
-Store <application>pg_upgrade</application> temporary files in a new cluster subdirectory called <filename>pg_upgrade_output.d</filename> (Justin Pryzby)
-</para>
+      <listitem>
+       <para>
+        Store <application>pg_upgrade</application> temporary files in a new
+        cluster subdirectory called <filename>pg_upgrade_output.d</filename>
+        (Justin Pryzby)
+       </para>
 
-<para>
-Previously temporary files were stored in the current directory.
-</para>
-</listitem>
+       <para>
+        Previously temporary files were stored in the current directory.
+       </para>
+      </listitem>
 
 <!--
 Author: Robert Haas <[email protected]>
@@ -2355,45 +2750,48 @@ Author: Robert Haas <[email protected]>
 2022-01-24 [aa0105141] pg_upgrade: Preserve database OIDs.
 -->
 
-<listitem>
-<para>
-Have <application>pg_upgrade</application> preserve relfilenodes, tablespace, and database OIDs between old and new clusters (Shruthi KC, Antonin Houska)
-</para>
-</listitem>
+      <listitem>
+       <para>
+        Have <application>pg_upgrade</application> preserve relfilenodes,
+        tablespace, and database OIDs between old and new clusters (Shruthi KC,
+        Antonin Houska)
+       </para>
+      </listitem>
 
 <!--
 Author: Michael Paquier <[email protected]>
 2021-12-18 [3d5ffccb6] Add option -N/- -no-sync to pg_upgrade
 -->
 
-<listitem>
-<para>
-Add a <option>--no-sync</option> option to <application>pg_upgrade</application> (Michael Paquier)
-</para>
+      <listitem>
+       <para>
+        Add a <option>--no-sync</option> option to
+        <application>pg_upgrade</application> (Michael Paquier)
+       </para>
 
-<para>
-This useful only for testing.
-</para>
-</listitem>
+       <para>
+        This useful only for testing.
+       </para>
+      </listitem>
 
 <!--
 Author: Tom Lane <[email protected]>
 2021-12-14 [e469f0aaf] Remove pg_upgrade support for upgrading from pre-9.2 ser
 -->
 
-<listitem>
-<para>
-Limit support of <application>pg_upgrade</application> to old servers running <productname>PostgreSQL</productname> 9.2 and later (Tom Lane)
-</para>
-</listitem>
+      <listitem>
+       <para>
+        Limit support of <application>pg_upgrade</application> to old servers
+        running <productname>PostgreSQL</productname> 9.2 and later (Tom Lane)
+       </para>
+      </listitem>
 
      </itemizedlist>
 
     </sect4>
 
     <sect4>
-
-     <title><application>pg_waldump</application></title>
+     <title><link linkend="pgwaldump"><application>pg_waldump</application></link></title>
 
      <itemizedlist>
 
@@ -2404,63 +2802,61 @@ Author: Thomas Munro <[email protected]>
 2022-03-25 [52b556843] Improve command line options for pg_waldump.
 -->
 
-<listitem>
-<para>
-Allow <application>pg_waldump</application> to be filtered by relation file node, block number, fork number, and full page images (David Christensen, Thomas Munro)
-</para>
-</listitem>
+      <listitem>
+       <para>
+        Allow <application>pg_waldump</application> to be filtered by relation file
+        node, block number, fork number, and full page images (David Christensen,
+        Thomas Munro)
+       </para>
+      </listitem>
 
 <!--
 Author: Michael Paquier <[email protected]>
 2021-12-02 [f2c52eeba] pg_waldump: Emit stats summary when interrupted by SIGIN
 -->
 
-<listitem>
-<para>
-Have <application>pg_waldump</application> report statistics before an interrupted exit (Bharath Rupireddy)
-</para>
+      <listitem>
+       <para>
+        Have <application>pg_waldump</application> report statistics before an
+        interrupted exit (Bharath Rupireddy)
+       </para>
 
-<para>
-For example, issuing a control-C in a terminal running <command>pg_waldump --stats --follow</command> will report the current statistics before exiting.  This does not work on Windows.
-</para>
-</listitem>
+       <para>
+        For example, issuing a control-C in a terminal running <command>pg_waldump
+        --stats --follow</command> will report the current statistics before
+        exiting.  This does not work on Windows.
+       </para>
+      </listitem>
 
 <!--
 Author: Michael Paquier <[email protected]>
 2021-12-13 [c8b733c4c] Improve description of some WAL records with transaction
 -->
 
-<listitem>
-<para>
-Improve descriptions of some transaction <acronym>WAL</acronym> records reported by <application>pg_waldump</application> (Masahiko Sawada, Michael Paquier)
-</para>
-</listitem>
+      <listitem>
+       <para>
+        Improve descriptions of some transaction <acronym>WAL</acronym> records
+        reported by <application>pg_waldump</application> (Masahiko Sawada,
+        Michael Paquier)
+       </para>
+      </listitem>
 
 <!--
 Author: Heikki Linnakangas <[email protected]>
 2021-07-01 [c8bf5098c] Allow specifying pg_waldump - -rmgr option multiple times
 -->
 
-<listitem>
-<para>
-Allow <application>pg_waldump</application> to dump information about multiple resource managers (Heikki Linnakangas)
-</para>
+      <listitem>
+       <para>
+        Allow <application>pg_waldump</application> to dump information about
+        multiple resource managers (Heikki Linnakangas)
+       </para>
 
-<para>
-This is enabled by specifying the <option>--rmgr</option> option multiple times.
-</para>
-</listitem>
-
-<!--
-Author: Michael Paquier <[email protected]>
-2022-04-07 [0d5c38757] Add option - -config-file to pg_rewind
--->
-
-<listitem>
-<para>
-Add <application>pg_rewind</application> option <option>--config-file</option> to simplify use when server configuration files are stored outside the data directory (Gunnar "Nick" Bluth)
-</para>
-</listitem>
+       <para>
+        This is enabled by specifying the <option>--rmgr</option> option multiple
+        times.
+       </para>
+      </listitem>
 
      </itemizedlist>
 
@@ -2478,29 +2874,33 @@ Author: Fujii Masao <[email protected]>
 2021-10-05 [f6b5d05ba] doc: Document pg_encoding_to_char() and pg_char_to_encod
 -->
 
-<listitem>
-<para>
-Add documentation for <function>pg_encoding_to_char()</function> and <function>pg_char_to_encoding()</function> (Ian Lawrence Barwick)
-</para>
-</listitem>
+     <listitem>
+      <para>
+       Add documentation for <link
+       linkend="functions-info-catalog-table"><function>pg_encoding_to_char()</function></link>
+       and <function>pg_char_to_encoding()</function> (Ian Lawrence Barwick)
+      </para>
+     </listitem>
 
 <!--
 Author: Tom Lane <[email protected]>
 2021-10-09 [2ae5d72f0] Doc: improve documentation for ^@ starts-with operator.
 -->
 
-<listitem>
-<para>
-Document the <literal>^@</literal> starts-with operator (Tom Lane)
-</para>
-</listitem>
+     <listitem>
+      <para>
+       Document the <link
+       linkend="functions-string-other"><literal>^@</literal></link> starts-with
+       operator (Tom Lane)
+      </para>
+     </listitem>
 
     </itemizedlist>
 
    </sect3>
 
    <sect3>
-   <title>Source Code</title>
+    <title>Source Code</title>
 
     <itemizedlist>
 
@@ -2509,67 +2909,78 @@ Author: Andres Freund <[email protected]>
 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>
+     <listitem>
+      <para>
+       Add support for continuous integration testing using cirrus-ci (Andres
+       Freund, Thomas Munro, Melanie Plageman)
+      </para>
+     </listitem>
 
 <!--
 Author: Robert Haas <[email protected]>
 2022-02-18 [6c417bbcc] Add support for building with ZSTD.
 -->
 
-<listitem>
-<para>
-Add configure option <option>--with-zstd</option> to enable Zstandard builds (Jeevan Ladhe, Robert Haas, Michael Paquier)
-</para>
-</listitem>
+     <listitem>
+      <para>
+       Add configure option <link
+       linkend="configure-options-features"><option>--with-zstd</option></link>
+       to enable Zstandard builds (Jeevan Ladhe, Robert Haas, Michael Paquier)
+      </para>
+     </listitem>
 
 <!--
 Author: Peter Eisentraut <[email protected]>
 2021-11-22 [d6d1dfcc9] Add ABI extra field to fmgr magic block
 -->
 
-<listitem>
-<para>
-Add module field which can be customized for non-community <productname>PostgreSQL</productname> distributions (Peter Eisentraut)
-</para>
+     <listitem>
+      <para>
+       Add module field which can be customized for non-community
+       <productname>PostgreSQL</productname> distributions (Peter Eisentraut)
+      </para>
 
-<para>
-A module field mismatch would generate an error.
-</para>
-</listitem>
+      <para>
+       A module field mismatch would generate an error.
+      </para>
+     </listitem>
 
 <!--
 Author: Tom Lane <[email protected]>
 2021-12-11 [07eee5a0d] Create a new type category for "internal use" types.
 -->
 
-<listitem>
-<para>
-Create a new <structfield>pg_type.typcategory</structfield> value for <type>CHAR</type> (Tom Lane)
-</para>
+     <listitem>
+      <para>
+       Create a new <link
+       linkend="catalog-pg-type"><structfield>pg_type.typcategory</structfield></link>
+       value for <type>"char"</type> (Tom Lane)
+      </para>
 
-<para>
-Some internal-use-only types have also been assigned this new <structfield>pg_type.typcategory</structfield>.
-</para>
-</listitem>
+      <para>
+       Some internal-use-only types have also been assigned this column.
+      </para>
+     </listitem>
 
 <!--
 Author: Robert Haas <[email protected]>
 2022-01-18 [cc333f323] Modify pg_basebackup to use a new COPY subprotocol for b
 -->
 
-<listitem>
-<para>
-Add new protocol message <literal>TARGET</literal> to specify a new <command>COPY</command> method to be for base backups (Robert Haas)
-</para>
+     <listitem>
+      <para>
+       Add new protocol message <link
+       linkend="protocol-replication-base-backup"><literal>TARGET</literal></link>
+       to specify a new <command>COPY</command> method to be for base backups
+       (Robert Haas)
+      </para>
 
-<para>
-Modify <application>pg_basebackup</application> to use this method.
-</para>
-</listitem>
+      <para>
+       Modify <link
+       linkend="app-pgbasebackup"><application>pg_basebackup</application></link>
+       to use this method.
+      </para>
+     </listitem>
 
 <!--
 Author: Robert Haas <[email protected]>
@@ -2578,11 +2989,14 @@ Author: Robert Haas <[email protected]>
 2022-03-23 [ffd53659c] Replace BASE_BACKUP COMPRESSION_LEVEL option with COMPRE
 -->
 
-<listitem>
-<para>
-Add new protocol message <literal>COMPRESSION</literal> and <literal>COMPRESSION_DETAIL</literal> to specify the compression method and options (Robert Haas)
-</para>
-</listitem>
+     <listitem>
+      <para>
+       Add new protocol message <link
+       linkend="protocol-replication-base-backup"><literal>COMPRESSION</literal></link>
+       and <literal>COMPRESSION_DETAIL</literal> to specify the compression
+       method and options (Robert Haas)
+      </para>
+     </listitem>
 
 <!--
 Author: Robert Haas <[email protected]>
@@ -2591,103 +3005,113 @@ Author: Robert Haas <[email protected]>
 2022-02-10 [0d4513b61] Remove server support for the previous base backup proto
 -->
 
-<listitem>
-<para>
-Remove server support for old <literal>BASE_BACKUP</literal> command syntax and base backup protocol (Robert Haas)
-</para>
-</listitem>
+     <listitem>
+      <para>
+       Remove server support for old <literal>BASE_BACKUP</literal> command
+       syntax and base backup protocol (Robert Haas)
+      </para>
+     </listitem>
 
 <!--
 Author: Robert Haas <[email protected]>
 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>
+     <listitem>
+      <para>
+       Add support for extensions to set custom backup targets (Robert Haas)
+      </para>
+     </listitem>
 
 <!--
 Author: Jeff Davis <[email protected]>
 2022-04-06 [5c279a6d3] Custom WAL Resource Managers.
 -->
 
-<listitem>
-<para>
-Allow extensions to define their own <acronym>WAL</acronym> resource managers (Jeff Davis)
-</para>
-</listitem>
+     <listitem>
+      <para>
+       Allow extensions to define their own <acronym>WAL</acronym> resource
+       managers (Jeff Davis)
+      </para>
+     </listitem>
 
 <!--
 Author: Michael Paquier <[email protected]>
 2022-01-31 [d10e41d42] Introduce pg_settings_get_flags() to find flags associat
 -->
 
-<listitem>
-<para>
-Add function <function>pg_settings_get_flags()</function> to get the flags of server-side variables (Justin Pryzby)
-</para>
-</listitem>
+     <listitem>
+      <para>
+       Add function <link
+       linkend="functions-info-catalog-table"><function>pg_settings_get_flags()</function></link>
+       to get the flags of server-side variables (Justin Pryzby)
+      </para>
+     </listitem>
 
 <!--
 Author: Thomas Munro <[email protected]>
 2022-01-15 [7170f2159] Allow "in place" tablespaces.
 -->
 
-<listitem>
-<para>
-Add server variable <varname>allow_in_place_tablespaces</varname> for tablespace testing (Thomas Munro)
-</para>
-</listitem>
+     <listitem>
+      <para>
+       Add server variable <link
+       linkend="guc-allow-in-place-tablespaces"><varname>allow_in_place_tablespaces</varname></link>
+       for tablespace testing (Thomas Munro)
+      </para>
+     </listitem>
 
 <!--
 Author: Robert Haas <[email protected]>
 2022-04-08 [8ec569479] Apply PGDLLIMPORT markings broadly.
 -->
 
-<listitem>
-<para>
-Export all server variables on Windows using <envar>PGDLLIMPORT</envar> (Robert Haas)
-</para>
+     <listitem>
+      <para>
+       Export all server variables on Windows using <literal>PGDLLIMPORT</literal>
+       (Robert Haas)
+      </para>
 
-<para>
-Previously only specific variables where exported.
-</para>
-</listitem>
+      <para>
+       Previously only specific variables where exported.
+      </para>
+     </listitem>
 
 <!--
 Author: Peter Eisentraut <[email protected]>
 2021-11-05 [db7d1a7b0] pgcrypto: Remove non-OpenSSL support
 -->
 
-<listitem>
-<para>
-Require OpenSSL to build pgcrypto binaries (Peter Eisentraut)
-</para>
-</listitem>
+     <listitem>
+      <para>
+       Require OpenSSL to build <link
+       linkend="pgcrypto"><application>pgcrypto</application></link> binaries
+       (Peter Eisentraut)
+      </para>
+     </listitem>
 
 <!--
 Author: Andres Freund <[email protected]>
 2022-02-16 [19252e8ec] plpython: Reject Python 2 during build configuration.
 -->
 
-<listitem>
-<para>
-Disallow building with Python 2 (Andres Freund)
-</para>
-</listitem>
+     <listitem>
+      <para>
+       Disallow building with <application>Python 2</application> (Andres Freund)
+      </para>
+     </listitem>
 
 <!--
 Author: Tom Lane <[email protected]>
 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>
+     <listitem>
+      <para>
+       Adjust configure to require <application>Perl</application> version 5.8.3
+       or later (Dagfinn Ilmari Mannsåker)
+      </para>
+     </listitem>
 
     </itemizedlist>
 
@@ -2703,26 +3127,31 @@ Author: Jeff Davis <[email protected]>
 2022-04-08 [2258e76f9] Add contrib/pg_walinspect.
 -->
 
-<listitem>
-<para>
-Add new module pg_walinspect (Bharath Rupireddy)
-</para>
+     <listitem>
+      <para>
+       Add new module <link
+       linkend="pgwalinspect"><application>pg_walinspect</application></link>
+       (Bharath Rupireddy)
+      </para>
 
-<para>
-This gives <acronym>SQL</acronym>-level output similar to <application>pg_waldump</application>.
-</para>
-</listitem>
+      <para>
+       This gives <acronym>SQL</acronym>-level output similar to <link
+       linkend="pgwaldump"><application>pg_waldump</application></link>.
+      </para>
+     </listitem>
 
 <!--
 Author: Robert Haas <[email protected]>
 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>
+     <listitem>
+      <para>
+       Add module <link
+       linkend="basic-archive"><application>basic_archive</application></link>
+       to perform archiving via a library (Nathan Bossart)
+      </para>
+     </listitem>
 
 <!--
 Author: Robert Haas <[email protected]>
@@ -2731,56 +3160,61 @@ Author: Robert Haas <[email protected]>
 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>
+     <listitem>
+      <para>
+       Add module <application><link
+       linkend="basebackup-to-shell">basebackup_to_shell</link></application>
+       as a custom backup target (Robert Haas) contrib module.
+      </para>
+     </listitem>
 
 <!--
 Author: Michael Paquier <[email protected]>
 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>
+     <listitem>
+      <para>
+       Add <link
+       linkend="pgstatstatements"><application>pg_stat_statements</application></link>
+       output for temporary file block I/O (Masahiko Sawada)
+      </para>
+     </listitem>
 
 <!--
 Author: Magnus Hagander <[email protected]>
 2022-04-08 [57d6aea00] Add JIT counters to pg_stat_statements
 -->
 
-<listitem>
-<para>
-Add <acronym>JIT</acronym> counters to pg_stat_statements (Magnus Hagander)
-</para>
-</listitem>
+     <listitem>
+      <para>
+       Add <acronym>JIT</acronym> counters to pg_stat_statements (Magnus Hagander)
+      </para>
+     </listitem>
 
 <!--
 Author: Peter Eisentraut <[email protected]>
 2021-09-28 [c3b011d99] Support amcheck of sequences
 -->
 
-<listitem>
-<para>
-Allow amcheck to check sequences (Mark Dilger)
-</para>
-</listitem>
+     <listitem>
+      <para>
+       Allow <link linkend="amcheck"><application>amcheck</application></link>
+       to check sequences (Mark Dilger)
+      </para>
+     </listitem>
 
 <!--
 Author: Robert Haas <[email protected]>
 2021-11-05 [bd807be69] amcheck: Add additional TOAST pointer checks.
 -->
 
-<listitem>
-<para>
-Improve amcheck sanity checks for <acronym>TOAST</acronym> tables (Mark Dilger)
-</para>
-</listitem>
+     <listitem>
+      <para>
+       Improve <application>amcheck</application> sanity checks for
+       <acronym>TOAST</acronym> tables (Mark Dilger)
+      </para>
+     </listitem>
 
 <!--
 Author: Tomas Vondra <[email protected]>
@@ -2791,43 +3225,50 @@ Author: Tomas Vondra <[email protected]>
 2021-12-11 [4c6145b51] Add bool to btree_gist documentation
 -->
 
-<listitem>
-<para>
-Allow btree_gist indexes on boolean columns (Emre Hasegeli)
-</para>
+     <listitem>
+      <para>
+       Allow <link
+       linkend="btree-gist"><application>btree_gist</application></link> indexes
+       on boolean columns (Emre Hasegeli)
+      </para>
 
-<para>
-These can be used for exclusion constraints.
-</para>
-</listitem>
+      <para>
+       These can be used for exclusion constraints.
+      </para>
+     </listitem>
 
 <!--
 Author: Tom Lane <[email protected]>
 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>
+     <listitem>
+      <para>
+       Indicate the permissive/enforcing state in <link
+       linkend="sepgsql"><application>sepgsql</application></link> log messages
+       (Dave Page)
+      </para>
+     </listitem>
 
 <!--
 Author: Michael Paquier <[email protected]>
 2021-07-12 [127404fbe] pageinspect: Improve page_header() for pages of 32kB
 -->
 
-<listitem>
-<para>
-Fix pageinspect's <function>page_header()</function> to handle 32 kilobyte page sizes (Quan Zongliang)
-</para>
+     <listitem>
+      <para>
+       Fix <link
+       linkend="pageinspect"><application>pageinspect</application></link>'s
+       <function>page_header()</function> to handle 32 kilobyte page sizes
+       (Quan Zongliang)
+      </para>
 
-<para>
-Previously improper negative values could be returned in certain cases.
-</para>
-</listitem>
+      <para>
+       Previously improper negative values could be returned in certain cases.
+      </para>
+     </listitem>
 
-     </itemizedlist>
+    </itemizedlist>
 
     <sect4>
      <title><link linkend="postgres-fdw"><application>postgres_fdw</application></link></title>
@@ -2839,11 +3280,12 @@ Author: Tom Lane <[email protected]>
 2021-07-30 [5d44fff01] In postgres_fdw, allow CASE expressions to be pushed to
 -->
 
-<listitem>
-<para>
-Allow postgres_fdw to push down <literal>CASE</literal> expressions (Alexander Pyhalov)
-</para>
-</listitem>
+      <listitem>
+       <para>
+        Allow postgres_fdw to push down <literal>CASE</literal> expressions
+        (Alexander Pyhalov)
+       </para>
+      </listitem>
 
 <!--
 Author: Fujii Masao <[email protected]>
@@ -2854,30 +3296,38 @@ Author: Fujii Masao <[email protected]>
 2022-02-18 [94c49d534] postgres_fdw: Make postgres_fdw.application_name support
 -->
 
-<listitem>
-<para>
-Add server variable <varname>postgres_fdw.application_name</varname> to control the application name of postgres_fdw connections (Hayato Kuroda)
-</para>
+      <listitem>
+       <para>
+        Add server variable <varname>postgres_fdw.application_name</varname>
+        to control the application name of postgres_fdw connections (Hayato Kuroda)
+       </para>
 
-<para>
-Previously the remote <varname>application_name</varname> could only be set on the remote server or via postgres_fdw connection specification.  <varname>postgres_fdw.application_name</varname> also supports escape sequences for customization.
-</para>
-</listitem>
+       <para>
+        Previously the remote <link
+        linkend="guc-application-name"><varname>application_name</varname></link>
+        could only be set on the remote server or via
+        <application>postgres_fdw</application> connection specification.
+        <varname>postgres_fdw.application_name</varname> also supports escape
+        sequences for customization.
+       </para>
+      </listitem>
 
 <!--
 Author: Etsuro Fujita <[email protected]>
 2022-02-24 [04e706d42] postgres_fdw: Add support for parallel commit.
 -->
 
-<listitem>
-<para>
-Allow parallel commit on postgres_fdw servers (Etsuro Fujita)
-</para>
+      <listitem>
+       <para>
+        Allow parallel commit on <application>postgres_fdw</application> servers
+        (Etsuro Fujita)
+       </para>
 
-<para>
-This is enabled with the <literal>CREATE SERVER</literal> option <literal>parallel_commit</literal> when using postgres_fdw.
-</para>
-</listitem>
+       <para>
+        This is enabled with the <literal>CREATE SERVER</literal> option
+        <literal>parallel_commit</literal> when using postgres_fdw.
+       </para>
+      </listitem>
 
      </itemizedlist>