</para>
<para>
-The warning can be disabled via server variable <link linkend="guc-md5-password-warnings"><varname>md5_password_warnings</varname></link>. MD5 passwords were marked as deprecated in Postgres 18.
+The warning can be disabled via server variable <link linkend="guc-md5-password-warnings"><varname>md5_password_warnings</varname></link>. MD5 passwords were marked as deprecated in <productname>PostgreSQL</productname> 18.
</para>
</listitem>
</para>
<para>
-Postgres only supported <acronym>RADIUS</acronym> over <acronym>UDP</acronym>, which is unfixably insecure.
+<productname>PostgreSQL</productname> only supported <acronym>RADIUS</acronym> over <acronym>UDP</acronym>, which is unfixably insecure.
</para>
</listitem>
</para>
<para>
-This was changed to avoid security problems. <link linkend="pgupgrade"><application>pg_upgrade</application></link> will also disallow upgrading from clusters that use such names.
+This was changed to avoid security problems. <link linkend="pgupgrade"><application>pg_upgrade</application></link> will also disallow upgrading of clusters that use such names.
</para>
</listitem>
<listitem>
<para>
-Change the default index opclasses for inet and cidr data types from <xref linkend="btree-gist"/> to GiST (Tom Lane)
+Change the default index opclasses for <link linkend="datatype-net-types"><type>inet</type></link> and <link linkend="datatype-net-types"><type>cidr</type></link> data types from <xref linkend="btree-gist"/> to <link linkend="gist">GiST</link> (Tom Lane)
<ulink url="&commit_baseurl;b3b0b4571">§</ulink>
<ulink url="&commit_baseurl;b352d3d80">§</ulink>
</para>
</para>
<para>
-The goal of the reordering was to avoid dependencies, but it was imperfect. Postgres now uses the specified object ordering, except for foreign keys which are created last.
+The goal of the reordering was to avoid dependencies, but it was imperfect. <productname>PostgreSQL</productname> now uses the specified object ordering, except for foreign keys which are created last.
</para>
</listitem>
<listitem>
<para>
-Change <acronym>JIT</acronym> to be disabled by default (Jelte Fennema-Nio)
+Change <link linkend="jit"><acronym>JIT</acronym></link> to be disabled by default (Jelte Fennema-Nio)
<ulink url="&commit_baseurl;7f8c88c2b">§</ulink>
</para>
<para>
-Previously <acronym>JIT</acronym> was enabled by default, and activated based on optimizer costs. Unfortunately, this costing has been determined to be unreliable, so require sites that are doing many
+Previously <acronym>JIT</acronym> was enabled by default, and activated based on optimizer costs, but this costing has been determined to be unreliable. This this change requires sites that are doing many
large analytical queries to manually enable <acronym>JIT</acronym>.
</para>
</listitem>
<para>
Below you will find a detailed account of the changes between
- <productname>PostgreSQL</productname> 19 and the previous major
- release.
+ <productname>PostgreSQL</productname> 19 and the previous major
+ release.
</para>
<sect3 id="release-19-server">
<listitem>
<para>
-Allow <literal>NOT IN</literal> clauses to be converted to more efficient anti-joins when NULLs are not present (Richard Guo)
+Allow <literal>NOT IN</literal> clauses to be converted to more efficient <literal>ANTI JOIN</literal>s when NULLs are not present (Richard Guo)
<ulink url="&commit_baseurl;383eb21eb">§</ulink>
</para>
</listitem>
<!--
Author: Richard Guo <rguo@postgresql.org>
-2025-08-19 [24225ad9a] Pathify RHS unique-ification for semijoin planning
+2025-10-08 [8e1185910] Implement Eager Aggregation
+Author: Richard Guo <rguo@postgresql.org>
+2026-04-06 [bd94845e8] Fix collation handling for grouping keys in eager aggreg
+Author: Richard Guo <rguo@postgresql.org>
+2026-04-06 [3a08a2a8b] Fix volatile function evaluation in eager aggregation
-->
<listitem>
<para>
-Improve the planning of semijoins (Richard Guo)
-<ulink url="&commit_baseurl;24225ad9a">§</ulink>
+Allow some aggregate processing to be performed before joins (Richard Guo, Antonin Houska)
+<ulink url="&commit_baseurl;8e1185910">§</ulink>
+<ulink url="&commit_baseurl;bd94845e8">§</ulink>
+<ulink url="&commit_baseurl;3a08a2a8b">§</ulink>
+</para>
+
+<para>
+This can reduce the number of rows needed to be processed.
</para>
</listitem>
<!--
Author: Richard Guo <rguo@postgresql.org>
-2026-02-10 [f41ab5157] Teach planner to transform "x IS [NOT] DISTINCT FROM NUL
--->
-
-<listitem>
-<para>
-Convert <literal>IS [NOT] DISTINCT FROM NULL</literal> to <literal>IS [NOT] NULL</literal> during constant folding (Richard Guo)
-<ulink url="&commit_baseurl;f41ab5157">§</ulink>
-</para>
-
-<para>
-The latter form is more easily optimized.
-</para>
-</listitem>
-
-<!--
-Author: Richard Guo <rguo@postgresql.org>
-2025-07-22 [e2debb643] Reduce "Var IS [NOT] NULL" quals during constant folding
+2025-08-19 [24225ad9a] Pathify RHS unique-ification for semijoin planning
-->
<listitem>
<para>
-Perform earlier constant folding of Var <literal>IS [NOT] NULL</literal> in the optimizer (Richard Guo)
-<ulink url="&commit_baseurl;e2debb643">§</ulink>
-</para>
-
-<para>
-This allows for later optimizations.
+Improve the planning of semijoins (Richard Guo)
+<ulink url="&commit_baseurl;24225ad9a">§</ulink>
</para>
</listitem>
-<!--
-Author: Richard Guo <rguo@postgresql.org>
-2025-07-08 [55a780e94] Consider explicit incremental sort for Append and MergeA
--->
-
<listitem>
<para>
Allow Append and MergeAppend to consider explicit incremental sorts (Richard Guo)
<!--
Author: Richard Guo <rguo@postgresql.org>
-2025-10-08 [8e1185910] Implement Eager Aggregation
-Author: Richard Guo <rguo@postgresql.org>
-2026-04-06 [bd94845e8] Fix collation handling for grouping keys in eager aggreg
-Author: Richard Guo <rguo@postgresql.org>
-2026-04-06 [3a08a2a8b] Fix volatile function evaluation in eager aggregation
+2026-02-10 [f41ab5157] Teach planner to transform "x IS [NOT] DISTINCT FROM NUL
-->
<listitem>
<para>
-Allow some aggregate processing to be performed before joins (Richard Guo, Antonin Houska)
-<ulink url="&commit_baseurl;8e1185910">§</ulink>
-<ulink url="&commit_baseurl;bd94845e8">§</ulink>
-<ulink url="&commit_baseurl;3a08a2a8b">§</ulink>
+Convert <literal>IS [NOT] DISTINCT FROM NULL</literal> to <literal>IS [NOT] NULL</literal> during constant folding (Richard Guo)
+<ulink url="&commit_baseurl;f41ab5157">§</ulink>
</para>
<para>
-This can reduce the number of rows needed to be processed.
+The latter form is more easily optimized.
</para>
</listitem>
<!--
Author: Richard Guo <rguo@postgresql.org>
-2025-10-08 [185e30426] Allow negative aggtransspace to indicate unbounded state
+2026-02-10 [0a3796125] Optimize IS DISTINCT FROM with non-nullable inputs
-->
<listitem>
<para>
-Allow negative values of <link linkend="catalog-pg-aggregate"><structname>pg_aggregate</structname></link>.<link linkend="catalog-pg-aggregate"><structfield>aggtransspace</structfield></link> to indicate unbounded memory usage (Richard Guo)
-<ulink url="&commit_baseurl;185e30426">§</ulink>
-</para>
-
-<para>
-This information is used by the optimizer in planning memory usage.
+Simplify <literal>IS [NOT] DISTINCT FROM</literal> to equality/inequality operators when inputs are proven non-nullable (Richard Guo)
+<ulink url="&commit_baseurl;0a3796125">§</ulink>
</para>
</listitem>
<!--
Author: Richard Guo <rguo@postgresql.org>
-2026-02-10 [0aaf0de7f] Optimize BooleanTest with non-nullable input
+2025-07-22 [e2debb643] Reduce "Var IS [NOT] NULL" quals during constant folding
-->
<listitem>
<para>
-Simplify <literal>IS [NOT] TRUE/FALSE/UNKNOWN</literal> to plain boolean expressions when the input is proven non-nullable (Richard Guo)
-<ulink url="&commit_baseurl;0aaf0de7f">§</ulink>
+Perform earlier constant folding of <replaceable>var</replaceable> <literal>IS [NOT] NULL</literal> in the optimizer (Richard Guo)
+<ulink url="&commit_baseurl;e2debb643">§</ulink>
+</para>
+
+<para>
+This allows for later optimizations.
</para>
</listitem>
<!--
Author: Richard Guo <rguo@postgresql.org>
-2026-02-10 [0a3796125] Optimize IS DISTINCT FROM with non-nullable inputs
+2026-02-10 [0aaf0de7f] Optimize BooleanTest with non-nullable input
-->
<listitem>
<para>
-Simplify <literal>IS [NOT] DISTINCT FROM</literal> to equality/inequality operators when inputs are proven non-nullable (Richard Guo)
-<ulink url="&commit_baseurl;0a3796125">§</ulink>
+Simplify <literal>IS [NOT] TRUE/FALSE/UNKNOWN</literal> to plain boolean expressions when the input is proven non-nullable (Richard Guo)
+<ulink url="&commit_baseurl;0aaf0de7f">§</ulink>
</para>
</listitem>
+<!--
+Author: Richard Guo <rguo@postgresql.org>
+2025-07-08 [55a780e94] Consider explicit incremental sort for Append and MergeA
+-->
+
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
2025-11-19 [057012b20] Speed up eqjoinsel() with lots of MCV entries.
Adjust the optimizer to consider startup costs of partial paths (Robert Haas, Tomas Vondra)
<ulink url="&commit_baseurl;8300d3ad4">§</ulink>
</para>
+</listitem>
+
+<!--
+Author: Richard Guo <rguo@postgresql.org>
+2025-10-08 [185e30426] Allow negative aggtransspace to indicate unbounded state
+-->
+
+<listitem>
+<para>
+Allow negative values of <link linkend="catalog-pg-aggregate"><structname>pg_aggregate</structname></link>.<link linkend="catalog-pg-aggregate"><structfield>aggtransspace</structfield></link> to indicate unbounded memory usage (Richard Guo)
+<ulink url="&commit_baseurl;185e30426">§</ulink>
+</para>
+
+<para>
+This information is used by the optimizer in planning memory usage.
+</para>
</listitem>
</itemizedlist>
</para>
<para>
-New server variables are <link linkend="guc-io-min-workers"><varname>io_min_workers</varname></link>, <link linkend="guc-io-max-workers"><varname>io_max_workers</varname></link>, <link linkend="guc-io-worker-idle-timeout"><varname>io_worker_idle_timeout</varname></link>, and <link linkend="guc-io-worker-launch-interval"><varname>io_worker_launch_interval</varname></link>.
+The new server variables are <link linkend="guc-io-min-workers"><varname>io_min_workers</varname></link>, <link linkend="guc-io-max-workers"><varname>io_max_workers</varname></link>, <link linkend="guc-io-worker-idle-timeout"><varname>io_worker_idle_timeout</varname></link>, and <link linkend="guc-io-worker-launch-interval"><varname>io_worker_launch_interval</varname></link>.
</para>
</listitem>
<listitem>
<para>
-Change the default <acronym>TOAST</acronym> compression method from pglz to the more efficient lz4 (Euler Taveira)
+Change the default <acronym>TOAST</acronym> compression method from <literal>pglz</literal> to the more efficient <literal>lz4</literal> (Euler Taveira)
<ulink url="&commit_baseurl;34dfca293">§</ulink>
</para>
<listitem>
<para>
-Optimize <link linkend="plpgsql"><application>plpgsql</application></link> syntax <literal>SELECT simple-expression INTO</literal> var (Tom Lane)
+Optimize <link linkend="plpgsql"><application>plpgsql</application></link> syntax <literal>SELECT simple-expression INTO</literal> <replaceable>var</replaceable> (Tom Lane)
<ulink url="&commit_baseurl;ce8d5fe0e">§</ulink>
</para>
</listitem>
<listitem>
<para>
-Add system view <link linkend="pg-stat-lock-view"><structname>pg_stat_lock</structname></link> and function <link linkend="monitoring-pg-stat-lock-view"><function>pg_stat_get_lock()</function></link> to report per-lock type statistics (Bertrand Drouvot)
+Add system view <link linkend="pg-stat-lock-view"><structname>pg_stat_lock</structname></link> and function <link linkend="monitoring-pg-stat-lock-view"><function>pg_stat_get_lock()</function></link> to report per-lock-type statistics (Bertrand Drouvot)
<ulink url="&commit_baseurl;4019f725f">§</ulink>
</para>
</listitem>
</listitem>
<!--
-Author: Masahiko Sawada <msawada@postgresql.org>
-2025-10-08 [d3b6183dd] Add mem_exceeded_count column to pg_stat_replication_slo
+Author: Nathan Bossart <nathan@postgresql.org>
+2026-04-06 [87f61f0c8] Add pg_stat_autovacuum_scores system view.
-->
<listitem>
<para>
-Add mem_exceeded_count column to system view <link linkend="pg-stat-replication-slots-view"><structname>pg_stat_replication_slots</structname></link> (Bertrand Drouvot)
-<ulink url="&commit_baseurl;d3b6183dd">§</ulink>
+Add system view <link linkend="pg-stat-autovacuum-scores-view"><structname>pg_stat_autovacuum_scores</structname></link> to report per-table autovacuum details (Sami Imseih)
+<ulink url="&commit_baseurl;87f61f0c8">§</ulink>
</para>
+</listitem>
+
+<!--
+Author: Nathan Bossart <nathan@postgresql.org>
+2025-07-09 [167ed8082] Introduce pg_dsm_registry_allocations view.
+Author: Nathan Bossart <nathan@postgresql.org>
+2025-12-02 [f894acb24] Show size of DSAs and dshashes in pg_dsm_registry_alloca
+-->
+<listitem>
<para>
-This reports the number of times that <link linkend="guc-logical-decoding-work-mem"><varname>logical_decoding_work_mem</varname></link> was exceeded.
+Add system view <link linkend="view-pg-dsm-registry-allocations"><structname>pg_dsm_registry_allocations</structname></link> to report dynamic shared memory details (Florents Tselai, Nathan Bossart)
+<ulink url="&commit_baseurl;167ed8082">§</ulink>
+<ulink url="&commit_baseurl;f894acb24">§</ulink>
</para>
</listitem>
<!--
-Author: Michael Paquier <michael@paquier.xyz>
-2025-10-06 [a5b543258] Add stats_reset to pg_stat_all_{tables,indexes} and rela
+Author: Masahiko Sawada <msawada@postgresql.org>
+2025-12-09 [0d7895206] Add mode and started_by columns to pg_stat_progress_vacu
-->
<listitem>
<para>
-Add stats_reset column to system views <link linkend="pg-stat-all-tables-view"><structname>pg_stat_all_tables</structname></link>, <link linkend="pg-stat-all-indexes-view"><structname>pg_stat_all_indexes</structname></link>, and <link linkend="pg-statio-all-sequences-view"><structname>pg_statio_all_sequences</structname></link> (Bertrand Drouvot, Sami Imseih, Shihao Zhong)
-<ulink url="&commit_baseurl;a5b543258">§</ulink>
+Add vacuum initiation details to system view <link linkend="pg-stat-progress-vacuum-view"><structname>pg_stat_progress_vacuum</structname></link> (Shinya Kato)
+<ulink url="&commit_baseurl;0d7895206">§</ulink>
</para>
<para>
-It also appears in the <literal>sys</literal> and <literal>user</literal> view variants.
+The new <structfield>started_by</structfield> column reports the initiator of the vacuum, and <structfield>mode</structfield> indicates its aggressiveness.
</para>
</listitem>
<!--
-Author: Michael Paquier <michael@paquier.xyz>
-2025-10-08 [b71bae41a] Add stats_reset to pg_stat_user_functions
-Author: Fujii Masao <fujii@postgresql.org>
-2026-03-16 [8fe315f18] Add stats_reset column to pg_statio_all_sequences
+Author: Masahiko Sawada <msawada@postgresql.org>
+2025-12-09 [ab40db385] Add started_by column to pg_stat_progress_analyze view.
-->
<listitem>
<para>
-Add stats_reset column to system views <link linkend="pg-stat-user-functions-view"><structname>pg_stat_user_functions</structname></link> and <link linkend="pg-stat-database-conflicts-view"><structname>pg_stat_database_conflicts</structname></link> (Bertrand Drouvot, Shihao Zhong)
-<ulink url="&commit_baseurl;b71bae41a">§</ulink>
-<ulink url="&commit_baseurl;8fe315f18">§</ulink>
+Add analyze initiation details to system view <link linkend="pg-stat-progress-analyze-view"><structname>pg_stat_progress_analyze</structname></link> (Shinya Kato)
+<ulink url="&commit_baseurl;ab40db385">§</ulink>
+</para>
+
+<para>
+The new <structfield>started_by</structfield> column reports the initiator of the analyze.
</para>
</listitem>
<!--
-Author: Nathan Bossart <nathan@postgresql.org>
-2026-04-06 [87f61f0c8] Add pg_stat_autovacuum_scores system view.
+Author: Masahiko Sawada <msawada@postgresql.org>
+2025-10-08 [d3b6183dd] Add mem_exceeded_count column to pg_stat_replication_slo
-->
<listitem>
<para>
-Add system view <link linkend="pg-stat-autovacuum-scores-view"><structname>pg_stat_autovacuum_scores</structname></link> to report per-table autovacuum details (Sami Imseih)
-<ulink url="&commit_baseurl;87f61f0c8">§</ulink>
+Add <structfield>mem_exceeded_count</structfield> column to system view <link linkend="pg-stat-replication-slots-view"><structname>pg_stat_replication_slots</structname></link> (Bertrand Drouvot)
+<ulink url="&commit_baseurl;d3b6183dd">§</ulink>
+</para>
+
+<para>
+This reports the number of times that <link linkend="guc-logical-decoding-work-mem"><varname>logical_decoding_work_mem</varname></link> was exceeded.
</para>
</listitem>
<!--
-Author: Masahiko Sawada <msawada@postgresql.org>
-2025-12-09 [0d7895206] Add mode and started_by columns to pg_stat_progress_vacu
+Author: Michael Paquier <michael@paquier.xyz>
+2025-10-06 [a5b543258] Add stats_reset to pg_stat_all_{tables,indexes} and rela
-->
<listitem>
<para>
-Add vacuum initiation details to system view <link linkend="pg-stat-progress-vacuum-view"><structname>pg_stat_progress_vacuum</structname></link> (Shinya Kato)
-<ulink url="&commit_baseurl;0d7895206">§</ulink>
+Add <structfield>stats_reset</structfield> column to system views <link linkend="pg-stat-all-tables-view"><structname>pg_stat_all_tables</structname></link>, <link linkend="pg-stat-all-indexes-view"><structname>pg_stat_all_indexes</structname></link>, and <link linkend="pg-statio-all-sequences-view"><structname>pg_statio_all_sequences</structname></link> (Bertrand Drouvot, Sami Imseih, Shihao Zhong)
+<ulink url="&commit_baseurl;a5b543258">§</ulink>
</para>
<para>
-The new <literal>started_by</literal> column reports the initiator of the vacuum, and <literal>mode</literal> indicates its aggressiveness.
+It also appears in the <literal>sys</literal> and <literal>user</literal> view variants.
</para>
</listitem>
<!--
-Author: Masahiko Sawada <msawada@postgresql.org>
-2025-12-09 [ab40db385] Add started_by column to pg_stat_progress_analyze view.
+Author: Michael Paquier <michael@paquier.xyz>
+2025-10-08 [b71bae41a] Add stats_reset to pg_stat_user_functions
+Author: Fujii Masao <fujii@postgresql.org>
+2026-03-16 [8fe315f18] Add stats_reset column to pg_statio_all_sequences
-->
<listitem>
<para>
-Add analyze initiation details to system view <link linkend="pg-stat-progress-analyze-view"><structname>pg_stat_progress_analyze</structname></link> (Shinya Kato)
-<ulink url="&commit_baseurl;ab40db385">§</ulink>
+Add <structfield>stats_reset</structfield> column to system views <link linkend="pg-stat-user-functions-view"><structname>pg_stat_user_functions</structname></link> and <link linkend="pg-stat-database-conflicts-view"><structname>pg_stat_database_conflicts</structname></link> (Bertrand Drouvot, Shihao Zhong)
+<ulink url="&commit_baseurl;b71bae41a">§</ulink>
+<ulink url="&commit_baseurl;8fe315f18">§</ulink>
</para>
+</listitem>
+
+<!--
+Author: Andrew Dunstan <andrew@dunslane.net>
+2026-01-01 [f3c9e341c] Add paths of extensions to pg_available_extensions
+-->
+<listitem>
<para>
-The new <literal>started_by</literal> column reports the initiator of the analyze.
+Add <structfield>location</structfield> column to system views <link linkend="view-pg-available-extensions"><structname>pg_available_extensions</structname></link> and <link linkend="view-pg-available-extension-versions"><structname>pg_available_extension_versions</structname></link> to report the file system directory of extensions (Matheus Alcantara)
+<ulink url="&commit_baseurl;f3c9e341c">§</ulink>
</para>
</listitem>
<listitem>
<para>
-Add a column to system view <link linkend="pg-stat-progress-basebackup-view"><structname>pg_stat_progress_basebackup</structname></link> to report the type of backup (Shinya Kato)
+Add <structfield>backup_type</structfield> column to system view <link linkend="pg-stat-progress-basebackup-view"><structname>pg_stat_progress_basebackup</structname></link> to report the type of backup (Shinya Kato)
<ulink url="&commit_baseurl;deb674454">§</ulink>
</para>
<!--
Author: Michael Paquier <michael@paquier.xyz>
-2025-10-28 [f9a09aa29] Add wal_fpi_bytes to pg_stat_wal and pg_stat_get_backend
+2026-01-23 [a36164e74] Add WALRCV_CONNECTING state to the WAL receiver
-->
<listitem>
<para>
-Add reporting of the bytes written to <acronym>WAL</acronym> for full page images (Shinya Kato)
-<ulink url="&commit_baseurl;f9a09aa29">§</ulink>
-</para>
-
-<para>
-This is accessible via system view <link linkend="pg-stat-wal-view"><structname>pg_stat_wal</structname></link> and function <link linkend="pg-stat-get-backend-wal"><function>pg_stat_get_backend_wal()</function></link>.
+Add <literal>connecting</literal> value to system view column <link linkend="pg-stat-wal-receiver-view"><structname>pg_stat_wal_receiver</structname></link>.<link linkend="pg-stat-wal-receiver-view"><structfield>status</structfield></link> (Xuneng Zhou)
+<ulink url="&commit_baseurl;a36164e74">§</ulink>
</para>
</listitem>
<!--
Author: Michael Paquier <michael@paquier.xyz>
-2026-01-23 [a36164e74] Add WALRCV_CONNECTING state to the WAL receiver
+2025-10-28 [f9a09aa29] Add wal_fpi_bytes to pg_stat_wal and pg_stat_get_backend
-->
<listitem>
<para>
-Add <literal>connecting</literal> status to system view column <link linkend="pg-stat-wal-receiver-view"><structname>pg_stat_wal_receiver</structname></link>.<link linkend="pg-stat-wal-receiver-view"><structfield>status</structfield></link> (Xuneng Zhou)
-<ulink url="&commit_baseurl;a36164e74">§</ulink>
+Add reporting of the bytes written to <acronym>WAL</acronym> for full page images (Shinya Kato)
+<ulink url="&commit_baseurl;f9a09aa29">§</ulink>
+</para>
+
+<para>
+This is accessible via system view <link linkend="pg-stat-wal-view"><structname>pg_stat_wal</structname></link> and function <link linkend="pg-stat-get-backend-wal"><function>pg_stat_get_backend_wal()</function></link>.
</para>
</listitem>
Add information about range type extended statistics to system view <link linkend="view-pg-stats-ext-exprs"><structname>pg_stats_ext_exprs</structname></link> (Corey Huinker, Michael Paquier)
<ulink url="&commit_baseurl;307447e6d">§</ulink>
</para>
-</listitem>
-
-<!--
-Author: Nathan Bossart <nathan@postgresql.org>
-2025-07-09 [167ed8082] Introduce pg_dsm_registry_allocations view.
-Author: Nathan Bossart <nathan@postgresql.org>
-2025-12-02 [f894acb24] Show size of DSAs and dshashes in pg_dsm_registry_alloca
--->
-
-<listitem>
-<para>
-Add system view <link linkend="view-pg-dsm-registry-allocations"><structname>pg_dsm_registry_allocations</structname></link> to report dynamic shared memory details (Florents Tselai, Nathan Bossart)
-<ulink url="&commit_baseurl;167ed8082">§</ulink>
-<ulink url="&commit_baseurl;f894acb24">§</ulink>
-</para>
-</listitem>
-
-<!--
-Author: Andrew Dunstan <andrew@dunslane.net>
-2026-01-01 [f3c9e341c] Add paths of extensions to pg_available_extensions
--->
-
-<listitem>
-<para>
-Add column <literal>location</literal> to system views <link linkend="view-pg-available-extensions"><structname>pg_available_extensions</structname></link> and <link linkend="view-pg-available-extension-versions"><structname>pg_available_extension_versions</structname></link> to report the file system directory of extensions (Matheus Alcantara)
-<ulink url="&commit_baseurl;f3c9e341c">§</ulink>
-</para>
</listitem>
</itemizedlist>
</para>
<para>
-The new format is <literal>type:level</literal>. A value without a colon controls unspecified process types, enabling backward compatibility.
+The new format is <replaceable>type</replaceable>:<replaceable>level</replaceable>. A value without a colon controls unspecified process types, enabling backward compatibility.
</para>
</listitem>
</para>
<para>
-Server variable <link linkend="guc-log-autovacuum-min-duration"><varname>log_autovacuum_min_duration</varname></link> now only controls logging of automatic vacuum operations.
+Server variable <link linkend="guc-log-autovacuum-min-duration"><varname>log_autovacuum_min_duration</varname></link> now only controls logging of autovacuum operations.
</para>
</listitem>
<listitem>
<para>
-Add server variable <link linkend="guc-debug-print-parse"><varname>debug_print_parse</varname></link> to log the raw parse tree (Chao Li)
+Add server variable <link linkend="guc-debug-print-parse"><varname>debug_print_parse</varname></link> to log raw parse trees (Chao Li)
<ulink url="&commit_baseurl;06473f5a3">§</ulink>
</para>
<listitem>
<para>
-Add IO wait events for <link linkend="sql-copy"><command>COPY FROM/TO</command></link> on a pipe/file/program (Nikolay Samokhvalov)
+Add IO wait events for <link linkend="sql-copy"><command>COPY FROM/TO</command></link> on a pipe, file, or program (Nikolay Samokhvalov)
<ulink url="&commit_baseurl;e05a24c2d">§</ulink>
</para>
</listitem>
<listitem>
<para>
-Have pg_get_sequence_data function return the sequence page <acronym>LSN</acronym> (Vignesh C)
+Have <link linkend="func-pg-get-sequence-data"><function>pg_get_sequence_data()</function></link> return the sequence page <acronym>LSN</acronym> (Vignesh C)
<ulink url="&commit_baseurl;b93172ca5">§</ulink>
</para>
</listitem>
</para>
<para>
-The previous warning was 40 million. Warnings are issued to clients and the server log.
+The previous warning was 40 million. Warnings are issued to clients and in the server log.
</para>
</listitem>
<listitem>
<para>
-Allow standbys to wait for <acronym>LSN</acronym> values to be written, flushed, or replayed via <link linkend="sql-wait-for"><command>WAIT FOR</command></link> (Kartyshov Ivan, Alexander Korotkov, Xuneng Zhou)
+Add <link linkend="sql-wait-for"><command>WAIT FOR</command></link> command to allow standbys to wait for <acronym>LSN</acronym> values to be written, flushed, or replayed (Kartyshov Ivan, Alexander Korotkov, Xuneng Zhou)
<ulink url="&commit_baseurl;447aae13b">§</ulink>
<ulink url="&commit_baseurl;49a181b5d">§</ulink>
</para>
<listitem>
<para>
-Improve function <link linkend="pg-sync-replication-slots"><function>pg_sync_replication_slots()</function></link> to wait for the synchronization completion (Ajin Cherian, Zhijie Hou)
+Improve function <link linkend="pg-sync-replication-slots"><function>pg_sync_replication_slots()</function></link> to wait for replication synchronization completion (Ajin Cherian, Zhijie Hou)
<ulink url="&commit_baseurl;0d2d4a0ec">§</ulink>
</para>
</para>
<para>
-This allows subscriptions to use different <link linkend="guc-wal-receiver-timeout"><varname>wal_receiver_timeout</varname></link> values.
+This allows subscribers to use different <link linkend="guc-wal-receiver-timeout"><varname>wal_receiver_timeout</varname></link> values.
</para>
</listitem>
<listitem>
<para>
-Rename column sync_error_count to sync_table_error_count in system view <link linkend="pg-stat-subscription-stats"><structname>pg_stat_subscription_stats</structname></link> (Vignesh C)
+Rename column <structfield>sync_error_count</structfield> to <structfield>sync_table_error_count</structfield> in system view <link linkend="pg-stat-subscription-stats"><structname>pg_stat_subscription_stats</structname></link> (Vignesh C)
<ulink url="&commit_baseurl;3edaf29fa">§</ulink>
</para>
</para>
<para>
-The new columns are slotsync_skip_count, slotsync_last_skip, and slotsync_skip_reason.
+The new columns are <structfield>slotsync_skip_count</structfield>, <structfield>slotsync_last_skip</structfield>, and <structfield>slotsync_skip_reason</structfield>.
</para>
</listitem>
<listitem>
<para>
-Add <link linkend="sql-update"><command>UPDATE</command></link>/<link linkend="sql-delete"><command>DELETE FOR PORTION OF</command></link> (Paul A. Jungwirth)
+Add <literal>FOR PORTION OF</literal> clause to <link linkend="sql-update"><command>UPDATE</command></link> and <link linkend="sql-delete"><command>DELETE</command></link> (Paul A. Jungwirth)
<ulink url="&commit_baseurl;8e72d914c">§</ulink>
<ulink url="&commit_baseurl;b6ccd30d8">§</ulink>
</para>
<para>
-This allows operations on a temporal range.
+This allows operations on temporal ranges.
</para>
</listitem>
<listitem>
<para>
-Add <literal>GROUP BY ALL</literal> syntax to automatically group all non-aggregate and non-window function target list parameters (David Christensen)
+Add <literal>GROUP BY ALL</literal> syntax to automatically group all non-aggregate and non-window-function target list parameters (David Christensen)
<ulink url="&commit_baseurl;ef38a4d97">§</ulink>
</para>
</listitem>
<listitem>
<para>
-Allow window functions to ignore NULLs with <literal>IGNORE NULLS</literal>/<literal>RESPECT NULLS</literal> option (Oliver Ford, Tatsuo Ishii)
+Allow window functions to ignore NULLs with the <literal>IGNORE NULLS</literal>/<literal>RESPECT NULLS</literal> clause (Oliver Ford, Tatsuo Ishii)
<ulink url="&commit_baseurl;25a30bbd4">§</ulink>
</para>
<para>
-Supported window functions are lead, lag, first_value, last_value and nth_value.
+Supported window functions are <link linkend="functions-window"><function>lead()</function></link>, <link linkend="functions-window"><function>lag()</function></link>, <link linkend="functions-window"><function>first_value()</function></link>, <link linkend="functions-window"><function>last_value()</function></link>, and <link linkend="functions-window"><function>nth_value()</function></link>.
</para>
</listitem>
<listitem>
<para>
-Create a <link linkend="sql-repack"><command>REPACK</command></link> command that replaces <link linkend="sql-vacuum"><command>VACUUM FULL</command></link> and <link linkend="sql-cluster"><command>CLUSTER</command></link> (Antonin Houska)
+Add <link linkend="sql-repack"><command>REPACK</command></link> command which replaces <link linkend="sql-vacuum"><command>VACUUM FULL</command></link> and <link linkend="sql-cluster"><command>CLUSTER</command></link> (Antonin Houska)
<ulink url="&commit_baseurl;ac58465e0">§</ulink>
</para>
<para>
-The two former commands did similar things, but with confusing names, so unify them as <link linkend="sql-repack"><command>REPACK</command></link>.
+The two former commands did similar things, but with confusing names, so unify them as <link linkend="sql-repack"><command>REPACK</command></link>. The old commands have been retained for compatibility.
</para>
</listitem>
</para>
<para>
-This will help illustrate why Memoize was chosen.
+This can show why Memoize was chosen.
</para>
</listitem>
<listitem>
<para>
-Add the 64-bit unsigned data type oid8 (Michael Paquier)
+Add the 64-bit unsigned data type <type>oid8</type> (Michael Paquier)
<ulink url="&commit_baseurl;b139bd3b6">§</ulink>
</para>
</listitem>
<listitem>
<para>
-Add more jsonpath string methods (Florents Tselai, David E. Wheeler)
+Add more <type>jsonpath</type> string methods (Florents Tselai, David E. Wheeler)
<ulink url="&commit_baseurl;bd4f879a9">§</ulink>
</para>
<para>
-They are l/r/<link linkend="functions-string"><function>btrim()</function></link>, <link linkend="functions-string"><function>lower()</function></link>, <link linkend="functions-string"><function>upper()</function></link>, <link linkend="functions-string"><function>initcap()</function></link>, <link linkend="functions-string"><function>replace()</function></link>, and <link linkend="functions-string"><function>split_part()</function></link>. These are immutable like their non-<acronym>JSON</acronym> string variants.
+They are <link linkend="functions-sqljson-path-operators"><function>ltrim()</function></link>, <link linkend="functions-sqljson-path-operators"><function>rtrim()</function></link>, <link linkend="functions-sqljson-path-operators"><function>btrim()</function></link>, <link linkend="functions-sqljson-path-operators"><function>lower()</function></link>, <link linkend="functions-sqljson-path-operators"><function>upper()</function></link>, <link linkend="functions-sqljson-path-operators"><function>initcap()</function></link>, <link linkend="functions-sqljson-path-operators"><function>replace()</function></link>, and <link linkend="functions-sqljson-path-operators"><function>split_part()</function></link>. These are immutable like their non-<acronym>JSON</acronym> string variants.
</para>
</listitem>
<listitem>
<para>
-Allow casts between bytea and uuid data types (Dagfinn Ilmari Mannsåker, Aleksander Alekseev)
+Allow casts between <type>bytea</type> and <type>uuid</type> data types (Dagfinn Ilmari Mannsåker, Aleksander Alekseev)
<ulink url="&commit_baseurl;ba21f5bf8">§</ulink>
</para>
</listitem>
<listitem>
<para>
-Add ability to cast between database names and oids using regdatabase (Ian Lawrence Barwick)
+Add ability to cast between database names and <type>oid</type>s using <type>regdatabase</type> (Ian Lawrence Barwick)
<ulink url="&commit_baseurl;bd09f024a">§</ulink>
</para>
</listitem>
<listitem>
<para>
-Add functions <link linkend="functions-tid"><function>tid_block()</function></link> and <link linkend="functions-tid"><function>tid_offset()</function></link> to extract block numbers and offsets from tid values (Ayush Tiwari)
+Add functions <link linkend="functions-tid"><function>tid_block()</function></link> and <link linkend="functions-tid"><function>tid_offset()</function></link> to extract block numbers and offsets from <type>tid</type> values (Ayush Tiwari)
<ulink url="&commit_baseurl;df6949ccf">§</ulink>
</para>
</listitem>
<listitem>
<para>
-Add date, timestamp, and timestamptz versions of random(min, max) (Damien Clochard, Dean Rasheed)
+Add <type>date</type>, <type>timestamp</type>, and <type>timestamptz</type> versions of random(min, max) (Damien Clochard, Dean Rasheed)
<ulink url="&commit_baseurl;faf071b55">§</ulink>
<ulink url="&commit_baseurl;9c24111c4">§</ulink>
</para>
<listitem>
<para>
-Add libpq connection setting <varname>oauth_ca_file</varname> to specify the <acronym>OAUTH</acronym> certificate authority file (Jonathan Gonzalez V., Jacob Champion)
+Add libpq connection parameter <varname>oauth_ca_file</varname> to specify the <acronym>OAUTH</acronym> certificate authority file (Jonathan Gonzalez V., Jacob Champion)
<ulink url="&commit_baseurl;993368113">§</ulink>
</para>
</para>
<para>
-This works when <link linkend="app-psql"><application>psql</application></link> is connected to Postgres 18 or later.
+This works when <link linkend="app-psql"><application>psql</application></link> is connected to <productname>PostgreSQL</productname> 18 or later.
</para>
</listitem>
</para>
<para>
-The \pset variables are display_true and display_false.
+The \pset variables are <varname>display_true</varname> and <varname>display_false</varname>.
</para>
</listitem>
<listitem>
<para>
-Allow <link linkend="app-pgverifybackup"><application>pg_verifybackup</application></link> to read <acronym>WAL</acronym> files stored in tar archives (Amul Sul)
+Allow <link linkend="app-pgverifybackup"><application>pg_verifybackup</application></link> to read <acronym>WAL</acronym> files stored in <application>tar</application> archives (Amul Sul)
<ulink url="&commit_baseurl;b3cf461b3">§</ulink>
</para>
</para>
<para>
-The new output formats are custom, directory, or tar.
+The new output formats are <literal>custom</literal>, <literal>directory</literal>, or <literal>tar</literal>.
</para>
</listitem>
</para>
<para>
-This is possible when upgrading from Postgres 16 and later.
+This is possible when upgrading from <productname>PostgreSQL</productname> 16 and later.
</para>
</listitem>
</para>
<para>
-This is used when upgrading from Postgres major versions 12-15.
+This is used when upgrading from <productname>PostgreSQL</productname> major versions 12-15.
</para>
</listitem>
<listitem>
<para>
-Improve <link linkend="pgupgrade"><application>pg_upgrade</application></link> performance when restoring large object metadata for origin servers version 11 and earlier (Nathan Bossart)
+Improve <link linkend="pgupgrade"><application>pg_upgrade</application></link> performance when restoring large object metadata from <productname>PostgreSQL</productname> version 11 and earlier (Nathan Bossart)
<ulink url="&commit_baseurl;b33f75361">§</ulink>
</para>
</listitem>
<listitem>
<para>
-Allow execution stack backtraces on Windows using DbgHelp (Bryan Green)
+Allow execution stack backtraces on Windows using <literal>DbgHelp</literal> (Bryan Green)
<ulink url="&commit_baseurl;65707ed9a">§</ulink>
</para>
</listitem>
<listitem>
<para>
-Require Meson version 0.57.2 or later (Peter Eisentraut)
+Require <application>Meson</application> version 0.57.2 or later (Peter Eisentraut)
<ulink url="&commit_baseurl;f039c2244">§</ulink>
</para>
</listitem>
<listitem>
<para>
-Add Meson option to build both shared and static libraries, or only shared (Peter Eisentraut)
+Add <application>Meson</application> option to build both shared and static libraries, or only shared (Peter Eisentraut)
<ulink url="&commit_baseurl;78727dcba">§</ulink>
</para>
</listitem>
<listitem>
<para>
-Add hooks planner_setup_hook, planner_shutdown_hook, joinrel_setup_hook, and join_path_setup_hook (Robert Haas)
+Add hooks <literal>planner_setup_hook</literal>, <literal>planner_shutdown_hook</literal>, <literal>joinrel_setup_hook</literal>, and <literal>join_path_setup_hook</literal> (Robert Haas)
<ulink url="&commit_baseurl;94f3ad396">§</ulink>
<ulink url="&commit_baseurl;4020b370f">§</ulink>
</para>
<listitem>
<para>
-Change function prototypes to use uint* instead of bit* typedefs (Nathan Bossart)
+Change function prototypes to use <literal>uint*</literal> instead of <literal>bit*</literal> typedefs (Nathan Bossart)
<ulink url="&commit_baseurl;bab2f27ea">§</ulink>
</para>
</listitem>
</listitem>
<!--
-Author: Michael Paquier <michael@paquier.xyz>
-2026-03-12 [02976b0a1] doc: Document variables for path substitution in SQL tes
+Author: Peter Eisentraut <peter@eisentraut.org>
+2025-11-05 [e4d8a2af0] doc: Add section for temporal tables
-->
<listitem>
<para>
-Document the environment variables that control the regression tests (Michael Paquier)
-<ulink url="&commit_baseurl;02976b0a1">§</ulink>
+Add documentation section about temporal tables (Paul A. Jungwirth)
+<ulink url="&commit_baseurl;e4d8a2af0">§</ulink>
</para>
</listitem>
<!--
-Author: Peter Eisentraut <peter@eisentraut.org>
-2025-11-05 [e4d8a2af0] doc: Add section for temporal tables
+Author: Michael Paquier <michael@paquier.xyz>
+2026-03-12 [02976b0a1] doc: Document variables for path substitution in SQL tes
-->
<listitem>
<para>
-Add documentation section about temporal tables (Paul A. Jungwirth)
-<ulink url="&commit_baseurl;e4d8a2af0">§</ulink>
+Document the environment variables that control the regression tests (Michael Paquier)
+<ulink url="&commit_baseurl;02976b0a1">§</ulink>
</para>
</listitem>
</para>
</listitem>
+<!--
+Author: Michael Paquier <michael@paquier.xyz>
+2025-07-02 [bee23ea4d] Show sizes of FETCH queries as constants in pg_stat_stat
+-->
+
+<listitem>
+<para>
+Show sizes of <link linkend="sql-fetch"><command>FETCH</command></link> queries as constants in <xref linkend="pgstatstatements"/> (Sami Imseih)
+<ulink url="&commit_baseurl;bee23ea4d">§</ulink>
+</para>
+
+<para>
+Fetches of different sizes will now be grouped together in <xref linkend="pgstatstatements"/> output.
+</para>
+</listitem>
+
+<!--
+Author: Michael Paquier <michael@paquier.xyz>
+2025-07-31 [3357471cf] pg_stat_statements: Add counters for generic and custom
+-->
+
+<listitem>
+<para>
+Add generic and custom plans counts to <xref linkend="pgstatstatements"/> (Sami Imseih)
+<ulink url="&commit_baseurl;3357471cf">§</ulink>
+</para>
+</listitem>
+
<!--
Author: Michael Paquier <michael@paquier.xyz>
2025-11-24 [4b203d499] pg_buffercache: Add pg_buffercache_os_pages
</para>
<para>
-This is enabled for <xref linkend="postgres-fdw"/> by using the option restore_stats. The default is for <link linkend="sql-analyze"><command>ANALYZE</command></link> to retrieve rows from the remote server to locally generate statistics.
+This is enabled for <xref linkend="postgres-fdw"/> by using the option <literal>restore_stats</literal>. The default is for <link linkend="sql-analyze"><command>ANALYZE</command></link> to retrieve rows from the remote server to locally generate statistics.
</para>
</listitem>
<listitem>
<para>
-Allow <xref linkend="fuzzystrmatch"/>'s dmetaphone to use single-byte encodings beyond <acronym>ASCII</acronym> (Peter Eisentraut)
+Allow <xref linkend="fuzzystrmatch"/>'s <function>dmetaphone()</function> to use single-byte encodings beyond <acronym>ASCII</acronym> (Peter Eisentraut)
<ulink url="&commit_baseurl;e39ece034">§</ulink>
</para>
</listitem>
</itemizedlist>
- <sect4 id="release-19-pgstatstatements">
- <title><xref linkend="pgstatstatements"/></title>
-
- <itemizedlist>
-<!--
-Author: Michael Paquier <michael@paquier.xyz>
-2025-07-02 [bee23ea4d] Show sizes of FETCH queries as constants in pg_stat_stat
--->
-
-<listitem>
-<para>
-Show sizes of <link linkend="sql-fetch"><command>FETCH</command></link> queries as constants in <xref linkend="pgstatstatements"/> (Sami Imseih)
-<ulink url="&commit_baseurl;bee23ea4d">§</ulink>
-</para>
-
-<para>
-Fetches of different sizes will now be grouped together in <xref linkend="pgstatstatements"/> output.
-</para>
-</listitem>
-
-<!--
-Author: Michael Paquier <michael@paquier.xyz>
-2025-07-31 [3357471cf] pg_stat_statements: Add counters for generic and custom
--->
-
-<listitem>
-<para>
-Add generic and custom plans counts to <xref linkend="pgstatstatements"/> (Sami Imseih)
-<ulink url="&commit_baseurl;3357471cf">§</ulink>
-</para>
-</listitem>
-
- </itemizedlist>
-
- </sect4>
-
</sect3>
</sect2>