<!-- doc/src/sgml/release-14.sgml -->
<!-- See header comment in release.sgml about typical markup -->

 <sect1 id="release-14-22">
  <title>Release 14.22</title>

  <formalpara>
  <title>Release date:</title>
  <para>2026-02-26</para>
  </formalpara>

  <para>
   This release contains a small number of fixes from 14.21.
   For information about new features in major release 14, see
   <xref linkend="release-14"/>.
  </para>

  <para>
   The <productname>PostgreSQL</productname> community will stop
   releasing updates for the 14.X release series in November 2026.
   Users are encouraged to update to a newer release branch soon.
  </para>

  <sect2>
   <title>Migration to Version 14.22</title>

   <para>
    A dump/restore is not required for those running 14.X.
   </para>

   <para>
    However, if you are upgrading from a version earlier than 14.19,
    see <xref linkend="release-14-19"/>.
   </para>
  </sect2>

  <sect2>
   <title>Changes</title>

   <itemizedlist>

    <listitem>
<!--
Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
Branch: REL_18_STABLE [817f74600] 2026-02-16 17:16:59 +0200
Branch: REL_17_STABLE [4a36c89f1] 2026-02-16 17:18:17 +0200
Branch: REL_16_STABLE [23064542f] 2026-02-16 17:20:29 +0200
Branch: REL_15_STABLE [899de38d8] 2026-02-16 17:20:51 +0200
Branch: REL_14_STABLE [547a8aaa7] 2026-02-16 17:20:56 +0200
-->
     <para>
      Fix failure after replaying a multixid truncation record from WAL
      that was generated by an older minor version (Heikki Linnakangas)
      <ulink url="&commit_baseurl;547a8aaa7">&sect;</ulink>
     </para>

     <para>
      Erroneous logic for coping with the way that previous versions
      handled multixid wraparound led to replay failure, with messages
      like <quote>could not access status of transaction</quote>.
      A typical scenario in which this could occur is a standby server of
      the latest minor version consuming WAL from a primary server of an
      older version.
     </para>
    </listitem>

    <listitem>
<!--
Author: Noah Misch <noah@leadboat.com>
Branch: master [9f4fd119b] 2026-02-14 12:16:16 -0800
Branch: REL_18_STABLE [6e045e1a6] 2026-02-14 12:16:19 -0800
Branch: REL_17_STABLE [5d5232bc3] 2026-02-14 12:16:20 -0800
Branch: REL_16_STABLE [bdfb37228] 2026-02-14 12:16:20 -0800
Branch: REL_15_STABLE [a20eb248c] 2026-02-14 12:16:21 -0800
Branch: REL_14_STABLE [14b1fd617] 2026-02-14 12:16:21 -0800
Branch: master [8cef93d8a] 2026-02-16 18:04:58 -0800
Branch: REL_18_STABLE [d04b34d68] 2026-02-16 18:05:01 -0800
Branch: REL_17_STABLE [50d361f62] 2026-02-16 18:05:02 -0800
Branch: REL_16_STABLE [2280ab354] 2026-02-16 18:05:02 -0800
Branch: REL_15_STABLE [ec86152e0] 2026-02-16 18:05:02 -0800
Branch: REL_14_STABLE [a0769e74d] 2026-02-16 18:05:03 -0800
Branch: master [4644f8b23] 2026-02-14 12:16:16 -0800
Branch: REL_18_STABLE [4174e41b9] 2026-02-14 12:16:19 -0800
Branch: REL_17_STABLE [8e73530f1] 2026-02-14 12:16:20 -0800
Branch: REL_16_STABLE [45eb47230] 2026-02-14 12:16:20 -0800
Branch: REL_15_STABLE [5b305ebcc] 2026-02-14 12:16:20 -0800
Branch: REL_14_STABLE [44fc85bbf] 2026-02-14 12:16:21 -0800
-->
     <para>
      Avoid incorrect complaint of invalid encoding
      when <function>substring()</function> is applied
      to <quote>toasted</quote> data (Noah Misch)
      <ulink url="&commit_baseurl;14b1fd617">&sect;</ulink>
      <ulink url="&commit_baseurl;a0769e74d">&sect;</ulink>
      <ulink url="&commit_baseurl;44fc85bbf">&sect;</ulink>
     </para>

     <para>
      The fix for CVE-2026-2006 was too aggressive and could raise an
      error about an incomplete character in cases that are actually
      valid.
     </para>
    </listitem>

    <listitem>
<!--
Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
Branch: master [78a5e3074] 2026-02-11 18:50:57 +0200
Branch: REL_18_STABLE [53463b4b2] 2026-02-11 18:51:06 +0200
Branch: REL_17_STABLE [842473337] 2026-02-11 18:51:12 +0200
Branch: REL_16_STABLE [2332911ae] 2026-02-11 18:51:19 +0200
Branch: REL_15_STABLE [ebc53ca7b] 2026-02-11 18:51:25 +0200
Branch: REL_14_STABLE [82b495cdd] 2026-02-11 18:51:32 +0200
-->
     <para>
      Fix <function>pg_stat_get_backend_wait_event()</function>
      and <function>pg_stat_get_backend_wait_event_type()</function>
      to report values for auxiliary processes (Heikki Linnakangas)
      <ulink url="&commit_baseurl;82b495cdd">&sect;</ulink>
     </para>

     <para>
      Previously these functions returned NULL for auxiliary processes,
      but that's inconsistent with
      the <structname>pg_stat_activity</structname> view.
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [9863c9075] 2026-02-11 16:53:14 -0500
Branch: REL_18_STABLE [ce4b7e3a1] 2026-02-11 16:53:14 -0500
Branch: REL_17_STABLE [dfd850980] 2026-02-11 16:53:14 -0500
Branch: REL_16_STABLE [c66f4cff1] 2026-02-11 16:53:14 -0500
Branch: REL_15_STABLE [254b15cbf] 2026-02-11 16:53:14 -0500
Branch: REL_14_STABLE [2b93d3820] 2026-02-11 16:53:14 -0500
-->
     <para>
      Fix casting a composite-type variable to a domain type when
      returning its value from a PL/pgSQL function (Tom Lane)
      <ulink url="&commit_baseurl;2b93d3820">&sect;</ulink>
     </para>

     <para>
      If the variable's value is NULL, a <quote>cache lookup failed for
      type 0</quote> error resulted.
     </para>
    </listitem>

    <listitem>
<!--
Author: Michael Paquier <michael@paquier.xyz>
Branch: master [a6f823e77] 2026-02-17 08:41:26 +0900
Branch: REL_18_STABLE [4a0843c53] 2026-02-17 08:41:30 +0900
Branch: REL_17_STABLE [0dfbe42da] 2026-02-17 08:41:32 +0900
Branch: REL_16_STABLE [31d0b917d] 2026-02-17 08:41:34 +0900
Branch: REL_15_STABLE [63c05e03b] 2026-02-17 08:41:35 +0900
Branch: REL_14_STABLE [f604cc695] 2026-02-17 08:41:37 +0900
-->
     <para>
      Fix potential null pointer dereference
      in <filename>contrib/hstore</filename>'s binary input function
      (Michael Paquier)
      <ulink url="&commit_baseurl;f604cc695">&sect;</ulink>
     </para>

     <para>
      <type>hstore</type>'s receive function crashed on input containing
      duplicate keys.  <type>hstore</type> values generated by Postgres
      would never contain duplicate keys, so this mistake has gone
      unnoticed.  The crash could be provoked by malicious or corrupted
      data.
     </para>
    </listitem>

   </itemizedlist>

  </sect2>
 </sect1>

 <sect1 id="release-14-21">
  <title>Release 14.21</title>

  <formalpara>
  <title>Release date:</title>
  <para>2026-02-12</para>
  </formalpara>

  <para>
   This release contains a variety of fixes from 14.20.
   For information about new features in major release 14, see
   <xref linkend="release-14"/>.
  </para>

  <para>
   The <productname>PostgreSQL</productname> community will stop
   releasing updates for the 14.X release series in November 2026.
   Users are encouraged to update to a newer release branch soon.
  </para>

  <sect2>
   <title>Migration to Version 14.21</title>

   <para>
    A dump/restore is not required for those running 14.X.
   </para>

   <para>
    However, if you are upgrading from a version earlier than 14.19,
    see <xref linkend="release-14-19"/>.
   </para>
  </sect2>

  <sect2>
   <title>Changes</title>

   <itemizedlist>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [60e7ae41a] 2026-02-09 09:57:43 -0500
Branch: REL_18_STABLE [3b6588cd9] 2026-02-09 09:57:44 -0500
Branch: REL_17_STABLE [3d160401b] 2026-02-09 09:57:44 -0500
Branch: REL_16_STABLE [595956fc7] 2026-02-09 09:57:44 -0500
Branch: REL_15_STABLE [429aeaebd] 2026-02-09 09:57:44 -0500
Branch: REL_14_STABLE [b39d38139] 2026-02-09 09:57:44 -0500
-->
     <para>
      Guard against unexpected dimensions
      of <type>oidvector</type>/<type>int2vector</type> (Tom Lane)
      <ulink url="&commit_baseurl;b39d38139">&sect;</ulink>
     </para>

     <para>
      These data types are expected to be 1-dimensional arrays containing
      no nulls, but there are cast pathways that permit violating those
      expectations.  Add checks to some functions that were depending on
      those expectations without verifying them, and could misbehave in
      consequence.
     </para>

     <para>
      The <productname>PostgreSQL</productname> Project thanks
      Altan Birler for reporting this problem.
      (CVE-2026-2003)
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [841d42cc4] 2026-02-09 10:07:31 -0500
Branch: REL_18_STABLE [66ddac698] 2026-02-09 10:07:31 -0500
Branch: REL_17_STABLE [bbf5bcf58] 2026-02-09 10:07:31 -0500
Branch: REL_16_STABLE [91d7c0bfd] 2026-02-09 10:07:31 -0500
Branch: REL_15_STABLE [b764b26f2] 2026-02-09 10:07:31 -0500
Branch: REL_14_STABLE [ea3bf3498] 2026-02-09 10:07:31 -0500
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [8ebdf41c2] 2026-02-09 10:14:22 -0500
Branch: REL_18_STABLE [b69af3dda] 2026-02-09 10:14:22 -0500
Branch: REL_17_STABLE [dd3ad2a4d] 2026-02-09 10:14:22 -0500
Branch: REL_16_STABLE [c0887b39d] 2026-02-09 10:14:22 -0500
Branch: REL_15_STABLE [deb464a40] 2026-02-09 10:14:22 -0500
Branch: REL_14_STABLE [7e82d9a04] 2026-02-09 10:14:22 -0500
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: REL_17_STABLE [dbb09fd8e] 2026-02-09 10:02:23 -0500
Branch: REL_16_STABLE [d484bc260] 2026-02-09 10:02:23 -0500
Branch: REL_15_STABLE [3ecc84cce] 2026-02-09 10:02:23 -0500
Branch: REL_14_STABLE [9fa38c572] 2026-02-09 10:02:23 -0500
-->
     <para>
      Harden selectivity estimators against being attached to operators
      that accept unexpected data types (Tom Lane)
      <ulink url="&commit_baseurl;ea3bf3498">&sect;</ulink>
      <ulink url="&commit_baseurl;7e82d9a04">&sect;</ulink>
      <ulink url="&commit_baseurl;9fa38c572">&sect;</ulink>
     </para>

     <para>
      <filename>contrib/intarray</filename> contained a selectivity
      estimation function that could be abused for arbitrary code
      execution, because it did not check that its input was of the
      expected data type.  Third-party extensions should check for similar
      hazards and add defenses using the technique intarray now uses.
      Since such extension fixes will take time, we now require superuser
      privilege to attach a non-built-in selectivity estimator to an
      operator.
     </para>

     <para>
      The <productname>PostgreSQL</productname> Project thanks
      Daniel Firer, as part of zeroday.cloud, for reporting this problem.
      (CVE-2026-2004)
     </para>
    </listitem>

    <listitem>
<!--
Author: Michael Paquier <michael@paquier.xyz>
Branch: master [379695d3c] 2026-02-09 08:00:59 +0900
Branch: REL_18_STABLE [209f387b8] 2026-02-09 08:01:05 +0900
Branch: REL_17_STABLE [7a7d9693c] 2026-02-09 08:01:07 +0900
Branch: REL_16_STABLE [527b730f4] 2026-02-09 08:01:09 +0900
Branch: REL_15_STABLE [9a9982ec6] 2026-02-09 08:01:10 +0900
Branch: REL_14_STABLE [01de2e32d] 2026-02-09 08:01:12 +0900
-->
     <para>
      Fix buffer overrun in <filename>contrib/pgcrypto</filename>'s
      PGP decryption functions (Michael Paquier)
      <ulink url="&commit_baseurl;01de2e32d">&sect;</ulink>
     </para>

     <para>
      Decrypting a crafted message with an overlength session key caused a
      buffer overrun, with consequences as bad as arbitrary code
      execution.
     </para>

     <para>
      The <productname>PostgreSQL</productname> Project thanks
      Team Xint Code, as part of zeroday.cloud, for reporting this problem.
      (CVE-2026-2005)
     </para>
    </listitem>

    <listitem>
<!--
Author: Thomas Munro <tmunro@postgresql.org>
Branch: master [af79c30dc] 2026-02-09 12:08:58 +1300
Branch: REL_18_STABLE [df0852fe0] 2026-02-09 12:12:29 +1300
Branch: REL_17_STABLE [838248b1b] 2026-02-09 12:23:45 +1300
Branch: REL_16_STABLE [70ff9ede5] 2026-02-09 12:28:01 +1300
Branch: REL_15_STABLE [b2c81ac86] 2026-02-09 12:34:12 +1300
Branch: REL_14_STABLE [2a53db21e] 2026-02-09 12:38:07 +1300
Branch: master [74ee636cc] 2026-02-09 12:08:58 +1300
Branch: REL_18_STABLE [efef05ba9] 2026-02-09 12:12:33 +1300
Branch: REL_17_STABLE [7a522039f] 2026-02-09 12:23:51 +1300
Branch: REL_16_STABLE [b0e3f5cf9] 2026-02-09 12:28:07 +1300
Branch: REL_15_STABLE [50863be0b] 2026-02-09 12:34:17 +1300
Branch: REL_14_STABLE [6ed116046] 2026-02-09 12:38:12 +1300
Branch: master [1e7fe06c1] 2026-02-09 12:44:04 +1300
Branch: REL_18_STABLE [7b5fc85be] 2026-02-09 12:43:42 +1300
Branch: REL_17_STABLE [319e8a644] 2026-02-09 12:42:47 +1300
Branch: REL_16_STABLE [d837fb029] 2026-02-09 12:29:15 +1300
Branch: REL_15_STABLE [fd82ddb67] 2026-02-09 12:34:24 +1300
Branch: REL_14_STABLE [cecedb912] 2026-02-09 12:39:01 +1300
Branch: master [c67bef3f3] 2026-02-09 12:44:12 +1300
Branch: REL_18_STABLE [b0f5d25bc] 2026-02-09 12:43:50 +1300
Branch: REL_17_STABLE [10ebc4bd6] 2026-02-09 12:42:59 +1300
Branch: REL_16_STABLE [4c08960d9] 2026-02-09 12:29:41 +1300
Branch: REL_15_STABLE [757bf8145] 2026-02-09 12:35:19 +1300
Branch: REL_14_STABLE [e7591254c] 2026-02-09 12:39:16 +1300
Author: Noah Misch <noah@leadboat.com>
Branch: master [d536aee55] 2026-02-09 06:14:47 -0800
Branch: REL_18_STABLE [b42709194] 2026-02-09 06:14:50 -0800
Branch: REL_17_STABLE [dc072a09a] 2026-02-09 06:14:51 -0800
Branch: REL_16_STABLE [0c33d5608] 2026-02-09 06:14:51 -0800
Branch: REL_15_STABLE [8f8b1ffac] 2026-02-09 06:14:52 -0800
Branch: REL_14_STABLE [8373ed094] 2026-02-09 06:14:52 -0800
Branch: master [c5dc75479] 2026-02-09 09:08:10 -0800
Branch: REL_18_STABLE [4543b02af] 2026-02-09 09:08:13 -0800
Branch: REL_17_STABLE [955433ebd] 2026-02-09 09:08:13 -0800
Branch: REL_16_STABLE [763671b74] 2026-02-09 09:08:13 -0800
Branch: REL_15_STABLE [6f741bcb6] 2026-02-09 09:08:14 -0800
Branch: REL_14_STABLE [5301b2b7d] 2026-02-09 09:08:14 -0800
-->
     <para>
      Fix inadequate validation of multibyte character lengths
      (Thomas Munro, Noah Misch)
      <ulink url="&commit_baseurl;2a53db21e">&sect;</ulink>
      <ulink url="&commit_baseurl;6ed116046">&sect;</ulink>
      <ulink url="&commit_baseurl;cecedb912">&sect;</ulink>
      <ulink url="&commit_baseurl;e7591254c">&sect;</ulink>
      <ulink url="&commit_baseurl;8373ed094">&sect;</ulink>
      <ulink url="&commit_baseurl;5301b2b7d">&sect;</ulink>
     </para>

     <para>
      Assorted bugs allowed an attacker able to issue crafted SQL to
      overrun string buffers, with consequences as bad as arbitrary code
      execution.  After these fixes, applications may
      observe <quote>invalid byte sequence for encoding</quote> errors
      when string functions process invalid text that has been stored in
      the database.
     </para>

     <para>
      The <productname>PostgreSQL</productname> Project thanks Paul Gerste
      and Moritz Sanft, as part of zeroday.cloud, for reporting this
      problem.
      (CVE-2026-2006)
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [35b5c62c3] 2025-11-18 12:56:55 -0500
Branch: REL_18_STABLE [12bc32917] 2025-11-18 12:56:55 -0500
Branch: REL_17_STABLE [075a763e2] 2025-11-18 12:56:55 -0500
Branch: REL_16_STABLE [1c8c3206f] 2025-11-18 12:56:55 -0500
Branch: REL_15_STABLE [9f5a58aac] 2025-11-18 12:56:55 -0500
Branch: REL_14_STABLE [b85397481] 2025-11-18 12:56:55 -0500
-->
     <para>
      Don't allow CTE references in sub-selects to determine semantic
      levels of aggregate functions (Tom Lane)
      <ulink url="&commit_baseurl;b85397481">&sect;</ulink>
     </para>

     <para>
      This change undoes a change made two minor releases ago, instead
      throwing an error if a sub-select references a CTE that's below the
      semantic level that standard SQL rules would assign to the aggregate
      based on contained column references and aggregates.  The attempted
      fix turned out to cause problems of its own, and it's unclear what
      to do instead.  Since sub-selects within aggregates are disallowed
      altogether by the SQL standard, treating such cases as errors seems
      sufficient.
     </para>
    </listitem>

    <listitem>
<!--
Author: Amit Langote <amitlan@postgresql.org>
Branch: master [f9a468c66] 2026-01-23 10:23:30 +0900
Branch: REL_18_STABLE [9f4b7bfc5] 2026-01-23 10:23:26 +0900
Branch: REL_17_STABLE [933f67fb6] 2026-01-23 10:23:22 +0900
Branch: REL_16_STABLE [fab386f74] 2026-01-23 10:23:18 +0900
Branch: REL_15_STABLE [687533b39] 2026-01-23 10:23:14 +0900
Branch: REL_14_STABLE [6d2fa44d2] 2026-01-23 10:23:10 +0900
-->
     <para>
      Fix failure when all children of a partitioned target table
      of an update or delete have been pruned (Amit Langote)
      <ulink url="&commit_baseurl;6d2fa44d2">&sect;</ulink>
     </para>

     <para>
      In such cases, the executor could report <quote>could not find junk
      ctid column</quote> errors, even though nothing needs to be done.
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [5528e8d10] 2025-11-27 13:09:59 -0500
Branch: REL_18_STABLE [a212877dc] 2025-11-27 13:09:59 -0500
Branch: REL_17_STABLE [e79b27662] 2025-11-27 13:09:59 -0500
Branch: REL_16_STABLE [b497766a8] 2025-11-27 13:09:59 -0500
Branch: REL_15_STABLE [f19502f04] 2025-11-27 13:09:59 -0500
Branch: REL_14_STABLE [9e77323fc] 2025-11-27 13:09:59 -0500
-->
     <para>
      Allow indexscans on partial hash indexes even when the index's
      predicate implies the truth of the WHERE clause (Tom Lane)
      <ulink url="&commit_baseurl;9e77323fc">&sect;</ulink>
     </para>

     <para>
      Normally we drop a WHERE clause that is implied by the predicate,
      since it's pointless to test it; it must hold for every index
      entry.  However that can prevent creation of an indexscan plan if
      the index is one that requires a WHERE clause on the leading index
      key, as hash indexes do.  Don't drop implied clauses when
      considering such an index.
     </para>
    </listitem>

    <listitem>
<!--
Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
Branch: master [951b60f7a] 2025-12-18 15:08:48 +0200
Branch: REL_18_STABLE [d77a5f981] 2025-12-18 15:09:26 +0200
Branch: REL_17_STABLE [4b6d096a0] 2025-12-18 15:09:23 +0200
Branch: REL_16_STABLE [a5277700e] 2025-12-18 15:09:21 +0200
Branch: REL_15_STABLE [460d97020] 2025-12-18 15:09:19 +0200
Branch: REL_14_STABLE [ab4256869] 2025-12-18 15:09:17 +0200
-->
     <para>
      Do not emit WAL for unlogged BRIN indexes (Kirill Reshke)
      <ulink url="&commit_baseurl;ab4256869">&sect;</ulink>
     </para>

     <para>
      One seldom-taken code path incorrectly emitted a WAL record
      relating to a BRIN index even if the index was marked unlogged.
      Crash recovery would then fail to replay that record, complaining
      that the file already exists.
     </para>
    </listitem>

    <listitem>
<!--
Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
Branch: master [8eeb4a0f7] 2025-11-12 20:59:36 +0200
Branch: REL_18_STABLE [321ec5462] 2025-11-12 21:00:42 +0200
Branch: REL_17_STABLE [d02c03ddc] 2025-11-12 21:01:13 +0200
Branch: REL_16_STABLE [053e1868b] 2025-11-12 21:01:42 +0200
Branch: REL_15_STABLE [1a469d7b5] 2025-11-12 21:02:12 +0200
Branch: REL_14_STABLE [eba917d36] 2025-11-12 21:02:36 +0200
Branch: master [797e9ea6e] 2025-11-12 20:59:44 +0200
Branch: REL_18_STABLE [7b069a187] 2025-11-12 21:00:46 +0200
Branch: REL_17_STABLE [c2682810a] 2025-11-12 21:01:16 +0200
Branch: REL_16_STABLE [44e8c60be] 2025-11-12 21:01:45 +0200
Branch: REL_15_STABLE [0c862646c] 2025-11-12 21:02:14 +0200
Branch: REL_14_STABLE [c2e58c071] 2025-11-12 21:02:38 +0200
Branch: master [0bdc777e8] 2025-11-12 21:19:03 +0200
Branch: REL_18_STABLE [82fa6b78d] 2025-11-12 21:26:58 +0200
Branch: REL_17_STABLE [d80d5f099] 2025-11-12 21:27:02 +0200
Branch: REL_16_STABLE [0e8eaa218] 2025-11-12 21:27:05 +0200
Branch: REL_15_STABLE [21a9014cf] 2025-11-12 21:27:07 +0200
Branch: REL_14_STABLE [84f1bf4af] 2025-11-12 21:27:11 +0200
-->
     <para>
      Prevent truncation of CLOG that is still needed by
      unread <command>NOTIFY</command> messages (Joel Jacobson, Heikki
      Linnakangas)
      <ulink url="&commit_baseurl;eba917d36">&sect;</ulink>
      <ulink url="&commit_baseurl;c2e58c071">&sect;</ulink>
      <ulink url="&commit_baseurl;84f1bf4af">&sect;</ulink>
     </para>

     <para>
      This fix prevents <quote>could not access status of
      transaction</quote> errors when a backend is slow to
      absorb <command>NOTIFY</command> messages.
     </para>
    </listitem>

    <listitem>
<!--
Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
Branch: master [1b4699090] 2025-11-12 20:59:28 +0200
Branch: REL_18_STABLE [aab4a84bb] 2025-11-12 21:00:25 +0200
Branch: REL_17_STABLE [b821c9292] 2025-11-12 21:01:08 +0200
Branch: REL_16_STABLE [c1a5bde00] 2025-11-12 21:01:39 +0200
Branch: REL_15_STABLE [b1da37de2] 2025-11-12 21:02:07 +0200
Branch: REL_14_STABLE [7cb05dd2d] 2025-11-12 21:02:32 +0200
-->
     <para>
      Escalate errors occurring during <command>NOTIFY</command> message
      processing to FATAL, i.e. close the connection (Heikki Linnakangas)
      <ulink url="&commit_baseurl;7cb05dd2d">&sect;</ulink>
     </para>

     <para>
      Formerly, if a backend got an error while absorbing
      a <command>NOTIFY</command> message, it would advance past that
      message, report the error to the client, and move on.  That behavior
      was fraught with problems though.  One big concern is that the
      client has no good way to know that a notification was lost, and
      certainly no way to know what was in it.  Depending on the
      application logic, missing a notification could cause the
      application to get stuck waiting, for example.  Also, any remaining
      messages would not get processed until someone sent a
      new <command>NOTIFY</command>.
     </para>

     <para>
      Also, if the connection is idle at the time of receiving
      a <command>NOTIFY</command> signal, any ERROR would be escalated to
      FATAL anyway, due to unrelated concerns.  Therefore, we've chosen to
      make that happen in all cases, for consistency and to provide a
      clear signal to the application that it might have missed some
      notifications.
     </para>
    </listitem>

    <listitem>
<!--
Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
Branch: master [955f55068] 2025-12-23 13:37:16 +0200
Branch: REL_18_STABLE [3e3a80f62] 2025-12-23 13:37:23 +0200
Branch: REL_17_STABLE [bb87d7fef] 2025-12-23 13:37:25 +0200
Branch: REL_16_STABLE [7efef18ff] 2025-12-23 13:37:27 +0200
Branch: REL_15_STABLE [5d5487cd2] 2025-12-23 13:37:29 +0200
Branch: REL_14_STABLE [b6201c76e] 2025-12-23 13:37:31 +0200
-->
     <para>
      Fix bug in following update chain when locking a tuple (Jasper
      Smit)
      <ulink url="&commit_baseurl;b6201c76e">&sect;</ulink>
     </para>

     <para>
      This code path neglected to check the xmin of the first new tuple in
      the update chain, making it possible to lock an unrelated tuple if
      the original updater aborted and the space was immediately reclaimed
      by <command>VACUUM</command> and then re-used.
      That could cause unexpected transaction delays or deadlocks.
      Errors associated with having identified the wrong tuple have also
      been observed.
     </para>
    </listitem>

    <listitem>
<!--
Author: Noah Misch <noah@leadboat.com>
Branch: REL_17_STABLE [0f69bedde] 2025-12-16 16:13:54 -0800
Branch: REL_16_STABLE [1d7b02711] 2025-12-16 16:13:55 -0800
Branch: REL_15_STABLE [05d605b6c] 2025-12-16 16:13:55 -0800
Branch: REL_14_STABLE [811422471] 2025-12-16 16:13:56 -0800
Branch: REL_17_STABLE [d3e5d8950] 2025-12-16 16:13:54 -0800
Branch: REL_16_STABLE [720e9304f] 2025-12-16 16:13:55 -0800
Branch: REL_15_STABLE [20a48c156] 2025-12-16 16:13:55 -0800
Branch: REL_14_STABLE [e4b1986b9] 2025-12-16 16:13:56 -0800
Branch: REL_17_STABLE [bcb784e7d] 2025-12-16 16:13:54 -0800
Branch: REL_16_STABLE [27e4fad98] 2025-12-16 16:13:55 -0800
Branch: REL_15_STABLE [86091202a] 2025-12-16 16:13:55 -0800
Branch: REL_14_STABLE [0dfbd191a] 2025-12-16 16:13:56 -0800
-->
     <para>
      Fix issues around in-place catalog updates (Noah Misch)
      <ulink url="&commit_baseurl;811422471">&sect;</ulink>
      <ulink url="&commit_baseurl;e4b1986b9">&sect;</ulink>
      <ulink url="&commit_baseurl;0dfbd191a">&sect;</ulink>
     </para>

     <para>
      Send a nontransactional invalidation message for an in-place update,
      since such an update will survive transaction rollback.  Also ensure
      that the update is WAL-logged before other sessions can see it.
      These fixes primarily prevent scenarios in which relations'
      frozen-XID attributes become inconsistent, possibly allowing
      premature CLOG truncation and subsequent <quote>could not access
      status of transaction</quote> errors.
     </para>
    </listitem>

    <listitem>
<!--
Author: Amit Langote <amitlan@postgresql.org>
Branch: master [9cbb1d21d] 2026-01-16 13:02:42 +0900
Branch: REL_18_STABLE [1943ceb38] 2026-01-16 13:14:21 +0900
Branch: REL_17_STABLE [4071fe900] 2026-01-16 13:19:53 +0900
Branch: REL_16_STABLE [980b7c736] 2026-01-16 13:19:59 +0900
Branch: REL_15_STABLE [b926ff137] 2026-01-16 13:20:05 +0900
Branch: REL_14_STABLE [f6df78173] 2026-01-16 13:20:11 +0900
-->
     <para>
      Fix potential backend process crash at process exit due to trying to
      release a lock in an already-unmapped shared memory segment
      (Rahila Syed)
      <ulink url="&commit_baseurl;f6df78173">&sect;</ulink>
     </para>
    </listitem>

    <listitem>
<!--
Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
Branch: master [102bdaa9b] 2026-01-15 16:48:45 +0200
Branch: REL_18_STABLE [09532a78b] 2026-01-15 16:49:42 +0200
Branch: REL_17_STABLE [d3ad4cef6] 2026-01-15 16:50:30 +0200
Branch: REL_16_STABLE [c7946e6f3] 2026-01-15 16:50:37 +0200
Branch: REL_15_STABLE [a563ac619] 2026-01-15 16:50:42 +0200
Branch: REL_14_STABLE [46be454ca] 2026-01-15 16:50:46 +0200
-->
     <para>
      Guard against incorrect truncation of the multixact log after a
      crash (Heikki Linnakangas)
      <ulink url="&commit_baseurl;46be454ca">&sect;</ulink>
     </para>
    </listitem>

    <listitem>
<!--
Author: Michael Paquier <michael@paquier.xyz>
Branch: master [36b8f4974] 2025-12-27 17:23:30 +0900
Branch: REL_18_STABLE [06907e864] 2025-12-27 17:23:51 +0900
Branch: REL_17_STABLE [52b27f585] 2025-12-27 17:23:53 +0900
Branch: REL_16_STABLE [c48829ed8] 2025-12-27 17:23:54 +0900
Branch: REL_15_STABLE [300575fe2] 2025-12-27 17:23:56 +0900
Branch: REL_14_STABLE [ea3524cff] 2025-12-27 17:23:58 +0900
-->
     <para>
      Fix possibly mis-encoded result
      of <function>pg_stat_get_backend_activity()</function> (Chao Li)
      <ulink url="&commit_baseurl;ea3524cff">&sect;</ulink>
     </para>

     <para>
      The shared-memory buffer holding a session's activity string can
      end with an incomplete multibyte character.  Readers are supposed
      to truncate off any such incomplete character, but this function
      failed to do so.
     </para>
    </listitem>

    <listitem>
<!--
Author: Fujii Masao <fujii@postgresql.org>
Branch: master [b3ccb0a2c] 2025-12-19 12:05:37 +0900
Branch: REL_18_STABLE [b863d8d87] 2025-12-19 12:07:10 +0900
Branch: REL_17_STABLE [699293d27] 2025-12-19 12:07:21 +0900
Branch: REL_16_STABLE [3853f6168] 2025-12-19 12:08:20 +0900
Branch: REL_15_STABLE [0fc2f533a] 2025-12-19 12:09:10 +0900
Branch: REL_14_STABLE [1a9a49699] 2025-12-19 12:09:16 +0900
-->
     <para>
      Guard against recursive memory context logging (Fujii Masao)
      <ulink url="&commit_baseurl;1a9a49699">&sect;</ulink>
     </para>

     <para>
      A constant flow of signals requesting memory context logging could
      cause recursive execution of the logging code, which in theory could
      lead to stack overflow.
     </para>
    </listitem>

    <listitem>
<!--
Author: Robert Haas <rhaas@postgresql.org>
Branch: master [f1a6e622b] 2025-12-16 12:24:55 -0500
Branch: REL_18_STABLE [57df5ab80] 2025-12-16 10:59:05 -0500
Branch: REL_17_STABLE [1d0fc2499] 2025-12-16 10:59:04 -0500
Branch: REL_16_STABLE [12c2f843c] 2025-12-16 10:59:02 -0500
Branch: REL_15_STABLE [bd2726d3e] 2025-12-16 10:59:01 -0500
Branch: REL_14_STABLE [1d9f7fbba] 2025-12-16 10:59:00 -0500
-->
     <para>
      Fix memory context usage when reinitializing a parallel execution
      context (Jakub Wartak, Jeevan Chalke)
      <ulink url="&commit_baseurl;1d9f7fbba">&sect;</ulink>
     </para>

     <para>
      This error could result in a crash due to a subsidiary data
      structure having a shorter lifespan than the parallel context.
      The problem is not known to be reachable using only
      core <productname>PostgreSQL</productname>, but we have reports of
      trouble in extensions.
     </para>
    </listitem>

    <listitem>
<!--
Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
Branch: master [789d65364] 2025-12-03 19:15:08 +0200
Branch: REL_18_STABLE [e46041fd9] 2025-12-03 19:15:18 +0200
Branch: REL_17_STABLE [8ba61bc06] 2025-12-03 19:15:21 +0200
Branch: REL_16_STABLE [635166913] 2025-12-03 19:15:24 +0200
Branch: REL_15_STABLE [8cfb174a6] 2025-12-03 19:15:26 +0200
Branch: REL_14_STABLE [81416e101] 2025-12-03 19:15:29 +0200
Branch: master [4d936c3ff] 2025-12-05 11:32:38 +0200
Branch: REL_18_STABLE [02ba5e3be] 2025-12-05 11:35:20 +0200
Branch: REL_17_STABLE [cad40cec2] 2025-12-05 11:35:44 +0200
Branch: REL_16_STABLE [4d689a176] 2025-12-05 11:36:36 +0200
Branch: REL_15_STABLE [b9a02b978] 2025-12-05 11:36:52 +0200
Branch: REL_14_STABLE [489695554] 2025-12-05 11:37:06 +0200
-->
     <para>
      Set next multixid's offset when creating a new multixid, to remove
      the wait loop that was needed in corner cases (Andrey Borodin)
      <ulink url="&commit_baseurl;81416e101">&sect;</ulink>
      <ulink url="&commit_baseurl;489695554">&sect;</ulink>
     </para>

     <para>
      The previous logic could get stuck waiting for an update that would
      never occur.
     </para>
    </listitem>

    <listitem>
<!--
Author: Dean Rasheed <dean.a.rasheed@gmail.com>
Branch: master [3881561d7] 2025-11-29 12:28:59 +0000
Branch: REL_18_STABLE [b880d9a02] 2025-11-29 12:31:30 +0000
Branch: REL_17_STABLE [c09096503] 2025-11-29 12:32:12 +0000
Branch: REL_16_STABLE [4d288e33b] 2025-11-29 12:33:04 +0000
Branch: REL_15_STABLE [134a8ee22] 2025-11-29 12:33:35 +0000
Branch: REL_14_STABLE [2d5b97b8c] 2025-11-29 12:34:45 +0000
-->
     <para>
      Avoid rewriting data-modifying CTEs more than once (Bernice Southey,
      Dean Rasheed)
      <ulink url="&commit_baseurl;2d5b97b8c">&sect;</ulink>
     </para>

     <para>
      Formerly, when updating an auto-updatable view or a relation with
      rules, if the original query had any data-modifying CTEs, the rewriter
      would rewrite those CTEs multiple times due to recursion.  This was
      inefficient and could produce false errors if a CTE included an
      update of an always-generated column.
     </para>
    </listitem>

    <listitem>
<!--
Author: Michael Paquier <michael@paquier.xyz>
Branch: master [dc7c77f82] 2025-12-16 13:29:28 +0900
Branch: REL_18_STABLE [68ebdf2b0] 2025-12-16 13:29:36 +0900
Branch: REL_17_STABLE [f5927da4f] 2025-12-16 13:29:39 +0900
Branch: REL_16_STABLE [1aa57e9ed] 2025-12-16 13:29:41 +0900
Branch: REL_15_STABLE [95ef6f490] 2025-12-16 13:29:42 +0900
Branch: REL_14_STABLE [14161bca4] 2025-12-16 13:29:44 +0900
-->
     <para>
      Fail recovery if WAL does not exist back to the redo point indicated
      by the checkpoint record (Nitin Jadhav)
      <ulink url="&commit_baseurl;14161bca4">&sect;</ulink>
     </para>

     <para>
      Add an explicit check for this before starting recovery, so that no
      harm is done and a useful error message is provided.  Previously,
      recovery might crash or corrupt the database in this situation.
     </para>
    </listitem>

    <listitem>
<!--
Author: David Rowley <drowley@postgresql.org>
Branch: master [6ca8506ea] 2026-01-06 17:29:12 +1300
Branch: REL_18_STABLE [bea57a6b4] 2026-01-06 17:29:44 +1300
Branch: REL_17_STABLE [bb08ac7ac] 2026-01-06 17:30:08 +1300
Branch: REL_16_STABLE [0687a6eb0] 2026-01-06 17:30:32 +1300
Branch: REL_15_STABLE [f20b79059] 2026-01-06 17:30:57 +1300
Branch: REL_14_STABLE [ae45c7296] 2026-01-06 17:31:20 +1300
-->
     <para>
      Avoid scribbling on the source query tree during <command>ALTER
      PUBLICATION</command> (Sunil S)
      <ulink url="&commit_baseurl;ae45c7296">&sect;</ulink>
     </para>

     <para>
      This error had the visible effect that an event trigger fired for
      the query would see only the first <literal>publish</literal>
      option, even if several had been specified.  If such a query were
      set up as a prepared statement, re-executions would misbehave too.
     </para>
    </listitem>

    <listitem>
<!--
Author: Amit Kapila <akapila@postgresql.org>
Branch: master [851f6649c] 2026-01-27 05:06:29 +0000
Branch: REL_18_STABLE [919c9fa13] 2026-01-27 05:45:25 +0000
Branch: REL_17_STABLE [3243c0177] 2026-01-27 05:49:23 +0000
Branch: master [3a98f989e] 2026-01-29 03:22:02 +0000
Branch: REL_18_STABLE [1c60f7236] 2026-01-29 03:34:55 +0000
Branch: REL_17_STABLE [9649f1adf] 2026-01-29 02:57:02 +0000
Branch: master [006dd4b2e] 2025-12-08 05:21:22 +0000
Branch: REL_18_STABLE [d3ceb2084] 2025-12-08 05:33:14 +0000
Branch: REL_17_STABLE [3510ebeb0] 2026-01-08 07:17:56 +0000
Branch: REL_16_STABLE [24cce33c3] 2026-01-08 07:07:23 +0000
Branch: REL_15_STABLE [aae05622a] 2026-01-08 06:54:52 +0000
Branch: REL_14_STABLE [7406df605] 2026-01-08 06:44:28 +0000
-->
     <para>
      Prevent invalidation of newly created or newly synced replication
      slots (Zhijie Hou)
      <ulink url="&commit_baseurl;7406df605">&sect;</ulink>
     </para>

     <para>
      A race condition with a concurrent checkpoint could allow WAL to be
      removed that is needed by the replication slot, causing the slot to
      immediately get marked invalid.
     </para>
    </listitem>

    <listitem>
<!--
Author: Masahiko Sawada <msawada@postgresql.org>
Branch: master [2a5225b99] 2025-12-30 10:56:30 -0800
Branch: REL_18_STABLE [fd7c86cfa] 2025-12-30 10:56:28 -0800
Branch: REL_17_STABLE [123b851ab] 2025-12-30 10:56:25 -0800
Branch: REL_16_STABLE [821466722] 2025-12-30 10:56:23 -0800
Branch: REL_15_STABLE [fa557d300] 2025-12-30 10:56:21 -0800
Branch: REL_14_STABLE [57048d6e1] 2025-12-30 10:56:18 -0800
-->
     <para>
      Fix race condition in computing a replication slot's required xmin
      (Zhijie Hou)
      <ulink url="&commit_baseurl;57048d6e1">&sect;</ulink>
     </para>

     <para>
      This could lead to the error <quote>cannot build an initial slot
      snapshot as oldest safe xid follows snapshot's xmin</quote>.
     </para>
    </listitem>

    <listitem>
<!--
Author: Michael Paquier <michael@paquier.xyz>
Branch: master [8e0d32a4a] 2025-12-23 14:32:14 +0900
Branch: REL_18_STABLE [b07c32619] 2025-12-23 14:32:19 +0900
Branch: REL_17_STABLE [e063ccc72] 2025-12-23 14:32:21 +0900
Branch: REL_16_STABLE [e22e9ab0c] 2025-12-23 14:32:22 +0900
Branch: REL_15_STABLE [90d1beef6] 2025-12-23 14:32:24 +0900
Branch: REL_14_STABLE [25a04aa52] 2025-12-23 14:32:25 +0900
-->
     <para>
      During initial synchronization of a logical replication
      subscription, commit the addition of
      a <structname>pg_replication_origin</structname> entry before
      starting to copy data (Zhijie Hou)
      <ulink url="&commit_baseurl;25a04aa52">&sect;</ulink>
     </para>

     <para>
      Previously, if the copy step failed, the
      new <structname>pg_replication_origin</structname> entry would be
      lost due to transaction rollback.  This led to inconsistent state in
      shared memory.
     </para>
    </listitem>

    <listitem>
<!--
Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
Branch: master [23b25586d] 2026-01-15 21:02:49 +0200
Branch: REL_18_STABLE [9ed411e08] 2026-01-15 21:02:54 +0200
Branch: REL_17_STABLE [c3770181c] 2026-01-15 21:02:59 +0200
Branch: REL_16_STABLE [a2eeb04f3] 2026-01-15 21:03:12 +0200
Branch: REL_15_STABLE [ef8465588] 2026-01-15 21:03:16 +0200
Branch: REL_14_STABLE [2514f1c77] 2026-01-15 20:58:05 +0200
-->
     <para>
      Fix possible failure with <quote>unexpected data beyond EOF</quote>
      during restart of a streaming replica server (Anthonin Bonnefoy)
      <ulink url="&commit_baseurl;2514f1c77">&sect;</ulink>
     </para>
    </listitem>

    <listitem>
<!--
Author: David Rowley <drowley@postgresql.org>
Branch: master [349107537] 2026-01-09 11:01:36 +1300
Branch: REL_18_STABLE [c35e5dd9a] 2026-01-09 11:02:59 +1300
Branch: REL_17_STABLE [84b787ae6] 2026-01-09 11:03:24 +1300
Branch: REL_16_STABLE [821c4d27b] 2026-01-09 11:03:48 +1300
Branch: REL_15_STABLE [3ad05640b] 2026-01-09 11:04:12 +1300
Branch: REL_14_STABLE [a65995947] 2026-01-09 11:04:39 +1300
-->
     <para>
      Fix erroneous tracking of column position when parsing partition
      range bounds (myzhen)
      <ulink url="&commit_baseurl;a65995947">&sect;</ulink>
     </para>

     <para>
      This could, for example, lead to the wrong column name being cited
      in error messages about casting partition bound values to the
      column's data type.
     </para>
    </listitem>

    <listitem>
<!--
Author: Michael Paquier <michael@paquier.xyz>
Branch: master [74a116a79] 2026-02-06 15:38:16 +0900
Branch: REL_18_STABLE [acfa422c3] 2026-02-06 15:38:21 +0900
Branch: REL_17_STABLE [67ad4387b] 2026-02-06 15:38:23 +0900
Branch: REL_16_STABLE [977a17a3e] 2026-02-06 15:38:25 +0900
Branch: REL_15_STABLE [4ec943f7d] 2026-02-06 15:38:27 +0900
Branch: REL_14_STABLE [d32e17160] 2026-02-06 15:38:29 +0900
Branch: master [c8ec74713] 2026-02-04 16:38:06 +0900
Branch: REL_18_STABLE [2ca4464b6] 2026-02-04 16:38:10 +0900
Branch: REL_17_STABLE [263af458e] 2026-02-04 16:38:12 +0900
Branch: master [a9afa021e] 2026-02-02 10:21:04 +0900
Branch: REL_18_STABLE [ab61f0087] 2026-02-02 10:21:07 +0900
Branch: REL_17_STABLE [5995135f1] 2026-02-02 10:21:10 +0900
Branch: master [6bca4b50d] 2026-01-18 17:24:25 +0900
Branch: REL_18_STABLE [69ee81932] 2026-01-18 17:24:58 +0900
Branch: REL_17_STABLE [05ef2371a] 2026-01-18 17:25:00 +0900
Branch: REL_16_STABLE [e8fd6c9fd] 2026-01-18 17:25:01 +0900
Branch: REL_15_STABLE [fbf8df580] 2026-01-18 17:25:03 +0900
Branch: REL_14_STABLE [f1dc7a5b7] 2026-01-18 17:25:04 +0900
Author: Peter Eisentraut <peter@eisentraut.org>
Branch: master [1653ce523] 2026-02-07 22:37:02 +0100
Branch: REL_18_STABLE [cff2ef984] 2026-02-07 22:53:16 +0100
Branch: REL_17_STABLE [5449fd261] 2026-02-07 22:53:21 +0100
Branch: REL_16_STABLE [a7bdbbada] 2026-02-07 22:53:25 +0100
Branch: REL_15_STABLE [9dcd0b3de] 2026-02-07 22:53:34 +0100
Branch: REL_14_STABLE [3e7bb39df] 2026-02-07 22:53:38 +0100
-->
     <para>
      Fix assorted minor errors in error messages (Man Zeng, Tianchen Zhang)
      <ulink url="&commit_baseurl;d32e17160">&sect;</ulink>
      <ulink url="&commit_baseurl;f1dc7a5b7">&sect;</ulink>
      <ulink url="&commit_baseurl;3e7bb39df">&sect;</ulink>
     </para>

     <para>
      For example, an error report about mismatched timeline number in a
      backup manifest showed the starting timeline number where it meant
      to show the ending timeline number.
     </para>
    </listitem>

    <listitem>
<!--
Author: Thomas Munro <tmunro@postgresql.org>
Branch: master [e5d99b4d9] 2026-01-22 16:03:47 +1300
Branch: REL_18_STABLE [f1c6b153c] 2026-01-22 16:10:58 +1300
Branch: REL_17_STABLE [d0bb0e5b3] 2026-01-22 16:10:28 +1300
Branch: REL_16_STABLE [7600dc79c] 2026-01-22 16:10:08 +1300
Branch: REL_15_STABLE [cbdd09ae1] 2026-01-22 16:09:29 +1300
Branch: REL_14_STABLE [de8081c30] 2026-01-22 16:06:06 +1300
-->
     <para>
      Fix failure to perform function inlining when doing JIT compilation
      with LLVM version 17 or later (Anthonin Bonnefoy)
      <ulink url="&commit_baseurl;de8081c30">&sect;</ulink>
     </para>
    </listitem>

    <listitem>
<!--
Author: Thomas Munro <tmunro@postgresql.org>
Branch: master [0dceba21d] 2025-11-22 21:21:11 +1300
Branch: REL_18_STABLE [912cfa314] 2025-11-22 21:21:54 +1300
Branch: REL_17_STABLE [60215eae7] 2025-11-22 21:22:37 +1300
Branch: REL_16_STABLE [600acd34b] 2025-11-22 21:23:23 +1300
Branch: REL_15_STABLE [55164852d] 2025-11-22 21:23:45 +1300
Branch: REL_14_STABLE [035a1f5ac] 2025-11-22 21:20:27 +1300
-->
     <para>
      Adjust our JIT code to work with LLVM 21 (Holger Hoffstätte)
      <ulink url="&commit_baseurl;035a1f5ac">&sect;</ulink>
     </para>

     <para>
      The previous coding failed to compile on aarch64 machines.
     </para>
    </listitem>

    <listitem>
<!--
Author: Thomas Munro <tmunro@postgresql.org>
Branch: master [32b236644] 2025-11-17 12:48:55 +1300
Branch: REL_18_STABLE [bcfca332f] 2025-11-17 12:48:47 +1300
Branch: REL_17_STABLE [d66a922f9] 2025-11-17 12:48:37 +1300
Branch: REL_16_STABLE [a1407dade] 2025-11-17 12:48:22 +1300
Branch: REL_15_STABLE [3995e4a9d] 2025-11-18 11:19:56 +1300
Branch: REL_14_STABLE [29a3e22f3] 2025-11-18 11:21:15 +1300
-->
     <para>
      Support process title changes on GNU/Hurd (Michael Banck)
      <ulink url="&commit_baseurl;29a3e22f3">&sect;</ulink>
     </para>
    </listitem>

    <listitem>
<!--
Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
Branch: master [d5b4f3a6d] 2025-11-19 18:05:42 +0200
Branch: REL_18_STABLE [19594271c] 2025-11-19 18:06:04 +0200
Branch: REL_17_STABLE [f2e0ca0af] 2025-11-19 18:06:23 +0200
Branch: REL_16_STABLE [890cc81b6] 2025-11-19 18:06:24 +0200
Branch: REL_15_STABLE [7c494072b] 2025-11-19 18:06:26 +0200
Branch: REL_14_STABLE [11cc0f452] 2025-11-19 18:06:27 +0200
-->
     <para>
      Make <application>pg_resetwal</application> print the updated value
      when changing OldestXID (Heikki Linnakangas)
      <ulink url="&commit_baseurl;11cc0f452">&sect;</ulink>
     </para>

     <para>
      It already did that for every other variable it can change.
     </para>
    </listitem>

    <listitem>
<!--
Author: Álvaro Herrera <alvherre@kurilemu.de>
Branch: master [6bd469d26] 2025-12-04 18:12:08 +0100
Branch: REL_18_STABLE [df93f94dd] 2025-12-04 18:12:08 +0100
Branch: REL_17_STABLE [ce2f575b7] 2025-12-04 18:12:08 +0100
Branch: master [1f28982e4] 2026-01-21 18:55:43 +0100
Branch: REL_18_STABLE [3c83a2a0a] 2026-01-21 18:55:43 +0100
Branch: REL_17_STABLE [e1a327dc4] 2026-01-21 18:55:43 +0100
Branch: REL_16_STABLE [098a1fab8] 2026-01-21 18:55:43 +0100
Branch: REL_15_STABLE [dcddd6987] 2026-01-21 18:55:43 +0100
Branch: REL_14_STABLE [607a67c5e] 2026-01-21 18:55:43 +0100
-->
     <para>
      In <filename>contrib/amcheck</filename>, use the correct snapshot
      for btree index parent checks (Mihail Nikalayeu)
      <ulink url="&commit_baseurl;607a67c5e">&sect;</ulink>
     </para>

     <para>
      The previous coding caused spurious errors when examining indexes
      created with <command>CREATE INDEX CONCURRENTLY</command>.
     </para>
    </listitem>

    <listitem>
<!--
Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
Branch: master [cbe04e5d7] 2025-12-02 21:11:15 +0200
Branch: REL_18_STABLE [19e786727] 2025-12-02 21:15:04 +0200
Branch: REL_17_STABLE [e8ae59445] 2025-12-02 21:15:28 +0200
Branch: REL_16_STABLE [182901626] 2025-12-02 21:15:48 +0200
Branch: REL_15_STABLE [7792bdc45] 2025-12-02 21:16:06 +0200
Branch: REL_14_STABLE [fbb4b6078] 2025-12-02 21:16:17 +0200
-->
     <para>
      Fix <filename>contrib/amcheck</filename> to
      handle <quote>half-dead</quote> btree index pages correctly
      (Heikki Linnakangas)
      <ulink url="&commit_baseurl;fbb4b6078">&sect;</ulink>
     </para>

     <para>
      <filename>amcheck</filename> expected such a page to have a parent
      downlink, but it does not, leading to a false error report
      about <quote>mismatch between parent key and child high key</quote>.
     </para>
    </listitem>

    <listitem>
<!--
Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
Branch: master [6c05ef572] 2025-12-02 21:10:51 +0200
Branch: REL_18_STABLE [50c63ebb0] 2025-12-02 21:14:53 +0200
Branch: REL_17_STABLE [5a2d1df00] 2025-12-02 21:15:19 +0200
Branch: REL_16_STABLE [f2a6df9fd] 2025-12-02 21:15:43 +0200
Branch: REL_15_STABLE [721b58fbe] 2025-12-02 21:16:01 +0200
Branch: REL_14_STABLE [a4cb21ea9] 2025-12-02 21:16:13 +0200
-->
     <para>
      Fix <filename>contrib/amcheck</filename> to
      handle incomplete btree root page splits correctly
      (Heikki Linnakangas)
      <ulink url="&commit_baseurl;a4cb21ea9">&sect;</ulink>
     </para>

     <para>
      <filename>amcheck</filename> could report a false error
      about <quote>block is not true root</quote>.
     </para>
    </listitem>

    <listitem>
<!--
Author: David Rowley <drowley@postgresql.org>
Branch: master [4f49e4b55] 2026-01-04 20:32:40 +1300
Branch: REL_18_STABLE [07c1c6ec5] 2026-01-04 20:33:14 +1300
Branch: REL_17_STABLE [a5f2dc421] 2026-01-04 20:33:39 +1300
Branch: REL_16_STABLE [54f82c4aa] 2026-01-04 20:34:01 +1300
Branch: REL_15_STABLE [c89510431] 2026-01-04 20:34:22 +1300
Branch: REL_14_STABLE [67a6fd507] 2026-01-04 20:34:45 +1300
-->
     <para>
      Fix edge-case integer overflow
      in <filename>contrib/intarray</filename>'s selectivity estimator
      for <literal>@@</literal> (Chao Li)
      <ulink url="&commit_baseurl;67a6fd507">&sect;</ulink>
     </para>

     <para>
      This could cause poor selectivity estimates to be produced for cases
      involving the maximum integer value.
     </para>
    </listitem>

    <listitem>
<!--
Author: Jeff Davis <jdavis@postgresql.org>
Branch: master [84d5efa7e] 2025-12-16 10:35:40 -0800
Branch: REL_18_STABLE [f79e239e0] 2025-12-16 10:36:09 -0800
Branch: REL_17_STABLE [b8cfe9dc2] 2025-12-16 10:36:29 -0800
Branch: REL_16_STABLE [b80227c0a] 2025-12-16 10:36:48 -0800
Branch: REL_15_STABLE [335b2f30b] 2025-12-16 10:37:22 -0800
Branch: REL_14_STABLE [898991966] 2025-12-16 10:38:15 -0800
-->
     <para>
      Fix multibyte-encoding issue in <filename>contrib/ltree</filename>
      (Jeff Davis)
      <ulink url="&commit_baseurl;898991966">&sect;</ulink>
     </para>

     <para>
      The previous coding could pass an incomplete multibyte character
      to <function>lower()</function>, probably resulting in incorrect
      behavior.
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [228fe0c3e] 2026-01-18 14:54:33 -0500
Branch: REL_18_STABLE [6574bee64] 2026-01-18 14:54:47 -0500
Branch: REL_17_STABLE [f87c0b84e] 2026-01-18 14:54:54 -0500
Branch: REL_16_STABLE [d852d105e] 2026-01-18 14:55:01 -0500
Branch: REL_15_STABLE [00410b76d] 2026-01-18 14:55:07 -0500
Branch: REL_14_STABLE [8bbf28191] 2026-01-18 14:55:13 -0500
-->
     <para>
      Update time zone data files to <application>tzdata</application>
      release 2025c (Tom Lane)
      <ulink url="&commit_baseurl;8bbf28191">&sect;</ulink>
     </para>

     <para>
      The only change is in historical data for pre-1976 timestamps in
      Baja California.
     </para>
    </listitem>

   </itemizedlist>

  </sect2>
 </sect1>

 <sect1 id="release-14-20">
  <title>Release 14.20</title>

  <formalpara>
  <title>Release date:</title>
  <para>2025-11-13</para>
  </formalpara>

  <para>
   This release contains a variety of fixes from 14.19.
   For information about new features in major release 14, see
   <xref linkend="release-14"/>.
  </para>

  <sect2>
   <title>Migration to Version 14.20</title>

   <para>
    A dump/restore is not required for those running 14.X.
   </para>

   <para>
    However, if you are upgrading from a version earlier than 14.19,
    see <xref linkend="release-14-19"/>.
   </para>
  </sect2>

  <sect2>
   <title>Changes</title>

   <itemizedlist>

    <listitem>
<!--
Author: Nathan Bossart <nathan@postgresql.org>
Branch: master [5e4fcbe53] 2025-11-10 09:00:00 -0600
Branch: REL_18_STABLE [00eb646ea] 2025-11-10 09:00:00 -0600
Branch: REL_17_STABLE [e2fb3dfa8] 2025-11-10 09:00:00 -0600
Branch: REL_16_STABLE [d20abb587] 2025-11-10 09:00:00 -0600
Branch: REL_15_STABLE [2393d374a] 2025-11-10 09:00:00 -0600
Branch: REL_14_STABLE [95cce5669] 2025-11-10 09:00:00 -0600
Branch: REL_13_STABLE [8a2530ebc] 2025-11-10 09:00:00 -0600
-->
     <para>
      Check for <literal>CREATE</literal> privileges on the schema
      in <command>CREATE STATISTICS</command> (Jelte Fennema-Nio)
      <ulink url="&commit_baseurl;95cce5669">&sect;</ulink>
     </para>

     <para>
      This omission allowed table owners to create statistics in any
      schema, potentially leading to unexpected naming conflicts.
     </para>

     <para>
      The <productname>PostgreSQL</productname> Project thanks
      Jelte Fennema-Nio for reporting this problem.
      (CVE-2025-12817)
     </para>
    </listitem>

    <listitem>
<!--
Author: Jacob Champion <jchampion@postgresql.org>
Branch: master [600086f47] 2025-11-10 06:20:33 -0800
Branch: REL_18_STABLE [7eb8fcad8] 2025-11-10 06:03:01 -0800
Branch: REL_17_STABLE [f5999f018] 2025-11-10 06:03:03 -0800
Branch: REL_16_STABLE [585fd9b3c] 2025-11-10 06:03:04 -0800
Branch: REL_15_STABLE [91421565f] 2025-11-10 06:03:05 -0800
Branch: REL_14_STABLE [96d2c7e96] 2025-11-10 06:03:05 -0800
Branch: REL_13_STABLE [d6f0c0d6d] 2025-11-10 06:03:06 -0800
-->
     <para>
      Avoid integer overflow in allocation-size calculations
      within <application>libpq</application> (Jacob Champion)
      <ulink url="&commit_baseurl;96d2c7e96">&sect;</ulink>
     </para>

     <para>
      Several places in <application>libpq</application> were not
      sufficiently careful about computing the required size of a memory
      allocation.  Sufficiently large inputs could cause integer overflow,
      resulting in an undersized buffer, which would then lead to writing
      past the end of the buffer.
     </para>

     <para>
      The <productname>PostgreSQL</productname> Project thanks Aleksey
      Solovev of Positive Technologies for reporting this problem.
      (CVE-2025-12818)
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [cdf7feb96] 2025-09-13 16:55:51 -0400
Branch: REL_18_STABLE Release: REL_18_0 [802308693] 2025-09-13 16:55:51 -0400
Branch: REL_17_STABLE [e09adb5b9] 2025-09-13 16:55:51 -0400
Branch: REL_16_STABLE [281ad4ed1] 2025-09-13 16:55:51 -0400
Branch: REL_15_STABLE [9fd531534] 2025-09-13 16:55:51 -0400
Branch: REL_14_STABLE [f75ff1b14] 2025-09-13 16:55:51 -0400
Branch: REL_13_STABLE [308773617] 2025-09-13 16:55:51 -0400
-->
     <para>
      Further fix processing of character classes within <literal>SIMILAR
      TO</literal> regular expressions (Laurenz Albe)
      <ulink url="&commit_baseurl;f75ff1b14">&sect;</ulink>
     </para>

     <para>
      The previous fix for translating <literal>SIMILAR TO</literal>
      pattern matching expressions to POSIX-style regular expressions
      broke a corner case that formerly worked: if there is an escape
      character right after the opening bracket and then a closing bracket
      right after the escape sequence (for
      example <literal>[\w]</literal>), the closing bracket was no longer
      seen as terminating the character class.
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [b0cc0a71e] 2025-09-17 16:32:57 -0400
Branch: REL_18_STABLE Release: REL_18_0 [4eab45649] 2025-09-17 16:32:57 -0400
Branch: REL_17_STABLE [e830896c1] 2025-09-17 16:32:57 -0400
Branch: REL_16_STABLE [7df74e635] 2025-09-17 16:32:57 -0400
Branch: REL_15_STABLE [afd18f276] 2025-09-17 16:32:57 -0400
Branch: REL_14_STABLE [31bf09632] 2025-09-17 16:32:57 -0400
Branch: REL_13_STABLE [b649ef244] 2025-09-17 16:32:57 -0400
-->
     <para>
      Fix parsing of aggregate functions whose arguments contain a
      sub-select with a <literal>FROM</literal> reference to a CTE outside
      the aggregate function (Tom Lane)
      <ulink url="&commit_baseurl;31bf09632">&sect;</ulink>
     </para>

     <para>
      Such a CTE reference must act like a outer-level column reference
      when determining the aggregate's semantic level; but it was not
      being accounted for, leading to obscure planner or executor errors.
     </para>
    </listitem>

    <listitem>
<!--
Author: Richard Guo <rguo@postgresql.org>
Branch: master [aba8f61c3] 2025-09-03 16:00:38 +0900
Branch: REL_18_STABLE Release: REL_18_0 [ab4a35b4e] 2025-09-03 16:03:43 +0900
Branch: REL_17_STABLE [f34202f51] 2025-09-03 16:05:49 +0900
Branch: REL_16_STABLE [79ade5873] 2025-09-03 16:09:23 +0900
Branch: REL_15_STABLE [53e35fb56] 2025-09-03 16:13:33 +0900
Branch: REL_14_STABLE [160ef51c8] 2025-09-03 16:16:36 +0900
Branch: REL_13_STABLE [8c02d92c6] 2025-09-03 16:19:06 +0900
-->
     <para>
      Fix <quote>no relation entry for relid</quote> errors in corner
      cases while estimating SubPlan costs (Richard Guo)
      <ulink url="&commit_baseurl;160ef51c8">&sect;</ulink>
     </para>
    </listitem>

    <listitem>
<!--
Author: Peter Geoghegan <pg@bowt.ie>
Branch: master [843e50208] 2025-10-10 14:52:25 -0400
Branch: REL_18_STABLE [61de81a49] 2025-10-10 14:52:23 -0400
Branch: REL_17_STABLE [ae15cebc2] 2025-10-10 14:52:21 -0400
Branch: REL_16_STABLE [c160fd469] 2025-10-10 14:52:19 -0400
Branch: REL_15_STABLE [ca0c93908] 2025-10-10 14:52:17 -0400
Branch: REL_14_STABLE [314004021] 2025-10-10 14:52:14 -0400
Branch: REL_13_STABLE [af302ff6b] 2025-10-10 14:52:12 -0400
-->
     <para>
      Remove faulty assertion in btree index cleanup (Peter Geoghegan)
      <ulink url="&commit_baseurl;314004021">&sect;</ulink>
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [327b7324d] 2025-08-26 12:08:57 -0400
Branch: REL_18_STABLE Release: REL_18_0 [3a7a3eaaf] 2025-08-26 12:08:57 -0400
Branch: REL_17_STABLE [456c6a05d] 2025-08-26 12:08:57 -0400
Branch: REL_16_STABLE [d532069c3] 2025-08-26 12:08:57 -0400
Branch: REL_15_STABLE [34249b3b5] 2025-08-26 12:08:57 -0400
Branch: REL_14_STABLE [4a593043e] 2025-08-26 12:08:57 -0400
Branch: REL_13_STABLE [3e0f5f00b] 2025-08-26 12:08:57 -0400
-->
     <para>
      Fix possible infinite loop in GIN index scans with multiple scan
      conditions (Tom Lane)
      <ulink url="&commit_baseurl;4a593043e">&sect;</ulink>
     </para>

     <para>
      GIN can handle scan conditions that can reject non-matching entries
      but are not useful for searching for relevant entries, for example
      a <type>tsquery</type> clause like <literal>!term</literal>.  But
      such a condition must not be first in the array of scan conditions.
      The code failed to ensure that in all cases, with the result that a
      query having a mix of such conditions with normal conditions might
      work or not depending on the order in which the conditions were
      given in the query.
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [b55068236] 2025-08-26 11:38:41 -0400
Branch: REL_18_STABLE Release: REL_18_0 [44c2e5b76] 2025-08-26 11:38:41 -0400
Branch: REL_17_STABLE [d17abaea8] 2025-08-26 11:38:41 -0400
Branch: REL_16_STABLE [25eadfd0f] 2025-08-26 11:38:41 -0400
Branch: REL_15_STABLE [a9c1b9c1c] 2025-08-26 11:38:41 -0400
Branch: REL_14_STABLE [a7da746c1] 2025-08-26 11:38:41 -0400
Branch: REL_13_STABLE [b2d71c455] 2025-08-26 11:38:41 -0400
-->
     <para>
      Ensure that GIN index scans can be canceled (Tom Lane)
      <ulink url="&commit_baseurl;a7da746c1">&sect;</ulink>
     </para>

     <para>
      Some code paths were capable of running for a long time without
      checking for interrupts.
     </para>
    </listitem>

    <listitem>
<!--
Author: Álvaro Herrera <alvherre@kurilemu.de>
Branch: master [a95e3d84c] 2025-11-04 13:23:26 +0100
Branch: REL_18_STABLE [419ffde23] 2025-11-04 13:23:26 +0100
Branch: REL_17_STABLE [f4b68b033] 2025-11-04 13:23:26 +0100
Branch: REL_16_STABLE [6ef33c805] 2025-11-04 13:23:26 +0100
Branch: REL_15_STABLE [23ddadf68] 2025-11-04 13:23:26 +0100
Branch: REL_14_STABLE [f0ad41716] 2025-11-04 13:23:26 +0100
Branch: REL_13_STABLE [3c7b47974] 2025-11-04 13:23:26 +0100
Branch: master [0a3d27bfe] 2025-11-04 20:31:43 +0100
Branch: REL_18_STABLE [8733f0b54] 2025-11-04 20:31:43 +0100
Branch: REL_17_STABLE [3b5007347] 2025-11-04 20:31:43 +0100
Branch: REL_16_STABLE [20442cf50] 2025-11-04 20:31:43 +0100
Branch: REL_15_STABLE [bcfbd3f74] 2025-11-04 20:31:43 +0100
Branch: REL_14_STABLE [65b0d1f74] 2025-11-04 20:31:43 +0100
Branch: REL_13_STABLE [ef81697fe] 2025-11-04 20:31:43 +0100
-->
     <para>
      Ensure that BRIN autosummarization provides a snapshot for index
      expressions that need one (Álvaro Herrera)
      <ulink url="&commit_baseurl;f0ad41716">&sect;</ulink>
      <ulink url="&commit_baseurl;65b0d1f74">&sect;</ulink>
     </para>

     <para>
      Previously, autosummarization would fail for such indexes, and then
      leave placeholder index tuples behind, causing the index to bloat
      over time.
     </para>
    </listitem>

    <listitem>
<!--
Author: David Rowley <drowley@postgresql.org>
Branch: master [9fd29d7ff] 2025-10-21 20:46:14 +1300
Branch: REL_18_STABLE [715983a81] 2025-10-21 20:46:49 +1300
Branch: REL_17_STABLE [c4f5a59ab] 2025-10-21 20:47:10 +1300
Branch: REL_16_STABLE [ef915bf93] 2025-10-21 20:47:35 +1300
Branch: REL_15_STABLE [810aaf7f2] 2025-10-21 20:48:06 +1300
Branch: REL_14_STABLE [eea24eb0a] 2025-10-21 20:48:34 +1300
Branch: REL_13_STABLE [c28f8ca29] 2025-10-21 20:49:00 +1300
-->
     <para>
      Fix integer-overflow hazard in BRIN index scans when the table
      contains close to 2<superscript>32</superscript> pages (Sunil S)
      <ulink url="&commit_baseurl;eea24eb0a">&sect;</ulink>
     </para>

     <para>
      This oversight could result in an infinite loop or scanning of
      unneeded table pages.
     </para>
    </listitem>

    <listitem>
<!--
Author: David Rowley <drowley@postgresql.org>
Branch: master [6911f8037] 2025-10-23 13:11:02 +1300
Branch: REL_18_STABLE [ceb51d09b] 2025-10-23 13:12:03 +1300
Branch: REL_17_STABLE [10945148e] 2025-10-23 13:12:49 +1300
Branch: REL_16_STABLE [3398b0d02] 2025-10-23 13:13:19 +1300
Branch: REL_15_STABLE [b8ecfbe5a] 2025-10-23 13:13:44 +1300
Branch: REL_14_STABLE [e4316ec4d] 2025-10-23 13:14:08 +1300
Branch: REL_13_STABLE [4afab175b] 2025-10-23 13:14:33 +1300
-->
     <para>
      Fix incorrect zero-extension of stored values in JIT-generated tuple
      deforming code (David Rowley)
      <ulink url="&commit_baseurl;e4316ec4d">&sect;</ulink>
     </para>

     <para>
      When not using JIT, the equivalent code does sign-extension not
      zero-extension, leading to a different Datum representation of small
      integer data types.  This inconsistency was masked in most cases,
      but it is known to lead to <quote>could not find memoization table
      entry</quote> errors when using Memoize plan nodes, and there might
      be other symptoms.
     </para>
    </listitem>

    <listitem>
<!--
Author: David Rowley <drowley@postgresql.org>
Branch: master [ac06ea8f7] 2025-09-17 12:19:15 +1200
Branch: REL_18_STABLE Release: REL_18_0 [78e6047dc] 2025-09-17 12:19:51 +1200
Branch: REL_17_STABLE [0fb06e893] 2025-09-17 12:20:19 +1200
Branch: REL_16_STABLE [ba0203880] 2025-09-17 12:20:44 +1200
Branch: REL_15_STABLE [f00ad440a] 2025-09-17 12:21:08 +1200
Branch: REL_14_STABLE [f78a69034] 2025-09-17 12:21:29 +1200
Branch: master [dee21ea6d] 2025-09-17 11:48:55 +1200
Branch: REL_18_STABLE Release: REL_18_0 [bae6c74ba] 2025-09-17 11:49:26 +1200
Branch: REL_17_STABLE [3d939a9b1] 2025-09-17 11:49:49 +1200
Branch: REL_16_STABLE [d6539f88b] 2025-09-17 11:50:12 +1200
Branch: REL_15_STABLE [005770203] 2025-09-17 11:50:35 +1200
Branch: REL_14_STABLE [2eb7ea97d] 2025-09-17 11:50:58 +1200
Branch: REL_13_STABLE [940f3cd5d] 2025-09-17 11:51:21 +1200
-->
     <para>
      Add missing EvalPlanQual rechecks for TID Scan and TID Range Scan
      plan nodes (Sophie Alpert, David Rowley)
      <ulink url="&commit_baseurl;f78a69034">&sect;</ulink>
      <ulink url="&commit_baseurl;2eb7ea97d">&sect;</ulink>
     </para>

     <para>
      This omission led to possibly not rechecking a condition
      on <structfield>ctid</structfield> during concurrent-update
      situations, causing the update's behavior to vary depending on which
      plan type had been selected.
     </para>
    </listitem>

    <listitem>
<!--
Author: Etsuro Fujita <efujita@postgresql.org>
Branch: master [12609fbac] 2025-10-15 17:15:00 +0900
Branch: REL_18_STABLE [b14144325] 2025-10-15 17:15:01 +0900
Branch: REL_17_STABLE [2bb84ea7e] 2025-10-15 17:15:02 +0900
Branch: REL_16_STABLE [5a9af4868] 2025-10-15 17:15:03 +0900
Branch: REL_15_STABLE [4a08603a2] 2025-10-15 17:15:04 +0900
Branch: REL_14_STABLE [24e74b962] 2025-10-15 17:15:05 +0900
Branch: REL_13_STABLE [12b0c0e51] 2025-10-15 17:15:05 +0900
-->
     <para>
      Fix EvalPlanQual handling of foreign or custom joins that do not
      have an alternative local-join plan prepared for EPQ (Masahiko
      Sawada, Etsuro Fujita)
      <ulink url="&commit_baseurl;24e74b962">&sect;</ulink>
     </para>

     <para>
      In such cases the foreign or custom access method should be invoked
      normally, but that did not happen, typically leading to a crash.
     </para>
    </listitem>

    <listitem>
<!--
Author: Álvaro Herrera <alvherre@kurilemu.de>
Branch: master [3231fd045] 2025-10-11 20:30:12 +0200
Branch: REL_18_STABLE [08c037dff] 2025-10-11 20:30:12 +0200
Branch: REL_17_STABLE [ea06f97ee] 2025-10-11 20:30:12 +0200
Branch: REL_16_STABLE [b835759ec] 2025-10-11 20:30:12 +0200
Branch: REL_15_STABLE [bdae98495] 2025-10-11 20:30:12 +0200
Branch: REL_14_STABLE [b753be38a] 2025-10-11 20:30:12 +0200
-->
     <para>
      Avoid duplicating hash partition constraints during <literal>DETACH
      CONCURRENTLY</literal> (Haiyang Li)
      <ulink url="&commit_baseurl;b753be38a">&sect;</ulink>
     </para>

     <para>
      <command>ALTER TABLE DETACH PARTITION CONCURRENTLY</command> was
      written to add a copy of the partitioning constraint to the
      now-detached partition.  This was misguided, partially because
      non-concurrent <literal>DETACH</literal> doesn't do that, but mostly
      because in the case of hash partitioning the constraint expression
      contains references to the parent table's OID.  That causes problems
      during dump/restore, or if the parent table is dropped
      after <literal>DETACH</literal>.  In v19 and later, we'll no longer
      create any such copied constraints at all.  In released branches, to
      minimize the risk of unforeseen consequences, only skip adding a
      copied constraint if it is for hash partitioning.
     </para>
    </listitem>

    <listitem>
<!--
Author: Peter Eisentraut <peter@eisentraut.org>
Branch: master [040cc5f3c] 2025-11-04 14:46:58 +0100
Branch: REL_18_STABLE [ba99c9491] 2025-11-04 14:47:15 +0100
Branch: REL_17_STABLE [0b44f2443] 2025-11-04 15:18:09 +0100
Branch: REL_16_STABLE [7180d56c5] 2025-11-04 15:22:17 +0100
Branch: REL_15_STABLE [643a5e96c] 2025-11-04 15:28:46 +0100
Branch: REL_14_STABLE [04345d7a4] 2025-11-04 15:37:08 +0100
Branch: REL_13_STABLE [7f239c72a] 2025-11-04 15:37:19 +0100
-->
     <para>
      Disallow generated columns in partition keys
      (Jian He, Ashutosh Bapat)
      <ulink url="&commit_baseurl;04345d7a4">&sect;</ulink>
     </para>

     <para>
      This was already not allowed, but the check missed some cases, such
      as where the column reference is implicit in a whole-row reference.
     </para>
    </listitem>

    <listitem>
<!--
Author: Peter Eisentraut <peter@eisentraut.org>
Branch: master [aa606b931] 2025-11-06 13:54:42 +0100
Branch: REL_18_STABLE [0f9e0068b] 2025-11-06 13:55:08 +0100
Branch: REL_17_STABLE [07f787e57] 2025-11-06 14:01:42 +0100
Branch: REL_16_STABLE [26958f4d9] 2025-11-06 14:01:57 +0100
Branch: REL_15_STABLE [8278737bf] 2025-11-06 14:02:03 +0100
Branch: REL_14_STABLE [ccfe28eb4] 2025-11-06 14:02:09 +0100
Branch: REL_13_STABLE [3717849e6] 2025-11-06 14:02:13 +0100
-->
     <para>
      Disallow generated columns in <literal>COPY ... FROM
      ... WHERE</literal> clauses (Peter Eisentraut, Jian He)
      <ulink url="&commit_baseurl;ccfe28eb4">&sect;</ulink>
     </para>

     <para>
      Previously, incorrect behavior or an obscure error message resulted
      from attempting to reference such a column, since generated columns
      have not yet been computed at the point
      where <literal>WHERE</literal> filtering is done.
     </para>
    </listitem>

    <listitem>
<!--
Author: Noah Misch <noah@leadboat.com>
Branch: master [a95393ecd] 2025-09-29 11:15:44 -0700
Branch: REL_18_STABLE [d024160ff] 2025-09-29 11:15:47 -0700
Branch: REL_17_STABLE [6778fbca6] 2025-09-29 11:15:48 -0700
Branch: REL_16_STABLE [ab16418ee] 2025-09-29 11:15:48 -0700
Branch: REL_15_STABLE [d202ec1fb] 2025-09-29 11:15:48 -0700
Branch: REL_14_STABLE [5816baa9b] 2025-09-29 11:15:49 -0700
Branch: REL_13_STABLE [afb2cce74] 2025-09-29 11:15:49 -0700
-->
     <para>
      Fix visibility checking for statistics objects
      in <literal>pg_temp</literal> (Noah Misch)
      <ulink url="&commit_baseurl;5816baa9b">&sect;</ulink>
     </para>

     <para>
      A statistics object located in a temporary schema cannot be named
      without schema qualification,
      but <function>pg_statistics_obj_is_visible()</function> missed that
      memo and could return <quote>true</quote> regardless.  In turn,
      functions such as <function>pg_describe_object()</function> could
      fail to schema-qualify the object's name as expected.
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [abdeacdb0] 2025-09-10 16:05:03 -0400
Branch: REL_18_STABLE Release: REL_18_0 [bc865ff6d] 2025-09-10 16:05:03 -0400
Branch: REL_17_STABLE [862980f92] 2025-09-10 16:05:03 -0400
Branch: REL_16_STABLE [e1da9c072] 2025-09-10 16:05:03 -0400
Branch: REL_15_STABLE [5ac973892] 2025-09-10 16:05:03 -0400
Branch: REL_14_STABLE [5eab9b0a4] 2025-09-10 16:05:03 -0400
Branch: REL_13_STABLE [8b6c29afd] 2025-09-10 16:05:03 -0400
-->
     <para>
      Fix memory leakage in hashed subplans (Haiyang Li)
      <ulink url="&commit_baseurl;5eab9b0a4">&sect;</ulink>
     </para>

     <para>
      Any memory consumed by the hash functions used for hashing tuples
      constituted a query-lifespan memory leak.  One way that could happen
      is if the values being hashed require de-toasting.
     </para>
    </listitem>

    <listitem>
<!--
Author: Dean Rasheed <dean.a.rasheed@gmail.com>
Branch: master [fc6600fc1] 2025-09-04 11:45:44 +0100
Branch: REL_18_STABLE Release: REL_18_0 [311340f17] 2025-09-04 11:47:15 +0100
Branch: REL_17_STABLE [76f45be93] 2025-09-04 11:48:02 +0100
Branch: REL_16_STABLE [421d7a157] 2025-09-04 11:48:51 +0100
Branch: REL_15_STABLE [5481cc332] 2025-09-04 11:50:59 +0100
Branch: master [5386bfb9c] 2025-09-04 11:27:53 +0100
Branch: REL_18_STABLE Release: REL_18_0 [344662848] 2025-09-04 11:32:00 +0100
Branch: REL_17_STABLE [0b934d399] 2025-09-04 11:33:00 +0100
Branch: REL_16_STABLE [0c4d5a45d] 2025-09-04 11:34:25 +0100
Branch: REL_15_STABLE [451b22efd] 2025-09-04 11:35:19 +0100
Branch: REL_14_STABLE [5fd569ef2] 2025-09-04 11:36:25 +0100
Branch: REL_13_STABLE [0610b843c] 2025-09-04 11:37:46 +0100
Branch: REL_17_STABLE [57dfb64ec] 2025-09-04 16:01:18 +0100
Branch: REL_16_STABLE [d37694b97] 2025-09-04 16:00:01 +0100
Branch: REL_15_STABLE [a4624929d] 2025-09-04 15:59:02 +0100
Branch: REL_14_STABLE [ea65c8823] 2025-09-04 15:57:18 +0100
Branch: REL_13_STABLE [dbef9cbaa] 2025-09-04 15:55:59 +0100
-->
     <para>
      Add missing replica identity checks in <command>MERGE</command> and
      <command>INSERT ... ON CONFLICT DO UPDATE</command>
      (Zhijie Hou)
      <ulink url="&commit_baseurl;5fd569ef2">&sect;</ulink>
      <ulink url="&commit_baseurl;ea65c8823">&sect;</ulink>
     </para>

     <para>
      If <command>MERGE</command> may require update or delete actions,
      and the target table publishes updates or deletes, insist that it
      have a <literal>REPLICA IDENTITY</literal> defined.  Failing to
      require this can silently break replication.
      Likewise, <command>INSERT</command> with
      an <literal>UPDATE</literal> option must require <literal>REPLICA
      IDENTITY</literal> if the target table publishes either inserts or
      updates.
     </para>
    </listitem>

    <listitem>
<!--
Author: Amit Kapila <akapila@postgresql.org>
Branch: master [aa21e4922] 2025-08-19 05:33:17 +0000
Branch: REL_18_STABLE Release: REL_18_0 [a5d4c0415] 2025-08-19 05:18:24 +0000
Branch: REL_17_STABLE [288a817bc] 2025-08-19 05:06:37 +0000
Branch: REL_16_STABLE [7ece76129] 2025-08-19 04:54:19 +0000
Branch: REL_15_STABLE [e41137155] 2025-08-19 04:41:14 +0000
Branch: REL_14_STABLE [ef7750274] 2025-08-19 04:28:19 +0000
Branch: REL_13_STABLE [0a98f24a6] 2025-08-19 04:17:03 +0000
-->
     <para>
      Avoid deadlock during <command>DROP SUBSCRIPTION</command> when
      publisher is on the same server as subscriber (Dilip Kumar)
      <ulink url="&commit_baseurl;ef7750274">&sect;</ulink>
     </para>
    </listitem>

    <listitem>
<!--
Author: Fujii Masao <fujii@postgresql.org>
Branch: master [883a95646] 2025-10-22 11:27:15 +0900
Branch: REL_18_STABLE [9670032cc] 2025-10-22 11:28:48 +0900
Branch: REL_17_STABLE [62d5ee75b] 2025-10-22 11:28:57 +0900
Branch: REL_16_STABLE [2e55cf4ef] 2025-10-22 11:29:02 +0900
Branch: REL_15_STABLE [59b215f72] 2025-10-22 11:29:07 +0900
Branch: REL_14_STABLE [a7ab6ce6a] 2025-10-22 11:29:13 +0900
Branch: REL_13_STABLE [7d7ebdb80] 2025-10-22 11:29:18 +0900
-->
     <para>
      Fix incorrect reporting of replication lag
      in <structname>pg_stat_replication</structname> view (Fujii Masao)
      <ulink url="&commit_baseurl;a7ab6ce6a">&sect;</ulink>
     </para>

     <para>
      If any standby server's replay LSN stopped advancing,
      the <structfield>write_lag</structfield>
      and <structfield>flush_lag</structfield> columns would eventually
      stop updating.
     </para>
    </listitem>

    <listitem>
<!--
Author: Fujii Masao <fujii@postgresql.org>
Branch: master [f33e60a53] 2025-10-22 20:09:43 +0900
Branch: REL_18_STABLE [6ff7ba9fe] 2025-10-22 20:10:58 +0900
Branch: REL_17_STABLE [1db2870bb] 2025-10-22 20:11:47 +0900
Branch: REL_16_STABLE [4fd916eab] 2025-10-22 20:12:36 +0900
Branch: REL_15_STABLE [caf529aba] 2025-10-22 20:13:15 +0900
Branch: REL_14_STABLE [f106f53df] 2025-10-22 20:14:02 +0900
Branch: REL_13_STABLE [b00a16bae] 2025-10-22 20:14:07 +0900
-->
     <para>
      Avoid duplicative log messages about
      invalid <varname>primary_slot_name</varname> settings (Fujii Masao)
      <ulink url="&commit_baseurl;f106f53df">&sect;</ulink>
     </para>
    </listitem>

    <listitem>
<!--
Author: Michael Paquier <michael@paquier.xyz>
Branch: master [912af1c7e] 2025-10-10 09:23:59 +0900
Branch: REL_18_STABLE [9a6ea00ac] 2025-10-10 09:24:48 +0900
Branch: REL_17_STABLE [42348839d] 2025-10-10 09:24:50 +0900
Branch: REL_16_STABLE [bfdd1a12d] 2025-10-10 09:24:53 +0900
Branch: REL_15_STABLE [0adf424b4] 2025-10-10 09:24:54 +0900
Branch: REL_14_STABLE [f57f2760e] 2025-10-10 09:24:57 +0900
Branch: REL_13_STABLE [c878d9808] 2025-10-10 09:24:59 +0900
-->
     <para>
      Remove the unfinished slot state file after failing to write a
      replication slot's state to disk (Michael Paquier)
      <ulink url="&commit_baseurl;f57f2760e">&sect;</ulink>
     </para>

     <para>
      Previously, a failure such as out-of-disk-space resulted in leaving
      a temporary <filename>state.tmp</filename> file behind.  That's
      problematic because it would block all subsequent attempts to
      write the state, requiring manual intervention to clean up.
     </para>
    </listitem>

    <listitem>
<!--
Author: Michael Paquier <michael@paquier.xyz>
Branch: master [17b2d5ec7] 2025-11-04 10:47:38 +0900
Branch: REL_18_STABLE [a14201073] 2025-11-04 10:52:33 +0900
Branch: REL_17_STABLE [e7340b484] 2025-11-04 10:52:35 +0900
Branch: REL_16_STABLE [9b6109607] 2025-11-04 10:52:38 +0900
Branch: REL_15_STABLE [da5ea6c70] 2025-11-04 10:52:41 +0900
Branch: REL_14_STABLE [a1b8b3b2e] 2025-11-04 10:52:42 +0900
Branch: REL_13_STABLE [25b484080] 2025-11-04 10:52:44 +0900
-->
     <para>
      Avoid unwanted WAL receiver shutdown when switching from streaming
      to archive WAL source (Xuneng Zhou)
      <ulink url="&commit_baseurl;a1b8b3b2e">&sect;</ulink>
     </para>

     <para>
      During a timeline change, a standby server's WAL receiver should
      remain alive, waiting for a new WAL streaming start point.  Instead
      it was repeatedly shutting down and immediately getting restarted,
      which could confuse status monitoring code.
     </para>
    </listitem>

    <listitem>
<!--
Author: Michael Paquier <michael@paquier.xyz>
Branch: master [ef03ea01f] 2025-08-22 09:03:59 +0900
Branch: REL_18_STABLE Release: REL_18_0 [86831952a] 2025-08-22 09:06:34 +0900
Branch: REL_17_STABLE [dcdc95cb4] 2025-08-22 09:06:36 +0900
Branch: REL_16_STABLE [ab874faaa] 2025-08-22 09:06:37 +0900
Branch: REL_15_STABLE [ec471008c] 2025-08-22 09:06:38 +0900
Branch: REL_14_STABLE [222130edd] 2025-08-22 09:06:40 +0900
Branch: REL_13_STABLE [30b32b08c] 2025-08-22 09:06:42 +0900
-->
     <para>
      Avoid failures in logical replication due to chance collisions of
      file numbers between regular and temporary tables (Vignesh C)
      <ulink url="&commit_baseurl;222130edd">&sect;</ulink>
     </para>

     <para>
      This low-probability problem manifested as transient errors
      like <quote>unexpected duplicate for
      tablespace <replaceable>X</replaceable>,
      relfilenode <replaceable>Y</replaceable></quote>.
      <filename>contrib/autoprewarm</filename> was also affected.
      A side-effect of the fix is that the SQL
      function <function>pg_filenode_relation()</function> will now ignore
      temporary tables.
     </para>
    </listitem>

    <listitem>
<!--
Author: Michael Paquier <michael@paquier.xyz>
Branch: master [1f2e51e3c] 2025-08-20 15:00:04 +0900
Branch: REL_18_STABLE Release: REL_18_0 [ea1c6b0b0] 2025-08-20 15:00:08 +0900
Branch: REL_17_STABLE [07a302387] 2025-08-20 15:00:10 +0900
Branch: REL_16_STABLE [fea1cc3f7] 2025-08-20 15:00:13 +0900
Branch: REL_15_STABLE [818be9b73] 2025-08-20 15:00:14 +0900
Branch: REL_14_STABLE [32d388d00] 2025-08-20 15:00:16 +0900
Branch: REL_13_STABLE [8ed079cad] 2025-08-20 15:00:17 +0900
-->
     <para>
      Avoid assertion failure when trying to release a replication slot in
      single-user mode (Hayato Kuroda)
      <ulink url="&commit_baseurl;32d388d00">&sect;</ulink>
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [03bf7a12c] 2025-10-13 17:56:45 -0400
Branch: REL_18_STABLE [b48ae226e] 2025-10-13 17:56:45 -0400
Branch: REL_17_STABLE [4c53519e1] 2025-10-13 17:56:45 -0400
Branch: REL_16_STABLE [9883e3cd1] 2025-10-13 17:56:45 -0400
Branch: REL_15_STABLE [f91666c83] 2025-10-13 17:56:45 -0400
Branch: REL_14_STABLE [e91eb4ad6] 2025-10-13 17:56:45 -0400
Branch: REL_13_STABLE [75a555d61] 2025-10-13 17:56:45 -0400
-->
     <para>
      Fix incorrect printing of messages about failures in checking
      whether the user has Windows administrator privilege (Bryan Green)
      <ulink url="&commit_baseurl;e91eb4ad6">&sect;</ulink>
     </para>

     <para>
      This code would have crashed or at least printed garbage.
      No such cases have been reported though, indicating that failure of
      these system calls is extremely rare.
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [21fddb3d7] 2025-08-13 12:00:03 -0400
Branch: REL_18_STABLE Release: REL_18_0 [787cd2b7d] 2025-08-13 11:59:47 -0400
Branch: REL_17_STABLE [ab92f0e7f] 2025-08-13 11:59:47 -0400
Branch: REL_16_STABLE [e67d5f7ba] 2025-08-13 11:59:47 -0400
Branch: REL_15_STABLE [f4c088344] 2025-08-13 11:59:47 -0400
Branch: REL_14_STABLE [b3d6e8b63] 2025-08-13 11:59:47 -0400
Branch: REL_13_STABLE [e3b3fa863] 2025-08-13 11:59:47 -0400
-->
     <para>
      Avoid startup failure on macOS and BSD platforms when there is a
      collision with a pre-existing semaphore set (Tom Lane)
      <ulink url="&commit_baseurl;b3d6e8b63">&sect;</ulink>
     </para>

     <para>
      If the pre-existing set has fewer semaphores than we asked for,
      these platforms return <systemitem>EINVAL</systemitem>
      not <systemitem>EEXIST</systemitem> as our code expected, resulting
      in failure to start the database.
     </para>
    </listitem>

    <listitem>
<!--
Author: David Rowley <drowley@postgresql.org>
Branch: master [50eb4e118] 2025-10-30 14:48:10 +1300
Branch: REL_18_STABLE [af3a79e08] 2025-10-30 14:49:07 +1300
Branch: REL_17_STABLE [bd6f986c9] 2025-10-30 14:49:42 +1300
Branch: REL_16_STABLE [cdc04a6c3] 2025-10-30 14:50:05 +1300
Branch: REL_15_STABLE [f3420e006] 2025-10-30 14:50:26 +1300
Branch: REL_14_STABLE [86bd9497f] 2025-10-30 14:50:46 +1300
Branch: REL_13_STABLE [7b955c227] 2025-10-30 14:51:08 +1300
-->
     <para>
      Fix false memory-context-checking warnings in debug builds
      on 64-bit Windows (David Rowley)
      <ulink url="&commit_baseurl;86bd9497f">&sect;</ulink>
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [7504d2be9] 2025-09-27 14:29:41 -0400
Branch: REL_18_STABLE [78a284b0b] 2025-09-27 14:29:41 -0400
Branch: REL_17_STABLE [3fc9aa5b0] 2025-09-27 14:29:41 -0400
Branch: REL_16_STABLE [b7f6798c0] 2025-09-27 14:29:41 -0400
Branch: REL_15_STABLE [9ca79896a] 2025-09-27 14:29:41 -0400
Branch: REL_14_STABLE [0be39b4b1] 2025-09-27 14:29:41 -0400
-->
     <para>
      Correctly handle <literal>GROUP BY DISTINCT</literal> in PL/pgSQL
      assignment statements (Tom Lane)
      <ulink url="&commit_baseurl;0be39b4b1">&sect;</ulink>
     </para>

     <para>
      The parser failed to record the <literal>DISTINCT</literal> option
      in this context, so that the command would act as if it were
      plain <literal>GROUP BY</literal>.
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [798b19d27] 2025-10-23 11:47:46 -0400
Branch: REL_18_STABLE [447a794f6] 2025-10-23 11:47:46 -0400
Branch: REL_17_STABLE [fbc41a145] 2025-10-23 11:47:46 -0400
Branch: REL_16_STABLE [cbfd4d0f8] 2025-10-23 11:47:46 -0400
Branch: REL_15_STABLE [4cde73259] 2025-10-23 11:47:46 -0400
Branch: REL_14_STABLE [7fb8c9240] 2025-10-23 11:47:46 -0400
Branch: REL_13_STABLE [d90c92d1c] 2025-10-23 11:47:46 -0400
-->
     <para>
      Avoid leaking memory when handling a SQL error within PL/Python
      (Tom Lane)
      <ulink url="&commit_baseurl;7fb8c9240">&sect;</ulink>
     </para>

     <para>
      This fixes a session-lifespan memory leak introduced in our previous
      minor releases.
     </para>
    </listitem>

    <listitem>
<!--
Author: Michael Paquier <michael@paquier.xyz>
Branch: master [db9405493] 2025-09-03 12:54:23 +0900
Branch: REL_18_STABLE Release: REL_18_0 [ae53537e2] 2025-09-03 12:54:27 +0900
Branch: REL_17_STABLE [0fedb3a27] 2025-09-03 12:54:29 +0900
Branch: REL_16_STABLE [701a0bd56] 2025-09-03 12:54:31 +0900
Branch: REL_15_STABLE [0b274c475] 2025-09-03 12:54:32 +0900
Branch: REL_14_STABLE [0cc540f0d] 2025-09-03 12:54:34 +0900
-->
     <para>
      Fix <application>libpq</application>'s trace output of characters
      with the high bit set (Ran Benita)
      <ulink url="&commit_baseurl;0cc540f0d">&sect;</ulink>
     </para>

     <para>
      On platforms where <type>char</type> is considered signed, the
      output included unsightly <literal>\xffffff</literal> decoration.
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [ea78bd6d5] 2025-10-05 16:27:47 -0400
Branch: REL_18_STABLE [d83879a32] 2025-10-05 16:27:47 -0400
Branch: REL_17_STABLE [1c4671f7b] 2025-10-05 16:27:47 -0400
Branch: REL_16_STABLE [46c4478db] 2025-10-05 16:27:47 -0400
Branch: REL_15_STABLE [771b106d1] 2025-10-05 16:27:47 -0400
Branch: REL_14_STABLE [f46d77377] 2025-10-05 16:27:47 -0400
Branch: REL_13_STABLE [fc287cf3c] 2025-10-05 16:27:47 -0400
-->
     <para>
      Fix <application>libpq</application>'s handling of socket-related
      errors on Windows within its GSSAPI logic (Ning Wu, Tom Lane)
      <ulink url="&commit_baseurl;f46d77377">&sect;</ulink>
     </para>

     <para>
      The code for encrypting/decrypting transmitted data using GSSAPI did
      not correctly recognize error conditions on the connection socket,
      since Windows reports those differently than other platforms.  This
      led to failure to make such connections on Windows.
     </para>
    </listitem>

    <listitem>
<!--
Author: Fujii Masao <fujii@postgresql.org>
Branch: master [8e5b92928] 2025-09-16 16:44:58 +0900
Branch: REL_18_STABLE Release: REL_18_0 [176002c5b] 2025-09-16 16:46:28 +0900
Branch: REL_17_STABLE [968141898] 2025-09-16 16:46:36 +0900
Branch: REL_16_STABLE [20b23784f] 2025-09-16 16:46:43 +0900
Branch: REL_15_STABLE [165b07efe] 2025-09-16 16:46:51 +0900
Branch: REL_14_STABLE [295c0a644] 2025-09-16 16:46:58 +0900
Branch: REL_13_STABLE [dff7591a7] 2025-09-16 16:47:05 +0900
-->
     <para>
      In <application>pg_dump</application>, dump security labels on
      subscriptions and event triggers (Jian He, Fujii Masao)
      <ulink url="&commit_baseurl;295c0a644">&sect;</ulink>
     </para>

     <para>
      Labels on these types of objects were previously missed.
     </para>
    </listitem>

    <listitem>
<!--
Author: Noah Misch <noah@leadboat.com>
Branch: master [b61a5c4be] 2025-08-22 20:50:28 -0700
Branch: REL_18_STABLE Release: REL_18_0 [7652142f4] 2025-08-22 20:50:31 -0700
Branch: REL_17_STABLE [e8d22095e] 2025-08-22 20:50:32 -0700
Branch: REL_16_STABLE [e68fa9a83] 2025-08-22 20:50:32 -0700
Branch: REL_15_STABLE [fbf967e99] 2025-08-22 20:50:32 -0700
Branch: REL_14_STABLE [4948bb9df] 2025-08-22 20:50:33 -0700
Branch: REL_13_STABLE [05341b2e9] 2025-08-22 20:50:33 -0700
Branch: master [ad4412480] 2025-08-23 16:46:20 -0700
Branch: REL_18_STABLE Release: REL_18_0 [c6dca7c3d] 2025-08-23 16:46:24 -0700
Branch: REL_17_STABLE [49a09c6c5] 2025-08-23 16:46:24 -0700
Branch: REL_16_STABLE [412d29fd2] 2025-08-23 16:46:24 -0700
Branch: REL_15_STABLE [090c9c960] 2025-08-23 16:46:25 -0700
Branch: REL_14_STABLE [22c6a44f0] 2025-08-23 16:46:25 -0700
Branch: REL_13_STABLE [fb75e1ef7] 2025-08-23 16:46:26 -0700
Author: Álvaro Herrera <alvherre@kurilemu.de>
Branch: master [4921a5972] 2025-10-18 17:50:10 +0200
Branch: REL_18_STABLE [162e70ea0] 2025-10-18 17:50:10 +0200
Branch: REL_17_STABLE [7419c99a2] 2025-10-18 17:50:10 +0200
Branch: REL_16_STABLE [06c1ee6b7] 2025-10-18 17:50:10 +0200
Branch: REL_15_STABLE [4cc3b4445] 2025-10-18 17:50:10 +0200
Branch: REL_14_STABLE [6062c3db3] 2025-10-18 17:50:10 +0200
Branch: REL_13_STABLE [d20df9590] 2025-10-18 17:50:10 +0200
-->
     <para>
      Fix <application>pg_dump</application>'s sorting of default ACLs and
      foreign key constraints (Kirill Reshke, Álvaro Herrera)
      <ulink url="&commit_baseurl;4948bb9df">&sect;</ulink>
      <ulink url="&commit_baseurl;22c6a44f0">&sect;</ulink>
      <ulink url="&commit_baseurl;6062c3db3">&sect;</ulink>
     </para>

     <para>
      Ensure consistent ordering of these database object types, as was
      already done for other object types.
     </para>
    </listitem>

    <listitem>
<!--
Author: Noah Misch <noah@leadboat.com>
Branch: master [c044b50d1] 2025-09-16 09:40:44 -0700
Branch: REL_18_STABLE Release: REL_18_0 [4ad846445] 2025-09-16 09:40:48 -0700
Branch: REL_17_STABLE [e127764b6] 2025-09-16 09:40:48 -0700
Branch: REL_16_STABLE [3cf328eca] 2025-09-16 09:40:48 -0700
Branch: REL_15_STABLE [0773f3a87] 2025-09-16 09:40:49 -0700
Branch: REL_14_STABLE [85d6ed31f] 2025-09-16 09:40:49 -0700
Branch: REL_13_STABLE [a685c057a] 2025-09-16 09:40:50 -0700
-->
     <para>
      In <application>pg_dump</application>, label comments for
      separately-dumped domain constraints with the proper dependency
      (Noah Misch)
      <ulink url="&commit_baseurl;85d6ed31f">&sect;</ulink>
     </para>

     <para>
      This error could lead to
      parallel <application>pg_restore</application> attempting to create
      the comment before the constraint itself has been restored.
     </para>
    </listitem>

    <listitem>
<!--
Author: Fujii Masao <fujii@postgresql.org>
Branch: master [b54e8dbfe] 2025-09-16 10:35:12 +0900
Branch: REL_18_STABLE Release: REL_18_0 [77d2b155c] 2025-09-16 10:36:20 +0900
Branch: REL_17_STABLE [f7f9c5d65] 2025-09-16 10:36:54 +0900
Branch: REL_16_STABLE [97527a5e6] 2025-09-16 10:37:38 +0900
Branch: REL_15_STABLE [c8ed16050] 2025-09-16 10:38:09 +0900
Branch: REL_14_STABLE [db900ec35] 2025-09-16 10:38:40 +0900
Branch: REL_13_STABLE [8fbd1f8ea] 2025-09-16 10:39:13 +0900
Branch: master [45f50c995] 2025-09-18 11:09:15 +0900
Branch: REL_18_STABLE Release: REL_18_0 [7aecc00b3] 2025-09-18 11:10:12 +0900
Branch: REL_17_STABLE [dc8aa2f58] 2025-09-18 11:10:18 +0900
Branch: REL_16_STABLE [0870397cc] 2025-09-18 11:10:24 +0900
Branch: REL_15_STABLE [5f42008f9] 2025-09-18 11:10:30 +0900
Branch: REL_14_STABLE [bc476f8b8] 2025-09-18 11:10:37 +0900
Branch: REL_13_STABLE [a4dbb11bb] 2025-09-18 11:10:43 +0900
-->
     <para>
      In <application>pg_restore</application>, skip comments and security
      labels for publications and subscriptions that are not being
      restored (Jian He, Fujii Masao)
      <ulink url="&commit_baseurl;db900ec35">&sect;</ulink>
      <ulink url="&commit_baseurl;bc476f8b8">&sect;</ulink>
     </para>

     <para>
      Do not emit <command>COMMENT</command> or <command>SECURITY
      LABEL</command> commands for these objects
      when <option>--no-publications</option>
      or <option>--no-subscriptions</option> is specified.
     </para>
    </listitem>

    <listitem>
<!--
Author: Daniel Gustafsson <dgustafsson@postgresql.org>
Branch: master [e686010c5] 2025-08-29 19:28:46 +0200
Branch: REL_18_STABLE Release: REL_18_0 [8980c724b] 2025-08-29 19:28:46 +0200
Branch: REL_17_STABLE [92268b35d] 2025-08-29 19:28:46 +0200
Branch: REL_16_STABLE [ec017a305] 2025-08-29 19:28:46 +0200
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [a239c4a0c] 2025-10-13 12:44:20 -0400
Branch: REL_18_STABLE [6a4009747] 2025-10-13 12:44:20 -0400
Branch: REL_17_STABLE [bf18e9bd7] 2025-10-13 12:44:20 -0400
Branch: REL_16_STABLE [1518b7d76] 2025-10-13 12:44:20 -0400
Branch: master [277dec651] 2025-10-19 14:36:58 -0400
Branch: REL_18_STABLE [aa1fcd087] 2025-10-19 14:36:58 -0400
Branch: REL_17_STABLE [2efca1633] 2025-10-19 14:36:58 -0400
Branch: REL_16_STABLE [c865f5b9f] 2025-10-19 14:36:58 -0400
Branch: REL_15_STABLE [8b9924bce] 2025-10-19 14:36:58 -0400
Branch: REL_14_STABLE [40dc710a6] 2025-10-19 14:36:58 -0400
Branch: REL_13_STABLE [33276cd02] 2025-10-19 14:36:58 -0400
-->
     <para>
      Fix assorted errors in the data compression logic
      in <application>pg_dump</application>
      and <application>pg_restore</application>
      (Daniel Gustafsson, Tom Lane)
      <ulink url="&commit_baseurl;40dc710a6">&sect;</ulink>
     </para>

     <para>
      Error checking was missing or incorrect in several places, and there
      were also portability issues that would manifest on big-endian
      hardware.  These problems had been missed because this code is only
      used to read compressed TOC files within directory-format
      dumps.   <application>pg_dump</application> never produces such a
      dump; the case can be reached only by manually compressing the TOC
      file after the fact, which is a supported thing to do but very
      uncommon.
     </para>
    </listitem>

    <listitem>
<!--
Author: Michael Paquier <michael@paquier.xyz>
Branch: master [902c08887] 2025-10-03 14:03:55 +0900
Branch: REL_18_STABLE [c00637b5f] 2025-10-03 14:04:00 +0900
Branch: REL_17_STABLE [de6de069d] 2025-10-03 14:04:01 +0900
Branch: REL_16_STABLE [640590bb4] 2025-10-03 14:04:03 +0900
Branch: REL_15_STABLE [b5cefc197] 2025-10-03 14:04:05 +0900
Branch: REL_14_STABLE [9b3beb7c6] 2025-10-03 14:04:06 +0900
Branch: REL_13_STABLE [f1a2f3a0c] 2025-10-03 14:04:08 +0900
-->
     <para>
      Fix <application>pgbench</application> to error out cleanly if
      a <literal>COPY</literal> operation is started (Anthonin Bonnefoy)
      <ulink url="&commit_baseurl;9b3beb7c6">&sect;</ulink>
     </para>

     <para>
      <application>pgbench</application> doesn't intend to support this
      case, but previously it went into an infinite loop.
     </para>
    </listitem>

    <listitem>
<!--
Author: Fujii Masao <fujii@postgresql.org>
Branch: master [19d4f9ffc] 2025-09-30 23:52:28 +0900
Branch: REL_18_STABLE [29aabbc43] 2025-09-30 23:53:32 +0900
Branch: REL_17_STABLE [a912118c6] 2025-09-30 23:53:46 +0900
Branch: REL_16_STABLE [36c4d30c8] 2025-09-30 23:53:53 +0900
Branch: REL_15_STABLE [bdccb6302] 2025-09-30 23:54:01 +0900
Branch: REL_14_STABLE [cb21e1f92] 2025-09-30 23:55:02 +0900
Branch: REL_13_STABLE [7d7e81d1e] 2025-09-30 23:55:33 +0900
-->
     <para>
      Fix <application>pgbench</application>'s reporting of multiple
      errors (Yugo Nagata)
      <ulink url="&commit_baseurl;cb21e1f92">&sect;</ulink>
     </para>

     <para>
      In cases where two successive <function>PQgetResult</function> calls
      both fail, <application>pgbench</application> might report the wrong
      error message.
     </para>
    </listitem>

    <listitem>
<!--
Author: Masahiko Sawada <msawada@postgresql.org>
Branch: master [8ae0f6a0c] 2025-11-04 15:47:25 -0800
Branch: REL_18_STABLE [71aa2e114] 2025-11-04 15:47:22 -0800
Branch: master [eab9e4e27] 2025-08-19 12:11:42 -0700
Branch: REL_18_STABLE Release: REL_18_0 [0beb7e933] 2025-08-19 12:11:39 -0700
Branch: REL_17_STABLE [b6090ed96] 2025-08-19 12:11:37 -0700
Branch: REL_16_STABLE [815fcfb20] 2025-08-19 12:11:34 -0700
Branch: REL_15_STABLE [eb9ee4d18] 2025-08-19 12:11:32 -0700
Branch: REL_14_STABLE [79643105a] 2025-08-19 12:11:29 -0700
Branch: REL_13_STABLE [7d8d36289] 2025-08-19 12:11:25 -0700
-->
     <para>
      Ensure that <filename>contrib/pg_buffercache</filename> functions
      can be canceled (Satyanarayana Narlapuram, Yuhang Qiu)
      <ulink url="&commit_baseurl;79643105a">&sect;</ulink>
     </para>

     <para>
      Some code paths were capable of running for a long time without
      checking for interrupts.
     </para>
    </listitem>

    <listitem>
<!--
Author: Nathan Bossart <nathan@postgresql.org>
Branch: master [208927e65] 2025-10-17 11:36:50 -0500
Branch: REL_18_STABLE [3ccf8e9ac] 2025-10-17 11:36:50 -0500
Branch: REL_17_STABLE [a0551bc57] 2025-10-17 11:36:50 -0500
Branch: REL_16_STABLE [fae0ce5e3] 2025-10-17 11:36:50 -0500
Branch: REL_15_STABLE [6c03ae8d6] 2025-10-17 11:36:50 -0500
Branch: REL_14_STABLE [f146eb45c] 2025-10-17 11:36:50 -0500
Branch: REL_13_STABLE [19a64f567] 2025-10-17 11:36:50 -0500
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [da44d71e7] 2025-10-18 18:36:21 -0400
Branch: REL_18_STABLE [c29d32d27] 2025-10-18 18:36:21 -0400
Branch: REL_17_STABLE [d4e8c37cc] 2025-10-18 18:36:21 -0400
Branch: REL_16_STABLE [c26a8eaf6] 2025-10-18 18:36:21 -0400
-->
     <para>
      Fix <filename>contrib/pg_prewarm</filename>'s privilege checks for
      indexes (Ayush Vatsa, Nathan Bossart)
      <ulink url="&commit_baseurl;f146eb45c">&sect;</ulink>
     </para>

     <para>
      <function>pg_prewarm()</function> requires <literal>SELECT</literal>
      privilege on relations to be prewarmed.  However, since indexes have
      no SQL privileges of their own, this resulted in non-superusers
      being unable to prewarm indexes.  Instead, check
      for <literal>SELECT</literal> privilege on the index's table.
     </para>
    </listitem>

    <listitem>
<!--
Author: Michael Paquier <michael@paquier.xyz>
Branch: master [684a745f5] 2025-10-02 11:07:30 +0900
Branch: REL_18_STABLE [fc295beb7] 2025-10-02 11:09:10 +0900
Branch: REL_17_STABLE [036decbba] 2025-10-02 11:09:12 +0900
Branch: REL_16_STABLE [c0f9fe877] 2025-10-02 11:09:13 +0900
Branch: REL_15_STABLE [49b5f0b53] 2025-10-02 11:09:15 +0900
Branch: REL_14_STABLE [ee2dbcad0] 2025-10-02 11:09:17 +0900
Branch: REL_13_STABLE [c207bf473] 2025-10-02 11:09:19 +0900
-->
     <para>
      Make <filename>contrib/pgstattuple</filename> more robust about
      empty or invalid index pages (Nitin Motiani)
      <ulink url="&commit_baseurl;ee2dbcad0">&sect;</ulink>
     </para>

     <para>
      Count all-zero pages as free space, and ignore pages that are
      invalid according to a check of the page's special-space size.
      The code for btree indexes already counted all-zero pages as free,
      but the hash and gist code would error out, which has been found to
      be much less user-friendly.  Similarly, make all three cases agree
      on ignoring corrupted pages rather than throwing errors.
     </para>
    </listitem>

    <listitem>
<!--
Author: Thomas Munro <tmunro@postgresql.org>
Branch: master [c5d34f4a5] 2025-11-08 12:26:43 +1300
Branch: REL_18_STABLE [f8ccab0e9] 2025-11-08 12:28:15 +1300
Branch: REL_17_STABLE [03d9140cb] 2025-11-08 12:28:52 +1300
Branch: REL_16_STABLE [2f76ffe5e] 2025-11-08 12:29:15 +1300
Branch: REL_15_STABLE [1c7cba4c5] 2025-11-08 12:30:08 +1300
Branch: REL_14_STABLE [d8ba910b0] 2025-11-08 12:32:42 +1300
Branch: REL_13_STABLE [77b5b2c6f] 2025-11-08 12:33:01 +1300
-->
     <para>
      Harden our read and write barrier macros to satisfy Clang
      (Thomas Munro)
      <ulink url="&commit_baseurl;d8ba910b0">&sect;</ulink>
     </para>

     <para>
      We supposed that <function>__atomic_thread_fence()</function> is a
      sufficient barrier to prevent the C compiler from re-ordering memory
      accesses around it, but it appears that that's not true for Clang,
      allowing it to generate incorrect code for at least RISC-V, MIPS,
      and LoongArch machines.  Add explicit compiler barriers to fix that.
     </para>
    </listitem>

    <listitem>
<!--
Author: Peter Eisentraut <peter@eisentraut.org>
Branch: master [282d0bdee] 2025-09-15 08:31:11 +0200
Branch: REL_18_STABLE Release: REL_18_0 [c11ac811a] 2025-09-15 08:31:36 +0200
Branch: REL_17_STABLE [755f01ad7] 2025-09-15 08:31:47 +0200
Branch: REL_16_STABLE [2670881af] 2025-09-15 08:31:53 +0200
Branch: REL_15_STABLE [72a24bebc] 2025-09-15 08:31:59 +0200
Branch: REL_14_STABLE [fbfc36e94] 2025-09-15 08:32:08 +0200
Branch: REL_13_STABLE [59d6e843e] 2025-09-15 08:32:14 +0200
-->
     <para>
      Fix building with LLVM version 21 and later (Holger Hoffstätte)
      <ulink url="&commit_baseurl;fbfc36e94">&sect;</ulink>
     </para>
    </listitem>

    <listitem>
<!--
Author: Álvaro Herrera <alvherre@kurilemu.de>
Branch: master [6ad9378c9] 2025-10-16 20:21:05 +0200
Branch: REL_18_STABLE [6aa04a60c] 2025-10-16 20:21:05 +0200
Branch: REL_17_STABLE [a8933194e] 2025-10-16 20:21:05 +0200
Branch: REL_16_STABLE [a506b0c0a] 2025-10-16 20:21:05 +0200
Branch: REL_15_STABLE [33202cba8] 2025-10-16 20:21:05 +0200
Branch: REL_14_STABLE [56cd332f8] 2025-10-16 20:21:05 +0200
Branch: REL_13_STABLE [f768f5a7d] 2025-10-16 20:21:05 +0200
-->
     <para>
      Fix PGXS build infrastructure to support building
      NLS <filename>po</filename> files for extensions (Ryo Matsumura)
      <ulink url="&commit_baseurl;56cd332f8">&sect;</ulink>
     </para>
    </listitem>

   </itemizedlist>

  </sect2>
 </sect1>

 <sect1 id="release-14-19">
  <title>Release 14.19</title>

  <formalpara>
  <title>Release date:</title>
  <para>2025-08-14</para>
  </formalpara>

  <para>
   This release contains a variety of fixes from 14.18.
   For information about new features in major release 14, see
   <xref linkend="release-14"/>.
  </para>

  <sect2>
   <title>Migration to Version 14.19</title>

   <para>
    A dump/restore is not required for those running 14.X.
   </para>

   <para>
    However, if you have any
    BRIN <literal>numeric_minmax_multi_ops</literal> indexes, it is
    advisable to reindex them after updating.  See the fourth changelog
    entry below.
   </para>

   <para>
    Also, if you are upgrading from a version earlier than 14.18,
    see <xref linkend="release-14-18"/>.
   </para>
  </sect2>

  <sect2>
   <title>Changes</title>

   <itemizedlist>

    <listitem>
<!--
Author: Dean Rasheed <dean.a.rasheed@gmail.com>
Branch: master [22424953c] 2025-08-11 09:03:11 +0100
Branch: REL_18_STABLE [64f77c6a6] 2025-08-11 09:07:36 +0100
Branch: REL_17_STABLE [a85eddab2] 2025-08-11 09:09:12 +0100
Branch: REL_16_STABLE [7e86da539] 2025-08-11 09:10:17 +0100
Branch: REL_15_STABLE [415badc13] 2025-08-11 09:11:02 +0100
Branch: REL_14_STABLE [afe38fb6a] 2025-08-11 09:12:09 +0100
Branch: REL_13_STABLE [533211ded] 2025-08-11 09:13:20 +0100
-->
     <para>
      Tighten security checks in planner estimation functions
      (Dean Rasheed)
      <ulink url="&commit_baseurl;afe38fb6a">&sect;</ulink>
     </para>

     <para>
      The fix for CVE-2017-7484, plus followup fixes, intended to prevent
      leaky functions from being applied to statistics data for columns
      that the calling user does not have permission to read.  Two gaps in
      that protection have been found.  One gap applies to partitioning
      and inheritance hierarchies where RLS policies on the tables should
      restrict access to statistics data, but did not.
     </para>

     <para>
      The other gap applies to cases where the query accesses a table via
      a view, and the view owner has permissions to read the underlying
      table but the calling user does not have permissions on the view.
      The view owner's permissions satisfied the security checks, and the
      leaky function would get applied to the underlying table's
      statistics before we check the calling user's permissions on the
      view.  This has been fixed by making security checks on views occur
      at the start of planning.  That might cause permissions failures to
      occur earlier than before.
     </para>

     <para>
      The <productname>PostgreSQL</productname> Project thanks
      Dean Rasheed for reporting this problem.
      (CVE-2025-8713)
     </para>
    </listitem>

    <listitem>
<!--
Author: Nathan Bossart <nathan@postgresql.org>
Branch: master [71ea0d679] 2025-08-11 09:00:00 -0500
Branch: REL_18_STABLE [67a2fbb8f] 2025-08-11 09:00:00 -0500
Branch: REL_17_STABLE [575f54d4c] 2025-08-11 09:00:00 -0500
Branch: REL_16_STABLE [7ad8e7909] 2025-08-11 09:00:00 -0500
Branch: REL_15_STABLE [424040506] 2025-08-11 09:00:00 -0500
Branch: REL_14_STABLE [e4998d089] 2025-08-11 09:00:00 -0500
Branch: REL_13_STABLE [c204bd39f] 2025-08-11 09:00:00 -0500
Branch: REL_14_STABLE [8967c33c6] 2025-08-11 12:37:00 -0500
Branch: REL_13_STABLE [27d3dee68] 2025-08-11 12:37:00 -0500
-->
     <para>
      Prevent <application>pg_dump</application> scripts from being used
      to attack the user running the restore (Nathan Bossart)
      <ulink url="&commit_baseurl;e4998d089">&sect;</ulink>
      <ulink url="&commit_baseurl;8967c33c6">&sect;</ulink>
     </para>

     <para>
      Since dump/restore operations typically involve running SQL commands
      as superuser, the target database installation must trust the source
      server.  However, it does not follow that the operating system user
      who executes <application>psql</application> to perform the restore
      should have to trust the source server.  The risk here is that an
      attacker who has gained superuser-level control over the source
      server might be able to cause it to emit text that would be
      interpreted as <application>psql</application> meta-commands.
      That would provide shell-level access to the restoring user's own
      account, independently of access to the target database.
     </para>

     <para>
      To provide a positive guarantee that this can't happen,
      extend <application>psql</application> with
      a <command>\restrict</command> command that prevents execution of
      further meta-commands, and teach <application>pg_dump</application>
      to issue that before any data coming from the source server.
     </para>

     <para>
      The PostgreSQL Project thanks Martin Rakhmanov, Matthieu Denais, and
      RyotaK for reporting this problem.
      (CVE-2025-8714)
     </para>
    </listitem>

    <listitem>
<!--
Author: Noah Misch <noah@leadboat.com>
Branch: master [70693c645] 2025-08-11 06:18:59 -0700
Branch: REL_18_STABLE [13a67ce60] 2025-08-11 06:19:03 -0700
Branch: REL_17_STABLE [9b92f115b] 2025-08-11 06:19:03 -0700
Branch: REL_16_STABLE [850caae60] 2025-08-11 06:19:03 -0700
Branch: REL_15_STABLE [9751f934a] 2025-08-11 06:19:04 -0700
Branch: REL_14_STABLE [0f5838438] 2025-08-11 06:19:04 -0700
Branch: REL_13_STABLE [2179e6005] 2025-08-11 06:19:05 -0700
-->
     <para>
      Convert newlines to spaces in names included in comments
      in <application>pg_dump</application> output
      (Noah Misch)
      <ulink url="&commit_baseurl;0f5838438">&sect;</ulink>
     </para>

     <para>
      Object names containing newlines offered the ability to inject
      arbitrary SQL commands into the output script.  (Without the
      preceding fix, injection of <application>psql</application>
      meta-commands would also be possible this way.)
      CVE-2012-0868 fixed this class of problem at the time, but later
      work reintroduced several cases.
     </para>

     <para>
      The <productname>PostgreSQL</productname> Project thanks
      Noah Misch for reporting this problem.
      (CVE-2025-8715)
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [80c758a2e] 2025-08-05 16:51:10 -0400
Branch: REL_18_STABLE [9b681e239] 2025-08-05 16:51:10 -0400
Branch: REL_17_STABLE [0b0d3c19b] 2025-08-05 16:51:10 -0400
Branch: REL_16_STABLE [b9279058a] 2025-08-05 16:51:10 -0400
Branch: REL_15_STABLE [835c9374d] 2025-08-05 16:51:10 -0400
Branch: REL_14_STABLE [5b0c8e328] 2025-08-05 16:51:10 -0400
-->
     <para>
      Fix incorrect distance calculation in
      BRIN <literal>numeric_minmax_multi_ops</literal> support function
      (Peter Eisentraut, Tom Lane)
      <ulink url="&commit_baseurl;5b0c8e328">&sect;</ulink>
     </para>

     <para>
      The results were sometimes wrong on 64-bit platforms, and wildly
      wrong on 32-bit platforms.  This did not produce obvious failures
      because the logic is only used to choose how to merge values into
      ranges; at worst the index would become inefficient and bloated.
      Nonetheless it's recommended to reindex any BRIN indexes that use
      the <literal>numeric_minmax_multi_ops</literal> operator class.
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [71c0921b6] 2025-07-28 16:50:41 -0400
Branch: REL_18_STABLE [637ead2e1] 2025-07-28 16:50:41 -0400
Branch: REL_17_STABLE [fd4ad33fe] 2025-07-28 16:50:41 -0400
Branch: REL_16_STABLE [6d5e493b4] 2025-07-28 16:50:42 -0400
Branch: REL_15_STABLE [0ffbd345e] 2025-07-28 16:50:42 -0400
Branch: REL_14_STABLE [0395464af] 2025-07-28 16:50:42 -0400
Branch: REL_13_STABLE [589d6e640] 2025-07-28 16:50:42 -0400
Branch: master [902f92221] 2025-07-29 12:47:38 -0400
Branch: REL_18_STABLE [d5f014d89] 2025-07-29 12:47:19 -0400
Branch: REL_17_STABLE [7571e0f6e] 2025-07-29 12:47:19 -0400
Branch: REL_16_STABLE [762c6d8d2] 2025-07-29 12:47:19 -0400
Branch: REL_15_STABLE [0928e18eb] 2025-07-29 12:47:20 -0400
Branch: REL_14_STABLE [cdcdabce5] 2025-07-29 12:47:20 -0400
Branch: REL_13_STABLE [0ae824704] 2025-07-29 12:47:20 -0400
-->
     <para>
      Avoid regression in the size of XML input that we will accept
      (Michael Paquier, Erik Wienhold)
      <ulink url="&commit_baseurl;0395464af">&sect;</ulink>
      <ulink url="&commit_baseurl;cdcdabce5">&sect;</ulink>
     </para>

     <para>
      Our workaround for a bug in early 2.13.x releases
      of <application>libxml2</application> made use of a code path that
      rejects text chunks exceeding 10MB, whereas the previous coding did
      not.  Those early releases are presumably extinct in the wild by
      now, so revert to the previous coding.
     </para>
    </listitem>

    <listitem>
<!--
Author: Etsuro Fujita <efujita@postgresql.org>
Branch: master [9e63f83a7] 2025-08-08 17:35:00 +0900
Branch: REL_18_STABLE [bba6a6faf] 2025-08-08 17:35:00 +0900
Branch: REL_17_STABLE [e028ce911] 2025-08-08 17:35:01 +0900
Branch: REL_16_STABLE [3863c6fb6] 2025-08-08 17:35:02 +0900
Branch: REL_15_STABLE [f39a7f32a] 2025-08-08 17:35:02 +0900
Branch: REL_14_STABLE [73eb6afa1] 2025-08-08 17:35:03 +0900
Branch: REL_13_STABLE [afdb4cde1] 2025-08-08 17:35:04 +0900
-->
     <para>
      Allow tables with statement-level triggers to become partitions or
      inheritance children (Etsuro Fujita)
      <ulink url="&commit_baseurl;73eb6afa1">&sect;</ulink>
     </para>

     <para>
      We do not allow partitions or inheritance child tables to have
      row-level triggers with transition tables, because an operation on
      the whole inheritance tree would need to maintain a separate
      transition table for each such child table.  But that problem does
      not apply for statement-level triggers, because only the parent's
      statement-level triggers will be fired.  The code that checks
      whether an existing table can become a partition or inheritance
      child nonetheless rejected both kinds of trigger.
     </para>
    </listitem>

    <listitem>
<!--
Author: Etsuro Fujita <efujita@postgresql.org>
Branch: master [62a1211d3] 2025-08-08 10:50:00 +0900
Branch: REL_18_STABLE [ce8817022] 2025-08-08 10:50:01 +0900
Branch: REL_17_STABLE [9048a83c7] 2025-08-08 10:50:02 +0900
Branch: REL_16_STABLE [9cca445df] 2025-08-08 10:50:02 +0900
Branch: REL_15_STABLE [d642d2306] 2025-08-08 10:50:03 +0900
Branch: REL_14_STABLE [e94fc1a8a] 2025-08-08 10:50:04 +0900
Branch: REL_13_STABLE [b6641f7b0] 2025-08-08 10:50:05 +0900
-->
     <para>
      Disallow collecting transition tuples from child foreign tables
      (Etsuro Fujita)
      <ulink url="&commit_baseurl;e94fc1a8a">&sect;</ulink>
     </para>

     <para>
      We do not support triggers with transition tables on foreign tables.
      However, the case of a partition or inheritance child that is a
      foreign table was overlooked.  If the parent has such a trigger,
      incorrect transition tuples were collected from the foreign child.
      Instead throw an error, reporting that the case is not supported.
     </para>
    </listitem>

    <listitem>
<!--
Author: Amit Kapila <akapila@postgresql.org>
Branch: master [2ab2d6f97] 2025-08-01 07:58:48 +0000
Branch: REL_18_STABLE [d9f01a287] 2025-08-01 07:46:22 +0000
Branch: REL_17_STABLE [8c298324a] 2025-08-01 06:53:16 +0000
Branch: REL_16_STABLE [adfd80219] 2025-08-01 06:40:06 +0000
Branch: REL_15_STABLE [434d2d147] 2025-08-01 07:23:37 +0000
Branch: REL_14_STABLE [41fb3f51c] 2025-08-01 07:16:30 +0000
-->
     <para>
      Fix a potential deadlock during <command>ALTER SUBSCRIPTION ... DROP
      PUBLICATION</command> (Ajin Cherian)
      <ulink url="&commit_baseurl;41fb3f51c">&sect;</ulink>
     </para>

     <para>
      Ensure that server processes acquire catalog locks in a consistent
      order during replication origin drops.
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master Release: REL_18_BR [5861b1f34] 2025-06-20 13:41:11 -0400
Branch: REL_17_STABLE [fdd826922] 2025-06-20 13:41:11 -0400
Branch: REL_16_STABLE [1e24ea160] 2025-06-20 13:41:11 -0400
Branch: REL_15_STABLE [75b8982ea] 2025-06-20 13:41:11 -0400
Branch: REL_14_STABLE [27af8b9be] 2025-06-20 13:41:11 -0400
Branch: REL_13_STABLE [4b66cb188] 2025-06-20 13:41:11 -0400
-->
     <para>
      Shorten the race condition window for creating indexes with
      conflicting names (Tom Lane)
      <ulink url="&commit_baseurl;27af8b9be">&sect;</ulink>
     </para>

     <para>
      When choosing an auto-generated name for an index, avoid conflicting
      with not-yet-committed <structname>pg_class</structname> rows as
      well as fully-valid ones.  This avoids possibly choosing the same
      name as some concurrent <command>CREATE INDEX</command> did,
      when that command is still in process of filling its index, or is
      done but is part of a not-yet-committed transaction.  There's still
      a window for trouble, but it's only as long as the time needed to
      validate a new index's parameters and insert
      its <structname>pg_class</structname> row.
     </para>
    </listitem>

    <listitem>
<!--
Author: Michael Paquier <michael@paquier.xyz>
Branch: master Release: REL_18_BR [661643ded] 2025-06-25 10:03:46 +0900
Branch: REL_17_STABLE [2e0b5d252] 2025-06-25 10:03:50 +0900
Branch: REL_16_STABLE [d187cabdd] 2025-06-25 10:03:52 +0900
Branch: REL_15_STABLE [354944663] 2025-06-25 10:03:53 +0900
Branch: REL_14_STABLE [c079ba3fc] 2025-06-25 10:03:54 +0900
Branch: REL_13_STABLE [65c3223f9] 2025-06-25 10:03:56 +0900
-->
     <para>
      Prevent usage of incorrect <command>VACUUM</command> options in some
      cases where multiple tables are vacuumed in a single command (Nathan
      Bossart, Michael Paquier)
      <ulink url="&commit_baseurl;c079ba3fc">&sect;</ulink>
     </para>

     <para>
      The <literal>TRUNCATE</literal> and <literal>INDEX_CLEANUP</literal>
      options of one table could be applied to others.
     </para>
    </listitem>

    <listitem>
<!--
Author: Michael Paquier <michael@paquier.xyz>
Branch: master Release: REL_18_BR [d46911e58] 2025-05-28 08:58:40 +0900
Branch: REL_17_STABLE [e3ffc3e91] 2025-05-28 08:59:22 +0900
Branch: REL_16_STABLE [e9e535d61] 2025-05-28 08:59:24 +0900
Branch: REL_15_STABLE [b3e99115e] 2025-05-28 08:59:25 +0900
Branch: REL_14_STABLE [1fe15d25e] 2025-05-28 08:59:27 +0900
Branch: REL_13_STABLE [9481d1614] 2025-05-28 08:59:28 +0900
Branch: master Release: REL_18_BR [4fbb46f61] 2025-05-28 09:43:31 +0900
Branch: REL_17_STABLE [a3c6d92f3] 2025-05-28 09:43:45 +0900
Branch: REL_16_STABLE [52d08620e] 2025-05-28 09:43:46 +0900
Branch: REL_15_STABLE [4dc642e75] 2025-05-28 09:43:48 +0900
Branch: REL_14_STABLE [0c09922c0] 2025-05-28 09:43:50 +0900
Branch: REL_13_STABLE [31ee5ec69] 2025-05-28 09:43:51 +0900
-->
     <para>
      Fix processing of character classes within <literal>SIMILAR
      TO</literal> regular expressions (Laurenz Albe)
      <ulink url="&commit_baseurl;1fe15d25e">&sect;</ulink>
      <ulink url="&commit_baseurl;0c09922c0">&sect;</ulink>
     </para>

     <para>
      The code that translates <literal>SIMILAR TO</literal> pattern
      matching expressions to POSIX-style regular expressions did not
      consider that square brackets can be nested.  For example, in a
      pattern like <literal>[[:alpha:]%_]</literal>, the code treated
      the <literal>%</literal> and <literal>_</literal> characters as
      metacharacters when they should be literals.
     </para>
    </listitem>

    <listitem>
<!--
Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
Branch: master Release: REL_18_BR [29f7ce6fe] 2025-05-19 18:50:26 +0300
Branch: REL_17_STABLE [54c05292b] 2025-05-19 18:50:47 +0300
Branch: REL_16_STABLE [92a9ba3b9] 2025-05-19 18:50:50 +0300
Branch: REL_15_STABLE [72fe74ca5] 2025-05-19 18:50:52 +0300
Branch: REL_14_STABLE [0420b24fe] 2025-05-19 18:50:54 +0300
Branch: REL_13_STABLE [7ee00918f] 2025-05-19 18:49:34 +0300
Branch: master Release: REL_18_BR [cbf53e2b8] 2025-05-20 10:39:14 +0300
Branch: REL_17_STABLE [a4da7b0cf] 2025-05-20 10:41:20 +0300
Branch: REL_16_STABLE [558ea446a] 2025-05-20 10:41:50 +0300
-->
     <para>
      When deparsing queries, always add parentheses around the expression
      in <literal>FETCH FIRST <replaceable>expression</replaceable> ROWS
      WITH TIES</literal> clauses (Heikki Linnakangas)
      <ulink url="&commit_baseurl;0420b24fe">&sect;</ulink>
     </para>

     <para>
      This avoids some cases where the deparsed result wasn't
      syntactically valid.
     </para>
    </listitem>

    <listitem>
<!--
Author: Alexander Korotkov <akorotkov@postgresql.org>
Branch: REL_18_STABLE [bae507821] 2025-07-27 15:10:02 +0300
Branch: REL_17_STABLE [13559de95] 2025-07-27 15:10:24 +0300
Branch: REL_16_STABLE [f0cdc2afd] 2025-07-27 15:10:29 +0300
Branch: REL_15_STABLE [b248a3ba4] 2025-07-27 15:10:29 +0300
Branch: REL_14_STABLE [50026136c] 2025-07-27 15:10:31 +0300
Branch: REL_13_STABLE [f32a47161] 2025-07-27 15:10:32 +0300
Branch: master [466c5435f] 2025-08-07 14:29:02 +0300
Branch: REL_18_STABLE [5cfbff48a] 2025-08-07 14:31:18 +0300
Branch: REL_17_STABLE [605890034] 2025-08-07 14:59:54 +0300
Branch: REL_16_STABLE [2ac50f118] 2025-08-07 14:31:23 +0300
Branch: REL_15_STABLE [73f897ba5] 2025-08-07 14:31:24 +0300
Branch: REL_14_STABLE [c5d66fc12] 2025-08-07 14:31:25 +0300
Branch: REL_13_STABLE [7f872ae70] 2025-08-07 14:31:26 +0300
-->
     <para>
      Limit the checkpointer process's fsync request queue size (Alexander
      Korotkov, Xuneng Zhou)
      <ulink url="&commit_baseurl;50026136c">&sect;</ulink>
      <ulink url="&commit_baseurl;c5d66fc12">&sect;</ulink>
     </para>

     <para>
      With very large <varname>shared_buffers</varname> settings, it was
      possible for the checkpointer to attempt to allocate more than 1GB
      for fsync requests, leading to failure and an infinite loop.  Clamp
      the queue size to prevent this scenario.
     </para>
    </listitem>

    <listitem>
<!--
Author: Alexander Korotkov <akorotkov@postgresql.org>
Branch: master [d3917d8f1] 2025-07-19 13:45:51 +0300
Branch: REL_18_STABLE [5449d5b7a] 2025-07-19 13:44:30 +0300
Branch: REL_17_STABLE [c9f4e7520] 2025-07-20 01:29:14 +0300
Branch: REL_16_STABLE [b485e1c89] 2025-07-19 13:46:02 +0300
Branch: REL_15_STABLE [9f270f48f] 2025-07-19 13:46:03 +0300
Branch: REL_14_STABLE [bedfdb85b] 2025-07-19 14:13:41 +0300
Branch: REL_13_STABLE [762f352ca] 2025-07-19 14:13:58 +0300
-->
     <para>
      Avoid infinite wait in logical decoding when reading a
      partially-written WAL record (Vignesh C)
      <ulink url="&commit_baseurl;bedfdb85b">&sect;</ulink>
     </para>

     <para>
      If the server crashes after writing the first part of a WAL record
      that would span multiple pages, subsequent logical decoding of the
      WAL stream would wait for data to arrive on the next WAL page.
      That might never happen if the server is now idle.
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [64840e462] 2025-07-11 18:50:13 -0400
Branch: REL_18_STABLE [ccacaf4fa] 2025-07-11 18:50:13 -0400
Branch: REL_17_STABLE [50959f96e] 2025-07-11 18:50:13 -0400
Branch: REL_16_STABLE [53a936b61] 2025-07-11 18:50:13 -0400
Branch: REL_15_STABLE [de73cb3ed] 2025-07-11 18:50:13 -0400
Branch: REL_14_STABLE [ac8cdb249] 2025-07-11 18:50:13 -0400
Branch: REL_13_STABLE [093d3d745] 2025-07-11 18:50:13 -0400
-->
     <para>
      Fix inconsistent quoting of role names in ACL strings (Tom Lane)
      <ulink url="&commit_baseurl;ac8cdb249">&sect;</ulink>
     </para>

     <para>
      The previous quoting rule was locale-sensitive, which could lead to
      portability problems when transferring <type>aclitem</type> values
      across installations.  (<application>pg_dump</application> does not
      do that, but other tools might.)  To ensure consistency, always quote
      non-ASCII characters in <type>aclitem</type> output; but to preserve
      backward compatibility, never require that they be quoted
      during <type>aclitem</type> input.
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master Release: REL_18_BR [aa87f69c0] 2025-06-02 15:22:44 -0400
Branch: REL_17_STABLE [d4046125d] 2025-06-02 15:22:44 -0400
Branch: REL_16_STABLE [ab758ec4d] 2025-06-02 15:22:44 -0400
Branch: REL_15_STABLE [e76097124] 2025-06-02 15:22:44 -0400
Branch: REL_14_STABLE [eb4234647] 2025-06-02 15:22:45 -0400
Branch: REL_13_STABLE [cd31eaaeb] 2025-06-02 15:22:45 -0400
-->
     <para>
      Reject equal signs (<literal>=</literal>) in the names of relation
      options and foreign-data options (Tom Lane)
      <ulink url="&commit_baseurl;eb4234647">&sect;</ulink>
     </para>

     <para>
      There's no evident use-case for option names like this, and allowing
      them creates ambiguity in the stored representation.
     </para>
    </listitem>

    <listitem>
<!--
Author: Peter Geoghegan <pg@bowt.ie>
Branch: master Release: REL_18_BR [7c319f549] 2025-06-11 09:17:35 -0400
Branch: REL_17_STABLE [40aa5ddea] 2025-06-11 09:17:33 -0400
Branch: REL_16_STABLE [c7f25feb3] 2025-06-11 09:17:31 -0400
Branch: REL_15_STABLE [d2ec67109] 2025-06-11 09:17:29 -0400
Branch: REL_14_STABLE [7c7c0a77d] 2025-06-11 09:17:27 -0400
Branch: REL_13_STABLE [38c8d2987] 2025-06-11 09:17:25 -0400
-->
     <para>
      Avoid a rare scenario where a btree index scan could mark the wrong
      index entries as dead (Peter Geoghegan)
      <ulink url="&commit_baseurl;7c7c0a77d">&sect;</ulink>
     </para>
    </listitem>

    <listitem>
<!--
Author: Masahiko Sawada <msawada@postgresql.org>
Branch: master Release: REL_18_BR [d87d07b7a] 2025-06-16 17:36:01 -0700
Branch: REL_17_STABLE [45c357e0e] 2025-06-16 17:35:58 -0700
Branch: REL_16_STABLE [b2ae07720] 2025-06-16 17:35:55 -0700
Branch: REL_15_STABLE [fc0fb77c5] 2025-06-16 17:35:53 -0700
Branch: REL_14_STABLE [983b36362] 2025-06-16 17:35:50 -0700
Branch: REL_13_STABLE [1230be12f] 2025-06-16 17:35:48 -0700
Branch: REL_13_STABLE [87819f766] 2025-06-24 07:07:40 -0700
-->
     <para>
      Avoid re-distributing cache invalidation messages from other
      transactions during logical replication (vignesh C)
      <ulink url="&commit_baseurl;983b36362">&sect;</ulink>
     </para>

     <para>
      Our previous round of minor releases included a bug fix to ensure
      that replication receiver processes would respond to cross-process
      cache invalidation messages, preventing them from using stale
      catalog data while performing replication updates.  However, the fix
      unintentionally made them also redistribute those messages again,
      leading to an exponential increase in the number of invalidation
      messages, which would often end in a memory allocation failure.
      Fix by not redistributing received messages.
     </para>
    </listitem>

    <listitem>
<!--
Author: Alexander Korotkov <akorotkov@postgresql.org>
Branch: REL_17_STABLE [2090edc6f] 2025-06-14 03:52:45 +0300
Branch: REL_16_STABLE [cea8f2c3e] 2025-06-14 03:53:18 +0300
Branch: REL_15_STABLE [dd9bc1a17] 2025-06-14 04:15:04 +0300
Branch: REL_14_STABLE [e2832bd96] 2025-06-14 04:15:24 +0300
Branch: REL_13_STABLE [dd3df0b85] 2025-06-14 04:15:29 +0300
-->
     <para>
      Avoid premature removal of old WAL during checkpoints (Vitaly Davydov)
      <ulink url="&commit_baseurl;e2832bd96">&sect;</ulink>
     </para>

     <para>
      If a replication slot's restart point is advanced while a checkpoint
      is in progress, no-longer-needed WAL segments could get removed too
      soon, leading to recovery failure if the database crashes
      immediately afterwards.  Fix by keeping them for one additional
      checkpoint cycle.
     </para>
    </listitem>

    <listitem>
<!--
Author: Amit Kapila <akapila@postgresql.org>
Branch: master Release: REL_18_BR [ad5eaf390] 2025-05-19 12:13:06 +0530
Branch: REL_17_STABLE [7318f241d] 2025-05-19 11:55:55 +0530
Branch: REL_16_STABLE [c0f51fde5] 2025-05-19 11:41:22 +0530
Branch: REL_15_STABLE [9d1a62359] 2025-05-19 11:28:19 +0530
Branch: REL_14_STABLE [e68459489] 2025-05-19 11:15:09 +0530
Branch: REL_13_STABLE [e323d9df0] 2025-05-19 11:04:39 +0530
-->
     <para>
      Never move a replication slot's confirmed-flush position backwards
      (Shveta Malik)
      <ulink url="&commit_baseurl;e68459489">&sect;</ulink>
     </para>

     <para>
      In some cases a replication client could acknowledge an LSN that's
      past what it has stored persistently, and then perhaps send an older
      LSN after a restart.  We consider this not-a-bug so long as the
      client did not have anything it needed to do for the WAL between the
      two points.  However, we should not re-send that WAL for fear of
      data duplication, so make sure we always believe the latest
      confirmed LSN for a given slot.
     </para>
    </listitem>

    <listitem>
<!--
Author: Fujii Masao <fujii@postgresql.org>
Branch: master Release: REL_18_BR [961553daf] 2025-05-31 00:08:40 +0900
Branch: REL_17_STABLE [24c5ad5be] 2025-05-31 00:14:07 +0900
Branch: REL_16_STABLE [63fa7caa9] 2025-05-31 00:14:14 +0900
Branch: REL_15_STABLE [405cca9da] 2025-05-31 00:14:22 +0900
Branch: REL_14_STABLE [9130d8eee] 2025-05-31 00:14:29 +0900
Branch: REL_13_STABLE [706344f06] 2025-05-31 00:14:35 +0900
-->
     <para>
      Allow waiting for a transaction on a standby server to be
      interrupted (Kevin K Biju)
      <ulink url="&commit_baseurl;9130d8eee">&sect;</ulink>
     </para>

     <para>
      Creation of a replication slot on a standby server may require waiting
      for some active transaction(s) to finish on the primary and then be
      replayed on the standby.  Since that could be an indefinite wait,
      it's desirable to allow the operation to be cancelled, but there was
      no check for query cancel in the loop.
     </para>
    </listitem>

    <listitem>
<!--
Author: Nathan Bossart <nathan@postgresql.org>
Branch: master Release: REL_18_BR [706054b11] 2025-05-30 15:17:28 -0500
Branch: REL_17_STABLE [fe8ea7a2a] 2025-05-30 15:17:28 -0500
Branch: REL_16_STABLE [24135398f] 2025-05-30 15:17:28 -0500
Branch: REL_15_STABLE [ddfcfb7ce] 2025-05-30 15:17:28 -0500
Branch: REL_14_STABLE [b65be6ef0] 2025-05-30 15:17:28 -0500
Branch: REL_13_STABLE [b7ba2c030] 2025-05-30 15:17:28 -0500
-->
     <para>
      Fix some places that might try to fetch toasted fields of system
      catalogs without any snapshot (Nathan Bossart)
      <ulink url="&commit_baseurl;b65be6ef0">&sect;</ulink>
     </para>

     <para>
      This could result in an assertion failure or <quote>cannot fetch
      toast data without an active snapshot</quote> error.
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master Release: REL_18_BR [8319e5cb5] 2025-06-29 13:56:03 -0400
Branch: REL_17_STABLE [bbfcbc4cd] 2025-06-29 13:56:03 -0400
Branch: REL_16_STABLE [c15798cf9] 2025-06-29 13:56:03 -0400
Branch: REL_15_STABLE [614ffb26d] 2025-06-29 13:56:03 -0400
Branch: REL_14_STABLE [25cab4473] 2025-06-29 13:56:03 -0400
Branch: REL_13_STABLE [13f1e9f26] 2025-06-29 13:56:03 -0400
Branch: master [a10f21e6c] 2025-07-03 13:46:07 -0400
Branch: REL_18_STABLE [3d7a96871] 2025-07-03 13:46:07 -0400
Branch: REL_17_STABLE [6d4395b40] 2025-07-03 13:46:07 -0400
Branch: REL_16_STABLE [d36980b71] 2025-07-03 13:46:07 -0400
Branch: REL_15_STABLE [e6dd6e6ee] 2025-07-03 13:46:07 -0400
Branch: REL_14_STABLE [e902f8181] 2025-07-03 13:46:07 -0400
Branch: REL_13_STABLE [f9ba071cc] 2025-07-03 13:46:07 -0400
-->
     <para>
      Avoid assertion failure during cross-table constraint updates
      (Tom Lane, Jian He)
      <ulink url="&commit_baseurl;25cab4473">&sect;</ulink>
      <ulink url="&commit_baseurl;e902f8181">&sect;</ulink>
     </para>
    </listitem>

    <listitem>
<!--
Author: Álvaro Herrera <alvherre@kurilemu.de>
Branch: master [b8926a5b4] 2025-07-17 17:40:22 +0200
Branch: REL_18_STABLE [e0d3f3cfb] 2025-07-17 17:40:22 +0200
Branch: REL_17_STABLE [0c466f5e0] 2025-07-17 17:40:22 +0200
Branch: REL_16_STABLE [4871c1e9c] 2025-07-17 17:40:22 +0200
Branch: REL_15_STABLE [c2720ac60] 2025-07-17 17:40:22 +0200
Branch: REL_14_STABLE [b9a896828] 2025-07-17 17:40:22 +0200
Branch: REL_13_STABLE [43cd85962] 2025-07-17 17:40:22 +0200
-->
     <para>
      Remove faulty assertion that a command tag must have been determined
      by the end of <function>PortalRunMulti()</function> (Álvaro Herrera)
      <ulink url="&commit_baseurl;b9a896828">&sect;</ulink>
     </para>

     <para>
      This failed in edge cases such as an empty prepared statement.
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [87b05fdc7] 2025-07-07 14:33:20 -0400
Branch: REL_18_STABLE [440c5ee20] 2025-07-07 14:33:34 -0400
Branch: REL_17_STABLE [a553a2289] 2025-07-07 14:33:47 -0400
Branch: REL_16_STABLE [3bbc1c4a7] 2025-07-07 14:33:56 -0400
Branch: REL_15_STABLE [c65c36ab5] 2025-07-07 14:34:04 -0400
Branch: REL_14_STABLE [602c91cf2] 2025-07-07 14:34:12 -0400
Branch: REL_13_STABLE [ae693c0bf] 2025-07-07 14:34:19 -0400
-->
     <para>
      Restore the ability to run PL/pgSQL expressions in parallel
      (Dipesh Dhameliya)
      <ulink url="&commit_baseurl;602c91cf2">&sect;</ulink>
     </para>

     <para>
      PL/pgSQL's notion of an <quote>expression</quote> is very broad,
      encompassing any SQL <command>SELECT</command> query that returns a
      single column and no more than one row.  So there are cases, for
      example evaluation of an aggregate function, where the query
      involves significant work and it'd be useful to run it with parallel
      workers.  This used to be possible, but a previous bug fix
      unintentionally disabled it.
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master Release: REL_18_BR [c6f7f11d8] 2025-06-01 14:48:35 -0400
Branch: REL_17_STABLE [7559a16e2] 2025-06-01 14:48:35 -0400
Branch: REL_16_STABLE [5c7fd5976] 2025-06-01 14:48:35 -0400
Branch: REL_15_STABLE [b56a92651] 2025-06-01 14:48:35 -0400
Branch: REL_14_STABLE [31a3a15fa] 2025-06-01 14:48:35 -0400
Branch: REL_13_STABLE [1c78d5553] 2025-06-01 14:48:35 -0400
Branch: master Release: REL_18_BR [4672b6223] 2025-06-01 14:55:24 -0400
Branch: REL_17_STABLE [6f724fcf8] 2025-06-01 14:55:24 -0400
Branch: REL_16_STABLE [ecc8fd2b7] 2025-06-01 14:55:24 -0400
Branch: REL_15_STABLE [b898bb2a7] 2025-06-01 14:55:24 -0400
Branch: REL_14_STABLE [d4556f592] 2025-06-01 14:55:24 -0400
Branch: REL_13_STABLE [93aca1246] 2025-06-01 14:55:24 -0400
-->
     <para>
      Fix edge-case resource leaks in PL/Python error reporting (Tom Lane)
      <ulink url="&commit_baseurl;31a3a15fa">&sect;</ulink>
      <ulink url="&commit_baseurl;d4556f592">&sect;</ulink>
     </para>

     <para>
      An out-of-memory failure while reporting an error from Python could
      result in failure to drop reference counts on Python objects,
      leading to session-lifespan memory leakage.
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [daf9bdc47] 2025-07-17 12:46:57 -0400
Branch: REL_18_STABLE [bfa9b25c9] 2025-07-17 12:46:57 -0400
Branch: REL_17_STABLE [3f10d2b66] 2025-07-17 12:46:58 -0400
Branch: REL_16_STABLE [009c20a3d] 2025-07-17 12:46:58 -0400
Branch: REL_15_STABLE [a372a64db] 2025-07-17 12:46:58 -0400
Branch: REL_14_STABLE [d5cba7746] 2025-07-17 12:46:59 -0400
Branch: REL_13_STABLE [9dcd1aa81] 2025-07-17 12:46:59 -0400
-->
     <para>
      Fix <application>libpq</application>'s <function>PQport()</function>
      function to never return NULL unless the passed connection is NULL
      (Daniele Varrazzo)
      <ulink url="&commit_baseurl;d5cba7746">&sect;</ulink>
     </para>

     <para>
      This is the documented behavior, but
      recent <application>libpq</application> versions would return NULL
      in some cases where the user had not provided a port specification.
      Revert to our historical behavior of returning an empty string in
      such cases.  (v18 and later will return the compiled-in default port
      number, typically <literal>"5432"</literal>, instead.)
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master Release: REL_18_BR [d98cefe11] 2025-05-30 12:55:15 -0400
Branch: REL_17_STABLE [8b0aa7a6b] 2025-05-30 12:55:15 -0400
Branch: REL_16_STABLE [ca70ee6ed] 2025-05-30 12:55:15 -0400
Branch: REL_15_STABLE [39b1d1907] 2025-05-30 12:55:15 -0400
Branch: REL_14_STABLE [a7da7914c] 2025-05-30 12:55:15 -0400
Branch: REL_13_STABLE [c81cdffa1] 2025-05-30 12:55:15 -0400
-->
     <para>
      Avoid failure when GSSAPI authentication requires packets larger
      than 16kB (Jacob Champion, Tom Lane)
      <ulink url="&commit_baseurl;a7da7914c">&sect;</ulink>
     </para>

     <para>
      Larger authentication packets are needed for Active Directory users
      who belong to many AD groups.  This limitation manifested in
      connection failures with unintelligible error messages,
      typically <quote>GSSAPI context establishment error: The routine
      must be called again to complete its function: Unknown
      error</quote>.
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master Release: REL_18_BR [137935bd1] 2025-06-10 18:39:34 -0400
Branch: REL_17_STABLE [30e0d9ee9] 2025-06-10 18:39:34 -0400
Branch: REL_16_STABLE [3f37400cf] 2025-06-10 18:39:34 -0400
Branch: REL_15_STABLE [6a4d93eda] 2025-06-10 18:39:34 -0400
Branch: REL_14_STABLE [0703c9385] 2025-06-10 18:39:34 -0400
Branch: REL_13_STABLE [f09fea386] 2025-06-10 18:39:34 -0400
-->
     <para>
      Fix timing-dependent failures in SSL and GSSAPI data transmission
      (Tom Lane)
      <ulink url="&commit_baseurl;0703c9385">&sect;</ulink>
     </para>

     <para>
      When using SSL or GSSAPI encryption in non-blocking
      mode, <application>libpq</application> sometimes failed
      with <quote>SSL error: bad length</quote> or <quote>GSSAPI caller
      failed to retransmit all data needing to be retried</quote>.
     </para>
    </listitem>

    <listitem>
<!--
Author: Michael Paquier <michael@paquier.xyz>
Branch: master [1b8bbee05] 2025-07-22 14:00:00 +0900
Branch: REL_18_STABLE [0ded7615d] 2025-07-22 14:00:04 +0900
Branch: REL_17_STABLE [2805e1c1e] 2025-07-22 14:00:05 +0900
Branch: REL_16_STABLE [313d3102f] 2025-07-22 14:00:07 +0900
Branch: REL_15_STABLE [0123922f8] 2025-07-22 14:00:08 +0900
Branch: REL_14_STABLE [408fe659a] 2025-07-22 14:00:10 +0900
Branch: REL_13_STABLE [c934d5673] 2025-07-22 14:00:12 +0900
-->
     <para>
      Avoid null-pointer dereference during connection lookup
      in <application>ecpg</application> applications (Aleksander
      Alekseev)
      <ulink url="&commit_baseurl;408fe659a">&sect;</ulink>
     </para>

     <para>
      The case could occur only if the application has some connections
      that are named and some that are not.
     </para>
    </listitem>

    <listitem>
<!--
Author: Masahiko Sawada <msawada@postgresql.org>
Branch: master [f5a987c0e] 2025-07-09 05:45:34 -0700
Branch: REL_18_STABLE [765a4c94c] 2025-07-09 05:45:31 -0700
Branch: REL_17_STABLE [c1c6169eb] 2025-07-09 05:45:28 -0700
Branch: REL_16_STABLE [d69836b13] 2025-07-09 05:45:26 -0700
Branch: REL_15_STABLE [e3584e457] 2025-07-09 05:45:23 -0700
Branch: REL_14_STABLE [0514616f0] 2025-07-09 05:45:20 -0700
-->
     <para>
      Improve <application>psql</application>'s tab completion
      for <command>COPY</command> and <command>\copy</command> options
      (Atsushi Torikoshi)
      <ulink url="&commit_baseurl;0514616f0">&sect;</ulink>
     </para>

     <para>
      The same completions were offered for both <command>COPY
      FROM</command> and <command>COPY TO</command>, although some options
      are only valid for one case or the other.  Distinguish these cases
      to provide more accurate suggestions.
     </para>
    </listitem>

    <listitem>
<!--
Author: Álvaro Herrera <alvherre@kurilemu.de>
Branch: master [0858f0f96] 2025-07-16 19:22:53 +0200
Branch: REL_18_STABLE [dca0e9693] 2025-07-16 19:22:53 +0200
Branch: REL_17_STABLE [d07bc7c2b] 2025-07-16 19:22:53 +0200
Branch: REL_16_STABLE [cef998ef8] 2025-07-16 19:22:53 +0200
Branch: REL_15_STABLE [5a261c135] 2025-07-16 19:22:53 +0200
Branch: REL_14_STABLE [e04aca1c4] 2025-07-16 19:22:53 +0200
Branch: REL_13_STABLE [57949cea5] 2025-07-16 19:22:53 +0200
-->
     <para>
      Ensure that <application>pg_dump</application> dumps comments on
      domain constraints in a valid order (Jian He)
      <ulink url="&commit_baseurl;e04aca1c4">&sect;</ulink>
     </para>

     <para>
      In some cases the comment command could appear before creation of
      the constraint.
     </para>
    </listitem>

    <listitem>
<!--
Author: Noah Misch <noah@leadboat.com>
Branch: master [0decd5e89] 2025-07-31 06:37:56 -0700
Branch: REL_18_STABLE [c0ae03384] 2025-07-31 06:37:59 -0700
Branch: REL_17_STABLE [1ca1889ea] 2025-07-31 06:38:00 -0700
Branch: REL_16_STABLE [0ac1581c3] 2025-07-31 06:38:00 -0700
Branch: REL_15_STABLE [22f126da6] 2025-07-31 06:38:01 -0700
Branch: REL_14_STABLE [7ee7c1cd3] 2025-07-31 06:38:02 -0700
Branch: REL_13_STABLE [04bc2c42f] 2025-07-31 06:38:03 -0700
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master Release: REL_18_BR [350e6b8ea] 2024-11-04 13:31:12 -0500
Branch: REL_17_STABLE [5dd4957b2] 2025-07-31 06:38:00 -0700
Branch: REL_16_STABLE [9affed263] 2025-07-31 06:38:00 -0700
Branch: REL_15_STABLE [e99010cbd] 2025-07-31 06:38:01 -0700
Branch: REL_14_STABLE [25388fb2c] 2025-07-31 06:38:02 -0700
Branch: REL_13_STABLE [cc9a62c51] 2025-07-31 06:38:03 -0700
Author: Noah Misch <noah@leadboat.com>
Branch: REL_18_STABLE [0d2734eac] 2025-08-10 13:05:13 -0700
Branch: REL_17_STABLE [28e7252e4] 2025-08-10 13:05:16 -0700
Branch: REL_16_STABLE [216683296] 2025-08-10 13:05:16 -0700
Branch: REL_15_STABLE [70637d7ae] 2025-08-10 13:05:17 -0700
Branch: REL_14_STABLE [7846f4709] 2025-08-10 13:05:17 -0700
Branch: REL_13_STABLE [bc05590c7] 2025-08-10 13:05:17 -0700
-->
     <para>
      Ensure stable sort ordering in <application>pg_dump</application>
      for all types of database objects (Noah Misch, Andreas Karlsson)
      <ulink url="&commit_baseurl;7ee7c1cd3">&sect;</ulink>
      <ulink url="&commit_baseurl;25388fb2c">&sect;</ulink>
      <ulink url="&commit_baseurl;7846f4709">&sect;</ulink>
     </para>

     <para>
      <application>pg_dump</application> sorts objects by their logical
      names before performing dependency-driven reordering.  This sort did
      not account for the full unique key identifying certain object types
      such as rules and constraints, and thus it could produce dissimilar
      sort orders for logically-identical databases.  That made it
      difficult to compare databases by
      diff'ing <application>pg_dump</application> output, so improve the
      logic to ensure stable sort ordering in all cases.
     </para>
    </listitem>

    <listitem>
<!--
Author: Álvaro Herrera <alvherre@kurilemu.de>
Branch: master [f295494d3] 2025-07-04 18:05:43 +0200
Branch: REL_18_STABLE [07da2985d] 2025-07-04 18:05:43 +0200
Branch: REL_17_STABLE [b8b2e6052] 2025-07-04 18:05:43 +0200
Branch: REL_16_STABLE [f63e408e8] 2025-07-04 18:05:43 +0200
Branch: REL_15_STABLE [0f4958685] 2025-07-04 18:05:43 +0200
Branch: REL_14_STABLE [ea3386cc7] 2025-07-04 18:05:43 +0200
Branch: REL_13_STABLE [b0f0e2221] 2025-07-04 18:05:43 +0200
Branch: master [144ad723a] 2025-07-04 21:30:05 +0200
Branch: REL_18_STABLE [1e007722f] 2025-07-04 21:30:05 +0200
Branch: REL_17_STABLE [bcb8d47cd] 2025-07-04 21:30:05 +0200
Branch: REL_16_STABLE [f943e2339] 2025-07-04 21:30:05 +0200
Branch: REL_15_STABLE [bd48455d8] 2025-07-04 21:30:05 +0200
Branch: REL_14_STABLE [94dc2b37b] 2025-07-04 21:30:05 +0200
Branch: REL_13_STABLE [708469281] 2025-07-04 21:30:05 +0200
Author: Peter Eisentraut <peter@eisentraut.org>
Branch: master [1beda2c3c] 2025-08-07 11:48:43 +0200
Branch: REL_18_STABLE [1084e76f3] 2025-08-07 11:59:14 +0200
Branch: REL_17_STABLE [930e1faec] 2025-08-07 11:59:20 +0200
Branch: REL_16_STABLE [05b367bea] 2025-08-07 11:59:26 +0200
Branch: REL_15_STABLE [63c79a6fc] 2025-08-07 11:59:32 +0200
Branch: REL_14_STABLE [a00eb374c] 2025-08-07 11:59:38 +0200
Branch: REL_13_STABLE [160131033] 2025-08-07 11:59:42 +0200
Author: Peter Eisentraut <peter@eisentraut.org>
Branch: REL_15_STABLE [22d783350] 2025-08-08 00:18:19 +0200
Branch: REL_14_STABLE [f9f6595e3] 2025-08-08 00:18:15 +0200
Branch: REL_13_STABLE [7406a7d82] 2025-08-08 00:18:11 +0200
Author: Peter Eisentraut <peter@eisentraut.org>
Branch: REL_16_STABLE [06f444816] 2025-08-08 00:27:14 +0200
Branch: REL_15_STABLE [a8b31b160] 2025-08-08 00:28:58 +0200
Branch: REL_14_STABLE [ed2bb0cdd] 2025-08-08 00:29:31 +0200
Branch: REL_13_STABLE [de7fd83cd] 2025-08-08 00:29:34 +0200
Author: Peter Eisentraut <peter@eisentraut.org>
Branch: REL_15_STABLE [18d2d8ae4] 2025-08-08 08:47:10 +0200
Branch: REL_14_STABLE [bef2c2a4e] 2025-08-08 08:48:28 +0200
Branch: REL_13_STABLE [095e83d09] 2025-08-08 08:48:36 +0200
-->
     <para>
      In <application>pg_upgrade</application>, check for inconsistent
      inherited not-null constraints (Ali Akbar)
      <ulink url="&commit_baseurl;ea3386cc7">&sect;</ulink>
      <ulink url="&commit_baseurl;94dc2b37b">&sect;</ulink>
      <ulink url="&commit_baseurl;a00eb374c">&sect;</ulink>
      <ulink url="&commit_baseurl;f9f6595e3">&sect;</ulink>
      <ulink url="&commit_baseurl;ed2bb0cdd">&sect;</ulink>
      <ulink url="&commit_baseurl;bef2c2a4e">&sect;</ulink>
     </para>

     <para>
      <productname>PostgreSQL</productname> versions before 18 allow an
      inherited column not-null constraint to be dropped.  However, this
      results in a schema that cannot be restored, leading to failure
      in <application>pg_upgrade</application>.  Detect such cases
      during <application>pg_upgrade</application>'s preflight checks to
      allow users to fix them before initiating the upgrade.
     </para>
    </listitem>

    <listitem>
<!--
Author: Michael Paquier <michael@paquier.xyz>
Branch: master [5a6c39b6d] 2025-07-04 15:09:24 +0900
Branch: REL_18_STABLE [29a4b63c6] 2025-07-04 15:10:17 +0900
Branch: REL_17_STABLE [ae20c105f] 2025-07-04 15:10:19 +0900
Branch: REL_16_STABLE [7e7059abf] 2025-07-04 15:10:21 +0900
Branch: REL_15_STABLE [dcbbd4331] 2025-07-04 15:10:22 +0900
Branch: REL_14_STABLE [b61ddcaf4] 2025-07-04 15:10:24 +0900
Branch: REL_13_STABLE [8bca4476f] 2025-07-04 15:10:25 +0900
-->
     <para>
      Avoid assertion failure if <varname>track_commit_timestamp</varname>
      is enabled during <application>initdb</application> (Hayato Kuroda,
      Andy Fan)
      <ulink url="&commit_baseurl;b61ddcaf4">&sect;</ulink>
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master Release: REL_18_BR [470273da0] 2025-05-29 10:39:55 -0400
Branch: REL_17_STABLE [e20b3256a] 2025-05-29 10:39:55 -0400
Branch: REL_16_STABLE [8eef55db1] 2025-05-29 10:39:55 -0400
Branch: REL_15_STABLE [09c9ae8f6] 2025-05-29 10:39:55 -0400
Branch: REL_14_STABLE [2cd2222ca] 2025-05-29 10:39:55 -0400
Branch: REL_13_STABLE [e7d3d4ed4] 2025-05-29 10:39:55 -0400
-->
     <para>
      Avoid possible leak of the open connection
      during <filename>contrib/dblink</filename> connection establishment
      (Tom Lane)
      <ulink url="&commit_baseurl;2cd2222ca">&sect;</ulink>
     </para>

     <para>
      In the rare scenario where we hit out-of-memory while inserting the
      new connection object into dblink's hashtable, the open connection
      would be leaked until end of session, leaving an idle session
      sitting on the remote server.
     </para>
    </listitem>

    <listitem>
<!--
Author: Robert Haas <rhaas@postgresql.org>
Branch: master Release: REL_18_BR [016e407f4] 2025-06-06 08:18:27 -0400
Branch: REL_17_STABLE [e4b8f925a] 2025-06-06 08:18:26 -0400
Branch: REL_16_STABLE [169429264] 2025-06-06 08:18:23 -0400
Branch: REL_15_STABLE [d59ff3be2] 2025-06-06 08:18:22 -0400
Branch: REL_14_STABLE [a4b9707c4] 2025-06-06 08:18:20 -0400
Branch: REL_13_STABLE [4adbaa36c] 2025-06-06 08:18:15 -0400
-->
     <para>
      Make <filename>contrib/pg_prewarm</filename> cope with very
      large <varname>shared_buffers</varname> settings (Daria Shanina)
      <ulink url="&commit_baseurl;a4b9707c4">&sect;</ulink>
     </para>

     <para>
      Autoprewarm failed with a memory allocation error
      if <varname>shared_buffers</varname> was larger than about 50
      million buffers (400GB).
     </para>
    </listitem>

    <listitem>
<!--
Author: Michael Paquier <michael@paquier.xyz>
Branch: master Release: REL_18_BR [35a428f30] 2025-05-29 11:26:03 +0900
Branch: REL_17_STABLE [290e8ab32] 2025-05-29 11:26:23 +0900
Branch: REL_16_STABLE [7e8b44f4e] 2025-05-29 11:26:27 +0900
Branch: REL_15_STABLE [130300a15] 2025-05-29 11:26:29 +0900
Branch: REL_14_STABLE [8a1459f62] 2025-05-29 11:26:31 +0900
Branch: REL_13_STABLE [3c03b8cd7] 2025-05-29 11:26:34 +0900
-->
     <para>
      In <filename>contrib/pg_stat_statements</filename>, avoid leaving
      gaps in the set of parameter numbers used in a normalized query
      (Sami Imseih)
      <ulink url="&commit_baseurl;8a1459f62">&sect;</ulink>
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master Release: REL_18_BR [232d8caea] 2025-05-30 13:45:41 -0400
Branch: REL_17_STABLE [9339c85af] 2025-05-30 13:45:41 -0400
Branch: REL_16_STABLE [2b92dc4ee] 2025-05-30 13:45:41 -0400
Branch: REL_15_STABLE [3c31594f5] 2025-05-30 13:45:41 -0400
Branch: REL_14_STABLE [4a07c0961] 2025-05-30 13:45:41 -0400
Branch: REL_13_STABLE [271cb7eaa] 2025-05-30 13:45:41 -0400
-->
     <para>
      Fix memory leakage in <filename>contrib/postgres_fdw</filename>'s
      DirectModify methods (Tom Lane)
      <ulink url="&commit_baseurl;4a07c0961">&sect;</ulink>
     </para>

     <para>
      The <structname>PGresult</structname> holding the results of the
      remote modify command would be leaked for the rest of the session if
      the query fails between invocations of the DirectModify methods,
      which could happen when there's <literal>RETURNING</literal> data to
      process.
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [4300d8b6a] 2025-07-29 15:17:40 -0400
Branch: REL_18_STABLE [8e5e3ff55] 2025-07-29 15:17:40 -0400
Branch: REL_17_STABLE [a644f5fc6] 2025-07-29 15:17:41 -0400
Branch: REL_16_STABLE [bbc20c8a9] 2025-07-29 15:17:41 -0400
Branch: REL_15_STABLE [19857437b] 2025-07-29 15:17:41 -0400
Branch: REL_14_STABLE [2dee95bd0] 2025-07-29 15:17:41 -0400
Branch: REL_13_STABLE [c5bd803e5] 2025-07-29 15:17:41 -0400
-->
     <para>
      Ensure that directories listed
      in <application>configure</application>'s
      <option>--with-includes</option>
      and <option>--with-libraries</option> options are searched before
      system-supplied directories (Tom Lane)
      <ulink url="&commit_baseurl;2dee95bd0">&sect;</ulink>
     </para>

     <para>
      A common reason for using these options is to allow a user-built
      version of some library to override the system-supplied version.
      However, that failed to work in some environments because of
      careless ordering of switches in the commands issued by the makefiles.
     </para>
    </listitem>

    <listitem>
<!--
Author: Michael Paquier <michael@paquier.xyz>
Branch: master [1a5212775] 2025-07-30 11:55:42 +0900
Branch: REL_18_STABLE [cd2d52cc6] 2025-07-30 11:55:46 +0900
Branch: REL_17_STABLE [8de56323c] 2025-07-30 11:55:47 +0900
Branch: REL_16_STABLE [c1984be23] 2025-07-30 11:55:49 +0900
Branch: REL_15_STABLE [d6ffc43f9] 2025-07-30 11:55:51 +0900
Branch: REL_14_STABLE [60953d4cb] 2025-07-30 11:55:53 +0900
Branch: REL_13_STABLE [612f5b806] 2025-07-30 11:55:54 +0900
-->
     <para>
      Fix <application>configure</application>'s checks
      for <function>__cpuid()</function>
      and <function>__cpuidex()</function> (Lukas Fittl, Michael Paquier)
      <ulink url="&commit_baseurl;60953d4cb">&sect;</ulink>
     </para>

     <para>
      <application>configure</application> failed to detect these
      Windows-specific functions, so that they would not be used,
      leading to slower-than-necessary CRC computations since the
      availability of hardware instructions could not be verified.
      The practical impact of this error was limited, because production
      builds for Windows typically do not use the Autoconf toolchain.
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [e6dfd068e] 2025-07-23 15:44:29 -0400
Branch: REL_18_STABLE [3d039b53a] 2025-07-23 15:44:29 -0400
Branch: REL_17_STABLE [635a85627] 2025-07-23 15:44:29 -0400
Branch: REL_16_STABLE [e4d585455] 2025-07-23 15:44:29 -0400
Branch: REL_15_STABLE [b252ce311] 2025-07-23 15:44:29 -0400
Branch: REL_14_STABLE [868b39a54] 2025-07-23 15:44:29 -0400
Branch: REL_13_STABLE [1ccb3851d] 2025-07-23 15:44:29 -0400
-->
     <para>
      Fix build failure with <option>--with-pam</option> option on
      Solaris-based platforms (Tom Lane)
      <ulink url="&commit_baseurl;868b39a54">&sect;</ulink>
     </para>

     <para>
      Solaris is inconsistent with other Unix platforms about the API for
      PAM authentication.  This manifested as an <quote>inconsistent
      pointer</quote> compiler warning, which we never did anything about.
      But as of GCC 14 it's an error not warning by default, so fix it.
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [1fd772d19] 2025-07-01 12:40:35 -0400
Branch: REL_18_STABLE [581305a46] 2025-07-01 12:40:35 -0400
Branch: REL_17_STABLE [0991249d7] 2025-07-01 12:40:35 -0400
Branch: REL_16_STABLE [d25d392e8] 2025-07-01 12:40:35 -0400
Branch: master [29213636e] 2025-07-01 12:08:20 -0400
Branch: REL_18_STABLE [45c527662] 2025-07-01 12:08:20 -0400
Branch: REL_17_STABLE [29c54ea7b] 2025-07-01 12:08:20 -0400
Branch: REL_16_STABLE [3a2617e4f] 2025-07-01 12:08:20 -0400
Branch: REL_15_STABLE [0fb496c70] 2025-07-01 12:08:57 -0400
Branch: REL_14_STABLE [71d71ac4d] 2025-07-01 12:08:57 -0400
Branch: REL_13_STABLE [d0a695cf4] 2025-07-01 12:08:58 -0400
-->
     <para>
      Make our code portable to GNU Hurd (Michael Banck, Christoph Berg,
      Samuel Thibault)
      <ulink url="&commit_baseurl;71d71ac4d">&sect;</ulink>
     </para>

     <para>
      Fix assumptions about <literal>IOV_MAX</literal>
      and <literal>O_RDONLY</literal> that don't hold on Hurd.
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master Release: REL_18_BR [12eee85e5] 2025-05-18 12:45:55 -0400
Branch: REL_17_STABLE [5355a2400] 2025-05-18 12:45:55 -0400
Branch: REL_16_STABLE [253cf661c] 2025-05-18 12:45:55 -0400
Branch: REL_16_STABLE [4b53cb493] 2025-05-20 10:55:05 -0400
Branch: REL_15_STABLE [00652b3c9] 2025-05-18 12:45:55 -0400
Branch: REL_14_STABLE [a1e0e7076] 2025-05-18 12:45:55 -0400
Branch: REL_13_STABLE [9bc2d37cc] 2025-05-18 12:45:55 -0400
-->
     <para>
      Make our usage of <function>memset_s()</function> conform strictly
      to the C11 standard (Tom Lane)
      <ulink url="&commit_baseurl;a1e0e7076">&sect;</ulink>
     </para>

     <para>
      This avoids compile failures on some platforms.
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [aad1617b7] 2025-07-15 18:11:18 -0400
Branch: REL_18_STABLE [0b6dfce0c] 2025-07-15 18:11:18 -0400
Branch: REL_17_STABLE [5a2139a90] 2025-07-15 18:11:18 -0400
Branch: REL_16_STABLE [5db55e13f] 2025-07-15 18:11:18 -0400
Branch: REL_15_STABLE [f32e45641] 2025-07-15 18:11:18 -0400
Branch: REL_14_STABLE [8254b7e33] 2025-07-15 18:11:18 -0400
Branch: REL_13_STABLE [6c93bf735] 2025-07-15 18:11:18 -0400
-->
     <para>
      Prevent uninitialized-value compiler warnings in JSONB comparison
      code (Tom Lane)
      <ulink url="&commit_baseurl;8254b7e33">&sect;</ulink>
     </para>
    </listitem>

    <listitem>
<!--
Author: Michael Paquier <michael@paquier.xyz>
Branch: master [8aa54aa7e] 2025-07-07 08:53:57 +0900
Branch: REL_18_STABLE [8d1071e7d] 2025-07-07 08:54:30 +0900
Branch: REL_17_STABLE [c911e7802] 2025-07-07 08:54:37 +0900
Branch: REL_16_STABLE [d24a96ce2] 2025-07-07 08:54:39 +0900
Branch: REL_15_STABLE [75c1eb60b] 2025-07-07 08:54:41 +0900
Branch: REL_14_STABLE [ac166b19a] 2025-07-07 08:54:43 +0900
Branch: REL_13_STABLE [e688cfc2b] 2025-07-07 08:54:44 +0900
-->
     <para>
      Avoid deprecation warnings when building
      with <application>libxml2</application> 2.14 and later
      (Michael Paquier)
      <ulink url="&commit_baseurl;ac166b19a">&sect;</ulink>
     </para>
    </listitem>

    <listitem>
<!--
Author: John Naylor <john.naylor@postgresql.org>
Branch: master [ed26c4e25] 2025-07-09 14:20:22 +0700
Branch: master [90bfae9f9] 2025-08-07 17:10:52 +0700
Branch: REL_18_STABLE [dd2926207] 2025-08-07 17:12:44 +0700
Branch: REL_17_STABLE [21ae8fc5f] 2025-08-07 17:13:55 +0700
Branch: REL_16_STABLE [aae9aad19] 2025-08-07 17:14:39 +0700
Branch: REL_15_STABLE [baacfb9e6] 2025-08-07 17:15:09 +0700
Branch: REL_14_STABLE [a4f891b96] 2025-08-07 17:16:00 +0700
Branch: REL_13_STABLE [9560c1ec1] 2025-08-07 17:16:33 +0700
-->
     <para>
      Avoid problems when compiling <filename>pg_locale.h</filename> under
      C++ (John Naylor)
      <ulink url="&commit_baseurl;a4f891b96">&sect;</ulink>
     </para>

     <para>
      <productname>PostgreSQL</productname> header files generally need to
      be wrapped in <literal>extern "C" { ... }</literal> in order to be
      included in extensions written in C++.  This failed
      for <filename>pg_locale.h</filename> because of its use
      of <application>libicu</application> headers, but we can work around
      that by suppressing C++-only declarations in those headers.  C++
      extensions that want to use <application>libicu</application>'s C++
      APIs can do so by including the <application>libicu</application>
      headers ahead of <filename>pg_locale.h</filename>.
     </para>
    </listitem>

   </itemizedlist>

  </sect2>
 </sect1>

 <sect1 id="release-14-18">
  <title>Release 14.18</title>

  <formalpara>
  <title>Release date:</title>
  <para>2025-05-08</para>
  </formalpara>

  <para>
   This release contains a variety of fixes from 14.17.
   For information about new features in major release 14, see
   <xref linkend="release-14"/>.
  </para>

  <sect2>
   <title>Migration to Version 14.18</title>

   <para>
    A dump/restore is not required for those running 14.X.
   </para>

   <para>
    However, if you have any self-referential foreign key constraints on
    partitioned tables, it may be necessary to recreate those constraints
    to ensure that they are being enforced correctly.  See the second
    changelog entry below.
   </para>

   <para>
    Also, if you have any BRIN bloom indexes, it may be advisable to
    reindex them after updating.  See the third changelog entry below.
   </para>

   <para>
    Also, if you are upgrading from a version earlier than 14.14,
    see <xref linkend="release-14-14"/>.
   </para>
  </sect2>

  <sect2>
   <title>Changes</title>

   <itemizedlist>

    <listitem>
<!--
Author: Noah Misch <noah@leadboat.com>
Branch: master [627acc3ca] 2025-05-05 04:52:04 -0700
Branch: REL_17_STABLE [ec5f89e8a] 2025-05-05 04:52:07 -0700
Branch: REL_16_STABLE [d1264948f] 2025-05-05 04:52:07 -0700
Branch: REL_15_STABLE [44ba3f55f] 2025-05-05 04:52:08 -0700
Branch: REL_14_STABLE [3f2ab7393] 2025-05-05 04:52:08 -0700
Branch: REL_13_STABLE [cbadeaca9] 2025-05-05 04:52:08 -0700
Branch: master [5be213caa] 2025-05-05 04:52:04 -0700
Branch: REL_17_STABLE [617d34908] 2025-05-05 04:52:07 -0700
Branch: REL_16_STABLE [f3bb0b2c4] 2025-05-05 04:52:07 -0700
Branch: REL_15_STABLE [45fe7e08f] 2025-05-05 04:52:08 -0700
Branch: REL_14_STABLE [258cde839] 2025-05-05 04:52:08 -0700
Branch: REL_13_STABLE [7279e5820] 2025-05-05 04:52:08 -0700
-->
     <para>
      Avoid one-byte buffer overread when examining invalidly-encoded
      strings that are claimed to be in GB18030 encoding
      (Noah Misch, Andres Freund)
      <ulink url="&commit_baseurl;3f2ab7393">&sect;</ulink>
      <ulink url="&commit_baseurl;258cde839">&sect;</ulink>
     </para>

     <para>
      While unlikely, a SIGSEGV crash could occur if an incomplete
      multibyte character appeared at the end of memory.  This was
      possible both in the server and
      in <application>libpq</application>-using applications.
      (CVE-2025-4207)
     </para>
    </listitem>

    <listitem>
<!--
Author: Álvaro Herrera <alvherre@kurilemu.de>
Branch: master [c83a38758] 2025-05-02 21:25:50 +0200
Branch: REL_17_STABLE [f51ae3187] 2025-05-02 21:25:50 +0200
Branch: REL_16_STABLE [1817d62ec] 2025-05-02 21:25:50 +0200
Branch: REL_15_STABLE [6ba979cf5] 2025-05-02 21:25:50 +0200
Branch: REL_14_STABLE [1649d153a] 2025-05-02 21:25:50 +0200
Branch: REL_13_STABLE [b3a9c536d] 2025-05-02 21:25:50 +0200
-->
     <para>
      Handle self-referential foreign keys on partitioned tables correctly
      (Álvaro Herrera)
      <ulink url="&commit_baseurl;1649d153a">&sect;</ulink>
     </para>

     <para>
      Creating or attaching partitions failed to make the required catalog
      entries for a foreign-key constraint, if the table referenced by the
      constraint was the same partitioned table.  This resulted in failure
      to enforce the constraint fully.
     </para>

     <para>
      To fix this, you should drop and recreate any self-referential
      foreign keys on partitioned tables, if partitions have been created
      or attached since the constraint was created.  Bear in mind that
      violating rows might already be present, in which case recreating
      the constraint will fail, and you'll need to fix up those rows
      before trying again.
     </para>
    </listitem>

    <listitem>
<!--
Author: Tomas Vondra <tomas.vondra@postgresql.org>
Branch: master [818245506] 2025-03-26 17:01:41 +0100
Branch: REL_17_STABLE [cb0ad70b8] 2025-03-26 17:02:17 +0100
Branch: REL_16_STABLE [ebcc799a7] 2025-03-26 17:02:50 +0100
Branch: REL_15_STABLE [e064b770c] 2025-03-26 17:03:02 +0100
Branch: REL_14_STABLE [6be02bbc8] 2025-03-26 17:03:06 +0100
-->
     <para>
      Avoid data loss when merging compressed BRIN summaries
      in <function>brin_bloom_union()</function> (Tomas Vondra)
      <ulink url="&commit_baseurl;6be02bbc8">&sect;</ulink>
     </para>

     <para>
      The code failed to account for decompression results not being
      identical to the input objects, which would result in failure to add
      some of the data to the merged summary, leading to missed rows in
      index searches.
     </para>

     <para>
      This mistake was present back to v14 where BRIN bloom indexes were
      introduced, but this code path was only rarely reached then.  It's
      substantially more likely to be hit in v17 because parallel index
      builds now use the code.
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [f4e7756ef] 2025-03-12 11:47:38 -0400
Branch: REL_17_STABLE [ca0830e5a] 2025-03-12 11:47:19 -0400
Branch: REL_16_STABLE [fec43428c] 2025-03-12 11:47:19 -0400
Branch: REL_15_STABLE [ae0be2f0b] 2025-03-12 11:47:19 -0400
Branch: REL_14_STABLE [d3a29ae6a] 2025-03-12 11:47:19 -0400
Branch: REL_13_STABLE [39af32f78] 2025-03-12 11:47:19 -0400
Branch: REL_15_STABLE [317aba70e] 2025-03-12 11:27:59 -0400
Branch: REL_14_STABLE [584f17a90] 2025-03-12 11:28:04 -0400
Branch: REL_13_STABLE [28a7e31d0] 2025-03-12 11:28:11 -0400
Branch: REL_15_STABLE [7713f4592] 2025-03-13 12:13:07 -0400
Branch: REL_14_STABLE [1a20bc946] 2025-03-13 12:13:07 -0400
Branch: REL_13_STABLE [b200180de] 2025-03-13 12:13:07 -0400
-->
     <para>
      Fix unexpected <quote>attribute has wrong type</quote> errors
      in <command>UPDATE</command>, <command>DELETE</command>,
      and <command>MERGE</command> queries that use whole-row table
      references to views or functions in <literal>FROM</literal>
      (Tom Lane)
      <ulink url="&commit_baseurl;d3a29ae6a">&sect;</ulink>
      <ulink url="&commit_baseurl;584f17a90">&sect;</ulink>
      <ulink url="&commit_baseurl;1a20bc946">&sect;</ulink>
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [7c8728494] 2025-04-15 12:08:34 -0400
Branch: REL_17_STABLE [3c39c000c] 2025-04-15 12:08:34 -0400
Branch: REL_16_STABLE [f04e0faa3] 2025-04-15 12:08:34 -0400
Branch: REL_15_STABLE [97d671672] 2025-04-15 12:08:34 -0400
Branch: REL_14_STABLE [4604928ed] 2025-04-15 12:08:34 -0400
-->
     <para>
      Prevent failure in <command>INSERT</command> commands when the table
      has a <literal>GENERATED</literal> column of a domain data type and
      the domain's constraints disallow null values (Jian He)
      <ulink url="&commit_baseurl;4604928ed">&sect;</ulink>
     </para>

     <para>
      Constraint failure was reported even if the generation expression
      produced a perfectly okay result.
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [691836405] 2025-04-05 15:01:48 -0400
Branch: REL_17_STABLE [5e7be43f4] 2025-04-05 15:01:33 -0400
Branch: REL_16_STABLE [1980ec2bc] 2025-04-05 15:01:33 -0400
Branch: REL_15_STABLE [ede29a1e4] 2025-04-05 15:01:33 -0400
Branch: REL_14_STABLE [754a3d82d] 2025-04-05 15:01:33 -0400
Branch: REL_13_STABLE [e276b5829] 2025-04-05 15:01:33 -0400
-->
     <para>
      Correctly process references to outer CTE names that appear within
      a <literal>WITH</literal> clause attached to
      an <command>INSERT</command>/<command>UPDATE</command>/<command>DELETE</command>/<command>MERGE</command>
      command that's inside <literal>WITH</literal> (Tom Lane)
      <ulink url="&commit_baseurl;754a3d82d">&sect;</ulink>
     </para>

     <para>
      The parser failed to detect disallowed recursion cases, nor did it
      account for such references when sorting CTEs into a usable order.
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [4618045be] 2025-03-13 16:07:55 -0400
Branch: REL_17_STABLE [c826cd1b1] 2025-03-13 16:07:55 -0400
Branch: REL_16_STABLE [0405982c7] 2025-03-13 16:07:55 -0400
Branch: REL_15_STABLE [13dd6f772] 2025-03-13 16:07:55 -0400
Branch: REL_14_STABLE [f7ae51312] 2025-03-13 16:07:55 -0400
Branch: REL_13_STABLE [474aee3df] 2025-03-13 16:07:55 -0400
-->
     <para>
      Fix <literal>ARRAY(<replaceable>subquery</replaceable>)</literal>
      and <literal>ARRAY[<replaceable>expression, ...</replaceable>]</literal>
      constructs to produce sane results when the input is of
      type <type>int2vector</type> or <type>oidvector</type> (Tom Lane)
      <ulink url="&commit_baseurl;f7ae51312">&sect;</ulink>
     </para>

     <para>
      This patch restores the behavior that existed
      before <productname>PostgreSQL</productname> 9.5: the result is of
      type <type>int2vector[]</type> or <type>oidvector[]</type>.
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [7fb880102] 2025-03-08 11:24:25 -0500
Branch: REL_17_STABLE [99c01aadf] 2025-03-08 11:24:42 -0500
Branch: REL_16_STABLE [61513da08] 2025-03-08 11:24:47 -0500
Branch: REL_15_STABLE [e2921c0e9] 2025-03-08 11:24:52 -0500
Branch: REL_14_STABLE [da85544ae] 2025-03-08 11:24:57 -0500
Branch: REL_13_STABLE [f1c1bafcd] 2025-03-08 11:25:01 -0500
-->
     <para>
      Fix possible erroneous reports of invalid affixes while parsing
      <application>Ispell</application> dictionaries (Jacob Brazeal)
      <ulink url="&commit_baseurl;da85544ae">&sect;</ulink>
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [95f650674] 2025-03-03 12:43:44 -0500
Branch: REL_17_STABLE [d6dd2a02b] 2025-03-03 12:43:29 -0500
Branch: REL_16_STABLE [edc3bccd0] 2025-03-03 12:43:29 -0500
Branch: REL_15_STABLE [1d180931c] 2025-03-03 12:43:29 -0500
Branch: REL_14_STABLE [c75c830e2] 2025-03-03 12:43:29 -0500
Branch: REL_13_STABLE [aac07b562] 2025-03-03 12:43:29 -0500
Branch: master [bd178960c] 2025-04-02 11:13:01 -0400
Branch: REL_17_STABLE [0941aadcd] 2025-04-02 11:13:01 -0400
Branch: REL_16_STABLE [053222a97] 2025-04-02 11:13:01 -0400
Branch: REL_15_STABLE [2d6cfb0cd] 2025-04-02 11:13:01 -0400
Branch: REL_14_STABLE [d31d39cfe] 2025-04-02 11:13:01 -0400
Branch: REL_13_STABLE [dd34cbfce] 2025-04-02 11:13:01 -0400
-->
     <para>
      Fix <literal>ALTER TABLE ADD COLUMN</literal> to correctly handle
      the case of a domain type that has a default
      (Jian He, Tom Lane, Tender Wang)
      <ulink url="&commit_baseurl;c75c830e2">&sect;</ulink>
      <ulink url="&commit_baseurl;d31d39cfe">&sect;</ulink>
     </para>

     <para>
      If a domain type has a default, adding a column of that type (without
      any explicit <literal>DEFAULT</literal>
      clause) failed to install the domain's default
      value in existing rows, instead leaving the new column null.
     </para>
    </listitem>

    <listitem>
<!--
Author: Álvaro Herrera <alvherre@alvh.no-ip.org>
Branch: master [7bbc46213] 2025-03-04 20:07:30 +0100
Branch: REL_17_STABLE [4e026be5f] 2025-03-04 20:07:30 +0100
Branch: REL_16_STABLE [9ea5fe5b6] 2025-03-04 20:07:30 +0100
Branch: REL_15_STABLE [bf1e2d2db] 2025-03-04 20:07:30 +0100
Branch: REL_14_STABLE [931a1c023] 2025-03-04 20:07:30 +0100
Branch: REL_13_STABLE [0f354e080] 2025-03-04 20:07:30 +0100
-->
     <para>
      Improve the error message for disallowed attempts to alter the
      properties of a foreign key constraint (Álvaro Herrera)
      <ulink url="&commit_baseurl;931a1c023">&sect;</ulink>
     </para>
    </listitem>

    <listitem>
<!--
Author: Noah Misch <noah@leadboat.com>
Branch: master [2d5350cfb] 2025-04-20 08:28:48 -0700
Branch: REL_17_STABLE [d0a049987] 2025-04-20 08:28:52 -0700
Branch: REL_16_STABLE [5905e9935] 2025-04-20 08:28:52 -0700
Branch: REL_15_STABLE [e0f53e669] 2025-04-20 08:28:52 -0700
Branch: REL_14_STABLE [a61b67cd0] 2025-04-20 08:28:53 -0700
Branch: REL_13_STABLE [d34b671a6] 2025-04-20 08:28:53 -0700
-->
     <para>
      Avoid error when resetting
      the <structfield>relhassubclass</structfield> flag of a temporary
      table that's marked <literal>ON COMMIT DELETE ROWS</literal>
      (Noah Misch)
      <ulink url="&commit_baseurl;a61b67cd0">&sect;</ulink>
     </para>
    </listitem>

    <listitem>
<!--
Author: David Rowley <drowley@postgresql.org>
Branch: master [b136db07c] 2025-04-02 11:56:29 +1300
Branch: REL_17_STABLE [5672a8399] 2025-04-02 11:57:27 +1300
Branch: REL_16_STABLE [5a0840b76] 2025-04-02 11:57:54 +1300
Branch: REL_15_STABLE [a7f213b11] 2025-04-02 11:58:16 +1300
Branch: REL_14_STABLE [b68f664bb] 2025-04-02 11:58:37 +1300
-->
     <para>
      Fix planner's failure to identify more than one hashable
      ScalarArrayOpExpr subexpression within a top-level expression
      (David Geier)
      <ulink url="&commit_baseurl;b68f664bb">&sect;</ulink>
     </para>

     <para>
      This resulted in unnecessarily-inefficient execution of any
      additional subexpressions that could have been processed with a hash
      table (that is, <literal>IN</literal>, <literal>NOT IN</literal>,
      or <literal>= ANY</literal> clauses with all-constant right-hand
      sides).
     </para>
    </listitem>

    <listitem>
<!--
Author: Andres Freund <andres@anarazel.de>
Branch: master [459e7bf8e] 2025-04-02 14:54:20 -0400
Branch: REL_17_STABLE [78cb2466f] 2025-04-02 14:42:03 -0400
Branch: REL_16_STABLE [980727b84] 2025-04-02 14:46:31 -0400
Branch: REL_15_STABLE [77d90d6d6] 2025-04-02 14:50:03 -0400
Branch: REL_14_STABLE [4934d3875] 2025-04-02 14:50:44 -0400
Branch: REL_13_STABLE [b9ec8125d] 2025-04-02 14:50:49 -0400
-->
     <para>
      Disable <quote>skip fetch</quote> optimization in bitmap heap scan
      (Matthias van de Meent)
      <ulink url="&commit_baseurl;4934d3875">&sect;</ulink>
     </para>

     <para>
      It turns out that this optimization can result in returning dead
      tuples when a concurrent vacuum marks a page all-visible.
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [0f21db36d] 2025-03-06 11:54:31 -0500
Branch: REL_17_STABLE [9094eb25b] 2025-03-06 11:54:27 -0500
Branch: REL_16_STABLE [d52221cf0] 2025-03-06 11:54:27 -0500
Branch: REL_15_STABLE [2d313375c] 2025-03-06 11:54:27 -0500
Branch: REL_14_STABLE [e2a6934a8] 2025-03-06 11:54:27 -0500
Branch: REL_13_STABLE [308d0d443] 2025-03-06 11:54:27 -0500
Branch: master [e708ffe79] 2025-04-12 12:28:02 -0400
Branch: REL_17_STABLE [8c153fcfa] 2025-04-12 12:27:46 -0400
Branch: REL_16_STABLE [4b65b085a] 2025-04-12 12:27:46 -0400
Branch: REL_15_STABLE [9a8c16aec] 2025-04-12 12:27:46 -0400
Branch: REL_14_STABLE [1b47a112a] 2025-04-12 12:27:46 -0400
Branch: REL_13_STABLE [c7597a1d3] 2025-04-12 12:27:46 -0400
-->
     <para>
      Fix performance issues in GIN index search startup when there are
      many search keys (Tom Lane, Vinod Sridharan)
      <ulink url="&commit_baseurl;e2a6934a8">&sect;</ulink>
      <ulink url="&commit_baseurl;1b47a112a">&sect;</ulink>
     </para>

     <para>
      An indexable clause with many keys (for example, <literal>jsonbcol
      ?| array[...]</literal> with tens of thousands of array elements)
      took O(N<superscript>2</superscript>) time to start up, and was
      uncancelable for that interval too.
     </para>
    </listitem>

    <listitem>
<!--
Author: Álvaro Herrera <alvherre@alvh.no-ip.org>
Branch: master [17ce344f8] 2025-03-11 12:50:35 +0100
Branch: REL_17_STABLE [ade976f8b] 2025-03-11 12:50:35 +0100
Branch: REL_16_STABLE [e0d8f49a3] 2025-03-11 12:50:35 +0100
Branch: REL_15_STABLE [5d8c58800] 2025-03-11 12:50:35 +0100
Branch: REL_14_STABLE [5144e1f8f] 2025-03-11 12:50:35 +0100
Branch: REL_13_STABLE [f5b4a0b49] 2025-03-11 12:50:35 +0100
-->
     <para>
      Detect missing support procedures in a BRIN index operator class,
      and report an error instead of crashing (Álvaro Herrera)
      <ulink url="&commit_baseurl;5144e1f8f">&sect;</ulink>
     </para>
    </listitem>

    <listitem>
<!--
Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
Branch: master [af717317a] 2025-03-12 20:53:09 +0200
Branch: REL_17_STABLE [e731e9d5e] 2025-03-12 20:53:16 +0200
Branch: REL_16_STABLE [004dbbd72] 2025-03-12 20:53:19 +0200
Branch: REL_15_STABLE [d4d34c08c] 2025-03-12 20:53:23 +0200
Branch: REL_14_STABLE [d2fb076be] 2025-03-12 20:53:25 +0200
-->
     <para>
      Respond to interrupts (such as query cancel) while waiting for
      asynchronous subplans of an Append plan node (Heikki Linnakangas)
      <ulink url="&commit_baseurl;d2fb076be">&sect;</ulink>
     </para>

     <para>
      Previously, nothing would happen until one of the subplans becomes
      ready.
     </para>
    </listitem>

    <listitem>
<!--
Author: Michael Paquier <michael@paquier.xyz>
Branch: master [2e5779083] 2025-04-11 10:00:21 +0900
Branch: REL_17_STABLE [3339847cc] 2025-04-11 10:02:15 +0900
Branch: REL_16_STABLE [c922ae2c4] 2025-04-11 10:02:17 +0900
Branch: REL_15_STABLE [ec59500a1] 2025-04-11 10:02:18 +0900
Branch: REL_14_STABLE [873aff945] 2025-04-11 10:02:20 +0900
Branch: REL_13_STABLE [e2f42f812] 2025-04-11 10:02:21 +0900
-->
     <para>
      Fix race condition in handling
      of <varname>synchronous_standby_names</varname> immediately after
      startup (Melnikov Maksim, Michael Paquier)
      <ulink url="&commit_baseurl;873aff945">&sect;</ulink>
     </para>

     <para>
      For a short period after system startup, backends might fail to wait
      for synchronous commit even
      though <varname>synchronous_standby_names</varname> is enabled.
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [00d61a08c] 2025-03-01 14:22:56 -0500
Branch: REL_17_STABLE [d69c78108] 2025-03-01 14:22:56 -0500
Branch: REL_16_STABLE [5c64ece8a] 2025-03-01 14:22:56 -0500
Branch: REL_15_STABLE [c7303f01c] 2025-03-01 14:22:56 -0500
Branch: REL_14_STABLE [76fbb38ef] 2025-03-01 14:22:56 -0500
Branch: REL_13_STABLE [ebe919e95] 2025-03-01 14:22:56 -0500
-->
     <para>
      Fix <function>pg_strtof()</function> to not crash with null endptr
      (Alexander Lakhin, Tom Lane)
      <ulink url="&commit_baseurl;76fbb38ef">&sect;</ulink>
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [b464e51ab] 2025-02-18 21:13:54 -0500
Branch: REL_17_STABLE [7edd2cbc5] 2025-02-18 21:23:59 -0500
Branch: REL_16_STABLE [c0c364fa1] 2025-02-18 21:23:59 -0500
Branch: REL_15_STABLE [9c46d902b] 2025-02-18 21:23:59 -0500
Branch: REL_14_STABLE [8388cae55] 2025-02-18 21:24:12 -0500
Branch: REL_13_STABLE [197427fb3] 2025-02-18 21:24:12 -0500
-->
     <para>
      Avoid crash when a Snowball stemmer encounters an out-of-memory
      condition (Maksim Korotkov)
      <ulink url="&commit_baseurl;8388cae55">&sect;</ulink>
     </para>
    </listitem>

    <listitem>
<!--
Author: Noah Misch <noah@leadboat.com>
Branch: REL_14_STABLE [3635a0a35] 2025-04-06 15:40:44 +0900
Branch: REL_13_STABLE [69a498eb6] 2025-04-06 15:42:30 +0900
Branch: REL_14_STABLE [014a50800] 2025-04-06 15:37:53 +0900
Branch: REL_13_STABLE [a5b0c06da] 2025-04-06 15:40:15 +0900
Branch: REL_14_STABLE [675b771ca] 2025-04-06 15:26:23 +0900
Branch: REL_13_STABLE [cbed472a9] 2025-04-06 15:27:34 +0900
Branch: REL_14_STABLE [b494640e8] 2025-04-06 14:46:31 +0900
Branch: REL_13_STABLE [d0b6acaf0] 2025-04-06 14:48:01 +0900
Branch: REL_14_STABLE [8967dddf0] 2025-04-06 14:36:08 +0900
Branch: REL_13_STABLE [20e5ef3ca] 2025-04-06 14:38:34 +0900
Branch: REL_14_STABLE [6b168c129] 2025-04-06 14:12:12 +0900
Branch: REL_13_STABLE [df8ec9634] 2025-04-06 14:22:46 +0900
Author: Michael Paquier <michael@paquier.xyz>
Branch: REL_14_STABLE [47d2d2982] 2025-04-06 15:14:52 +0900
Branch: REL_13_STABLE [e77d9cd4f] 2025-04-06 15:15:13 +0900
-->
     <para>
      Skip WAL recycling and preallocation during archive recovery, to
      avoid corruption of WAL files that were restored from the archive
      (Noah Misch, Arun Thirupathi)
      <ulink url="&commit_baseurl;3635a0a35">&sect;</ulink>
      <ulink url="&commit_baseurl;014a50800">&sect;</ulink>
      <ulink url="&commit_baseurl;675b771ca">&sect;</ulink>
      <ulink url="&commit_baseurl;b494640e8">&sect;</ulink>
      <ulink url="&commit_baseurl;8967dddf0">&sect;</ulink>
      <ulink url="&commit_baseurl;6b168c129">&sect;</ulink>
      <ulink url="&commit_baseurl;47d2d2982">&sect;</ulink>
     </para>

     <para>
      This change back-patches v15-era fixes that were considered largely
      cosmetic at the time, but turn out to prevent data corruption in the
      wake of subsequent fixes.
     </para>
    </listitem>

    <listitem>
<!--
Author: Amit Kapila <akapila@postgresql.org>
Branch: master [aaf9e95e8] 2025-04-28 11:35:54 +0530
Branch: REL_17_STABLE [36148b22e] 2025-04-28 11:22:07 +0530
Branch: REL_16_STABLE [21a7caeeb] 2025-04-28 11:09:27 +0530
Branch: REL_15_STABLE [f6429bd7d] 2025-04-28 10:56:24 +0530
Branch: REL_14_STABLE [1f63b3626] 2025-04-28 10:34:45 +0530
Branch: REL_13_STABLE [d65485b02] 2025-04-28 11:55:00 +0530
-->
     <para>
      Prevent over-advancement of catalog xmin in <quote>fast
      forward</quote> mode of logical decoding (Zhijie Hou)
      <ulink url="&commit_baseurl;1f63b3626">&sect;</ulink>
     </para>

     <para>
      This mistake could allow deleted catalog entries to be vacuumed away
      even though they were still potentially needed by the WAL-reading
      process.
     </para>
    </listitem>

    <listitem>
<!--
Author: Amit Kapila <akapila@postgresql.org>
Branch: master [4909b38af] 2025-04-10 13:14:40 +0530
Branch: REL_17_STABLE [cadaf0ac4] 2025-04-10 12:57:10 +0530
Branch: REL_16_STABLE [9a2f8b4f0] 2025-04-10 12:44:11 +0530
Branch: REL_15_STABLE [9f21be08e] 2025-04-10 12:31:14 +0530
Branch: REL_14_STABLE [0434033e8] 2025-04-10 12:22:30 +0530
Branch: REL_13_STABLE [247ee9415] 2025-04-24 10:31:40 +0530
Branch: master [50b8ad30f] 2025-04-25 12:46:02 +0530
Branch: REL_17_STABLE [d96206f25] 2025-04-25 12:32:00 +0530
Branch: REL_16_STABLE [9987c9466] 2025-04-25 12:17:40 +0530
Branch: REL_15_STABLE [90bc4523f] 2025-04-25 12:05:52 +0530
Branch: REL_14_STABLE [bb1bc9fa9] 2025-04-25 11:53:27 +0530
Branch: REL_13_STABLE [4164d6976] 2025-04-25 11:45:40 +0530
-->
     <para>
      Avoid data loss when DDL operations that don't take a strong lock
      affect tables that are being logically replicated (Shlok Kyal,
      Hayato Kuroda)
      <ulink url="&commit_baseurl;0434033e8">&sect;</ulink>
      <ulink url="&commit_baseurl;bb1bc9fa9">&sect;</ulink>
     </para>

     <para>
      The catalog changes caused by the DDL command were not reflected
      into WAL-decoding processes, allowing them to decode subsequent
      changes using stale catalog data, probably resulting in data
      corruption.
     </para>
    </listitem>

    <listitem>
<!--
Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
Branch: master [236750317] 2025-03-10 17:07:38 +0200
Branch: REL_17_STABLE [c1dd3a944] 2025-03-10 17:07:59 +0200
Branch: REL_16_STABLE [8171d2dae] 2025-03-10 17:08:02 +0200
Branch: REL_15_STABLE [50c589992] 2025-03-10 17:08:05 +0200
Branch: REL_14_STABLE [2ef048855] 2025-03-10 17:08:07 +0200
Branch: REL_13_STABLE [9b3914f18] 2025-03-10 17:08:10 +0200
Branch: master [f7c566a1a] 2025-03-10 18:58:10 +0200
Branch: REL_17_STABLE [f1ef111a0] 2025-03-10 19:00:08 +0200
Branch: REL_16_STABLE [324e0b656] 2025-03-10 19:01:51 +0200
Branch: REL_15_STABLE [d765226cb] 2025-03-10 19:01:58 +0200
Branch: REL_14_STABLE [136e68b46] 2025-03-10 19:02:02 +0200
Branch: REL_13_STABLE [6c1e79589] 2025-03-10 19:02:08 +0200
-->
     <para>
      Avoid duplicate snapshot creation in logical replication index
      lookups (Heikki Linnakangas)
      <ulink url="&commit_baseurl;2ef048855">&sect;</ulink>
      <ulink url="&commit_baseurl;136e68b46">&sect;</ulink>
     </para>
    </listitem>

    <listitem>
<!--
Author: Daniel Gustafsson <dgustafsson@postgresql.org>
Branch: REL_15_STABLE [0f404c581] 2025-04-30 20:36:24 +0200
Branch: REL_14_STABLE [7be51eb4e] 2025-04-30 20:36:23 +0200
-->
     <para>
      Fix assertion failure in snapshot building (Masahiko Sawada)
      <ulink url="&commit_baseurl;7be51eb4e">&sect;</ulink>
     </para>
    </listitem>

    <listitem>
<!--
Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
Branch: master [7afca7ede] 2025-04-04 13:49:00 +0300
Branch: REL_17_STABLE [6526d0794] 2025-04-04 13:49:21 +0300
Branch: REL_16_STABLE [419321398] 2025-04-04 13:49:51 +0300
Branch: REL_15_STABLE [3c0fe75c4] 2025-04-04 13:50:00 +0300
Branch: REL_14_STABLE [a749c6f18] 2025-04-04 13:50:12 +0300
Branch: REL_13_STABLE [b92482dc3] 2025-04-04 13:50:52 +0300
-->
     <para>
      Fix overly-strict assertion
      in <function>gistFindCorrectParent()</function> (Heikki Linnakangas)
      <ulink url="&commit_baseurl;a749c6f18">&sect;</ulink>
     </para>
    </listitem>

    <listitem>
<!--
Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
Branch: master [2817525f0] 2025-03-23 20:41:16 +0200
Branch: REL_17_STABLE [302ce5bd9] 2025-03-23 20:41:52 +0200
Branch: REL_16_STABLE [2f33de3cd] 2025-03-23 20:41:54 +0200
Branch: REL_15_STABLE [b30c77a0e] 2025-03-23 20:41:57 +0200
Branch: REL_14_STABLE [66235baab] 2025-03-23 20:41:59 +0200
-->
     <para>
      Fix rare assertion failure in standby servers when the primary is
      restarted (Heikki Linnakangas)
      <ulink url="&commit_baseurl;66235baab">&sect;</ulink>
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [7fe312f60] 2025-03-21 11:30:42 -0400
Branch: REL_17_STABLE [1353b1161] 2025-03-21 11:30:42 -0400
Branch: REL_16_STABLE [a28c1fb61] 2025-03-21 11:30:42 -0400
Branch: REL_15_STABLE [5e56efa7c] 2025-03-21 11:30:42 -0400
Branch: REL_14_STABLE [c196c610b] 2025-03-21 11:30:42 -0400
Branch: REL_13_STABLE [0f60e1fba] 2025-03-21 11:30:42 -0400
-->
     <para>
      In PL/pgSQL, avoid <quote>unexpected plan node type</quote> error
      when a scrollable cursor is defined on a
      simple <literal>SELECT <replaceable>expression</replaceable></literal>
      query (Andrei Lepikhov)
      <ulink url="&commit_baseurl;c196c610b">&sect;</ulink>
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [1fc340362] 2025-04-16 13:31:59 -0400
Branch: REL_17_STABLE [3424c1075] 2025-04-16 13:31:44 -0400
Branch: REL_16_STABLE [a25f21d99] 2025-04-16 13:31:44 -0400
Branch: REL_15_STABLE [7144cd538] 2025-04-16 13:31:44 -0400
Branch: REL_14_STABLE [148cc0105] 2025-04-16 13:31:44 -0400
Branch: REL_13_STABLE [6a3e57865] 2025-04-16 13:31:44 -0400
-->
     <para>
      Don't try to drop individual index partitions
      in <application>pg_dump</application>'s <option>--clean</option>
      mode (Jian He)
      <ulink url="&commit_baseurl;148cc0105">&sect;</ulink>
     </para>

     <para>
      The server rejects such <command>DROP</command> commands.  That has
      no real consequences, since the partitions will go away anyway in
      the subsequent <command>DROP</command>s of either their parent
      tables or their partitioned index.  However, the error reported for
      the attempted drop causes problems when restoring
      in <option>--single-transaction</option> mode.
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [29d75b25b] 2025-02-21 13:37:15 -0500
Branch: REL_17_STABLE [16eff4261] 2025-02-21 13:37:15 -0500
Branch: REL_16_STABLE [d850a6600] 2025-02-21 13:37:16 -0500
Branch: REL_15_STABLE [6df3be415] 2025-02-21 13:37:16 -0500
Branch: REL_14_STABLE [ce1475acd] 2025-02-21 13:37:16 -0500
Branch: REL_13_STABLE [5302ff95c] 2025-02-21 13:37:12 -0500
-->
     <para>
      In <application>pg_dumpall</application>, avoid emitting invalid
      role <command>GRANT</command> commands
      if <structname>pg_auth_members</structname> contains invalid role
      OIDs (Tom Lane)
      <ulink url="&commit_baseurl;ce1475acd">&sect;</ulink>
     </para>

     <para>
      Instead, print a warning and skip the entry.  This copes better with
      catalog corruption that has been seen to occur in back branches as a
      result of race conditions between <command>GRANT</command>
      and <command>DROP ROLE</command>.
     </para>
    </listitem>

    <listitem>
<!--
Author: Michael Paquier <michael@paquier.xyz>
Branch: master [2a083ab80] 2025-02-28 10:15:29 +0900
Branch: REL_17_STABLE [ee78823ff] 2025-02-28 10:15:32 +0900
Branch: REL_16_STABLE [9ca2145b0] 2025-02-28 10:15:34 +0900
Author: Jeff Davis <jdavis@postgresql.org>
Branch: master [945126234] 2025-04-03 11:04:37 -0700
Branch: REL_17_STABLE [0851b6573] 2025-04-06 09:13:43 -0700
Branch: REL_16_STABLE [57467ec7b] 2025-04-06 09:14:42 -0700
Author: Michael Paquier <michael@paquier.xyz>
Branch: master [48e4ae9a0] 2025-02-27 14:05:51 +0900
Branch: REL_17_STABLE [f903d4da9] 2025-02-27 14:05:55 +0900
Branch: REL_16_STABLE [816149dc6] 2025-02-27 14:05:57 +0900
Branch: REL_15_STABLE [ec741d480] 2025-02-27 14:05:58 +0900
Branch: REL_14_STABLE [35a591a04] 2025-02-27 14:06:00 +0900
-->
     <para>
      In <application>pg_amcheck</application>
      and <application>pg_upgrade</application>, use the correct function
      to free allocations made by <application>libpq</application>
      (Michael Paquier, Ranier Vilela)
      <ulink url="&commit_baseurl;35a591a04">&sect;</ulink>
     </para>

     <para>
      These oversights could result in crashes in certain Windows build
      configurations, such as a debug build
      of <application>libpq</application> used by a non-debug build of the
      calling application.
     </para>
    </listitem>

    <listitem>
<!--
Author: Noah Misch <noah@leadboat.com>
Branch: REL_16_STABLE [82a8f0f46] 2025-04-03 09:33:58 -0700
Branch: REL_15_STABLE [63f6ecb6b] 2025-04-03 09:34:01 -0700
Branch: REL_14_STABLE [a8a918937] 2025-04-03 09:34:01 -0700
Branch: REL_13_STABLE [186c586c3] 2025-04-03 09:34:02 -0700
Author: Andres Freund <andres@anarazel.de>
Branch: REL_15_STABLE [9e129a224] 2025-04-03 09:34:01 -0700
Branch: REL_14_STABLE [aa435d7c4] 2025-04-03 09:34:01 -0700
Branch: REL_13_STABLE [5a3d5c083] 2025-04-03 09:34:02 -0700
-->
     <para>
      Allow <filename>contrib/dblink</filename> queries to be interrupted
      by query cancel (Noah Misch)
      <ulink url="&commit_baseurl;a8a918937">&sect;</ulink>
      <ulink url="&commit_baseurl;aa435d7c4">&sect;</ulink>
     </para>

     <para>
      This change back-patches a v17-era fix.  It prevents possible hangs
      in <command>CREATE DATABASE</command> and <command>DROP
      DATABASE</command> due to failure to detect deadlocks.
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [d05996340] 2025-04-19 16:37:42 -0400
Branch: REL_17_STABLE [ecb8e5641] 2025-04-19 16:37:42 -0400
Branch: REL_16_STABLE [2d33cf7b8] 2025-04-19 16:37:42 -0400
Branch: REL_15_STABLE [90a3fd811] 2025-04-19 16:37:42 -0400
Branch: REL_14_STABLE [3c2ea65bd] 2025-04-19 16:37:43 -0400
Branch: REL_13_STABLE [3f9132ed2] 2025-04-19 16:37:43 -0400
-->
     <para>
      Avoid crashing with corrupt input data
      in <filename>contrib/pageinspect</filename>'s
      <function>heap_page_items()</function> (Dmitry Kovalenko)
      <ulink url="&commit_baseurl;3c2ea65bd">&sect;</ulink>
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [4623d7144] 2025-03-27 13:20:23 -0400
Branch: REL_17_STABLE [51d038da8] 2025-03-27 13:20:23 -0400
Branch: REL_16_STABLE [41ed749e4] 2025-03-27 13:20:23 -0400
Branch: REL_15_STABLE [0e86bad38] 2025-03-27 13:20:23 -0400
Branch: REL_14_STABLE [5ff827389] 2025-03-27 13:20:23 -0400
Branch: REL_13_STABLE [db8238da4] 2025-03-27 13:20:23 -0400
-->
     <para>
      Prevent assertion failure
      in <filename>contrib/pg_freespacemap</filename>'s
      <function>pg_freespacemap()</function> (Tender Wang)
      <ulink url="&commit_baseurl;5ff827389">&sect;</ulink>
     </para>

     <para>
      Applying <function>pg_freespacemap()</function> to a relation
      lacking storage (such as a view) caused an assertion failure,
      although there was no ill effect in non-assert builds.
      Add an error check to reject that case.
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [6da2ba1d8] 2025-04-01 16:50:09 -0400
Branch: REL_17_STABLE [915e88968] 2025-04-01 16:49:51 -0400
Branch: REL_16_STABLE [a39eb9c77] 2025-04-01 16:49:51 -0400
Branch: REL_15_STABLE [0de9560ba] 2025-04-01 16:49:51 -0400
Branch: REL_14_STABLE [71790aef1] 2025-04-01 16:49:51 -0400
Branch: REL_13_STABLE [e4440a73c] 2025-04-01 16:49:51 -0400
-->
     <para>
      Fix build failure on macOS 15.4 (Tom Lane, Peter Eisentraut)
      <ulink url="&commit_baseurl;71790aef1">&sect;</ulink>
     </para>

     <para>
      This macOS update broke our configuration probe
      for <function>strchrnul()</function>.
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [368c3fbf9] 2025-04-30 11:13:49 -0400
Branch: REL_17_STABLE [5d5970b9f] 2025-04-30 11:14:01 -0400
Branch: REL_16_STABLE [e076120d9] 2025-04-30 11:14:06 -0400
Branch: REL_15_STABLE [a144cf145] 2025-04-30 11:14:10 -0400
Branch: REL_14_STABLE [fa4244a43] 2025-04-30 11:14:15 -0400
Branch: REL_13_STABLE [9da548df3] 2025-04-30 11:14:19 -0400
-->
     <para>
      Update time zone data files to <application>tzdata</application>
      release 2025b for DST law changes in Chile, plus historical
      corrections for Iran (Tom Lane)
      <ulink url="&commit_baseurl;fa4244a43">&sect;</ulink>
     </para>

     <para>
      There is a new time zone America/Coyhaique for Chile's Aysén Region,
      to account for it changing to UTC-03 year-round and thus diverging
      from America/Santiago.
     </para>
    </listitem>

   </itemizedlist>

  </sect2>
 </sect1>

 <sect1 id="release-14-17">
  <title>Release 14.17</title>

  <formalpara>
  <title>Release date:</title>
  <para>2025-02-20</para>
  </formalpara>

  <para>
   This release contains a few fixes from 14.16.
   For information about new features in major release 14, see
   <xref linkend="release-14"/>.
  </para>

  <sect2>
   <title>Migration to Version 14.17</title>

   <para>
    A dump/restore is not required for those running 14.X.
   </para>

   <para>
    However, if you are upgrading from a version earlier than 14.14,
    see <xref linkend="release-14-14"/>.
   </para>
  </sect2>

  <sect2>
   <title>Changes</title>

   <itemizedlist>

    <listitem>
<!--
Author: Andres Freund <andres@anarazel.de>
Branch: master [efdadeb22] 2025-02-14 18:09:19 -0500
Branch: REL_17_STABLE [a92db3d02] 2025-02-14 18:09:21 -0500
Branch: REL_16_STABLE [111f4dd27] 2025-02-14 18:09:23 -0500
Branch: REL_15_STABLE [22ffbbf24] 2025-02-14 18:09:24 -0500
Branch: REL_14_STABLE [985908df1] 2025-02-14 18:09:25 -0500
Branch: REL_13_STABLE [1f7a05324] 2025-02-14 18:09:27 -0500
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [9f45e6a91] 2025-02-15 16:20:21 -0500
Branch: REL_17_STABLE [3abe6e04c] 2025-02-15 16:20:21 -0500
Branch: REL_16_STABLE [991a60a9f] 2025-02-15 16:20:21 -0500
Branch: REL_15_STABLE [e782a63cc] 2025-02-15 16:20:21 -0500
Branch: REL_14_STABLE [c08309584] 2025-02-15 16:20:21 -0500
Branch: REL_13_STABLE [d6d29b213] 2025-02-15 16:20:21 -0500
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [a7f95859e] 2025-02-16 12:46:35 -0500
Branch: REL_17_STABLE [3977bd298] 2025-02-16 12:46:35 -0500
Branch: REL_16_STABLE [644b7d686] 2025-02-16 12:46:35 -0500
Branch: REL_15_STABLE [2226a2e26] 2025-02-16 12:46:35 -0500
Branch: REL_14_STABLE [f864a4cdf] 2025-02-16 12:46:35 -0500
Branch: REL_13_STABLE [9f052613e] 2025-02-16 12:46:35 -0500
-->
     <para>
      Improve behavior of <application>libpq</application>'s quoting
      functions (Andres Freund, Tom Lane)
      <ulink url="&commit_baseurl;985908df1">&sect;</ulink>
      <ulink url="&commit_baseurl;c08309584">&sect;</ulink>
      <ulink url="&commit_baseurl;f864a4cdf">&sect;</ulink>
     </para>

     <para>
      The changes made for CVE-2025-1094 had one serious oversight:
      <function>PQescapeLiteral()</function>
      and <function>PQescapeIdentifier()</function> failed to honor their
      string length parameter, instead always reading to the input
      string's trailing null.  This resulted in including unwanted text in
      the output, if the caller intended to truncate the string via the
      length parameter.  With very bad luck it could cause a crash due to
      reading off the end of memory.
     </para>

     <para>
      In addition, modify all these quoting functions so that when invalid
      encoding is detected, an invalid sequence is substituted for just
      the first byte of the presumed character, not all of it.  This
      reduces the risk of problems if a calling application performs
      additional processing on the quoted string.
     </para>
    </listitem>

    <listitem>
<!--
note: no actual bug in v15 and later
Author: Michael Paquier <michael@paquier.xyz>
Branch: master [773c51dd3] 2025-02-13 16:30:58 +0900
Branch: REL_17_STABLE [6342d49d8] 2025-02-13 16:31:05 +0900
Branch: REL_16_STABLE [139beb035] 2025-02-13 16:31:08 +0900
Branch: REL_15_STABLE [a37c83d1e] 2025-02-13 16:31:10 +0900
Branch: REL_14_STABLE [8e58f8024] 2025-02-13 16:31:11 +0900
Branch: REL_13_STABLE [520905824] 2025-02-13 16:31:12 +0900
-->
     <para>
      Fix crash involving triggers on partitioned tables that make use of
      transition tables (Kyotaro Horiguchi)
      <ulink url="&commit_baseurl;8e58f8024">&sect;</ulink>
     </para>

     <para>
      If there are both <literal>AFTER UPDATE</literal>
      and <literal>AFTER DELETE</literal> triggers, the need for
      transition tables was determined incorrectly, leading to a crash
      during cross-partition updates.
     </para>
    </listitem>

   </itemizedlist>

  </sect2>
 </sect1>

 <sect1 id="release-14-16">
  <title>Release 14.16</title>

  <formalpara>
  <title>Release date:</title>
  <para>2025-02-13</para>
  </formalpara>

  <para>
   This release contains a variety of fixes from 14.15.
   For information about new features in major release 14, see
   <xref linkend="release-14"/>.
  </para>

  <sect2>
   <title>Migration to Version 14.16</title>

   <para>
    A dump/restore is not required for those running 14.X.
   </para>

   <para>
    However, if you are upgrading from a version earlier than 14.14,
    see <xref linkend="release-14-14"/>.
   </para>
  </sect2>

  <sect2>
   <title>Changes</title>

   <itemizedlist>

    <listitem>
<!--
Author: Andres Freund <andres@anarazel.de>
Branch: master [5dc1e42b4] 2025-02-10 10:03:37 -0500
Branch: REL_17_STABLE [43a77239d] 2025-02-10 10:03:38 -0500
Branch: REL_16_STABLE [92e4170f4] 2025-02-10 10:03:39 -0500
Branch: REL_15_STABLE [370c94d4c] 2025-02-10 10:03:39 -0500
Branch: REL_14_STABLE [e0ef3d776] 2025-02-10 10:03:40 -0500
Branch: REL_13_STABLE [c906bfe1b] 2025-02-10 10:03:40 -0500
Branch: master [4dc289635] 2025-02-10 10:03:37 -0500
Branch: REL_17_STABLE [7d43ca6fe] 2025-02-10 10:03:38 -0500
Branch: REL_16_STABLE [6e05b195d] 2025-02-10 10:03:39 -0500
Branch: REL_15_STABLE [703b3fd5d] 2025-02-10 10:03:39 -0500
Branch: REL_14_STABLE [5bc33cbea] 2025-02-10 10:03:40 -0500
Branch: REL_13_STABLE [db3eb0e82] 2025-02-10 10:03:40 -0500
Branch: master [3e98c8ce5] 2025-02-10 10:03:37 -0500
Branch: REL_17_STABLE [61ad93cdd] 2025-02-10 10:03:38 -0500
Branch: REL_16_STABLE [56aa2dcdd] 2025-02-10 10:03:39 -0500
Branch: REL_15_STABLE [b1756da75] 2025-02-10 10:03:39 -0500
Branch: REL_14_STABLE [2ae54ae17] 2025-02-10 10:03:40 -0500
Branch: REL_13_STABLE [5df4e1632] 2025-02-10 10:03:40 -0500
Branch: master [ac00ff1c9] 2025-02-10 10:03:37 -0500
Branch: REL_17_STABLE [02d4d87ac] 2025-02-10 10:03:38 -0500
Branch: REL_16_STABLE [01784793f] 2025-02-10 10:03:39 -0500
Branch: REL_15_STABLE [de4b92f33] 2025-02-10 10:03:39 -0500
Branch: REL_14_STABLE [46ddf98df] 2025-02-10 10:03:40 -0500
Branch: REL_13_STABLE [4ea3f5ef3] 2025-02-10 10:03:40 -0500
Branch: master [979205e47] 2025-02-10 12:12:14 -0500
Branch: REL_17_STABLE [05abb0f83] 2025-02-10 12:12:53 -0500
Branch: REL_16_STABLE [41343f840] 2025-02-10 12:12:56 -0500
Branch: REL_15_STABLE [a085fa731] 2025-02-10 12:12:58 -0500
Branch: REL_14_STABLE [4a6825c76] 2025-02-10 12:12:59 -0500
Branch: REL_13_STABLE [7beb2af5e] 2025-02-10 12:13:02 -0500
Branch: REL_13_STABLE [00f1a1f66] 2025-02-10 10:03:40 -0500
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [5bf12323b] 2025-02-10 16:30:03 -0500
Branch: REL_17_STABLE [85c1fcc65] 2025-02-10 16:30:31 -0500
Branch: REL_16_STABLE [0075a5c6c] 2025-02-10 16:30:37 -0500
Branch: REL_15_STABLE [9862de917] 2025-02-10 16:30:54 -0500
Branch: REL_14_STABLE [e1f1b030d] 2025-02-10 16:31:01 -0500
Branch: REL_13_STABLE [f9fceef6e] 2025-02-10 16:31:09 -0500
-->
     <para>
      Harden <function>PQescapeString</function> and allied functions
      against invalidly-encoded input strings (Andres Freund, Noah Misch)
      <ulink url="&commit_baseurl;e0ef3d776">&sect;</ulink>
      <ulink url="&commit_baseurl;5bc33cbea">&sect;</ulink>
      <ulink url="&commit_baseurl;2ae54ae17">&sect;</ulink>
      <ulink url="&commit_baseurl;46ddf98df">&sect;</ulink>
      <ulink url="&commit_baseurl;4a6825c76">&sect;</ulink>
      <ulink url="&commit_baseurl;e1f1b030d">&sect;</ulink>
     </para>

     <para>
      Data-quoting functions supplied by <application>libpq</application>
      now fully check the encoding validity of their input.  If invalid
      characters are detected, they report an error if possible.  For the
      ones that lack an error return convention, the output string is
      adjusted to ensure that the server will report invalid encoding and
      no intervening processing will be fooled by bytes that might happen
      to match single quote, backslash, etc.
     </para>

     <para>
      The purpose of this change is to guard against SQL-injection attacks
      that are possible if one of these functions is used to quote crafted
      input.  There is no hazard when the resulting string is sent
      directly to a <productname>PostgreSQL</productname> server (which
      would check its encoding anyway), but there is a risk when it is
      passed through <application>psql</application> or other client-side
      code.  Historically such code has not carefully vetted encoding, and
      in many cases it's not clear what it should do if it did detect such
      a problem.
     </para>

     <para>
      This fix is effective only if the data-quoting function, the server,
      and any intermediate processing agree on the character encoding
      that's being used.  Applications that insert untrusted input into
      SQL commands should take special care to ensure that that's true.
     </para>

     <para>
      Applications and drivers that quote untrusted input without using
      these <application>libpq</application> functions may be at risk of
      similar problems.  They should first confirm the data is valid in
      the encoding expected by the server.
     </para>

     <para>
      The <productname>PostgreSQL</productname> Project thanks
      Stephen Fewer for reporting this problem.
      (CVE-2025-1094)
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [34486b609] 2024-12-28 16:08:50 -0500
Branch: REL_17_STABLE [15b4c46c3] 2024-12-28 16:08:50 -0500
Branch: REL_16_STABLE [41a252c2c] 2024-12-28 16:08:50 -0500
Branch: REL_15_STABLE [3d1ecc92a] 2024-12-28 16:08:50 -0500
Branch: REL_14_STABLE [c58b0c43d] 2024-12-28 16:08:50 -0500
Branch: REL_13_STABLE [70d067cec] 2024-12-28 16:08:50 -0500
-->
     <para>
      Exclude parallel workers from connection privilege checks and limits
      (Tom Lane)
      <ulink url="&commit_baseurl;c58b0c43d">&sect;</ulink>
     </para>

     <para>
      Do not
      check <literal>datallowconn</literal>, <literal>rolcanlogin</literal>,
      and <literal>ACL_CONNECT</literal> privileges when starting a
      parallel worker, instead assuming that it's enough for the leader
      process to have passed similar checks originally.  This avoids, for
      example, unexpected failures of parallelized queries when the leader
      is running as a role that lacks login privilege.  In the same vein,
      enforce <literal>ReservedConnections</literal>,
      <literal>datconnlimit</literal>, and <literal>rolconnlimit</literal>
      limits only against regular backends, and count only regular
      backends while checking if the limits were already reached.  Those
      limits are meant to prevent excessive consumption of process slots
      for regular backends --- but parallel workers and other special
      processes have their own pools of process slots with their own limit
      checks.
     </para>
    </listitem>

    <listitem>
<!--
Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
Branch: master [578a7fe7b] 2024-12-21 23:42:39 +0200
Branch: REL_17_STABLE [7cfdb4d1e] 2024-12-21 23:42:52 +0200
Branch: REL_16_STABLE [9d8ab2c46] 2024-12-21 23:42:55 +0200
Branch: REL_15_STABLE [acd5c28db] 2024-12-21 23:42:57 +0200
Branch: REL_14_STABLE [41eafbb49] 2024-12-21 23:42:59 +0200
Branch: REL_13_STABLE [9c1afd344] 2024-12-21 23:45:56 +0200
-->
     <para>
      Keep <varname>TransactionXmin</varname> in sync
      with <varname>MyProc-&gt;xmin</varname> (Heikki Linnakangas)
      <ulink url="&commit_baseurl;41eafbb49">&sect;</ulink>
     </para>

     <para>
      This oversight could permit a process to try to access data that had
      already been vacuumed away.  One known consequence is
      transient <quote>could not access status of transaction</quote>
      errors.
     </para>
    </listitem>

    <listitem>
<!--
Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
Branch: master [af8cd1639] 2025-01-14 14:28:49 +0200
Branch: REL_17_STABLE [96e61b279] 2025-01-14 14:35:11 +0200
Branch: REL_16_STABLE [91fc447c2] 2025-01-14 14:41:01 +0200
Branch: REL_15_STABLE [ce7c406f0] 2025-01-14 14:29:11 +0200
Branch: REL_14_STABLE [fce17c3a5] 2025-01-14 14:29:13 +0200
Branch: REL_13_STABLE [f217c4105] 2025-01-14 18:54:56 +0200
-->
     <para>
      Fix race condition that could cause failure to add a newly-inserted
      catalog entry to a catalog cache list (Heikki Linnakangas)
      <ulink url="&commit_baseurl;fce17c3a5">&sect;</ulink>
     </para>

     <para>
      This could result, for example, in failure to use a newly-created
      function within an existing session.
     </para>
    </listitem>

    <listitem>
<!--
Author: Noah Misch <noah@leadboat.com>
Branch: master [81772a495] 2025-01-25 11:28:14 -0800
Branch: REL_17_STABLE [1587f7b9f] 2025-01-25 11:28:18 -0800
Branch: master [d28cd3e7b] 2025-01-25 11:28:14 -0800
Branch: REL_17_STABLE [f4af4515b] 2025-01-25 11:28:18 -0800
Branch: REL_16_STABLE [9311fcb86] 2025-01-25 11:28:18 -0800
Branch: REL_15_STABLE [dc02b98bd] 2025-01-25 11:28:19 -0800
Branch: REL_14_STABLE [25e99483c] 2025-01-25 11:28:19 -0800
Branch: REL_13_STABLE [8bfd2ceba] 2025-01-25 11:28:19 -0800
-->
     <para>
      Prevent possible catalog corruption when a system catalog is
      vacuumed concurrently with an update (Noah Misch)
      <ulink url="&commit_baseurl;25e99483c">&sect;</ulink>
     </para>
    </listitem>

    <listitem>
<!--
Author: Thomas Munro <tmunro@postgresql.org>
Branch: master [38c579b08] 2024-12-20 23:57:02 +1300
Branch: REL_17_STABLE [0350b876b] 2024-12-20 23:57:18 +1300
Branch: REL_16_STABLE [ba02d24ba] 2024-12-20 23:57:26 +1300
Branch: REL_15_STABLE [fb540b6aa] 2024-12-20 23:57:34 +1300
Branch: REL_14_STABLE [23c743b64] 2024-12-20 23:57:53 +1300
Branch: REL_13_STABLE [228091216] 2024-12-20 23:58:08 +1300
Branch: REL_17_STABLE [66aaabe7a] 2025-01-08 10:43:40 +1300
Branch: REL_16_STABLE [c957d7444] 2025-01-08 10:46:45 +1300
Branch: REL_15_STABLE [3181befdc] 2025-01-08 10:47:43 +1300
Branch: REL_14_STABLE [f154f028d] 2025-01-08 10:48:01 +1300
Branch: REL_13_STABLE [a1d17a894] 2025-01-08 10:48:57 +1300
Branch: REL_17_STABLE [45aef9f6b] 2025-01-08 17:02:30 +1300
Branch: REL_16_STABLE [9defaaa1d] 2025-01-08 17:03:25 +1300
Branch: REL_15_STABLE [190054e61] 2025-01-08 17:03:45 +1300
Branch: REL_14_STABLE [049c8cb9a] 2025-01-08 17:04:26 +1300
Branch: REL_13_STABLE [417d41c65] 2025-01-08 17:14:15 +1300
-->
     <para>
      Fix data corruption when relation truncation fails (Thomas Munro)
      <ulink url="&commit_baseurl;23c743b64">&sect;</ulink>
      <ulink url="&commit_baseurl;f154f028d">&sect;</ulink>
      <ulink url="&commit_baseurl;049c8cb9a">&sect;</ulink>
     </para>

     <para>
      The filesystem calls needed to perform relation truncation could
      fail, leaving inconsistent state on disk (for example, effectively
      reviving deleted data).  We can't really prevent that, but we can
      recover by dint of making such failures into PANICs, so that
      consistency is restored by replaying from WAL up to just before the
      attempted truncation.  This isn't a hugely desirable behavior, but
      such failures are rare enough that it seems an acceptable solution.
     </para>
    </listitem>

    <listitem>
<!--
Author: Thomas Munro <tmunro@postgresql.org>
Branch: master [75818b3af] 2024-12-03 10:12:05 +1300
Branch: REL_17_STABLE [d4ffbf47b] 2024-12-03 10:19:47 +1300
Branch: REL_16_STABLE [ad5aa7bfd] 2024-12-03 10:20:10 +1300
Branch: REL_15_STABLE [a501fe5a9] 2024-12-03 10:20:22 +1300
Branch: REL_14_STABLE [7d0b91a28] 2024-12-03 10:12:56 +1300
Branch: REL_13_STABLE [1168acbca] 2024-12-03 10:13:49 +1300
-->
     <para>
      Prevent checkpoints from starting during relation truncation
      (Robert Haas)
      <ulink url="&commit_baseurl;7d0b91a28">&sect;</ulink>
     </para>

     <para>
      This avoids a race condition wherein the modified file might not get
      fsync'd before completing the checkpoint, creating a risk of data
      corruption if the operating system crashes soon after.
     </para>
    </listitem>

    <listitem>
<!--
Author: Michael Paquier <michael@paquier.xyz>
Branch: master Release: REL_16_BR [dac1ff309] 2022-07-05 10:16:12 +0900
Branch: REL_15_STABLE [c1c9df315] 2024-12-20 09:11:03 +0900
Branch: REL_14_STABLE [1f95181b4] 2024-12-20 09:11:08 +0900
Branch: REL_13_STABLE [26a79cbbd] 2024-12-20 09:11:11 +0900
-->
     <para>
      Use <function>rename()</function>
      not <function>link()</function>/<function>unlink()</function> to
      rename files (Nathan Bossart)
      <ulink url="&commit_baseurl;1f95181b4">&sect;</ulink>
     </para>

     <para>
      The previous coding was intended to assure that the operation could
      not accidentally overwrite an existing file.  However a failure
      could leave two links to the same file in existence, confusing
      subsequent operations and creating a risk of data corruption.
      In practice we do not use this functionality in places where the
      target filename could already exist, so it seems better to give up
      the no-overwrite guarantee to remove the multiple-link hazard.
     </para>
    </listitem>

    <listitem>
<!--
Author: Noah Misch <noah@leadboat.com>
Branch: master [ff90ee614] 2024-12-28 07:16:22 -0800
Branch: REL_17_STABLE [fa6131377] 2024-12-28 07:16:26 -0800
Branch: REL_16_STABLE [5d94aa4dc] 2024-12-28 07:16:26 -0800
Branch: REL_15_STABLE [83bb52375] 2024-12-28 07:16:26 -0800
Branch: REL_14_STABLE [536acda0b] 2024-12-28 07:16:27 -0800
Branch: REL_13_STABLE [102546322] 2024-12-28 07:16:27 -0800
-->
     <para>
      Avoid possibly losing an update of
      <structname>pg_database</structname>.<structfield>datfrozenxid</structfield>
      when <command>VACUUM</command> runs concurrently with
      a <command>REASSIGN OWNED</command> that changes that database's
      owner (Kirill Reshke)
      <ulink url="&commit_baseurl;536acda0b">&sect;</ulink>
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [ea68ea632] 2025-01-22 11:58:20 -0500
Branch: REL_17_STABLE [2b72fed2d] 2025-01-22 11:58:20 -0500
Branch: REL_16_STABLE [8c57f5485] 2025-01-22 11:58:20 -0500
Branch: REL_15_STABLE [cdeed4de7] 2025-01-22 11:58:20 -0500
Branch: REL_14_STABLE [308599305] 2025-01-22 11:58:20 -0500
Branch: REL_13_STABLE [001c09d8b] 2025-01-22 11:58:20 -0500
-->
     <para>
      Fix incorrect <structfield>tg_updatedcols</structfield> values
      passed to <literal>AFTER UPDATE</literal> triggers (Tom Lane)
      <ulink url="&commit_baseurl;308599305">&sect;</ulink>
     </para>

     <para>
      In some cases the <structfield>tg_updatedcols</structfield> bitmap
      could describe the set of columns updated by an earlier command in
      the same transaction, fooling the trigger into doing the wrong
      thing.
     </para>

     <para>
      Also, prevent memory bloat caused by making too many copies of
      the <structfield>tg_updatedcols</structfield> bitmap.
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [3220ceaf7] 2024-12-07 13:12:32 -0500
Branch: REL_17_STABLE [765f76d8c] 2024-12-07 13:12:32 -0500
Branch: REL_16_STABLE [26c233b8b] 2024-12-07 13:12:32 -0500
Branch: REL_15_STABLE [d2f59497a] 2024-12-07 13:12:32 -0500
Branch: REL_14_STABLE [5882a4ba0] 2024-12-07 13:12:32 -0500
Branch: REL_13_STABLE [f2eba400b] 2024-12-07 13:12:32 -0500
-->
     <para>
      Fix mis-processing of <function>to_timestamp</function>'s
      <literal>FF<replaceable>n</replaceable></literal> format codes
      (Tom Lane)
      <ulink url="&commit_baseurl;5882a4ba0">&sect;</ulink>
     </para>

     <para>
      An integer format code immediately
      preceding <literal>FF<replaceable>n</replaceable></literal> would
      consume all available digits, leaving none
      for <literal>FF<replaceable>n</replaceable></literal>.
     </para>
    </listitem>

    <listitem>
<!--
Author: Dean Rasheed <dean.a.rasheed@gmail.com>
Branch: master [d673eefd4] 2025-01-12 12:54:32 +0000
Branch: REL_17_STABLE [61b12135f] 2025-01-12 12:56:52 +0000
Branch: REL_16_STABLE [77763f3be] 2025-01-12 12:58:14 +0000
Branch: REL_15_STABLE [7c0379516] 2025-01-12 12:59:40 +0000
Branch: REL_14_STABLE [dc8cd9cd0] 2025-01-12 13:01:22 +0000
Branch: REL_13_STABLE [8f137f038] 2025-01-12 13:02:56 +0000
-->
     <para>
      When deparsing an <literal>XMLTABLE()</literal> expression, ensure
      that XML namespace names are double-quoted when necessary (Dean
      Rasheed)
      <ulink url="&commit_baseurl;dc8cd9cd0">&sect;</ulink>
     </para>
    </listitem>

    <listitem>
<!--
Author: Daniel Gustafsson <dgustafsson@postgresql.org>
Branch: master [27a1f8d10] 2025-01-10 22:02:58 +0100
Branch: REL_17_STABLE [8ed9bf0a3] 2025-01-10 22:02:58 +0100
Branch: REL_16_STABLE [c35bbdfbc] 2025-01-10 22:02:58 +0100
Branch: REL_15_STABLE [830215a4c] 2025-01-10 22:02:58 +0100
Branch: REL_14_STABLE [83ffb9f20] 2025-01-10 22:02:58 +0100
Branch: REL_13_STABLE [84b8f6d9f] 2025-01-10 22:02:58 +0100
Branch: master [97698cc51] 2025-01-12 23:44:39 +0100
Branch: REL_17_STABLE [dc24c9ad5] 2025-01-12 23:44:39 +0100
Branch: REL_16_STABLE [116036d81] 2025-01-12 23:44:39 +0100
Branch: REL_15_STABLE [9ad7a32b2] 2025-01-12 23:44:39 +0100
Branch: REL_14_STABLE [9e596a099] 2025-01-12 23:44:39 +0100
Branch: REL_13_STABLE [7b1f50d8c] 2025-01-12 23:44:39 +0100
-->
     <para>
      Include the <literal>ldapscheme</literal> option
      in <function>pg_hba_file_rules()</function> output (Laurenz Albe)
      <ulink url="&commit_baseurl;83ffb9f20">&sect;</ulink>
      <ulink url="&commit_baseurl;9e596a099">&sect;</ulink>
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [a43d7a8c7] 2024-11-19 18:26:19 -0500
Branch: REL_17_STABLE [c1ebef3c1] 2024-11-19 18:26:19 -0500
Branch: REL_16_STABLE [f286f64bc] 2024-11-19 18:26:19 -0500
Branch: REL_15_STABLE [fd3383ff1] 2024-11-19 18:26:19 -0500
Branch: REL_14_STABLE [44a4a521d] 2024-11-19 18:26:19 -0500
Branch: REL_13_STABLE [6b66dba3f] 2024-11-19 18:26:19 -0500
-->
     <para>
      Don't merge <literal>UNION</literal> operations if their column
      collations aren't consistent (Tom Lane)
      <ulink url="&commit_baseurl;44a4a521d">&sect;</ulink>
     </para>

     <para>
      Previously we ignored collations when deciding if it's safe to
      merge <literal>UNION</literal> steps into a single
      N-way <literal>UNION</literal> operation.  This was arguably valid
      before the introduction of nondeterministic collations, but it's not
      anymore, since the collation in use can affect the definition of
      uniqueness.
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [bf826ea06] 2025-01-16 20:40:07 -0500
Branch: REL_17_STABLE [0671a71e0] 2025-01-16 20:40:07 -0500
Branch: REL_16_STABLE [94c02bd33] 2025-01-16 20:40:07 -0500
Branch: REL_15_STABLE [724ebebb1] 2025-01-16 20:40:07 -0500
Branch: REL_14_STABLE [5f725648f] 2025-01-16 20:40:07 -0500
Branch: REL_13_STABLE [45004f527] 2025-01-16 20:40:07 -0500
-->
     <para>
      Fix missed expression processing for partition pruning steps
      (Tom Lane)
      <ulink url="&commit_baseurl;5f725648f">&sect;</ulink>
     </para>

     <para>
      This oversight could lead to <quote>unrecognized node type</quote>
      errors, and perhaps other problems, in queries accessing partitioned
      tables.
     </para>
    </listitem>

    <listitem>
<!--
Author: Nathan Bossart <nathan@postgresql.org>
Branch: master [84f1b0b03] 2024-12-17 15:24:45 -0600
Branch: REL_17_STABLE [18452b70a] 2024-12-17 15:24:45 -0600
Branch: REL_16_STABLE [2a7402322] 2024-12-17 15:24:45 -0600
Branch: REL_15_STABLE [9f7b7d516] 2024-12-17 15:24:45 -0600
Branch: REL_14_STABLE [84dc1303c] 2024-12-17 15:24:45 -0600
Branch: REL_13_STABLE [853cef097] 2024-12-17 15:24:45 -0600
-->
     <para>
      Allow dshash tables to grow past 1GB (Matthias van de Meent)
      <ulink url="&commit_baseurl;84dc1303c">&sect;</ulink>
     </para>

     <para>
      This avoids errors like <quote>invalid DSA memory alloc request
      size</quote>.  The case can occur for example in transactions that
      process several million tables.
     </para>
    </listitem>

    <listitem>
<!--
Author: Michael Paquier <michael@paquier.xyz>
Branch: master [720e52984] 2025-01-14 15:12:56 +0900
Branch: REL_17_STABLE [e027ee990] 2025-01-14 15:13:14 +0900
Branch: REL_16_STABLE [bfda7d8dd] 2025-01-14 15:13:15 +0900
Branch: REL_15_STABLE [9e9f30139] 2025-01-14 15:13:17 +0900
Branch: REL_14_STABLE [e35ff6520] 2025-01-14 15:13:19 +0900
Branch: REL_13_STABLE [332023e2d] 2025-01-14 15:13:20 +0900
-->
     <para>
      Avoid possible integer overflow
      in <function>bringetbitmap()</function> (James Hunter, Evgeniy
      Gorbanyov)
      <ulink url="&commit_baseurl;e35ff6520">&sect;</ulink>
     </para>

     <para>
      Since the result is only used for statistical purposes, the effects
      of this error were mostly cosmetic.
     </para>
    </listitem>

    <listitem>
<!--
Author: Michael Paquier <michael@paquier.xyz>
Branch: master [6cf1647d8] 2025-01-20 09:29:42 +0900
Branch: REL_17_STABLE [e6767c0ed] 2025-01-20 09:30:33 +0900
Branch: REL_16_STABLE [2c2e1d4f4] 2025-01-20 09:30:36 +0900
Branch: REL_15_STABLE [26554facc] 2025-01-20 09:30:37 +0900
Branch: REL_14_STABLE [a2d4f806c] 2025-01-20 09:30:39 +0900
Branch: REL_13_STABLE [0f0431e91] 2025-01-20 09:30:40 +0900
-->
     <para>
      Prevent streaming standby servers from looping infinitely when
      reading a WAL record that crosses pages (Kyotaro Horiguchi,
      Alexander Kukushkin)
      <ulink url="&commit_baseurl;a2d4f806c">&sect;</ulink>
     </para>

     <para>
      This would happen when the record's continuation is on a page that
      needs to be read from a different WAL source.
     </para>
    </listitem>

    <listitem>
<!--
Author: Álvaro Herrera <alvherre@alvh.no-ip.org>
Branch: REL_14_STABLE [4abf615cc] 2024-12-12 16:21:18 +0100
-->
     <para>
      Improve performance of archiver process with many status files
      (Nathan Bossart)
      <ulink url="&commit_baseurl;4abf615cc">&sect;</ulink>
     </para>

     <para>
      This change back-patches a fix originally made in v15, in response
      to reports of extremely poor archiving performance leading to
      downtime or loss of replicas.
     </para>
    </listitem>

    <listitem>
<!--
Author: Noah Misch <noah@leadboat.com>
Branch: master [8b9cbf492] 2024-12-10 13:51:59 -0800
Branch: REL_17_STABLE [4bd9de3f4] 2024-12-10 13:52:02 -0800
Branch: REL_16_STABLE [ac4a2b403] 2024-12-10 13:52:02 -0800
Branch: REL_15_STABLE [839da50bd] 2024-12-10 13:52:02 -0800
Branch: REL_14_STABLE [315264d70] 2024-12-10 13:52:02 -0800
Branch: REL_13_STABLE [6151769f6] 2024-12-10 13:52:02 -0800
-->
     <para>
      Fix unintended promotion of FATAL errors to PANIC during early
      process startup (Noah Misch)
      <ulink url="&commit_baseurl;315264d70">&sect;</ulink>
     </para>

     <para>
      This fixes some unlikely cases that would result in <quote>PANIC:
      proc_exit() called in child process</quote>.
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [3f9b96217] 2024-12-07 15:56:28 -0500
Branch: REL_17_STABLE [ec7b89cc5] 2024-12-07 15:56:28 -0500
Branch: REL_16_STABLE [be5db08ed] 2024-12-07 15:56:28 -0500
Branch: REL_15_STABLE [0e4fa06ba] 2024-12-07 15:56:28 -0500
Branch: REL_14_STABLE [1a34cf0f4] 2024-12-07 15:56:28 -0500
Branch: REL_13_STABLE [725d98102] 2024-12-07 15:56:28 -0500
Branch: master [c82003760] 2024-12-07 14:28:16 -0500
Branch: REL_17_STABLE [5b44a317a] 2024-12-07 14:28:16 -0500
Branch: REL_16_STABLE [faad01835] 2024-12-07 14:28:16 -0500
Branch: REL_15_STABLE [d40191467] 2024-12-07 14:28:16 -0500
Branch: REL_14_STABLE [d9d5e1b48] 2024-12-07 14:28:16 -0500
Branch: REL_13_STABLE [531cbd8b7] 2024-12-07 14:28:16 -0500
-->
     <para>
      Fix cases where an operator family member operator or support
      procedure could become a dangling reference (Tom Lane)
      <ulink url="&commit_baseurl;1a34cf0f4">&sect;</ulink>
      <ulink url="&commit_baseurl;d9d5e1b48">&sect;</ulink>
     </para>

     <para>
      In some cases a data type could be dropped while references to its
      OID still remain in <structname>pg_amop</structname>
      or <structname>pg_amproc</structname>.  While that caused no
      immediate issues, an attempt to drop the owning operator family
      would fail, and <application>pg_dump</application> would produce
      bogus output when dumping the operator family.  This fix causes
      creation and modification of operator families/classes to add
      needed dependency entries so that dropping a data type will also
      drop any dependent operator family elements.  That does not help
      vulnerable pre-existing operator families, though, so a band-aid has
      also been added to <command>DROP OPERATOR FAMILY</command> to
      prevent failure when dropping a family that has dangling members.
     </para>
    </listitem>

    <listitem>
<!--
Author: Michael Paquier <michael@paquier.xyz>
Branch: master [c9b3d4909] 2024-12-30 13:33:09 +0900
Branch: REL_17_STABLE [836435424] 2024-12-30 13:33:58 +0900
Branch: REL_16_STABLE [e3a27fd06] 2024-12-30 13:33:59 +0900
Branch: REL_15_STABLE [da8bd5d42] 2024-12-30 13:34:01 +0900
Branch: REL_14_STABLE [c53d90bb4] 2025-01-08 08:47:19 +0900
Branch: REL_13_STABLE [a786cf04d] 2025-01-08 08:47:24 +0900
Author: Michael Paquier <michael@paquier.xyz>
Branch: REL_17_STABLE [bbe68c13a] 2024-12-23 12:48:06 +0900
Branch: REL_16_STABLE [4d45e7490] 2024-12-23 12:48:08 +0900
Branch: REL_15_STABLE [6c9b39754] 2024-12-23 12:48:09 +0900
Branch: REL_14_STABLE [cfd6cbcf9] 2024-12-23 12:48:10 +0900
Branch: REL_13_STABLE [ba230ce40] 2024-12-23 12:48:12 +0900
Author: Michael Paquier <michael@paquier.xyz>
Branch: master [ea792bfd9] 2024-11-21 15:14:02 +0900
Branch: REL_17_STABLE [afe9b0d9f] 2024-11-21 15:14:11 +0900
Branch: REL_16_STABLE [e749eaf46] 2024-11-21 15:14:13 +0900
Branch: REL_15_STABLE [6fc30c24c] 2024-11-21 15:14:15 +0900
-->
     <para>
      Fix multiple memory leaks in logical decoding output (Vignesh C,
      Masahiko Sawada, Boyu Yang)
      <ulink url="&commit_baseurl;c53d90bb4">&sect;</ulink>
      <ulink url="&commit_baseurl;cfd6cbcf9">&sect;</ulink>
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: REL_15_STABLE [4398507df] 2024-12-05 12:54:41 -0500
Branch: REL_14_STABLE [d24eb0e91] 2024-12-05 12:54:41 -0500
Branch: REL_13_STABLE [cd1c8b992] 2024-12-05 12:54:41 -0500
-->
     <para>
      Avoid low-probability crash on out-of-memory, due to missing check
      for failure return from <function>malloc()</function>
      (Karina Litskevich)
      <ulink url="&commit_baseurl;d24eb0e91">&sect;</ulink>
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [b9aa4166f] 2025-01-30 15:36:44 -0500
Branch: REL_17_STABLE [1e25cdb21] 2025-01-30 15:36:07 -0500
Branch: REL_16_STABLE [f7a08b6e9] 2025-01-30 15:36:07 -0500
Branch: REL_15_STABLE [b296e55b4] 2025-01-30 15:36:07 -0500
Branch: REL_14_STABLE [6a33bb35c] 2025-01-30 15:36:07 -0500
Branch: REL_13_STABLE [49a38238e] 2025-01-30 15:36:07 -0500
-->
     <para>
      Avoid integer overflow while
      testing <varname>wal_skip_threshold</varname> condition (Tom Lane)
      <ulink url="&commit_baseurl;6a33bb35c">&sect;</ulink>
     </para>

     <para>
      A transaction that created a very large relation could mistakenly
      decide to ensure durability by copying the relation into WAL instead
      of fsync'ing it, thereby negating the point
      of <varname>wal_skip_threshold</varname>.  (This only matters
      when <varname>wal_level</varname> is set
      to <literal>minimal</literal>, else a WAL copy is required anyway.)
     </para>
    </listitem>

    <listitem>
<!--
Author: Noah Misch <noah@leadboat.com>
Branch: master [4ba84de45] 2024-11-25 14:42:35 -0800
Branch: REL_17_STABLE [718af10da] 2024-11-25 14:42:38 -0800
Branch: REL_16_STABLE [c1285bbeb] 2024-11-25 14:42:39 -0800
Branch: REL_15_STABLE [941e0c0df] 2024-11-25 14:42:39 -0800
Branch: REL_14_STABLE [2690a4f5d] 2024-11-25 14:42:40 -0800
Branch: REL_13_STABLE [01745fb04] 2024-11-25 14:42:40 -0800
-->
     <para>
      Fix unsafe order of operations during cache lookups (Noah Misch)
      <ulink url="&commit_baseurl;2690a4f5d">&sect;</ulink>
     </para>

     <para>
      The only known consequence was a usually-harmless <quote>you don't
      own a lock of type ExclusiveLock</quote> warning
      during <command>GRANT TABLESPACE</command>.
     </para>
    </listitem>

    <listitem>
<!--
Author: Thomas Munro <tmunro@postgresql.org>
Branch: master [78c09bd9f] 2024-11-22 15:29:47 +1300
Branch: REL_17_STABLE [8a9a51518] 2024-11-22 15:29:28 +1300
Branch: REL_16_STABLE [6de14dbb3] 2024-11-22 15:29:18 +1300
Branch: REL_15_STABLE [15ab513fe] 2024-11-22 15:29:00 +1300
Branch: REL_14_STABLE [7ca388fd0] 2024-11-22 15:30:37 +1300
Branch: REL_13_STABLE [8aefd8b6f] 2024-11-22 15:32:02 +1300
-->
     <para>
      Fix possible <quote>failed to resolve name</quote> failures when
      using JIT on older ARM platforms (Thomas Munro)
      <ulink url="&commit_baseurl;7ca388fd0">&sect;</ulink>
     </para>

     <para>
      This could occur as a consequence of inconsistency about the default
      setting of <option>-moutline-atomics</option> between gcc and clang.
      At least Debian and Ubuntu are known to ship gcc and clang compilers
      that target armv8-a but differ on the use of outline atomics by
      default.
     </para>
    </listitem>

    <listitem>
<!--
Author: Thomas Munro <tmunro@postgresql.org>
Branch: REL_15_STABLE [9b136b0f2] 2025-01-18 09:31:39 -0500
Branch: REL_14_STABLE [f4fd5325c] 2025-01-18 09:33:30 -0500
Branch: REL_13_STABLE [2c4a532c9] 2025-01-18 09:33:49 -0500
Branch: REL_15_STABLE [e708f3188] 2025-01-18 09:30:10 -0500
Branch: REL_14_STABLE [9f1c67488] 2025-01-18 09:33:16 -0500
Branch: REL_13_STABLE [fbf8efbda] 2025-01-18 09:33:43 -0500
-->
     <para>
      Fix handling of Windows junction points that are not
      of <productname>PostgreSQL</productname> origin (Thomas Munro)
      <ulink url="&commit_baseurl;f4fd5325c">&sect;</ulink>
      <ulink url="&commit_baseurl;9f1c67488">&sect;</ulink>
     </para>

     <para>
      Previously, <application>initdb</application> would fail if the path
      to the data directory included junction points whose expansion isn't
      in <quote>drive absolute</quote> format, or whose expansion points
      to another junction point.
     </para>
    </listitem>

    <listitem>
<!--
Author: David Rowley <drowley@postgresql.org>
Branch: master [8f4ee9626] 2024-12-19 13:11:39 +1300
Branch: REL_17_STABLE [7b8d45d27] 2024-12-19 13:12:18 +1300
Branch: REL_16_STABLE [093fc156b] 2024-12-19 13:12:41 +1300
Branch: REL_15_STABLE [ef178d38b] 2024-12-19 13:13:01 +1300
Branch: REL_14_STABLE [bdb07d241] 2024-12-19 13:13:31 +1300
Branch: REL_13_STABLE [2c7887c9d] 2024-12-19 13:13:51 +1300
-->
     <para>
      Fix assertion failure in <literal>WITH RECURSIVE ... UNION</literal>
      queries (David Rowley)
      <ulink url="&commit_baseurl;bdb07d241">&sect;</ulink>
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [94131cd53] 2024-11-20 12:03:47 -0500
Branch: REL_17_STABLE [fea81aee8] 2024-11-20 12:03:47 -0500
Branch: REL_16_STABLE [fe084039e] 2024-11-20 12:03:47 -0500
Branch: REL_15_STABLE [9b9689e26] 2024-11-20 12:03:47 -0500
Branch: REL_14_STABLE [3eb26524c] 2024-11-20 12:03:47 -0500
Branch: REL_13_STABLE [630520c22] 2024-11-20 12:03:47 -0500
-->
     <para>
      Avoid assertion failure in rule deparsing if a set operation leaf
      query contains set operations (Man Zeng, Tom Lane)
      <ulink url="&commit_baseurl;3eb26524c">&sect;</ulink>
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [3eea7a0c9] 2024-12-09 14:38:19 -0500
Branch: REL_17_STABLE [556f7b7bc] 2024-12-09 14:38:19 -0500
Branch: REL_16_STABLE [bb649b553] 2024-12-09 14:38:19 -0500
Branch: REL_15_STABLE [4089b9bd6] 2024-12-09 14:38:19 -0500
Branch: REL_14_STABLE [8a95ad3b2] 2024-12-09 14:38:19 -0500
Branch: REL_13_STABLE [4d20bad5e] 2024-12-09 14:38:19 -0500
-->
     <para>
      Avoid edge-case assertion failure in parallel query startup (Tom Lane)
      <ulink url="&commit_baseurl;8a95ad3b2">&sect;</ulink>
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [5b8728cd7] 2024-11-25 18:09:09 -0500
Branch: REL_17_STABLE [97be02ad0] 2024-11-25 18:09:10 -0500
Branch: REL_16_STABLE [4aba56adc] 2024-11-25 18:09:10 -0500
Branch: REL_15_STABLE [80cd33bad] 2024-11-25 18:09:10 -0500
Branch: REL_14_STABLE [a1168855e] 2024-11-25 18:09:10 -0500
Branch: REL_13_STABLE [48a6cd1ae] 2024-11-25 18:09:11 -0500
-->
     <para>
      In <function>NULLIF()</function>, avoid passing a read-write
      expanded object pointer to the data type's equality function
      (Tom Lane)
      <ulink url="&commit_baseurl;a1168855e">&sect;</ulink>
     </para>

     <para>
      The equality function could modify or delete the object if it's
      given a read-write pointer, which would be bad if we decide to
      return it as the <function>NULLIF()</function> result.  There is
      probably no problem with any built-in equality function, but it's
      easy to demonstrate a failure with one coded in PL/pgSQL.
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [0da39aa76] 2025-01-29 15:31:55 -0500
Branch: REL_17_STABLE [6e41e9e5e] 2025-01-29 15:31:55 -0500
Branch: REL_16_STABLE [6655d931c] 2025-01-29 15:31:55 -0500
Branch: REL_15_STABLE [bb85d0935] 2025-01-29 15:31:55 -0500
Branch: REL_14_STABLE [c05268e6e] 2025-01-29 15:31:55 -0500
-->
     <para>
      Ensure that expression preprocessing is applied to a default null
      value in <command>INSERT</command> (Tom Lane)
      <ulink url="&commit_baseurl;c05268e6e">&sect;</ulink>
     </para>

     <para>
      If the target column is of a domain type, the planner must insert a
      coerce-to-domain step not just a null constant, and this expression
      missed going through some required processing steps.  There is no
      known consequence with domains based on core data types, but in
      theory an error could occur with domains based on extension types.
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [29dfffae0] 2025-01-11 11:45:56 -0500
Branch: REL_17_STABLE [e98df02df] 2025-01-11 11:45:56 -0500
Branch: REL_16_STABLE [33a4e656d] 2025-01-11 11:45:56 -0500
Branch: REL_15_STABLE [71bb9c4b2] 2025-01-11 11:45:56 -0500
Branch: REL_14_STABLE [bcb4db0d3] 2025-01-11 11:45:56 -0500
Branch: REL_13_STABLE [02a38bc84] 2025-01-11 11:45:56 -0500
-->
     <para>
      Repair memory leaks in PL/Python (Mat Arye, Tom Lane)
      <ulink url="&commit_baseurl;bcb4db0d3">&sect;</ulink>
     </para>

     <para>
      Repeated use of <function>PLyPlan.execute</function>
      or <function>plpy.cursor</function> resulted in memory leakage for
      the duration of the calling PL/Python function.
     </para>
    </listitem>

    <listitem>
<!--
Author: Peter Eisentraut <peter@eisentraut.org>
Branch: master [32a2aa77e] 2024-11-25 11:44:29 +0100
Branch: REL_17_STABLE [f979197eb] 2024-11-25 12:27:10 +0100
Branch: REL_16_STABLE [07c77803c] 2024-11-25 12:27:19 +0100
Branch: REL_15_STABLE [a5f9cbde9] 2024-11-25 12:27:26 +0100
Branch: REL_14_STABLE [17d081a6f] 2024-11-25 13:11:18 +0100
Branch: REL_13_STABLE [f230e27a2] 2024-11-25 13:11:49 +0100
-->
     <para>
      Fix PL/Tcl to compile with Tcl 9 (Peter Eisentraut)
      <ulink url="&commit_baseurl;17d081a6f">&sect;</ulink>
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [2f696453d] 2024-12-01 14:15:37 -0500
Branch: REL_17_STABLE [a963abd54] 2024-12-01 14:15:37 -0500
Branch: REL_16_STABLE [cca34f68c] 2024-12-01 14:15:37 -0500
Branch: REL_15_STABLE [60b47525c] 2024-12-01 14:15:37 -0500
Branch: REL_14_STABLE [52c7a44e9] 2024-12-01 14:15:37 -0500
Branch: REL_13_STABLE [e359cbb84] 2024-12-01 14:15:37 -0500
-->
     <para>
      In the <application>ecpg</application> preprocessor, fix possible
      misprocessing of cursors that reference out-of-scope variables
      (Tom Lane)
      <ulink url="&commit_baseurl;52c7a44e9">&sect;</ulink>
     </para>
    </listitem>

    <listitem>
<!--
Author: Fujii Masao <fujii@postgresql.org>
Branch: master [94b914f60] 2025-01-15 01:23:02 +0900
Branch: REL_17_STABLE [ba2dbedd5] 2025-01-15 01:24:24 +0900
Branch: REL_16_STABLE [5c7c34db2] 2025-01-15 01:25:05 +0900
Branch: REL_15_STABLE [71ef47cf0] 2025-01-15 01:25:19 +0900
Branch: REL_14_STABLE [d06ab3c0c] 2025-01-15 01:25:31 +0900
Branch: REL_13_STABLE [226c9048d] 2025-01-15 01:25:52 +0900
-->
     <para>
      In <application>ecpg</application>, fix compile-time warnings about
      unsupported use of <literal>COPY ... FROM STDIN</literal> (Ryo
      Kanbayashi)
      <ulink url="&commit_baseurl;d06ab3c0c">&sect;</ulink>
     </para>

     <para>
      Previously, the intended warning was not issued due to a typo.
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [6cddecdfb] 2025-01-29 14:24:36 -0500
Branch: REL_17_STABLE [0b713b94b] 2025-01-29 14:24:36 -0500
Branch: REL_16_STABLE [998c4fc7c] 2025-01-29 14:24:36 -0500
Branch: REL_15_STABLE [b17e3970c] 2025-01-29 14:24:36 -0500
Branch: REL_14_STABLE [54f9afea7] 2025-01-29 14:24:36 -0500
Branch: REL_13_STABLE [98df8bace] 2025-01-29 14:24:36 -0500
-->
     <para>
      Fix <application>psql</application> to safely handle file path names
      that are encoded in SJIS (Tom Lane)
      <ulink url="&commit_baseurl;54f9afea7">&sect;</ulink>
     </para>

     <para>
      Some two-byte characters in SJIS have a second byte that is equal to
      ASCII backslash (<literal>\</literal>).  These characters were
      corrupted by path name normalization, preventing access to files
      whose names include such characters.
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [9a45a89c3] 2025-01-14 18:50:24 -0500
Branch: REL_17_STABLE [a0dfeae0d] 2025-01-14 18:50:24 -0500
Branch: REL_16_STABLE [b935691b8] 2025-01-14 18:50:24 -0500
Branch: REL_15_STABLE [a3b709cf7] 2025-01-14 18:50:24 -0500
Branch: REL_14_STABLE [02e69313a] 2025-01-14 18:50:24 -0500
Branch: REL_13_STABLE [cfd7aadeb] 2025-01-14 18:50:24 -0500
-->
     <para>
      Fix use of wrong version of <function>pqsignal()</function>
      in <application>pgbench</application>
      and <application>psql</application> (Fujii Masao, Tom Lane)
      <ulink url="&commit_baseurl;02e69313a">&sect;</ulink>
     </para>

     <para>
      This error could lead to misbehavior when using
      the <option>-T</option> option in <application>pgbench</application>
      or the <command>\watch</command> command
      in <application>psql</application>, due to interrupted system calls
      not being resumed as expected.
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [530f89e64] 2024-12-15 14:14:14 -0500
Branch: REL_17_STABLE [ff9dc96f3] 2024-12-15 14:14:15 -0500
Branch: REL_16_STABLE [076b09123] 2024-12-15 14:14:15 -0500
Branch: REL_15_STABLE [ff88db910] 2024-12-15 14:14:15 -0500
Branch: REL_14_STABLE [2a23dbcf3] 2024-12-15 14:14:15 -0500
Branch: REL_13_STABLE [ec0dc2c59] 2024-12-15 14:14:15 -0500
-->
     <para>
      Fix misexecution of some nested <command>\if</command> constructs
      in <application>pgbench</application> (Michail Nikolaev)
      <ulink url="&commit_baseurl;2a23dbcf3">&sect;</ulink>
     </para>

     <para>
      An <command>\if</command> command appearing within a false
      (not-being-executed) <command>\if</command> branch was incorrectly
      treated the same as <command>\elif</command>.
     </para>
    </listitem>

    <listitem>
<!--
Author: Fujii Masao <fujii@postgresql.org>
Branch: master [af35fe501] 2024-11-27 23:01:53 +0900
Branch: REL_17_STABLE [adb103fca] 2024-11-27 23:03:04 +0900
Branch: REL_16_STABLE [1cf646957] 2024-11-27 23:03:44 +0900
Branch: REL_15_STABLE [1e46f7351] 2024-11-27 23:04:29 +0900
Branch: REL_14_STABLE [0f13e1a78] 2024-11-27 23:04:55 +0900
Branch: REL_13_STABLE [f1cb5e51f] 2024-11-27 23:05:24 +0900
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [fb056564e] 2025-02-07 13:41:42 -0500
Branch: REL_17_STABLE [e35d396ec] 2025-02-07 13:41:42 -0500
Branch: REL_16_STABLE [21b815f92] 2025-02-07 13:41:42 -0500
Branch: REL_15_STABLE [499d1cf55] 2025-02-07 13:41:43 -0500
Branch: REL_14_STABLE [5addea71c] 2025-02-07 13:41:43 -0500
Branch: REL_13_STABLE [b6decfc1d] 2025-02-07 13:41:43 -0500
-->
     <para>
      In <application>pgbench</application>, fix possible misdisplay of
      progress messages during table initialization (Yushi Ogiwara, Tatsuo
      Ishii, Fujii Masao)
      <ulink url="&commit_baseurl;0f13e1a78">&sect;</ulink>
      <ulink url="&commit_baseurl;5addea71c">&sect;</ulink>
     </para>
    </listitem>

    <listitem>
<!--
Author: Alexander Korotkov <akorotkov@postgresql.org>
Branch: master [ff1975ddd] 2025-02-05 00:45:49 +0200
Branch: REL_17_STABLE [1b8a9533f] 2025-02-05 00:45:43 +0200
Branch: REL_16_STABLE [d54d5668b] 2025-02-05 00:45:37 +0200
Branch: REL_15_STABLE [f1e0b078b] 2025-02-05 00:45:29 +0200
Branch: REL_14_STABLE [f2205448b] 2025-02-05 00:45:16 +0200
Branch: REL_13_STABLE [c24311c1f] 2025-02-05 00:46:06 +0200
-->
     <para>
      Make <application>pg_controldata</application> more robust against
      corrupted <filename>pg_control</filename> files (Ilyasov Ian, Anton
      Voloshin)
      <ulink url="&commit_baseurl;f2205448b">&sect;</ulink>
     </para>

     <para>
      Since <application>pg_controldata</application> will attempt to
      print the contents of <filename>pg_control</filename> even if the
      CRC check fails, it must take care not to misbehave for invalid
      field values.  This patch fixes some issues triggered by invalid
      timestamps and apparently-negative WAL segment sizes.
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [7b8cb9cd6] 2024-12-13 14:21:36 -0500
Branch: REL_17_STABLE [ad950ea98] 2024-12-13 14:21:36 -0500
Branch: REL_16_STABLE [782cc1aa3] 2024-12-13 14:21:36 -0500
Branch: REL_15_STABLE [6978129b4] 2024-12-13 14:21:36 -0500
Branch: REL_14_STABLE [c7f3c414f] 2024-12-13 14:21:36 -0500
Branch: REL_13_STABLE [b6df2d6e5] 2024-12-13 14:21:36 -0500
-->
     <para>
      Fix possible crash in <application>pg_dump</application> with
      identity sequences attached to tables that are extension members
      (Tom Lane)
      <ulink url="&commit_baseurl;c7f3c414f">&sect;</ulink>
     </para>
    </listitem>

    <listitem>
<!--
Author: Thomas Munro <tmunro@postgresql.org>
Branch: master [970b97eeb] 2025-01-09 16:04:23 +1300
Branch: REL_17_STABLE [faee3185a] 2025-01-09 16:05:01 +1300
Branch: REL_16_STABLE [be7489662] 2025-01-09 16:05:08 +1300
Branch: REL_15_STABLE [6b6901a26] 2025-01-09 16:05:16 +1300
Branch: REL_14_STABLE [8f40d4612] 2025-01-09 16:05:25 +1300
Branch: REL_13_STABLE [bd0564f61] 2025-01-09 16:05:36 +1300
Branch: master [026762dae] 2025-01-09 15:00:58 +1300
Branch: REL_17_STABLE [af109e339] 2025-01-09 15:00:23 +1300
Branch: REL_16_STABLE [0bff6f1da] 2025-01-09 14:59:47 +1300
Branch: REL_15_STABLE [70a7a3761] 2025-01-09 14:58:18 +1300
Branch: REL_14_STABLE [1636c5e56] 2025-01-09 14:57:52 +1300
Branch: REL_13_STABLE [d02486cc8] 2025-01-09 14:57:02 +1300
-->
     <para>
      Fix <application>pg_basebackup</application> to correctly
      handle <filename>pg_wal.tar</filename> files exceeding 2GB on
      Windows (Davinder Singh, Thomas Munro)
      <ulink url="&commit_baseurl;8f40d4612">&sect;</ulink>
      <ulink url="&commit_baseurl;1636c5e56">&sect;</ulink>
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [5980f1884] 2024-11-25 12:50:17 -0500
Branch: REL_17_STABLE [e266a0ed6] 2024-11-25 12:50:17 -0500
Branch: REL_16_STABLE [1f4aadec4] 2024-11-25 12:50:17 -0500
Branch: REL_15_STABLE [851c6ff18] 2024-11-25 12:50:17 -0500
Branch: REL_14_STABLE [2fc0199a5] 2024-11-25 12:50:17 -0500
Branch: REL_13_STABLE [32057a0f7] 2024-11-25 12:50:17 -0500
-->
     <para>
      Update configuration probes that determine the compiler switches
      needed to access ARM CRC instructions (Tom Lane)
      <ulink url="&commit_baseurl;2fc0199a5">&sect;</ulink>
     </para>

     <para>
      On ARM platforms where the baseline CPU target lacks CRC
      instructions, we need to supply a <option>-march</option> switch to
      persuade the compiler to compile such instructions.  Recent versions
      of gcc reject the value we were trying, leading to silently falling
      back to software CRC.
     </para>
    </listitem>

    <listitem>
<!--
Author: Thomas Munro <tmunro@postgresql.org>
Branch: REL_15_STABLE [f00c401c6] 2024-11-27 15:43:18 +1300
Branch: REL_14_STABLE [1fd57e5bb] 2024-11-27 15:48:13 +1300
Branch: REL_13_STABLE [59ea17c43] 2024-11-27 15:52:15 +1300
Branch: REL_12_STABLE [3f302f0ed] 2024-11-27 15:57:32 +1300
Branch: REL_11_STABLE [170e41603] 2024-11-27 16:04:22 +1300
Branch: REL_10_STABLE [f4e8f137b] 2024-11-27 16:47:29 +1300
Branch: REL9_6_STABLE [70cf253d1] 2024-11-27 16:13:59 +1300
Branch: REL9_5_STABLE [5b40ce749] 2024-11-27 16:17:20 +1300
Branch: REL9_4_STABLE [b1b8b8e6f] 2024-11-27 16:19:42 +1300
Branch: REL9_3_STABLE [102be6634] 2024-11-27 16:28:34 +1300
Branch: REL9_2_STABLE [0c7171b32] 2024-11-27 16:31:41 +1300
-->
     <para>
      During <application>configure</application>, if a C23 compiler is
      detected, try asking for C17 (Thomas Munro)
      <ulink url="&commit_baseurl;1fd57e5bb">&sect;</ulink>
     </para>

     <para>
      <productname>PostgreSQL</productname> versions before v16 will not
      compile under C23 rules.  If the chosen compiler defaults to C23 or
      later, try adding a <literal>-std=gnu17</literal> switch to change
      that.  (If this won't work for your compiler, manually
      specify <varname>CFLAGS</varname> with a suitable switch.)
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [60c513f8f] 2025-01-20 16:49:15 -0500
Branch: REL_17_STABLE [e292ba333] 2025-01-20 16:49:15 -0500
Branch: REL_16_STABLE [d62403c51] 2025-01-20 16:49:15 -0500
Branch: REL_15_STABLE [48bc95d0d] 2025-01-20 16:49:15 -0500
Branch: REL_14_STABLE [20b4819d0] 2025-01-20 16:49:15 -0500
Branch: REL_13_STABLE [6397819c8] 2025-01-20 16:49:15 -0500
-->
     <para>
      Update time zone data files to <application>tzdata</application>
      release 2025a for DST law changes in Paraguay, plus historical
      corrections for the Philippines (Tom Lane)
      <ulink url="&commit_baseurl;20b4819d0">&sect;</ulink>
     </para>
    </listitem>

   </itemizedlist>

  </sect2>
 </sect1>

 <sect1 id="release-14-15">
  <title>Release 14.15</title>

  <formalpara>
  <title>Release date:</title>
  <para>2024-11-21</para>
  </formalpara>

  <para>
   This release contains a few fixes from 14.14.
   For information about new features in major release 14, see
   <xref linkend="release-14"/>.
  </para>

  <sect2>
   <title>Migration to Version 14.15</title>

   <para>
    A dump/restore is not required for those running 14.X.
   </para>

   <para>
    However, if you are upgrading from a version earlier than 14.14,
    see <xref linkend="release-14-14"/>.
   </para>
  </sect2>

  <sect2>
   <title>Changes</title>

   <itemizedlist>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: REL_17_STABLE [6bfacd368] 2024-11-16 12:58:26 -0500
Branch: REL_16_STABLE [ee33d5847] 2024-11-16 12:58:26 -0500
Branch: REL_15_STABLE [17db248f3] 2024-11-16 12:58:26 -0500
Branch: REL_14_STABLE [099e711b7] 2024-11-16 12:58:26 -0500
-->
     <para>
      Repair ABI break for extensions that work with
      struct <structname>ResultRelInfo</structname> (Tom Lane)
      <ulink url="&commit_baseurl;099e711b7">&sect;</ulink>
     </para>

     <para>
      Last week's minor releases unintentionally broke binary
      compatibility with <application>timescaledb</application> and
      several other extensions.  Restore the affected structure to its
      previous size, so that such extensions need not be rebuilt.
     </para>
    </listitem>

    <listitem>
<!--
Author: Noah Misch <noah@leadboat.com>
Branch: master [7b88529f4] 2024-11-15 20:39:56 -0800
Branch: REL_17_STABLE [1c05004a8] 2024-11-15 20:39:59 -0800
Branch: REL_16_STABLE [b0918c128] 2024-11-15 20:39:59 -0800
Branch: REL_15_STABLE [edf80895f] 2024-11-15 20:39:59 -0800
Branch: REL_14_STABLE [be062bfa5] 2024-11-15 20:40:00 -0800
Branch: REL_13_STABLE [07c6e0f61] 2024-11-15 20:40:00 -0800
Branch: REL_12_STABLE [c46333865] 2024-11-15 20:40:00 -0800
-->
     <para>
      Restore functionality of <command>ALTER {ROLE|DATABASE} SET
      role</command> (Tom Lane, Noah Misch)
      <ulink url="&commit_baseurl;be062bfa5">&sect;</ulink>
     </para>

     <para>
      The fix for CVE-2024-10978 accidentally caused settings
      for <varname>role</varname> to not be applied if they come from
      non-interactive sources, including previous <command>ALTER
      {ROLE|DATABASE}</command> commands and
      the <varname>PGOPTIONS</varname> environment variable.
     </para>
    </listitem>

    <listitem>
<!--
Author: Masahiko Sawada <msawada@postgresql.org>
Branch: master [e5ed873b1] 2024-11-15 17:06:11 -0800
Branch: REL_17_STABLE [568e78a65] 2024-11-15 17:06:08 -0800
Branch: REL_16_STABLE [f35391133] 2024-11-15 17:06:05 -0800
Branch: REL_15_STABLE [91771b3fb] 2024-11-15 17:06:02 -0800
Branch: REL_14_STABLE [26c4e8968] 2024-11-15 17:06:00 -0800
Branch: REL_13_STABLE [15dc1abb1] 2024-11-15 17:05:57 -0800
-->
     <para>
      Fix cases where a logical replication
      slot's <structfield>restart_lsn</structfield> could go backwards
      (Masahiko Sawada)
      <ulink url="&commit_baseurl;26c4e8968">&sect;</ulink>
     </para>

     <para>
      Previously, restarting logical replication could sometimes cause the
      slot's restart point to be recomputed as an older value than had
      previously been advertised
      in <structname>pg_replication_slots</structname>.  This is bad,
      since for example WAL files might have been removed on the basis of
      the later <structfield>restart_lsn</structfield> value, in which
      case replication would fail to restart.
     </para>
    </listitem>

    <listitem>
<!--
Author: Álvaro Herrera <alvherre@alvh.no-ip.org>
Branch: master [90bcc7c2d] 2024-11-15 12:53:12 +0100
Branch: REL_17_STABLE [cb844d66b] 2024-11-15 12:53:12 +0100
Branch: REL_16_STABLE [ea1649c35] 2024-11-15 12:53:12 +0100
Branch: REL_15_STABLE [e28cf2fbc] 2024-11-15 12:53:12 +0100
Branch: REL_14_STABLE [ba2535841] 2024-11-15 12:53:12 +0100
-->
     <para>
      Avoid deleting still-needed WAL files
      during <application>pg_rewind</application>
      (Polina Bungina, Alexander Kukushkin)
      <ulink url="&commit_baseurl;ba2535841">&sect;</ulink>
     </para>

     <para>
      Previously, in unlucky cases, it was possible
      for <application>pg_rewind</application> to remove important WAL
      files from the rewound demoted primary.  In particular this happens
      if those files have been marked for archival (i.e.,
      their <filename>.ready</filename> files were created) but not yet
      archived.  Then the newly promoted node no longer has such files
      because of them having been recycled, but likely they are needed
      for recovery in the demoted node.
      If <application>pg_rewind</application> removes them, recovery is
      not possible anymore.
     </para>
    </listitem>

    <listitem>
<!--
Author: Peter Geoghegan <pg@bowt.ie>
Branch: master [93063e2e4] 2024-11-12 20:57:45 -0500
Branch: REL_17_STABLE [7af6d1306] 2024-11-12 20:57:43 -0500
Branch: REL_16_STABLE [05aac2e83] 2024-11-12 20:57:41 -0500
Branch: REL_15_STABLE [16a2bb079] 2024-11-12 20:57:39 -0500
Branch: REL_14_STABLE [2a30b6836] 2024-11-12 20:57:37 -0500
Branch: REL_13_STABLE [e493ea866] 2024-11-12 20:57:35 -0500
-->
     <para>
      Count index scans in <filename>contrib/bloom</filename> indexes in
      the statistics views, such as the
      <structname>pg_stat_user_indexes</structname>.<structfield>idx_scan</structfield>
      counter (Masahiro Ikeda)
      <ulink url="&commit_baseurl;2a30b6836">&sect;</ulink>
     </para>
    </listitem>

    <listitem>
<!--
Author: Alexander Korotkov <akorotkov@postgresql.org>
Branch: master [db22b9002] 2024-11-12 01:44:20 +0200
Branch: REL_17_STABLE [a6fa869cf] 2024-11-12 01:51:20 +0200
Branch: REL_16_STABLE [b242aba02] 2024-11-12 01:53:40 +0200
Branch: REL_15_STABLE [713b8546a] 2024-11-12 01:54:30 +0200
Branch: REL_14_STABLE [247e7647f] 2024-11-12 01:54:35 +0200
Branch: REL_13_STABLE [5411e8213] 2024-11-12 01:54:38 +0200
-->
     <para>
      Fix crash when checking to see if an index's opclass options have
      changed (Alexander Korotkov)
      <ulink url="&commit_baseurl;247e7647f">&sect;</ulink>
     </para>

     <para>
      Some forms of <command>ALTER TABLE</command> would fail if the
      table has an index with non-default operator class options.
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [b69bdcee9] 2024-11-15 18:23:38 -0500
Branch: REL_17_STABLE [5f28e6ba7] 2024-11-15 18:23:38 -0500
Branch: REL_16_STABLE [b6312becc] 2024-11-15 18:23:38 -0500
Branch: REL_15_STABLE [2496c3f6f] 2024-11-15 18:23:38 -0500
Branch: REL_14_STABLE [2bdd3b248] 2024-11-15 18:23:38 -0500
-->
     <para>
      Avoid assertion failure caused by disconnected NFA sub-graphs in
      regular expression parsing (Tom Lane)
      <ulink url="&commit_baseurl;2bdd3b248">&sect;</ulink>
     </para>

     <para>
      This bug does not appear to have any visible consequences in
      non-assert builds.
     </para>
    </listitem>

   </itemizedlist>

  </sect2>
 </sect1>

 <sect1 id="release-14-14">
  <title>Release 14.14</title>

  <formalpara>
  <title>Release date:</title>
  <para>2024-11-14</para>
  </formalpara>

  <para>
   This release contains a variety of fixes from 14.13.
   For information about new features in major release 14, see
   <xref linkend="release-14"/>.
  </para>

  <sect2>
   <title>Migration to Version 14.14</title>

   <para>
    A dump/restore is not required for those running 14.X.
   </para>

   <para>
    However, if you have ever detached a partition from a partitioned
    table that has a foreign-key reference to another partitioned table,
    and not dropped the former partition, then you may have catalog and/or
    data corruption to repair, as detailed in the fifth changelog entry
    below.
   </para>

   <para>
    Also, if you are upgrading from a version earlier than 14.12,
    see <xref linkend="release-14-12"/>.
   </para>
  </sect2>

  <sect2>
   <title>Changes</title>

   <itemizedlist>

    <listitem>
<!--
Author: Nathan Bossart <nathan@postgresql.org>
Branch: master [cd7ab5753] 2024-11-11 09:00:00 -0600
Branch: REL_17_STABLE [edcda9bb4] 2024-11-11 09:00:00 -0600
Branch: REL_16_STABLE [562289460] 2024-11-11 09:00:00 -0600
Branch: REL_15_STABLE [6db5ea8de] 2024-11-11 09:00:00 -0600
Branch: REL_14_STABLE [4e51030af] 2024-11-11 09:00:00 -0600
Branch: REL_13_STABLE [952ff31e2] 2024-11-11 09:00:00 -0600
Branch: REL_12_STABLE [448525e8a] 2024-11-11 09:00:00 -0600
-->
     <para>
      Ensure cached plans are marked as dependent on the calling role when
      RLS applies to a non-top-level table reference (Nathan Bossart)
      <ulink url="&commit_baseurl;4e51030af">&sect;</ulink>
     </para>

     <para>
      If a CTE, subquery, sublink, security invoker view, or coercion
      projection in a query references a table with row-level security
      policies, we neglected to mark the resulting plan as potentially
      dependent on which role is executing it.  This could lead to later
      query executions in the same session using the wrong plan, and then
      returning or hiding rows that should have been hidden or returned
      instead.
     </para>

     <para>
      The <productname>PostgreSQL</productname> Project thanks
      Wolfgang Walther for reporting this problem.
      (CVE-2024-10976)
     </para>
    </listitem>

    <listitem>
<!--
Author: Michael Paquier <michael@paquier.xyz>
Branch: master [bf8835ea9] 2024-11-11 10:19:52 +0900
Branch: REL_17_STABLE [a5cc4c667] 2024-11-11 10:19:56 +0900
Branch: REL_16_STABLE [67d28bd02] 2024-11-11 10:19:58 +0900
Branch: REL_15_STABLE [d2c3e31c1] 2024-11-11 10:19:59 +0900
Branch: REL_14_STABLE [e6c945476] 2024-11-11 10:20:01 +0900
Branch: REL_13_STABLE [7b49707b7] 2024-11-11 10:20:02 +0900
Branch: REL_12_STABLE [2a951ef0a] 2024-11-11 10:20:03 +0900
-->
     <para>
      Make <application>libpq</application> discard error messages
      received during SSL or GSS protocol negotiation (Jacob Champion)
      <ulink url="&commit_baseurl;e6c945476">&sect;</ulink>
     </para>

     <para>
      An error message received before encryption negotiation is completed
      might have been injected by a man-in-the-middle, rather than being
      real server output.  Reporting it opens the door to various security
      hazards; for example, the message might spoof a query result that a
      careless user could mistake for correct output.  The best answer
      seems to be to discard such data and rely only
      on <application>libpq</application>'s own report of the connection
      failure.
     </para>

     <para>
      The <productname>PostgreSQL</productname> Project thanks
      Jacob Champion for reporting this problem.
      (CVE-2024-10977)
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [5a2fed911] 2024-11-11 10:29:54 -0500
Branch: REL_17_STABLE [cd82afdda] 2024-11-11 10:29:54 -0500
Branch: REL_16_STABLE [ae340d031] 2024-11-11 10:29:54 -0500
Branch: REL_15_STABLE [a5d2e6205] 2024-11-11 10:29:54 -0500
Branch: REL_14_STABLE [2a68808e2] 2024-11-11 10:29:54 -0500
Branch: REL_13_STABLE [76123ded6] 2024-11-11 10:29:54 -0500
Branch: REL_12_STABLE [4c9d96f74] 2024-11-11 10:29:54 -0500
Branch: master [73c9f91a1] 2024-11-11 17:05:53 -0500
Branch: REL_17_STABLE [f4f5d27d8] 2024-11-11 17:05:53 -0500
Branch: REL_16_STABLE [95f5a5237] 2024-11-11 17:05:53 -0500
Branch: REL_15_STABLE [109a32380] 2024-11-11 17:05:53 -0500
Branch: REL_14_STABLE [00b94e8e2] 2024-11-11 17:05:53 -0500
Branch: REL_13_STABLE [dc7378793] 2024-11-11 17:05:53 -0500
Branch: REL_12_STABLE [0edad8654] 2024-11-11 17:05:53 -0500
-->
     <para>
      Fix unintended interactions between <command>SET SESSION
      AUTHORIZATION</command> and <command>SET ROLE</command> (Tom Lane)
      <ulink url="&commit_baseurl;2a68808e2">&sect;</ulink>
      <ulink url="&commit_baseurl;00b94e8e2">&sect;</ulink>
     </para>

     <para>
      The SQL standard mandates that <command>SET SESSION
      AUTHORIZATION</command> have a side-effect of doing <command>SET
      ROLE NONE</command>.  Our implementation of that was flawed,
      creating more interaction between the two settings than intended.
      Notably, rolling back a transaction that had done <command>SET
      SESSION AUTHORIZATION</command> would revert <literal>ROLE</literal>
      to <literal>NONE</literal> even if that had not been the previous
      state, so that the effective user ID might now be different from
      what it had been before the transaction.  Transiently
      setting <varname>session_authorization</varname> in a
      function <literal>SET</literal> clause had a similar effect.
      A related bug was that if a parallel worker
      inspected <literal>current_setting('role')</literal>, it
      saw <literal>none</literal> even when it should see something else.
     </para>

     <para>
      The <productname>PostgreSQL</productname> Project thanks
      Tom Lane for reporting this problem.
      (CVE-2024-10978)
     </para>
    </listitem>

    <listitem>
<!--
Author: Noah Misch <noah@leadboat.com>
Branch: master [b7e3a52a8] 2024-11-11 06:23:43 -0800
Branch: REL_17_STABLE [3ebcfa54d] 2024-11-11 06:23:46 -0800
Branch: REL_16_STABLE [8fe3e697a] 2024-11-11 06:23:47 -0800
Branch: REL_15_STABLE [e530835c6] 2024-11-11 06:23:47 -0800
Branch: REL_14_STABLE [d15ec27c9] 2024-11-11 06:23:47 -0800
Branch: REL_13_STABLE [e428cd058] 2024-11-11 06:23:48 -0800
Branch: REL_12_STABLE [2ab12d860] 2024-11-11 06:23:48 -0800
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: REL_14_STABLE [f89bd92c9] 2024-11-11 10:42:32 -0500
Branch: REL_13_STABLE [6bccd7b03] 2024-11-11 10:42:32 -0500
Branch: REL_12_STABLE [b1e58defb] 2024-11-11 10:42:32 -0500
Branch: master [a34c33fd2] 2024-11-11 12:20:08 -0500
Branch: REL_17_STABLE [4cd4f3b97] 2024-11-11 12:20:08 -0500
Branch: REL_16_STABLE [88269df4d] 2024-11-11 12:20:08 -0500
Branch: REL_16_STABLE [168579e23] 2024-11-11 12:27:06 -0500
Author: Noah Misch <noah@leadboat.com>
Branch: REL_16_STABLE [c335264c9] 2024-11-11 10:55:18 -0800
Branch: REL_15_STABLE [16ed4f4d0] 2024-11-11 10:56:05 -0800
Branch: REL_14_STABLE [c1fff7b1b] 2024-11-11 10:56:09 -0800
Branch: REL_13_STABLE [9f97c31c2] 2024-11-11 10:56:12 -0800
Branch: REL_12_STABLE [1e457468f] 2024-11-11 10:56:14 -0800
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [c4252c9ef] 2024-11-11 13:57:21 -0500
Branch: REL_17_STABLE [8d19f3fea] 2024-11-11 13:57:21 -0500
Branch: REL_16_STABLE [64df88700] 2024-11-11 13:57:40 -0500
Branch: REL_15_STABLE [c834b375a] 2024-11-11 13:57:41 -0500
Branch: REL_14_STABLE [256e34653] 2024-11-11 13:57:41 -0500
Branch: REL_13_STABLE [0bd9560d9] 2024-11-11 13:57:41 -0500
Branch: REL_12_STABLE [9fc1c3a02] 2024-11-11 13:57:41 -0500
-->
     <para>
      Prevent trusted PL/Perl code from changing environment variables
      (Andrew Dunstan, Noah Misch)
      <ulink url="&commit_baseurl;d15ec27c9">&sect;</ulink>
      <ulink url="&commit_baseurl;f89bd92c9">&sect;</ulink>
      <ulink url="&commit_baseurl;c1fff7b1b">&sect;</ulink>
      <ulink url="&commit_baseurl;256e34653">&sect;</ulink>
     </para>

     <para>
      The ability to manipulate process environment variables such
      as <literal>PATH</literal> gives an attacker opportunities to
      execute arbitrary code.  Therefore, <quote>trusted</quote> PLs must
      not offer the ability to do that.  To fix <literal>plperl</literal>,
      replace <varname>%ENV</varname> with a tied hash that rejects any
      modification attempt with a warning.
      Untrusted <literal>plperlu</literal> retains the ability to change
      the environment.
     </para>

     <para>
      The <productname>PostgreSQL</productname> Project thanks
      Coby Abrams for reporting this problem.
      (CVE-2024-10979)
     </para>
    </listitem>

    <listitem>
<!--
Author: Álvaro Herrera <alvherre@alvh.no-ip.org>
Branch: master [53af9491a] 2024-10-22 16:01:18 +0200
Branch: REL_17_STABLE [5914a22f6] 2024-10-22 16:01:18 +0200
Branch: REL_16_STABLE [2aaf2a28b] 2024-10-22 16:01:18 +0200
Branch: REL_15_STABLE [5d83bad6b] 2024-10-22 16:01:18 +0200
Branch: REL_14_STABLE [46a8c27a7] 2024-10-22 16:01:18 +0200
Branch: REL_13_STABLE [d20194cea] 2024-10-22 16:01:18 +0200
Branch: master [2d5fe5140] 2024-10-30 10:54:03 +0100
Branch: REL_17_STABLE [936ab6de9] 2024-10-30 10:54:03 +0100
Branch: REL_16_STABLE [f7d510a38] 2024-10-30 10:54:03 +0100
Branch: REL_15_STABLE [1b216fcef] 2024-10-30 10:54:03 +0100
-->
     <para>
      Fix updates of catalog state for foreign-key constraints when
      attaching or detaching table partitions (Jehan-Guillaume de
      Rorthais, Tender Wang, Álvaro Herrera)
      <ulink url="&commit_baseurl;46a8c27a7">&sect;</ulink>
     </para>

     <para>
      If the referenced table is partitioned, then different catalog
      entries are needed for a referencing table that is stand-alone
      versus one that is a partition.  <literal>ATTACH/DETACH
      PARTITION</literal> commands failed to perform this conversion
      correctly.  In particular, after <literal>DETACH</literal> the now
      stand-alone table would be missing foreign-key enforcement triggers,
      which could result in the table later containing rows that fail the
      foreign-key constraint.  A subsequent re-<literal>ATTACH</literal>
      could fail with surprising errors, too.
     </para>

     <para>
      The way to fix this is to do <command>ALTER TABLE DROP
      CONSTRAINT</command> on the now stand-alone table for each faulty
      constraint, and then re-add the constraint.  If re-adding the
      constraint fails, then some erroneous data has crept in.  You will
      need to manually re-establish consistency between the referencing
      and referenced tables, then re-add the constraint.
     </para>

     <para>
      This query can be used to identify broken constraints and construct
      the commands needed to recreate them:
<programlisting>
SELECT conrelid::pg_catalog.regclass AS "constrained table",
       conname AS constraint,
       confrelid::pg_catalog.regclass AS "references",
       pg_catalog.format('ALTER TABLE %s DROP CONSTRAINT %I;',
                         conrelid::pg_catalog.regclass, conname) AS "drop",
       pg_catalog.format('ALTER TABLE %s ADD CONSTRAINT %I %s;',
                         conrelid::pg_catalog.regclass, conname,
                         pg_catalog.pg_get_constraintdef(oid)) AS "add"
FROM pg_catalog.pg_constraint c
WHERE contype = 'f' AND conparentid = 0 AND
   (SELECT count(*) FROM pg_catalog.pg_constraint c2
    WHERE c2.conparentid = c.oid) &lt;&gt;
   ((SELECT count(*) FROM pg_catalog.pg_inherits i
    WHERE (i.inhparent = c.conrelid OR i.inhparent = c.confrelid) AND
      EXISTS (SELECT 1 FROM pg_catalog.pg_partitioned_table
              WHERE partrelid = i.inhparent)) +
    CASE WHEN pg_catalog.pg_partition_root(conrelid) = confrelid THEN
              (SELECT count(*) FROM pg_catalog.pg_partition_tree(confrelid)
                WHERE level = 1)
         ELSE 0 END);
</programlisting>
      Since it is possible that one or more of the <literal>ADD
      CONSTRAINT</literal> steps will fail, you should save the query's
      output in a file and then attempt to perform each step.
     </para>
    </listitem>

    <listitem>
<!--
Author: Álvaro Herrera <alvherre@alvh.no-ip.org>
Branch: master [52f3de874] 2024-08-19 16:09:10 -0400
Branch: REL_17_STABLE Release: REL_17_0 [11f1218ce] 2024-08-19 16:09:10 -0400
Branch: REL_16_STABLE [a6ff329e7] 2024-08-19 16:09:10 -0400
Branch: REL_15_STABLE [be73e7008] 2024-08-19 16:09:10 -0400
Branch: REL_14_STABLE [3ad4c8615] 2024-08-19 16:09:10 -0400
Branch: master [c899c6839] 2024-08-12 18:17:56 -0400
Branch: REL_17_STABLE Release: REL_17_0 [0820f8062] 2024-08-12 18:17:56 -0400
Branch: REL_16_STABLE [1b9dd6b05] 2024-08-12 18:17:56 -0400
Branch: REL_15_STABLE [305db9543] 2024-08-12 18:17:56 -0400
Branch: REL_14_STABLE [1b4bdf915] 2024-08-12 18:17:56 -0400
-->
     <para>
      Avoid possible crashes and <quote>could not open relation</quote>
      errors in queries on a partitioned table occurring concurrently with
      a <command>DETACH CONCURRENTLY</command> and immediate drop of a
      partition (Álvaro Herrera, Kuntal Gosh)
      <ulink url="&commit_baseurl;3ad4c8615">&sect;</ulink>
      <ulink url="&commit_baseurl;1b4bdf915">&sect;</ulink>
     </para>
    </listitem>

    <listitem>
<!--
Author: Álvaro Herrera <alvherre@alvh.no-ip.org>
Branch: master [a90bdd7a4] 2024-08-08 19:35:13 -0400
Branch: REL_17_STABLE Release: REL_17_0 [344f9f5e2] 2024-08-08 19:35:13 -0400
Branch: REL_16_STABLE [ada34d714] 2024-08-08 19:35:13 -0400
Branch: REL_15_STABLE [8c0944ac8] 2024-08-08 19:35:13 -0400
Branch: REL_14_STABLE [e97121d90] 2024-08-08 19:35:13 -0400
Branch: REL_13_STABLE [2ee02c98d] 2024-08-08 19:35:13 -0400
Branch: REL_12_STABLE [17ed92e1f] 2024-08-08 19:35:13 -0400
Author: Peter Eisentraut <peter@eisentraut.org>
Branch: REL_16_STABLE [57c8b8726] 2024-11-08 07:17:55 +0100
Branch: REL_15_STABLE [38f506470] 2024-11-08 07:31:48 +0100
Branch: REL_14_STABLE [a54a5c426] 2024-11-08 07:32:07 +0100
Branch: REL_13_STABLE [ebbfa2ae3] 2024-11-08 07:32:14 +0100
Branch: REL_12_STABLE [cae459d11] 2024-11-08 07:32:21 +0100
-->
     <para>
      Disallow <command>ALTER TABLE ATTACH PARTITION</command> if the
      table to be attached has a foreign key referencing the partitioned
      table (Álvaro Herrera)
      <ulink url="&commit_baseurl;e97121d90">&sect;</ulink>
      <ulink url="&commit_baseurl;a54a5c426">&sect;</ulink>
     </para>

     <para>
      This arrangement is not supported, and other ways of creating it
      already fail.
     </para>
    </listitem>

    <listitem>
<!--
Author: Amit Langote <amitlan@postgresql.org>
Branch: master [075acdd93] 2024-11-08 17:25:24 +0900
Branch: REL_17_STABLE [a0cdfc889] 2024-11-08 17:19:35 +0900
Branch: REL_16_STABLE [f734b6b4d] 2024-11-08 17:19:13 +0900
Branch: REL_15_STABLE [33040b171] 2024-11-08 17:18:55 +0900
Branch: REL_14_STABLE [62df5484f] 2024-11-08 17:18:38 +0900
Branch: REL_13_STABLE [054701a2b] 2024-11-08 17:18:21 +0900
Branch: REL_12_STABLE [9c4757491] 2024-11-08 17:18:04 +0900
Branch: master [90fe6251c] 2024-11-08 16:07:22 +0900
Branch: REL_17_STABLE [b6484ca95] 2024-11-08 16:07:13 +0900
Branch: REL_16_STABLE [dd2f8ebee] 2024-11-08 16:07:05 +0900
Branch: REL_15_STABLE [0a620659c] 2024-11-08 16:06:58 +0900
Branch: REL_14_STABLE [96f9b29a3] 2024-11-08 16:06:46 +0900
Branch: REL_13_STABLE [ff65f695c] 2024-11-08 16:06:12 +0900
Branch: REL_12_STABLE [46d9be5ef] 2024-11-08 16:05:33 +0900
-->
     <para>
      Don't use partitionwise joins or grouping if the query's collation
      for the key column doesn't match the partition key's collation (Jian
      He, Webbo Han)
      <ulink url="&commit_baseurl;62df5484f">&sect;</ulink>
      <ulink url="&commit_baseurl;96f9b29a3">&sect;</ulink>
     </para>

     <para>
      Such plans could produce incorrect results.
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [9f954177b] 2024-10-12 14:56:08 -0400
Branch: REL_17_STABLE [54889ea64] 2024-10-12 14:56:08 -0400
Branch: REL_16_STABLE [64635c8af] 2024-10-12 14:56:08 -0400
Branch: REL_15_STABLE [4f3bccbaa] 2024-10-12 14:56:08 -0400
Branch: REL_14_STABLE [4ca708eb3] 2024-10-12 14:56:08 -0400
Branch: REL_13_STABLE [76de4b182] 2024-10-12 14:56:08 -0400
-->
     <para>
      Fix possible <quote>could not find pathkey item to sort</quote>
      error when the output of a <literal>UNION ALL</literal> member query
      needs to be sorted, and the sort column is an expression (Andrei
      Lepikhov, Tom Lane)
      <ulink url="&commit_baseurl;4ca708eb3">&sect;</ulink>
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [fae55f0bb] 2024-09-13 16:17:04 -0400
Branch: REL_17_STABLE Release: REL_17_0 [418c6a2c7] 2024-09-13 16:17:04 -0400
Branch: REL_16_STABLE [d23109f4b] 2024-09-13 16:16:47 -0400
Branch: REL_15_STABLE [e0857898b] 2024-09-13 16:16:47 -0400
Branch: REL_14_STABLE [b49013f2e] 2024-09-13 16:16:47 -0400
Branch: REL_13_STABLE [b27215dbb] 2024-09-13 16:16:47 -0400
Branch: REL_12_STABLE [813ade548] 2024-09-13 16:16:47 -0400
-->
     <para>
      Allow cancellation of the second stage of index build for large hash
      indexes (Pavel Borisov)
      <ulink url="&commit_baseurl;b49013f2e">&sect;</ulink>
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [68ad9816c] 2024-10-21 15:08:22 -0400
Branch: REL_17_STABLE [3685ad618] 2024-10-21 15:08:22 -0400
Branch: REL_16_STABLE [6c3b2d204] 2024-10-21 15:08:22 -0400
Branch: REL_15_STABLE [c80a1e048] 2024-10-21 15:08:22 -0400
Branch: REL_14_STABLE [5e94f616c] 2024-10-21 15:08:22 -0400
Branch: REL_13_STABLE [beab395a4] 2024-10-21 15:08:22 -0400
Branch: REL_12_STABLE [6a57a457c] 2024-10-21 15:08:22 -0400
-->
     <para>
      Fix assertion failure or confusing error message for <literal>COPY
      (<replaceable>query</replaceable>) TO ...</literal>, when
      the <replaceable>query</replaceable> is rewritten by a <literal>DO
      INSTEAD NOTIFY</literal> rule (Tender Wang, Tom Lane)
      <ulink url="&commit_baseurl;5e94f616c">&sect;</ulink>
     </para>
    </listitem>

    <listitem>
<!--
Author: Thomas Munro <tmunro@postgresql.org>
Branch: master [98c7c7152] 2024-10-17 22:11:59 +1300
Branch: REL_17_STABLE [4ac5d33a8] 2024-10-17 22:10:29 +1300
Branch: REL_16_STABLE [53edc9485] 2024-10-17 22:08:13 +1300
Branch: REL_15_STABLE [1831545ca] 2024-10-17 22:04:05 +1300
Branch: REL_14_STABLE [20d948994] 2024-10-17 22:01:54 +1300
Branch: REL_13_STABLE [45329466f] 2024-10-17 22:00:38 +1300
Branch: REL_12_STABLE [4fa80a6d7] 2024-10-17 22:00:16 +1300
-->
     <para>
      Fix detection of skewed data during parallel hash join (Thomas
      Munro)
      <ulink url="&commit_baseurl;20d948994">&sect;</ulink>
     </para>

     <para>
      After repartitioning the inner side of a hash join because one
      partition has accumulated too many tuples, we check to see if all
      the partition's tuples went into the same child partition, which
      suggests that they all have the same hash value and further
      repartitioning cannot improve matters.  This check malfunctioned in
      some cases, allowing repeated futile repartitioning which would
      eventually end in a resource-exhaustion error.
     </para>
    </listitem>

    <listitem>
<!--
Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
Branch: master [1a43de5e0] 2024-10-21 09:49:21 +0300
Branch: REL_17_STABLE [234f6d09e] 2024-10-21 09:49:29 +0300
Branch: REL_16_STABLE [22665f210] 2024-10-21 09:49:32 +0300
Branch: REL_15_STABLE [d97419b85] 2024-10-21 09:49:35 +0300
Branch: REL_14_STABLE [520ec2474] 2024-10-21 09:49:38 +0300
Branch: REL_13_STABLE [8e607a5a4] 2024-10-21 09:49:41 +0300
Branch: REL_12_STABLE [e2ec3afeb] 2024-10-21 09:49:50 +0300
-->
     <para>
      Fix race condition in committing a serializable transaction (Heikki
      Linnakangas)
      <ulink url="&commit_baseurl;520ec2474">&sect;</ulink>
     </para>

     <para>
      Mis-processing of a recently committed transaction could lead to an
      assertion failure or a <quote>could not access status of
      transaction</quote> error.
     </para>
    </listitem>

    <listitem>
<!--
Author: Michael Paquier <michael@paquier.xyz>
Branch: master [cf4401fe6] 2024-10-01 15:44:03 +0900
Branch: REL_17_STABLE [f250cb29d] 2024-10-01 15:44:07 +0900
Branch: REL_16_STABLE [7de9b64a5] 2024-10-01 15:44:09 +0900
Branch: REL_15_STABLE [41ab45680] 2024-10-01 15:44:11 +0900
Branch: REL_14_STABLE [5f1510787] 2024-10-01 15:44:12 +0900
Branch: REL_13_STABLE [7bfaa4671] 2024-10-01 15:44:14 +0900
Branch: REL_12_STABLE [34d751ba7] 2024-10-01 15:44:15 +0900
-->
     <para>
      Fix race condition in <command>COMMIT PREPARED</command>
      that resulted in orphaned 2PC files (wuchengwen)
      <ulink url="&commit_baseurl;5f1510787">&sect;</ulink>
     </para>

     <para>
      A concurrent <command>PREPARE TRANSACTION</command> could
      cause <command>COMMIT PREPARED</command> to not remove the on-disk
      two-phase state file for the completed transaction.  There was no
      immediate ill effect, but a subsequent crash-and-recovery could fail
      with <quote>could not access status of transaction</quote>,
      requiring manual removal of the orphaned file to restore service.
     </para>
    </listitem>

    <listitem>
<!--
Author: Michael Paquier <michael@paquier.xyz>
Branch: master [09620ea09] 2024-09-27 09:40:09 +0900
Branch: REL_17_STABLE [1532599a8] 2024-09-27 09:40:14 +0900
Branch: REL_16_STABLE [afbd3dc7d] 2024-09-27 09:40:16 +0900
Branch: REL_15_STABLE [a613edc5c] 2024-09-27 09:40:18 +0900
Branch: REL_14_STABLE [6530b869c] 2024-09-27 09:40:19 +0900
Branch: REL_13_STABLE [911eda9f3] 2024-09-27 09:40:21 +0900
Branch: REL_12_STABLE [2f33e68a5] 2024-09-27 09:40:22 +0900
-->
     <para>
      Avoid invalid memory accesses after skipping an invalid toast index
      during <command>VACUUM FULL</command> (Tender Wang)
      <ulink url="&commit_baseurl;6530b869c">&sect;</ulink>
     </para>

     <para>
      A list tracking yet-to-be-rebuilt indexes was not properly updated
      in this code path, risking assertion failures or crashes later on.
     </para>
    </listitem>

    <listitem>
<!--
Author: Noah Misch <noah@leadboat.com>
Branch: master [a07e03fd8] 2024-09-24 15:25:18 -0700
Branch: REL_17_STABLE [fd27b878c] 2024-09-24 15:25:21 -0700
Branch: REL_16_STABLE [63f019805] 2024-09-24 15:25:22 -0700
Branch: REL_15_STABLE [8590c942c] 2024-09-24 15:25:23 -0700
Branch: REL_14_STABLE [82c2d9e02] 2024-09-24 15:25:23 -0700
Branch: REL_13_STABLE [a8ad1929d] 2024-09-24 15:25:24 -0700
Branch: REL_12_STABLE [7354b680a] 2024-09-24 15:25:25 -0700
Branch: master [aac2c9b4f] 2024-09-24 15:25:18 -0700
Branch: REL_17_STABLE [3b7a689e1] 2024-09-24 15:25:22 -0700
Branch: REL_16_STABLE [51ff46de2] 2024-09-24 15:25:22 -0700
Branch: REL_15_STABLE [5c837f8fa] 2024-09-24 15:25:23 -0700
Branch: REL_14_STABLE [f51b34b3e] 2024-09-24 15:25:23 -0700
Branch: REL_13_STABLE [14c57cb63] 2024-09-24 15:25:24 -0700
Branch: REL_12_STABLE [cafcc3ad0] 2024-09-24 15:25:25 -0700
Branch: master [0d5a3d757] 2024-09-29 15:54:25 -0700
Branch: REL_17_STABLE [da99df15c] 2024-09-29 15:54:28 -0700
Branch: REL_16_STABLE [4c922821e] 2024-09-29 15:54:28 -0700
Branch: REL_15_STABLE [159bf0f31] 2024-09-29 15:54:29 -0700
Branch: REL_14_STABLE [b9ee1339b] 2024-09-29 15:54:29 -0700
Branch: REL_13_STABLE [db1992455] 2024-09-29 15:54:29 -0700
Branch: REL_12_STABLE [5a33a39a8] 2024-09-29 15:54:30 -0700
Branch: master [e947224cb] 2024-10-24 09:16:14 -0700
Branch: REL_17_STABLE [e11907682] 2024-10-24 09:16:17 -0700
Branch: REL_16_STABLE [2d63c964f] 2024-10-24 09:16:18 -0700
Branch: REL_15_STABLE [d34ffbaa1] 2024-10-24 09:16:18 -0700
Branch: REL_14_STABLE [ad24b7565] 2024-10-24 09:16:19 -0700
Branch: REL_13_STABLE [3e5ea478d] 2024-10-24 09:16:19 -0700
Branch: REL_12_STABLE [a0c0078b1] 2024-10-24 09:16:20 -0700
Branch: master [30d47ec8c] 2024-10-29 09:39:55 -0700
Branch: REL_17_STABLE [9aef6f19a] 2024-10-29 09:39:58 -0700
Branch: REL_16_STABLE [370bc7740] 2024-10-29 09:39:58 -0700
Branch: REL_15_STABLE [0fe002d0c] 2024-10-29 09:39:59 -0700
Branch: REL_14_STABLE [11e3f288f] 2024-10-29 09:39:59 -0700
Branch: REL_13_STABLE [2a912bc1a] 2024-10-29 09:40:00 -0700
Branch: REL_12_STABLE [c2139db11] 2024-10-29 09:40:00 -0700
Branch: master [b412f402d] 2024-11-02 09:04:55 -0700
Branch: REL_17_STABLE [0bcb9d079] 2024-11-02 09:05:00 -0700
Branch: REL_16_STABLE [6c837c237] 2024-11-02 09:05:02 -0700
Branch: REL_15_STABLE [6d5b4031b] 2024-11-02 09:05:04 -0700
Branch: REL_14_STABLE [bb3054297] 2024-11-02 09:05:05 -0700
Branch: REL_13_STABLE [6b01cac0b] 2024-11-02 09:05:07 -0700
Branch: REL_12_STABLE [d729f1ea5] 2024-11-02 09:05:08 -0700
Branch: master [825c72c07] 2024-11-02 19:42:52 -0700
Branch: REL_17_STABLE [54bc22fbf] 2024-11-02 19:42:55 -0700
Branch: REL_16_STABLE [f8f9110b4] 2024-11-02 19:42:56 -0700
Branch: REL_15_STABLE [d14e94ac4] 2024-11-02 19:42:56 -0700
Branch: REL_14_STABLE [803655e66] 2024-11-02 19:42:57 -0700
Branch: REL_13_STABLE [4dc0c933f] 2024-11-02 19:42:57 -0700
Branch: REL_12_STABLE [766809db3] 2024-11-02 19:42:58 -0700
-->
     <para>
      Fix ways in which an <quote>in place</quote> catalog update could be
      lost (Noah Misch)
      <ulink url="&commit_baseurl;82c2d9e02">&sect;</ulink>
      <ulink url="&commit_baseurl;f51b34b3e">&sect;</ulink>
      <ulink url="&commit_baseurl;b9ee1339b">&sect;</ulink>
      <ulink url="&commit_baseurl;ad24b7565">&sect;</ulink>
      <ulink url="&commit_baseurl;11e3f288f">&sect;</ulink>
      <ulink url="&commit_baseurl;bb3054297">&sect;</ulink>
      <ulink url="&commit_baseurl;803655e66">&sect;</ulink>
     </para>

     <para>
      Normal row updates write a new version of the row to preserve
      rollback-ability of the transaction.  However, certain system
      catalog updates are intentionally non-transactional and are done
      with an in-place update of the row.  These patches fix race
      conditions that could cause the effects of an in-place update to be
      lost.  As an example, it was possible to forget having set
      <structname>pg_class</structname>.<structfield>relhasindex</structfield>
      to true, preventing updates of the new index and thus causing index
      corruption.
     </para>
    </listitem>

    <listitem>
<!--
Author: Noah Misch <noah@leadboat.com>
Branch: REL_17_STABLE [a4668c99f] 2024-10-25 06:51:06 -0700
Branch: REL_16_STABLE [d36b4d8ec] 2024-10-25 06:51:06 -0700
Branch: REL_15_STABLE [3baf804b7] 2024-10-25 06:51:07 -0700
Branch: REL_14_STABLE [dca68242a] 2024-10-25 06:51:07 -0700
Branch: REL_13_STABLE [67f30c79a] 2024-10-25 06:51:08 -0700
Branch: REL_12_STABLE [da9950456] 2024-10-25 06:51:08 -0700
-->
     <para>
      Reset catalog caches at end of recovery (Noah Misch)
      <ulink url="&commit_baseurl;dca68242a">&sect;</ulink>
     </para>

     <para>
      This prevents scenarios wherein an in-place catalog update could be
      lost due to using stale data from a catalog cache.
     </para>
    </listitem>

    <listitem>
<!--
Author: Noah Misch <noah@leadboat.com>
Branch: master [ac04aa84a] 2024-09-17 19:53:11 -0700
Branch: REL_17_STABLE Release: REL_17_0 [2370582ab] 2024-09-17 19:54:25 -0700
Branch: REL_16_STABLE [6f6521de9] 2024-09-17 19:54:25 -0700
Branch: REL_15_STABLE [884860bfc] 2024-09-17 19:54:26 -0700
Branch: REL_14_STABLE [5c698e898] 2024-09-17 19:54:26 -0700
Branch: REL_13_STABLE [916b8ae47] 2024-09-17 19:54:26 -0700
Branch: REL_12_STABLE [507b72bd9] 2024-09-17 19:54:26 -0700
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [b8df69049] 2024-11-08 13:42:10 -0500
Branch: REL_17_STABLE [943b65358] 2024-11-08 13:42:01 -0500
Branch: REL_16_STABLE [06424e9a2] 2024-11-08 13:42:01 -0500
Branch: REL_15_STABLE [bcbdb176e] 2024-11-08 13:42:01 -0500
Branch: REL_14_STABLE [989ccd26c] 2024-11-08 13:42:01 -0500
Branch: REL_13_STABLE [62685876f] 2024-11-08 13:42:01 -0500
Branch: REL_12_STABLE [6e39ca6e7] 2024-11-08 13:42:01 -0500
-->
     <para>
      Avoid using parallel query while holding off interrupts
      (Francesco Degrassi, Noah Misch, Tom Lane)
      <ulink url="&commit_baseurl;5c698e898">&sect;</ulink>
      <ulink url="&commit_baseurl;989ccd26c">&sect;</ulink>
     </para>

     <para>
      This situation cannot arise normally, but it can be reached with
      test scenarios such as using a SQL-language function as B-tree
      support (which would be far too slow for production usage).  If it
      did occur it would result in an indefinite wait.
     </para>
    </listitem>

    <listitem>
<!--
Author: Michael Paquier <michael@paquier.xyz>
Branch: master [933848d16] 2024-09-18 09:59:09 +0900
Branch: REL_17_STABLE Release: REL_17_0 [7db9bfc1f] 2024-09-18 09:59:14 +0900
Branch: REL_16_STABLE [21aad4bea] 2024-09-18 09:59:19 +0900
Branch: REL_15_STABLE [cbcd4bb41] 2024-09-18 09:59:23 +0900
Branch: REL_14_STABLE [b36ee879c] 2024-09-18 09:59:26 +0900
-->
     <para>
      Report the active query ID for statistics purposes at the start of
      processing of Bind and Execute protocol messages (Sami Imseih)
      <ulink url="&commit_baseurl;b36ee879c">&sect;</ulink>
     </para>

     <para>
      This allows more of the work done in extended query protocol to be
      attributed to the correct query.
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [d5622acb3] 2024-09-15 13:33:09 -0400
Branch: REL_17_STABLE Release: REL_17_0 [b9645dca1] 2024-09-15 13:33:09 -0400
Branch: REL_16_STABLE [4c9bf947a] 2024-09-15 13:33:09 -0400
Branch: REL_15_STABLE [634804885] 2024-09-15 13:33:09 -0400
Branch: REL_14_STABLE [7721fff06] 2024-09-15 13:33:09 -0400
Branch: REL_13_STABLE [4310dfa25] 2024-09-15 13:33:09 -0400
Branch: REL_12_STABLE [0206795d2] 2024-09-15 13:33:09 -0400
-->
     <para>
      Guard against stack overflow in <application>libxml2</application>
      with too-deeply-nested XML input (Tom Lane, with hat tip to Nick
      Wellnhofer)
      <ulink url="&commit_baseurl;7721fff06">&sect;</ulink>
     </para>

     <para>
      Use <function>xmlXPathCtxtCompile()</function> rather
      than <function>xmlXPathCompile()</function>, because the latter
      fails to protect itself against recursion-to-stack-overflow
      in <application>libxml2</application> releases before 2.13.4.
     </para>
    </listitem>

    <listitem>
<!--
Author: Michael Paquier <michael@paquier.xyz>
Branch: master [5bbdfa8a1] 2024-09-09 13:49:36 +0900
Branch: REL_17_STABLE Release: REL_17_0 [cd6b2ae3e] 2024-09-09 13:49:59 +0900
Branch: REL_16_STABLE [edb0f6e41] 2024-09-09 13:50:02 +0900
Branch: REL_15_STABLE [239837a70] 2024-09-09 13:50:12 +0900
Branch: REL_14_STABLE [902151548] 2024-09-09 13:50:16 +0900
-->
     <para>
      Do not ignore a concurrent <command>REINDEX CONCURRENTLY</command>
      that is working on an index with predicates or expressions (Michail
      Nikolaev)
      <ulink url="&commit_baseurl;902151548">&sect;</ulink>
     </para>

     <para>
      Normally, <command>REINDEX CONCURRENTLY</command> does not need to
      wait for other <command>REINDEX CONCURRENTLY</command> operations on
      other tables.  However, this optimization is not applied if the
      other <command>REINDEX CONCURRENTLY</command> is processing an index
      with predicates or expressions, on the chance that such expressions
      contain user-defined code that accesses other tables.  Careless
      coding created a race condition such that that rule was not applied
      uniformly, possibly allowing inconsistent behavior.
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [b2be5cb2a] 2024-08-11 12:24:56 -0400
Branch: REL_17_STABLE Release: REL_17_0 [aed881386] 2024-08-11 12:24:56 -0400
Branch: REL_16_STABLE [9db6650a5] 2024-08-11 12:24:56 -0400
Branch: REL_15_STABLE [16e67bc5f] 2024-08-11 12:24:56 -0400
Branch: REL_14_STABLE [bc5446a21] 2024-08-11 12:24:56 -0400
Branch: REL_13_STABLE [016f44364] 2024-08-11 12:24:56 -0400
Branch: master [b919a97a6] 2024-08-09 11:21:39 -0400
Branch: REL_17_STABLE Release: REL_17_0 [81a12a447] 2024-08-09 11:21:39 -0400
Branch: REL_16_STABLE [03f679475] 2024-08-09 11:21:39 -0400
Branch: REL_15_STABLE [12010f414] 2024-08-09 11:21:39 -0400
Branch: REL_14_STABLE [120dd0337] 2024-08-09 11:21:39 -0400
Branch: REL_13_STABLE [3ad35d502] 2024-08-09 11:21:39 -0400
Branch: REL_12_STABLE [7408772de] 2024-08-09 11:21:39 -0400
-->
     <para>
      Fix <quote>failed to find plan for subquery/CTE</quote> errors
      in <command>EXPLAIN</command> (Richard Guo, Tom Lane)
      <ulink url="&commit_baseurl;bc5446a21">&sect;</ulink>
      <ulink url="&commit_baseurl;120dd0337">&sect;</ulink>
     </para>

     <para>
      This case arose while trying to print references to fields of a
      RECORD-type output of a subquery when the subquery has been
      optimized out of the plan altogether (which is possible at least in
      the case that it has a constant-false <literal>WHERE</literal>
      condition).  Nothing remains in the plan to identify the original
      field names, so fall back to
      printing <literal>f<replaceable>N</replaceable></literal> for
      the <replaceable>N</replaceable>'th record column.  (That's actually
      the right thing anyway, if the record output arose from
      a <literal>ROW()</literal> constructor.)
     </para>
    </listitem>

    <listitem>
<!--
Author: Peter Eisentraut <peter@eisentraut.org>
Branch: master [4d68a0432] 2024-08-29 09:06:15 +0200
Branch: REL_17_STABLE Release: REL_17_0 [fdbf7e46a] 2024-08-29 08:59:30 +0200
Branch: REL_16_STABLE [5867ee005] 2024-08-29 09:00:06 +0200
Branch: REL_15_STABLE [cf49a606c] 2024-08-29 09:01:02 +0200
Branch: REL_14_STABLE [ecd19a3cc] 2024-08-29 09:01:33 +0200
Branch: REL_13_STABLE [7589d5c5b] 2024-08-29 09:02:06 +0200
Branch: REL_12_STABLE [1c57ae795] 2024-08-29 09:03:06 +0200
-->
     <para>
      Disallow a <literal>USING</literal> clause when altering the type of
      a generated column (Peter Eisentraut)
      <ulink url="&commit_baseurl;ecd19a3cc">&sect;</ulink>
     </para>

     <para>
      A generated column already has an expression specifying the column
      contents, so including <literal>USING</literal> doesn't make sense.
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [f8d9a9f21] 2024-10-06 16:03:48 -0400
Branch: REL_17_STABLE [3daeb539a] 2024-10-06 16:03:48 -0400
Branch: REL_16_STABLE [5de77b609] 2024-10-06 16:03:48 -0400
Branch: REL_15_STABLE [aef75219c] 2024-10-06 16:03:48 -0400
Branch: REL_14_STABLE [3922c9e9f] 2024-10-06 16:03:48 -0400
Branch: REL_13_STABLE [4a17acd0d] 2024-10-06 16:03:48 -0400
Branch: REL_12_STABLE [5c17f5a63] 2024-10-06 16:03:48 -0400
-->
     <para>
      Ignore not-yet-defined Portals in
      the <structname>pg_cursors</structname> view (Tom Lane)
      <ulink url="&commit_baseurl;3922c9e9f">&sect;</ulink>
     </para>

     <para>
      It is possible for user-defined code that inspects this view to be
      called while a new cursor is being set up, and if that happens a
      null pointer dereference would ensue.  Avoid the problem by defining
      the view to exclude incompletely-set-up cursors.
     </para>
    </listitem>

    <listitem>
<!--
Author: Amit Kapila <akapila@postgresql.org>
Branch: master [022564f60] 2024-10-07 15:38:45 +0530
Branch: REL_17_STABLE [918107759] 2024-10-07 15:15:05 +0530
Branch: REL_16_STABLE [0f0e253db] 2024-10-07 15:04:05 +0530
Branch: REL_15_STABLE [8175a7d11] 2024-10-07 14:53:18 +0530
Branch: REL_14_STABLE [efe706e27] 2024-10-07 14:45:39 +0530
Branch: master [d759c1a0b] 2024-10-08 12:25:52 +0530
Branch: REL_17_STABLE [c4b8a916f] 2024-10-08 12:13:28 +0530
Branch: REL_16_STABLE [0c40d9019] 2024-10-08 12:01:35 +0530
Branch: REL_15_STABLE [5ce0dcc99] 2024-10-08 11:45:58 +0530
Branch: REL_14_STABLE [581092c90] 2024-10-08 11:30:26 +0530
-->
     <para>
      Avoid <quote>unexpected table_index_fetch_tuple call during logical
      decoding</quote> error while decoding a transaction involving
      insertion of a column default value (Takeshi Ideriha, Hou Zhijie)
      <ulink url="&commit_baseurl;efe706e27">&sect;</ulink>
      <ulink url="&commit_baseurl;581092c90">&sect;</ulink>
     </para>
    </listitem>

    <listitem>
<!--
Author: Masahiko Sawada <msawada@postgresql.org>
Branch: master [1b9b6cc34] 2024-10-16 12:08:05 -0700
Branch: REL_17_STABLE [eef9cc4dc] 2024-10-16 12:08:02 -0700
Branch: REL_16_STABLE [05e982cdc] 2024-10-16 12:08:00 -0700
Branch: REL_15_STABLE [4a675f318] 2024-10-16 12:07:58 -0700
Branch: REL_14_STABLE [5c1ed0a51] 2024-10-16 12:07:55 -0700
Branch: REL_13_STABLE [cb988b04d] 2024-10-16 12:07:52 -0700
Branch: REL_12_STABLE [53fa68b3b] 2024-10-16 12:07:50 -0700
-->
     <para>
      Reduce memory consumption of logical decoding (Masahiko Sawada)
      <ulink url="&commit_baseurl;5c1ed0a51">&sect;</ulink>
     </para>

     <para>
      Use a smaller default block size to store tuple data received during
      logical replication.  This reduces memory wastage, which has been
      reported to be severe while processing long-running transactions,
      even leading to out-of-memory failures.
     </para>
    </listitem>

    <listitem>
<!--
Author: Daniel Gustafsson <dgustafsson@postgresql.org>
Branch: master [4fdb6558c] 2024-08-19 12:55:11 +0200
Branch: REL_17_STABLE Release: REL_17_0 [19021d28c] 2024-08-19 12:55:11 +0200
Branch: REL_16_STABLE [9333174af] 2024-08-19 12:55:11 +0200
Branch: REL_15_STABLE [23c200940] 2024-08-19 12:55:11 +0200
Branch: REL_14_STABLE [8cea8c023] 2024-08-19 12:55:11 +0200
Branch: REL_13_STABLE [f925b7f65] 2024-08-19 12:55:11 +0200
Branch: REL_12_STABLE [cd98a142c] 2024-08-19 12:55:11 +0200
-->
     <para>
      Re-disable sending of stateless (TLSv1.2) session tickets
      (Daniel Gustafsson)
      <ulink url="&commit_baseurl;8cea8c023">&sect;</ulink>
     </para>

     <para>
      A previous change to prevent sending of stateful (TLSv1.3) session
      tickets accidentally re-enabled sending of stateless ones.  Thus,
      while we intended to prevent clients from thinking that TLS session
      resumption is supported, some still did.
     </para>
    </listitem>

    <listitem>
<!--
Author: Tomas Vondra <tomas.vondra@postgresql.org>
Branch: master [0f92b230f] 2024-08-19 00:04:48 +0200
Branch: REL_17_STABLE Release: REL_17_0 [d1da80115] 2024-08-19 00:05:23 +0200
Branch: REL_16_STABLE [545794515] 2024-08-19 00:05:42 +0200
Branch: REL_15_STABLE [df9c5fb58] 2024-08-19 00:06:03 +0200
Branch: REL_14_STABLE [b3bb1e24b] 2024-08-19 00:06:23 +0200
Branch: REL_13_STABLE [33c615f76] 2024-08-19 00:07:04 +0200
Branch: REL_12_STABLE [f18d3e47f] 2024-08-19 00:07:20 +0200
Branch: master [5cb902e9d] 2024-08-19 13:31:51 +0200
Branch: REL_17_STABLE Release: REL_17_0 [de8770b47] 2024-08-19 13:43:27 +0200
Branch: REL_16_STABLE [f6991cafa] 2024-08-19 13:43:43 +0200
Branch: REL_15_STABLE [e498d22e2] 2024-08-19 14:00:50 +0200
Branch: REL_14_STABLE [3acbe198e] 2024-08-19 13:47:07 +0200
Branch: REL_13_STABLE [4e7531fda] 2024-08-19 13:49:23 +0200
Branch: REL_12_STABLE [9d42627bc] 2024-08-19 13:49:36 +0200
-->
     <para>
      Avoid <quote>wrong tuple length</quote> failure when dropping a
      database with many ACL (permission) entries (Ayush Tiwari)
      <ulink url="&commit_baseurl;b3bb1e24b">&sect;</ulink>
      <ulink url="&commit_baseurl;3acbe198e">&sect;</ulink>
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [364de74cf] 2024-08-10 15:51:30 -0400
Branch: REL_17_STABLE Release: REL_17_0 [2b8d33f66] 2024-08-10 15:51:28 -0400
Branch: REL_16_STABLE [f3ab5d3a2] 2024-08-10 15:51:28 -0400
Branch: REL_15_STABLE [2f4e895be] 2024-08-10 15:51:28 -0400
Branch: REL_14_STABLE [546a26b3d] 2024-08-10 15:51:28 -0400
Branch: REL_13_STABLE [adf9808fa] 2024-08-10 15:51:28 -0400
Branch: REL_12_STABLE [adc28d01e] 2024-08-10 15:51:28 -0400
-->
     <para>
      Allow adjusting the <varname>session_authorization</varname>
      and <varname>role</varname> settings in parallel workers (Tom Lane)
      <ulink url="&commit_baseurl;546a26b3d">&sect;</ulink>
     </para>

     <para>
      Our code intends to allow modifiable server settings to be set by
      function <literal>SET</literal> clauses, but not otherwise within a
      parallel worker.  <literal>SET</literal> clauses failed for these
      two settings, though.
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [c96de42c4] 2024-10-16 17:36:40 -0400
Branch: REL_17_STABLE [b5eef7539] 2024-10-16 17:36:29 -0400
Branch: REL_16_STABLE [25d639eea] 2024-10-16 17:36:29 -0400
Branch: REL_15_STABLE [b35231989] 2024-10-16 17:36:29 -0400
Branch: REL_14_STABLE [ab13c46ff] 2024-10-16 17:36:30 -0400
Branch: REL_13_STABLE [0d83ced3c] 2024-10-16 17:36:30 -0400
Branch: REL_12_STABLE [cf1443d67] 2024-10-16 17:36:30 -0400
-->
     <para>
      Fix behavior of stable functions called from
      a <command>CALL</command> statement's argument list, when
      the <command>CALL</command> is within a
      PL/pgSQL <literal>EXCEPTION</literal> block (Tom Lane)
      <ulink url="&commit_baseurl;ab13c46ff">&sect;</ulink>
     </para>

     <para>
      As with a similar fix in our previous quarterly releases, this case
      allowed such functions to be passed the wrong snapshot, causing them
      to see stale values of rows modified since the start of the outer
      transaction.
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [8d148bb8b] 2024-08-07 12:54:39 -0400
Branch: REL_17_STABLE Release: REL_17_0 [0dd33a6fc] 2024-08-07 12:54:39 -0400
Branch: REL_16_STABLE [a073835c1] 2024-08-07 12:54:39 -0400
Branch: REL_15_STABLE [de3520701] 2024-08-07 12:54:39 -0400
Branch: REL_14_STABLE [7f875fb5b] 2024-08-07 12:54:39 -0400
-->
     <para>
      Fix <quote>cache lookup failed for function</quote> errors in edge
      cases in PL/pgSQL's <command>CALL</command> (Tom Lane)
      <ulink url="&commit_baseurl;7f875fb5b">&sect;</ulink>
     </para>
    </listitem>

    <listitem>
<!--
Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
Branch: master [2676040df] 2024-08-07 10:43:52 +0300
Branch: REL_17_STABLE Release: REL_17_0 [ffac8ac48] 2024-08-07 10:44:00 +0300
Branch: REL_16_STABLE [0583863e9] 2024-08-07 10:44:05 +0300
Branch: REL_15_STABLE [a38f5f880] 2024-08-07 10:44:10 +0300
Branch: REL_14_STABLE [7696b2ea5] 2024-08-07 10:44:16 +0300
-->
     <para>
      Fix thread safety of our fallback (non-OpenSSL) MD5 implementation
      on big-endian hardware (Heikki Linnakangas)
      <ulink url="&commit_baseurl;7696b2ea5">&sect;</ulink>
     </para>

     <para>
      Thread safety is not currently a concern in the server, but it is
      for libpq.
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [920d51979] 2024-10-02 17:30:36 -0400
Branch: REL_17_STABLE [c7a201053] 2024-10-02 17:30:36 -0400
Branch: REL_16_STABLE [65f431aff] 2024-10-02 17:30:36 -0400
Branch: REL_15_STABLE [bb8c89dbc] 2024-10-02 17:30:36 -0400
Branch: REL_14_STABLE [e7af9b52f] 2024-10-02 17:30:36 -0400
Branch: REL_13_STABLE [2120eda94] 2024-10-02 17:30:36 -0400
Branch: REL_12_STABLE [47d8a15de] 2024-10-02 17:30:36 -0400
-->
     <para>
      Parse <application>libpq</application>'s <literal>keepalives</literal>
      connection option in the same way as other integer-valued options
      (Yuto Sasaki)
      <ulink url="&commit_baseurl;e7af9b52f">&sect;</ulink>
     </para>

     <para>
      The coding used here rejected trailing whitespace in the option
      value, unlike other cases.  This turns out to be problematic
      in <application>ecpg</application>'s usage, for example.
     </para>
    </listitem>

    <listitem>
<!--
Author: Peter Eisentraut <peter@eisentraut.org>
Branch: master [5388216f6] 2024-08-07 09:21:07 +0200
Branch: REL_17_STABLE Release: REL_17_0 [e9e05c655] 2024-08-08 07:41:02 +0200
Branch: REL_16_STABLE [ee2997c67] 2024-08-08 07:42:21 +0200
Branch: REL_15_STABLE [2de129b35] 2024-08-08 07:42:31 +0200
Branch: REL_14_STABLE [355718553] 2024-08-08 07:42:44 +0200
Branch: REL_13_STABLE [f0096ef13] 2024-08-08 07:42:46 +0200
-->
     <para>
      Avoid use of <function>pnstrdup()</function>
      in <application>ecpglib</application> (Jacob Champion)
      <ulink url="&commit_baseurl;355718553">&sect;</ulink>
     </para>

     <para>
      That function will call <function>exit()</function> on
      out-of-memory, which is undesirable in a library.  The calling code
      already handles allocation failures properly.
     </para>
    </listitem>

    <listitem>
<!--
Author: Michael Paquier <michael@paquier.xyz>
Branch: master [a0bff38d1] 2024-10-23 08:33:54 +0900
Branch: REL_17_STABLE [2c37cb26f] 2024-10-23 08:35:00 +0900
Branch: REL_16_STABLE [a1e613b81] 2024-10-23 08:35:02 +0900
Branch: REL_15_STABLE [335501fb2] 2024-10-23 08:35:04 +0900
Branch: REL_14_STABLE [9a51d4af1] 2024-10-23 08:35:05 +0900
Branch: REL_13_STABLE [fcafbaadf] 2024-10-23 08:35:07 +0900
Branch: REL_12_STABLE [9ecfd8a48] 2024-10-23 08:35:08 +0900
-->
     <para>
      In <application>ecpglib</application>, fix out-of-bounds read when
      parsing incorrect datetime input (Bruce Momjian, Pavel Nekrasov)
      <ulink url="&commit_baseurl;9a51d4af1">&sect;</ulink>
     </para>

     <para>
      It was possible to try to read the location just before the start of
      a constant array.  Real-world consequences seem minimal, though.
     </para>
    </listitem>

    <listitem>
<!--
Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
Branch: master [49dc191bd] 2024-08-08 10:20:25 +0300
Branch: REL_17_STABLE Release: REL_17_0 [a7bf3e668] 2024-08-08 10:21:12 +0300
Branch: REL_16_STABLE [e8240dbd8] 2024-08-08 10:22:49 +0300
Branch: REL_15_STABLE [b5a5027c9] 2024-08-08 10:22:45 +0300
Branch: REL_14_STABLE [bb5592cac] 2024-08-08 10:22:39 +0300
Branch: REL_13_STABLE [c943e2aae] 2024-08-08 10:22:30 +0300
Branch: REL_12_STABLE [8b86e289f] 2024-08-08 10:22:04 +0300
-->
     <para>
      Include the source timeline history
      in <application>pg_rewind</application>'s debug output
      (Heikki Linnakangas)
      <ulink url="&commit_baseurl;bb5592cac">&sect;</ulink>
     </para>

     <para>
      This was the intention to begin with, but a coding error caused the
      source history to always print as empty.
     </para>
    </listitem>

    <listitem>
<!--
Author: Andrew Dunstan <andrew@dunslane.net>
Branch: REL_15_STABLE [b9d4a927d] 2024-11-08 09:30:09 +1030
Branch: REL_14_STABLE [02a4ec478] 2024-11-08 09:36:10 +1030
Branch: REL_13_STABLE [fa56aa23f] 2024-11-08 09:45:40 +1030
Branch: REL_15_STABLE [f95ad555d] 2024-11-08 09:29:40 +1030
Branch: REL_14_STABLE [ca9921936] 2024-11-08 09:36:53 +1030
Branch: REL_15_STABLE [f2a4a137b] 2024-11-08 09:29:15 +1030
Branch: REL_14_STABLE [8a5e4982f] 2024-11-08 09:36:40 +1030
Branch: REL_13_STABLE [bb509a464] 2024-11-08 09:46:39 +1030
Branch: REL_15_STABLE [b73c1496d] 2024-11-08 09:27:25 +1030
Branch: REL_14_STABLE [895f23d9e] 2024-11-08 09:36:27 +1030
Branch: REL_13_STABLE [ee219102d] 2024-11-08 09:45:58 +1030
Branch: REL_14_STABLE [ce14dbbca] 2024-11-08 09:35:45 +1030
Branch: REL_13_STABLE [5c0b7581b] 2024-11-08 09:45:22 +1030
Branch: REL_14_STABLE [1bf47d897] 2024-11-08 09:34:00 +1030
Branch: REL_13_STABLE [56b39cce7] 2024-11-08 09:44:46 +1030
Branch: REL_13_STABLE [b4363fc66] 2024-11-08 09:44:01 +1030
Branch: REL_13_STABLE [a5abacecb] 2024-11-08 09:42:21 +1030
Branch: REL_13_STABLE [f1cf64167] 2024-11-08 09:41:47 +1030
Branch: REL_13_STABLE [a9beed676] 2024-11-08 09:40:48 +1030
-->
     <para>
      Fix misbehavior with junction points on Windows, particularly
      in <application>pg_rewind</application> (Alexandra Wang)
      <ulink url="&commit_baseurl;02a4ec478">&sect;</ulink>
      <ulink url="&commit_baseurl;ca9921936">&sect;</ulink>
      <ulink url="&commit_baseurl;8a5e4982f">&sect;</ulink>
      <ulink url="&commit_baseurl;895f23d9e">&sect;</ulink>
      <ulink url="&commit_baseurl;ce14dbbca">&sect;</ulink>
      <ulink url="&commit_baseurl;1bf47d897">&sect;</ulink>
     </para>

     <para>
      This entailed back-patching previous fixes by Thomas Munro, Peter
      Eisentraut, Alexander Lakhin, and Juan José Santamaría Flecha.
      Those changes were originally not back-patched out of caution, but
      they have been in use in later branches for long enough to deem
      them safe.
     </para>
    </listitem>

    <listitem>
<!--
Author: Michael Paquier <michael@paquier.xyz>
Branch: master [1ab67c9df] 2024-09-25 14:43:16 +0900
Branch: REL_17_STABLE [85cb21df6] 2024-09-25 14:44:50 +0900
Branch: REL_16_STABLE [1ea4d9c00] 2024-09-25 14:44:53 +0900
Branch: REL_15_STABLE [74eaa0544] 2024-09-25 14:44:56 +0900
Branch: REL_14_STABLE [60c618216] 2024-09-25 14:44:57 +0900
Branch: REL_13_STABLE [9db4598c9] 2024-09-25 14:44:59 +0900
Branch: REL_12_STABLE [ef57a7135] 2024-09-25 14:45:01 +0900
Author: Fujii Masao <fujii@postgresql.org>
Branch: master [20cfec896] 2024-09-30 11:13:55 +0900
Branch: REL_17_STABLE [77f154681] 2024-09-30 11:15:56 +0900
Branch: REL_16_STABLE [653ce5b8b] 2024-09-30 11:16:15 +0900
Branch: REL_15_STABLE [92cc21d15] 2024-09-30 11:16:21 +0900
Branch: REL_14_STABLE [88e1153cb] 2024-09-30 11:16:27 +0900
Branch: REL_13_STABLE [9410f7cbf] 2024-09-30 11:17:23 +0900
Author: Nathan Bossart <nathan@postgresql.org>
Branch: master [8318f2b17] 2024-10-07 16:49:20 -0500
Branch: REL_17_STABLE [5bd26e652] 2024-10-07 16:49:20 -0500
Branch: REL_16_STABLE [eba8cc1af] 2024-10-07 16:49:20 -0500
Branch: REL_15_STABLE [6d047c6a9] 2024-10-07 16:49:20 -0500
Branch: REL_14_STABLE [ce6f27857] 2024-10-07 16:49:20 -0500
Branch: REL_13_STABLE [d4ade0baf] 2024-10-07 16:49:20 -0500
Branch: REL_12_STABLE [5e0431c32] 2024-10-07 16:49:20 -0500
-->
     <para>
      Avoid trying to reindex temporary tables and indexes
      in <application>vacuumdb</application> and in
      parallel <application>reindexdb</application> (VaibhaveS, Michael
      Paquier, Fujii Masao, Nathan Bossart)
      <ulink url="&commit_baseurl;60c618216">&sect;</ulink>
      <ulink url="&commit_baseurl;88e1153cb">&sect;</ulink>
      <ulink url="&commit_baseurl;ce6f27857">&sect;</ulink>
     </para>

     <para>
      Reindexing other sessions' temporary tables cannot work, but the
      check to skip them was missing in some code paths, leading to
      unwanted failures.
     </para>
    </listitem>

    <listitem>
<!--
Author: Nathan Bossart <nathan@postgresql.org>
Branch: master [05036a315] 2024-09-12 16:31:29 -0500
Branch: REL_17_STABLE Release: REL_17_0 [6ea7f04b7] 2024-09-12 16:31:29 -0500
Branch: REL_16_STABLE [2bd4c06bb] 2024-09-12 16:31:29 -0500
Branch: REL_15_STABLE [e03042a70] 2024-09-12 16:31:29 -0500
Branch: REL_14_STABLE [8a94af8a2] 2024-09-12 16:31:29 -0500
Branch: REL_13_STABLE [ca902529c] 2024-09-12 16:31:29 -0500
Branch: REL_12_STABLE [dd5670fa5] 2024-09-12 16:31:29 -0500
Branch: master [70d1c664f] 2024-09-13 10:16:40 -0500
Branch: REL_17_STABLE Release: REL_17_0 [9b3c3c0fc] 2024-09-13 10:16:40 -0500
Branch: REL_16_STABLE [0938a4ecd] 2024-09-13 10:16:40 -0500
Branch: REL_15_STABLE [a63aef5e4] 2024-09-13 10:16:40 -0500
Branch: REL_14_STABLE [0970889e3] 2024-09-13 10:16:40 -0500
Branch: REL_13_STABLE [ef46a73f6] 2024-09-13 10:16:40 -0500
Branch: REL_12_STABLE [e0277d90a] 2024-09-13 10:16:40 -0500
-->
     <para>
      Allow inspection of sequence relations in relevant functions
      of <filename>contrib/pageinspect</filename>
      and <filename>contrib/pgstattuple</filename> (Nathan Bossart, Ayush
      Vatsa)
      <ulink url="&commit_baseurl;8a94af8a2">&sect;</ulink>
      <ulink url="&commit_baseurl;0970889e3">&sect;</ulink>
     </para>

     <para>
      This had been allowed in the past, but it got broken during the
      introduction of non-default access methods for tables.
     </para>
    </listitem>

    <listitem>
<!--
Author: Thomas Munro <tmunro@postgresql.org>
Branch: master [9044fc1d4] 2024-11-06 23:17:18 +1300
Branch: REL_17_STABLE [b7467ab71] 2024-11-06 23:07:34 +1300
Branch: REL_16_STABLE [ee67b73f5] 2024-11-06 23:09:03 +1300
Branch: REL_15_STABLE [19bf81c06] 2024-11-06 23:09:28 +1300
Branch: REL_14_STABLE [0b022ddf3] 2024-11-06 23:09:50 +1300
Branch: REL_13_STABLE [e88d824a4] 2024-11-06 23:10:05 +1300
Branch: REL_12_STABLE [50c1453a3] 2024-11-06 23:10:20 +1300
-->
     <para>
      Fix incorrect LLVM-generated code on ARM64 platforms (Thomas
      Munro, Anthonin Bonnefoy)
      <ulink url="&commit_baseurl;0b022ddf3">&sect;</ulink>
     </para>

     <para>
      When using JIT compilation on ARM platforms, the generated code
      could not support relocation distances exceeding 32 bits, allowing
      unlucky placement of generated code to cause server crashes on
      large-memory systems.
     </para>
    </listitem>

    <listitem>
<!--
Author: Nathan Bossart <nathan@postgresql.org>
Branch: master [5d6187d2a] 2024-10-07 13:51:03 -0500
Branch: REL_17_STABLE [a356d23fd] 2024-10-07 13:51:03 -0500
Branch: REL_16_STABLE [8aaf88b63] 2024-10-07 13:51:03 -0500
Branch: REL_15_STABLE [01731eeea] 2024-10-07 13:51:03 -0500
Branch: REL_14_STABLE [5cea7168d] 2024-10-07 13:51:03 -0500
Branch: REL_13_STABLE [b255493ae] 2024-10-07 13:51:03 -0500
Branch: REL_12_STABLE [c91d0af0a] 2024-10-07 13:51:03 -0500
-->
     <para>
      Fix a few places that assumed that process start time (represented
      as a <type>time_t</type>) will fit into a <type>long</type> value
      (Max Johnson, Nathan Bossart)
      <ulink url="&commit_baseurl;5cea7168d">&sect;</ulink>
     </para>

     <para>
      On platforms where <type>long</type> is 32 bits (notably Windows),
      this coding would fail after Y2038.  Most of the failures appear
      only cosmetic, but notably <literal>pg_ctl start</literal> would
      hang.
     </para>
    </listitem>

    <listitem>
<!--
Author: Noah Misch <noah@leadboat.com>
Branch: REL_14_STABLE [ecf7c4846] 2024-08-07 11:43:34 -0700
Branch: REL_13_STABLE [382909b63] 2024-08-07 11:43:40 -0700
Branch: REL_12_STABLE [646b16bca] 2024-08-07 11:43:45 -0700
-->
     <para>
      Prevent <quote>nothing provides
      perl(PostgreSQL::Test::Utils)</quote> failures while building RPM
      packages of <productname>PostgreSQL</productname> (Noah Misch)
      <ulink url="&commit_baseurl;ecf7c4846">&sect;</ulink>
     </para>
    </listitem>

    <listitem>
<!--
Author: Andrew Dunstan <andrew@dunslane.net>
Branch: master [bc46104fc] 2024-09-14 08:47:06 -0400
Branch: REL_17_STABLE Release: REL_17_0 [648397b1d] 2024-09-14 08:48:04 -0400
Branch: REL_16_STABLE [0a0db4631] 2024-09-14 08:50:44 -0400
Branch: REL_15_STABLE [17c35ab23] 2024-09-14 09:17:51 -0400
Branch: REL_14_STABLE [9f7749464] 2024-09-14 09:19:04 -0400
Branch: REL_13_STABLE [f40d9e9f1] 2024-09-14 09:19:53 -0400
Branch: REL_12_STABLE [d94e3b33e] 2024-09-14 09:20:12 -0400
-->
     <para>
      Fix building with Strawberry Perl on Windows (Andrew Dunstan)
      <ulink url="&commit_baseurl;9f7749464">&sect;</ulink>
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [502e7bf7f] 2024-10-29 11:49:38 -0400
Branch: REL_17_STABLE [cad65907e] 2024-10-29 11:49:50 -0400
Branch: REL_16_STABLE [a0c8d600b] 2024-10-29 11:49:56 -0400
Branch: REL_15_STABLE [74f70cb86] 2024-10-29 11:50:00 -0400
Branch: REL_14_STABLE [dedced73e] 2024-10-29 11:50:05 -0400
Branch: REL_13_STABLE [8a8486175] 2024-10-29 11:50:10 -0400
Branch: REL_12_STABLE [8f1759c9b] 2024-10-29 11:50:14 -0400
Branch: master [b8ea0f675] 2024-09-14 17:55:02 -0400
Branch: REL_17_STABLE Release: REL_17_0 [6283ff201] 2024-09-14 17:55:02 -0400
Branch: REL_16_STABLE [2abc88958] 2024-09-14 17:55:03 -0400
Branch: REL_15_STABLE [2b94ee58b] 2024-09-14 17:55:03 -0400
Branch: REL_14_STABLE [b27622c90] 2024-09-14 17:55:03 -0400
Branch: REL_13_STABLE [b28b9b19b] 2024-09-14 17:55:03 -0400
Branch: REL_12_STABLE [205813da4] 2024-09-14 17:55:03 -0400
-->
     <para>
      Update time zone data files to <application>tzdata</application>
      release 2024b (Tom Lane)
      <ulink url="&commit_baseurl;dedced73e">&sect;</ulink>
      <ulink url="&commit_baseurl;b27622c90">&sect;</ulink>
     </para>

     <para>
      This <application>tzdata</application> release changes the old
      System-V-compatibility zone names to duplicate the corresponding
      geographic zones; for example <literal>PST8PDT</literal> is now an
      alias for <literal>America/Los_Angeles</literal>.  The main visible
      consequence is that for timestamps before the introduction of
      standardized time zones, the zone is considered to represent local
      mean solar time for the named location.  For example,
      in <literal>PST8PDT</literal>, <type>timestamptz</type> input such
      as <literal>1801-01-01 00:00</literal> would previously have been
      rendered as <literal>1801-01-01 00:00:00-08</literal>, but now it is
      rendered as <literal>1801-01-01 00:00:00-07:52:58</literal>.
     </para>

     <para>
      Also, historical corrections for Mexico, Mongolia, and Portugal.
      Notably, <literal>Asia/Choibalsan</literal> is now an alias
      for <literal>Asia/Ulaanbaatar</literal> rather than being a separate
      zone, mainly because the differences between those zones were found to
      be based on untrustworthy data.
     </para>
    </listitem>

   </itemizedlist>

  </sect2>
 </sect1>

 <sect1 id="release-14-13">
  <title>Release 14.13</title>

  <formalpara>
  <title>Release date:</title>
  <para>2024-08-08</para>
  </formalpara>

  <para>
   This release contains a variety of fixes from 14.12.
   For information about new features in major release 14, see
   <xref linkend="release-14"/>.
  </para>

  <sect2>
   <title>Migration to Version 14.13</title>

   <para>
    A dump/restore is not required for those running 14.X.
   </para>

   <para>
    However, if you are upgrading from a version earlier than 14.12,
    see <xref linkend="release-14-12"/>.
   </para>
  </sect2>

  <sect2>
   <title>Changes</title>

   <itemizedlist>

    <listitem>
<!--
Author: Masahiko Sawada <msawada@postgresql.org>
Branch: master [66e94448a] 2024-08-05 06:05:33 -0700
Branch: REL_17_STABLE [fdf218f1d] 2024-08-05 06:05:30 -0700
Branch: REL_16_STABLE [6aba85a4b] 2024-08-05 06:05:28 -0700
Branch: REL_15_STABLE [e81e53a0c] 2024-08-05 06:05:25 -0700
Branch: REL_14_STABLE [72ef1675e] 2024-08-05 06:05:23 -0700
Branch: REL_13_STABLE [bbc94abf6] 2024-08-05 06:05:20 -0700
Branch: REL_12_STABLE [79c7a7e29] 2024-08-05 06:05:17 -0700
-->
     <para>
      Prevent unauthorized code execution
      during <application>pg_dump</application> (Masahiko Sawada)
      <ulink url="&commit_baseurl;72ef1675e">&sect;</ulink>
     </para>

     <para>
      An attacker able to create and drop non-temporary objects could
      inject SQL code that would be executed by a
      concurrent <application>pg_dump</application> session with the
      privileges of the role running <application>pg_dump</application>
      (which is often a superuser).  The attack involves replacing a
      sequence or similar object with a view or foreign table that will
      execute malicious code.  To prevent this, introduce a new server
      parameter <varname>restrict_nonsystem_relation_kind</varname> that
      can disable expansion of non-builtin views as well as access to
      foreign tables, and teach <application>pg_dump</application> to set
      it when available.  Note that the attack is prevented only if
      both <application>pg_dump</application> and the server it is dumping
      from are new enough to have this fix.
     </para>

     <para>
      The <productname>PostgreSQL</productname> Project thanks
      Noah Misch for reporting this problem.
      (CVE-2024-7348)
     </para>
    </listitem>

    <listitem>
<!--
Author: Melanie Plageman <melanieplageman@gmail.com>
Branch: master [83c39a1f7] 2024-07-19 12:04:00 -0400
Branch: REL_17_STABLE [fd4f12df5] 2024-07-19 12:12:03 -0400
Branch: REL_16_STABLE [06bf404cd] 2024-07-19 12:11:41 -0400
Branch: REL_15_STABLE [dc6354c67] 2024-07-19 12:05:51 -0400
Branch: REL_14_STABLE [45ce054c0] 2024-07-19 12:07:53 -0400
-->
     <para>
      Prevent infinite loop in <command>VACUUM</command>
      (Melanie Plageman)
      <ulink url="&commit_baseurl;45ce054c0">&sect;</ulink>
     </para>

     <para>
      After a disconnected standby server with an old running transaction
      reconnected to the primary, it was possible
      for <command>VACUUM</command> on the primary to get confused about
      which tuples are removable, resulting in an infinite loop.
     </para>
    </listitem>

    <listitem>
<!--
Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
Branch: master [3dd637f3d] 2024-07-24 12:38:18 +0200
Branch: REL_17_STABLE [2b22543a4] 2024-07-24 12:38:18 +0200
Branch: REL_16_STABLE [084814d88] 2024-07-24 12:38:18 +0200
Branch: REL_15_STABLE [f74fac06c] 2024-07-24 12:38:18 +0200
Branch: REL_14_STABLE [fe1d16f66] 2024-07-24 12:38:18 +0200
Branch: REL_13_STABLE [ed7430975] 2024-07-24 12:38:18 +0200
Branch: REL_12_STABLE [08b6a9ecf] 2024-07-24 12:38:18 +0200
-->
     <para>
      Fix failure after attaching a table as a partition, if the
      table had previously had inheritance children
      (&Aacute;lvaro Herrera)
      <ulink url="&commit_baseurl;fe1d16f66">&sect;</ulink>
     </para>
    </listitem>

    <listitem>
<!--
Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
Branch: master [839177913] 2024-07-12 12:54:01 +0200
Branch: REL_17_STABLE [30ca4e1ab] 2024-07-12 12:54:01 +0200
Branch: REL_16_STABLE [00a40e33c] 2024-07-12 12:54:01 +0200
Branch: REL_15_STABLE [4ae09c59d] 2024-07-12 12:54:01 +0200
Branch: REL_14_STABLE [66aaa7a71] 2024-07-12 12:54:01 +0200
Branch: REL_13_STABLE [057482569] 2024-07-12 12:54:01 +0200
Branch: REL_12_STABLE [d0054432d] 2024-07-12 12:54:01 +0200
Branch: master [74e12db19] 2024-07-12 13:44:19 +0200
Branch: REL_17_STABLE [0340eefd9] 2024-07-12 13:44:19 +0200
Branch: REL_16_STABLE [34eb37f79] 2024-07-12 13:44:19 +0200
Branch: REL_15_STABLE [9f0f72d89] 2024-07-12 13:44:19 +0200
Branch: REL_14_STABLE [2f5007459] 2024-07-12 13:44:19 +0200
Branch: REL_13_STABLE [7898a494f] 2024-07-12 13:44:19 +0200
Branch: REL_12_STABLE [067cb6c5d] 2024-07-12 13:44:19 +0200
-->
     <para>
      Fix <command>ALTER TABLE DETACH PARTITION</command> for cases
      involving inconsistent index-based constraints
      (&Aacute;lvaro Herrera, Tender Wang)
      <ulink url="&commit_baseurl;66aaa7a71">&sect;</ulink>
      <ulink url="&commit_baseurl;2f5007459">&sect;</ulink>
     </para>

     <para>
      When a partitioned table has an index that is not associated with a
      constraint, but a partition has an equivalent index that is, then
      detaching the partition would misbehave, leaving the ex-partition's
      constraint with an incorrect <structfield>coninhcount</structfield>
      value.  This would cause trouble during any further manipulations of
      that constraint.
     </para>
    </listitem>

    <listitem>
<!--
Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
Branch: master Release: REL_17_BR [27162a64b] 2024-06-24 15:56:32 +0200
Branch: REL_16_STABLE [96105ebfe] 2024-06-24 15:56:32 +0200
Branch: REL_15_STABLE [fb0fb0740] 2024-06-24 15:56:32 +0200
Branch: REL_14_STABLE [66e569f50] 2024-06-24 15:56:32 +0200
Branch: master Release: REL_17_BR [c2fab7024] 2024-06-11 11:38:45 +0200
Branch: REL_16_STABLE [bf78abebf] 2024-06-11 11:38:45 +0200
Branch: REL_15_STABLE [03c8cdbb7] 2024-06-11 11:38:45 +0200
Branch: REL_14_STABLE [5dcaefc6a] 2024-06-11 11:38:45 +0200
-->
     <para>
      Fix partition pruning setup during <literal>ALTER TABLE DETACH
      PARTITION CONCURRENTLY</literal> (&Aacute;lvaro Herrera)
      <ulink url="&commit_baseurl;66e569f50">&sect;</ulink>
      <ulink url="&commit_baseurl;5dcaefc6a">&sect;</ulink>
     </para>

     <para>
      The executor assumed that no partition could be detached between
      planning and execution of a query on a partitioned table.  This is
      no longer true since the introduction of <literal>DETACH
      PARTITION</literal>'s <literal>CONCURRENTLY</literal> option, making
      it possible for query execution to fail transiently when that is
      used.
     </para>
    </listitem>

    <listitem>
<!--
Author: Noah Misch <noah@leadboat.com>
Branch: master [710207032] 2024-07-13 08:09:33 -0700
Branch: REL_17_STABLE [f5bb46fb2] 2024-07-13 08:09:36 -0700
Branch: REL_16_STABLE [e81deeefc] 2024-07-13 08:09:37 -0700
Branch: REL_15_STABLE [2b4a2a79e] 2024-07-13 08:09:37 -0700
Branch: REL_14_STABLE [2b415e95a] 2024-07-13 08:09:37 -0700
-->
     <para>
      Correctly update a partitioned table's
      <structname>pg_class</structname>.<structfield>reltuples</structfield>
      field to zero after its last child partition is dropped (Noah Misch)
      <ulink url="&commit_baseurl;2b415e95a">&sect;</ulink>
     </para>

     <para>
      The first <command>ANALYZE</command> on such a partitioned table
      must update <structfield>relhassubclass</structfield> as well, and
      that caused the <structfield>reltuples</structfield> update to be
      lost.
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master Release: REL_17_BR [f535f350c] 2024-05-14 20:19:20 -0400
Branch: REL_16_STABLE [8e0e99972] 2024-05-14 20:19:20 -0400
Branch: REL_15_STABLE [c40e78d23] 2024-05-14 20:19:20 -0400
Branch: REL_14_STABLE [525bd1620] 2024-05-14 20:19:20 -0400
Branch: REL_13_STABLE [e85f641b2] 2024-05-14 20:19:20 -0400
Branch: REL_12_STABLE [70ffb27b2] 2024-05-14 20:19:20 -0400
Branch: master Release: REL_17_BR [751598263] 2024-06-06 15:16:56 -0400
Branch: REL_16_STABLE [bb331af4a] 2024-06-06 15:16:56 -0400
Branch: REL_15_STABLE [5fe43d41d] 2024-06-06 15:16:56 -0400
Branch: REL_14_STABLE [d88dcdf0f] 2024-06-06 15:16:56 -0400
Branch: REL_13_STABLE [9de0ff91a] 2024-06-06 15:16:56 -0400
Branch: REL_12_STABLE [4208f44c9] 2024-06-06 15:16:56 -0400
-->
     <para>
      Fix handling of polymorphic output arguments for procedures
      (Tom Lane)
      <ulink url="&commit_baseurl;525bd1620">&sect;</ulink>
      <ulink url="&commit_baseurl;d88dcdf0f">&sect;</ulink>
     </para>

     <para>
      The SQL <command>CALL</command> statement did not resolve the
      correct data types for such arguments, leading to errors such
      as <quote>cannot display a value of type anyelement</quote>, or even
      outright crashes.  (But <command>CALL</command>
      in <application>PL/pgSQL</application> worked correctly.)
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master Release: REL_17_BR [2dc1deaea] 2024-06-07 13:27:26 -0400
Branch: REL_16_STABLE [0d18b8eb4] 2024-06-07 13:27:26 -0400
Branch: REL_15_STABLE [a160e9277] 2024-06-07 13:27:26 -0400
Branch: REL_14_STABLE [0f7d1338c] 2024-06-07 13:27:26 -0400
Branch: REL_13_STABLE [1d4ea1376] 2024-06-07 13:27:26 -0400
Branch: REL_12_STABLE [0be81dd71] 2024-06-07 13:27:26 -0400
-->
     <para>
      Fix behavior of stable functions called from
      a <command>CALL</command> statement's argument list (Tom Lane)
      <ulink url="&commit_baseurl;0f7d1338c">&sect;</ulink>
     </para>

     <para>
      If the <command>CALL</command> is within an atomic context
      (e.g. there's an outer transaction block), such functions were
      passed the wrong snapshot, causing them to see stale values of rows
      modified since the start of the outer transaction.
     </para>
    </listitem>

    <listitem>
<!--
Author: Nathan Bossart <nathan@postgresql.org>
Branch: master [22b0ccd65] 2024-07-19 11:52:32 -0500
Branch: REL_17_STABLE [3764ee47f] 2024-07-19 11:52:32 -0500
Branch: REL_16_STABLE [34e9dce69] 2024-07-19 11:52:32 -0500
Branch: REL_15_STABLE [b82791c8f] 2024-07-19 11:52:32 -0500
Branch: REL_14_STABLE [e8dfe0430] 2024-07-19 11:52:32 -0500
Branch: REL_13_STABLE [c5321e965] 2024-07-19 11:52:32 -0500
Branch: REL_12_STABLE [4f9628158] 2024-07-19 11:52:32 -0500
-->
     <para>
      Detect integer overflow in <type>money</type> calculations
      (Joseph Koshakow)
      <ulink url="&commit_baseurl;e8dfe0430">&sect;</ulink>
     </para>

     <para>
      None of the arithmetic functions for the <type>money</type> type
      checked for overflow before, so they would silently give wrong
      answers for overflowing cases.
     </para>
    </listitem>

    <listitem>
<!--
Author: Dean Rasheed <dean.a.rasheed@gmail.com>
Branch: master [1ff39f4ff] 2024-07-08 17:48:45 +0100
Branch: REL_17_STABLE [7a8977d25] 2024-07-08 17:51:23 +0100
Branch: REL_16_STABLE [f7aec8c1d] 2024-07-08 17:52:52 +0100
Branch: REL_15_STABLE [47ca912de] 2024-07-08 17:54:22 +0100
Branch: REL_14_STABLE [a3c0124f6] 2024-07-08 17:55:31 +0100
Branch: REL_13_STABLE [ece296926] 2024-07-08 17:56:51 +0100
Branch: REL_12_STABLE [8badee787] 2024-07-08 17:58:42 +0100
-->
     <para>
      Fix over-aggressive clamping of the scale argument
      in <function>round(numeric)</function>
      and <function>trunc(numeric)</function> (Dean Rasheed)
      <ulink url="&commit_baseurl;a3c0124f6">&sect;</ulink>
     </para>

     <para>
      These functions clamped their scale argument to +/-2000, but there
      are valid use-cases for it to be larger; the functions returned
      incorrect results in such cases.  Instead clamp to the actual
      allowed range of type <type>numeric</type>.
     </para>
    </listitem>

    <listitem>
<!--
Author: Nathan Bossart <nathan@postgresql.org>
Branch: master Release: REL_17_BR [3cb2f13ac] 2024-05-13 15:53:50 -0500
Branch: REL_16_STABLE [c1664c8ee] 2024-05-13 15:54:04 -0500
Branch: REL_15_STABLE [857d280c6] 2024-05-13 15:54:10 -0500
Branch: REL_14_STABLE [c8714230a] 2024-05-13 15:54:14 -0500
Branch: REL_13_STABLE [09ec5d455] 2024-05-13 15:54:18 -0500
Branch: REL_12_STABLE [2812059d3] 2024-05-13 15:54:23 -0500
-->
     <para>
      Prevent <function>pg_sequence_last_value()</function> from failing
      on unlogged sequences on standby servers and on temporary sequences
      of other sessions (Nathan Bossart)
      <ulink url="&commit_baseurl;c8714230a">&sect;</ulink>
     </para>

     <para>
      Make it return NULL in these cases instead of throwing an error.
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master Release: REL_17_BR [56a829621] 2024-06-13 20:35:02 -0400
Branch: REL_16_STABLE [086ecd12b] 2024-06-13 20:35:02 -0400
Branch: REL_15_STABLE [df95c1ec0] 2024-06-13 20:35:03 -0400
Branch: REL_14_STABLE [5912bf77c] 2024-06-13 20:34:43 -0400
Branch: REL_13_STABLE [c7de5a654] 2024-06-13 20:34:43 -0400
Branch: REL_12_STABLE [5e63a6f43] 2024-06-13 20:34:43 -0400
-->
     <para>
      Fix parsing of ignored operators
      in <function>websearch_to_tsquery()</function> (Tom Lane)
      <ulink url="&commit_baseurl;5912bf77c">&sect;</ulink>
     </para>

     <para>
      Per the manual, punctuation in the input
      of <function>websearch_to_tsquery()</function> is ignored except for
      the special cases of dashes and quotes.  However, parentheses and a
      few other characters appearing immediately before
      an <literal>or</literal> could cause <literal>or</literal> to be
      treated as a data word, rather than as an <literal>OR</literal>
      operator as expected.
     </para>
    </listitem>

    <listitem>
<!--
Author: Nathan Bossart <nathan@postgresql.org>
Branch: master [991f8cf8a] 2024-07-23 21:59:02 -0500
Branch: REL_17_STABLE [657e54a05] 2024-07-23 21:59:02 -0500
Branch: REL_16_STABLE [a57d16865] 2024-07-23 21:59:02 -0500
Branch: REL_15_STABLE [547dd2cbd] 2024-07-23 21:59:02 -0500
Branch: REL_14_STABLE [670fb9f18] 2024-07-23 21:59:02 -0500
Branch: REL_13_STABLE [6c1b71bc6] 2024-07-23 21:59:02 -0500
Branch: REL_12_STABLE [878e8c6be] 2024-07-23 21:59:02 -0500
-->
     <para>
      Detect another integer overflow case while computing new array
      dimensions (Joseph Koshakow)
      <ulink url="&commit_baseurl;670fb9f18">&sect;</ulink>
     </para>

     <para>
      Reject applying array
      dimensions <literal>[-2147483648:2147483647]</literal> to an empty
      array.  This is closely related to CVE-2023-5869, but appears
      harmless since the array still ends up empty.
     </para>
    </listitem>

    <listitem>
<!--
Author: Noah Misch <noah@leadboat.com>
Branch: master Release: REL_17_BR [f9f47f0d9] 2024-06-27 19:21:06 -0700
Branch: REL_16_STABLE [e4afd7153] 2024-06-27 19:21:10 -0700
Branch: REL_15_STABLE [b08a4b616] 2024-06-27 19:21:11 -0700
Branch: REL_14_STABLE [af73e37fa] 2024-06-27 19:21:12 -0700
Branch: REL_13_STABLE [7a21306ae] 2024-06-27 19:21:13 -0700
Branch: REL_12_STABLE [11f3815d6] 2024-06-27 19:21:13 -0700
-->
     <para>
      Detect another case of a new catalog cache entry becoming stale
      while detoasting its fields (Noah Misch)
      <ulink url="&commit_baseurl;af73e37fa">&sect;</ulink>
     </para>

     <para>
      An in-place update occurring while we expand out-of-line fields in a
      catalog tuple could be missed, leading to a catalog cache entry that
      lacks the in-place change but is not known to be stale.  This is
      only possible in the <structname>pg_database</structname> catalog,
      so the effects are narrow, but misbehavior is possible.
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [220003b9b] 2024-07-20 13:40:15 -0400
Branch: REL_17_STABLE [041a00c48] 2024-07-20 13:40:15 -0400
Branch: REL_16_STABLE [fd958bbbd] 2024-07-20 13:40:15 -0400
Branch: REL_15_STABLE [96953052a] 2024-07-20 13:40:15 -0400
Branch: REL_14_STABLE [0d712ec12] 2024-07-20 13:40:15 -0400
Branch: REL_13_STABLE [461f47948] 2024-07-20 13:40:15 -0400
Branch: REL_12_STABLE [feca6c688] 2024-07-20 13:40:15 -0400
-->
     <para>
      Correctly check updatability of view columns targeted
      by <literal>INSERT</literal> ... <literal>DEFAULT</literal>
      (Tom Lane)
      <ulink url="&commit_baseurl;0d712ec12">&sect;</ulink>
     </para>

     <para>
      If such a column is non-updatable, we should give an error reporting
      that.  But the check was missed and then later code would report an
      unhelpful error such as <quote>attribute
      number <replaceable>N</replaceable> not found in view
      targetlist</quote>.
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [f96c2c727] 2024-07-14 13:49:46 -0400
Branch: REL_17_STABLE [cf588e10f] 2024-07-14 13:49:46 -0400
Branch: REL_16_STABLE [8fc487614] 2024-07-14 13:49:46 -0400
Branch: REL_15_STABLE [e7f9f44e3] 2024-07-14 13:49:46 -0400
Branch: REL_14_STABLE [02b4f5e1f] 2024-07-14 13:49:46 -0400
Branch: REL_13_STABLE [b020a866a] 2024-07-14 13:49:46 -0400
Branch: REL_12_STABLE [236b225ed] 2024-07-14 13:49:46 -0400
-->
     <para>
      Avoid reporting an unhelpful internal error for incorrect recursive
      queries (Tom Lane)
      <ulink url="&commit_baseurl;02b4f5e1f">&sect;</ulink>
     </para>

     <para>
      Rearrange the order of error checks so that we throw an on-point
      error when a <command>WITH RECURSIVE</command> query does not have a
      self-reference within the second arm of
      the <literal>UNION</literal>, but does have one self-reference in
      some other place such as <literal>ORDER BY</literal>.
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master Release: REL_17_BR [e6d0d16ad] 2024-06-20 14:21:36 -0400
Branch: REL_16_STABLE [4f1966676] 2024-06-20 14:21:36 -0400
Branch: REL_15_STABLE [1424c7abc] 2024-06-20 14:21:36 -0400
Branch: REL_14_STABLE [88f3baa06] 2024-06-20 14:21:36 -0400
Branch: REL_13_STABLE [9ce8ee9d3] 2024-06-20 14:21:36 -0400
Branch: REL_12_STABLE [b0037bbef] 2024-06-20 14:21:36 -0400
-->
     <para>
      Don't throw an error if a queued <literal>AFTER</literal> trigger no
      longer exists (Tom Lane)
      <ulink url="&commit_baseurl;88f3baa06">&sect;</ulink>
     </para>

     <para>
      It's possible for a transaction to execute an operation that queues
      a deferred <literal>AFTER</literal> trigger for later execution, and
      then to drop the trigger before that happens.  Formerly this led to
      weird errors such as <quote>could not find
      trigger <replaceable>NNNN</replaceable></quote>.  It seems better to
      silently do nothing if the trigger no longer exists at the time when
      it would have been executed.
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master Release: REL_17_BR [76618097a] 2024-06-14 16:20:35 -0400
Branch: REL_16_STABLE [9cf4beb9e] 2024-06-14 16:20:35 -0400
Branch: REL_15_STABLE [1f1eedd3f] 2024-06-14 16:20:35 -0400
Branch: REL_14_STABLE [f3f6a14ce] 2024-06-14 16:20:35 -0400
Branch: REL_13_STABLE [198de7961] 2024-06-14 16:20:35 -0400
Branch: REL_12_STABLE [0a39343ae] 2024-06-14 16:20:35 -0400
-->
     <para>
      Fix failure to remove <structname>pg_init_privs</structname> entries
      for column-level privileges when their table is dropped (Tom Lane)
      <ulink url="&commit_baseurl;f3f6a14ce">&sect;</ulink>
     </para>

     <para>
      If an extension grants some column-level privileges on a table it
      creates, relevant catalog entries would remain behind after the
      extension is dropped.  This was harmless until/unless the table's
      OID was re-used for another relation, when it could interfere with
      what <application>pg_dump</application> dumps for that relation.
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master Release: REL_17_BR [915de706d] 2024-06-11 17:57:46 -0400
Branch: REL_16_STABLE [b188e1bf7] 2024-06-11 17:57:46 -0400
Branch: REL_15_STABLE [1d0399b54] 2024-06-11 17:57:46 -0400
Branch: REL_14_STABLE [096f2132c] 2024-06-11 17:57:46 -0400
Branch: REL_13_STABLE [5e8aa32a9] 2024-06-11 17:57:46 -0400
Branch: REL_12_STABLE [9256bf6eb] 2024-06-11 17:57:46 -0400
-->
     <para>
      Fix selection of an arbiter index for <literal>ON CONFLICT</literal>
      when the desired index has expressions or predicates (Tom Lane)
      <ulink url="&commit_baseurl;096f2132c">&sect;</ulink>
     </para>

     <para>
      If a query using <literal>ON CONFLICT</literal> accesses the target
      table through an updatable view, it could fail with <quote>there is
      no unique or exclusion constraint matching the ON CONFLICT
      specification</quote>, even though a matching index does exist.
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master Release: REL_17_BR [7ed8ce8a4] 2024-06-07 14:50:09 -0400
Branch: REL_16_STABLE [8397f161e] 2024-06-07 14:50:09 -0400
Branch: REL_15_STABLE [3c71cb497] 2024-06-07 14:50:09 -0400
Branch: REL_14_STABLE [2dad0f433] 2024-06-07 14:50:09 -0400
Branch: REL_13_STABLE [7c4ac652e] 2024-06-07 14:50:09 -0400
Branch: REL_12_STABLE [b8efd756d] 2024-06-07 14:50:09 -0400
-->
     <para>
      Refuse to modify a temporary table of another session
      with <literal>ALTER TABLE</literal> (Tom Lane)
      <ulink url="&commit_baseurl;2dad0f433">&sect;</ulink>
     </para>

     <para>
      Permissions checks normally would prevent this case from arising,
      but it is possible to reach it by altering a parent table whose
      child is another session's temporary table.  Throw an error if we
      discover that such a child table belongs to another session.
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master Release: REL_17_BR [5278668d7] 2024-05-22 17:54:17 -0400
Branch: REL_16_STABLE [2aa90c02d] 2024-05-22 17:54:17 -0400
Branch: REL_15_STABLE [2f3cfcf76] 2024-05-22 17:54:17 -0400
Branch: REL_14_STABLE [1015162c3] 2024-05-22 17:54:17 -0400
-->
     <para>
      Fix handling of extended statistics on expressions
      in <literal>CREATE TABLE LIKE STATISTICS</literal> (Tom Lane)
      <ulink url="&commit_baseurl;1015162c3">&sect;</ulink>
     </para>

     <para>
      The <literal>CREATE</literal> command failed to adjust column
      references in statistics expressions to the possibly-different
      column numbering of the new table.  This resulted in invalid
      statistics objects that would cause problems later.  A typical
      scenario where renumbering columns is needed is when the source
      table contains some dropped columns.
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master Release: REL_17_BR [d0d44049d] 2023-07-14 11:41:20 -0400
Branch: master Release: REL_17_BR [779ac2c74] 2024-05-18 14:26:13 -0400
Branch: REL_16_STABLE [ce0d16544] 2024-05-18 14:31:35 -0400
Branch: REL_15_STABLE [4ac385adc] 2024-05-18 14:31:35 -0400
Branch: REL_14_STABLE [5ac340602] 2024-05-18 14:31:35 -0400
Branch: REL_13_STABLE [7f90a5dc3] 2024-05-18 14:31:35 -0400
Branch: REL_12_STABLE [686c995fc] 2024-05-18 14:31:35 -0400
-->
     <para>
      Fix failure to recalculate sub-queries generated
      from <function>MIN()</function> or <function>MAX()</function>
      aggregates (Tom Lane)
      <ulink url="&commit_baseurl;5ac340602">&sect;</ulink>
     </para>

     <para>
      In some cases the aggregate result computed at one row of the outer
      query could be re-used for later rows when it should not be.  This
      has only been seen to happen when the outer query uses
      <literal>DISTINCT</literal> that is implemented with hash
      aggregation, but other cases may exist.
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master Release: REL_17_BR [5d6c64d29] 2024-06-27 14:44:02 -0400
Branch: REL_16_STABLE [07d66d3cc] 2024-06-27 14:44:02 -0400
Branch: REL_15_STABLE [5401e70e4] 2024-06-27 14:44:03 -0400
Branch: REL_14_STABLE [13abc1f66] 2024-06-27 14:44:03 -0400
Branch: REL_13_STABLE [86fac88ee] 2024-06-27 14:44:03 -0400
Branch: REL_12_STABLE [dccda847b] 2024-06-27 14:44:04 -0400
-->
     <para>
      Avoid crashing when a JIT-inlined backend function throws an error
      (Tom Lane)
      <ulink url="&commit_baseurl;13abc1f66">&sect;</ulink>
     </para>

     <para>
      The error state can include pointers into the dynamically loaded
      module holding the JIT-compiled code (for error location strings).
      In some code paths the module could get unloaded before the error
      report is processed, leading to SIGSEGV when the location strings
      are accessed.
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [066e8ac6e] 2024-07-06 15:16:13 -0400
Branch: master [6082b3d5d] 2024-07-08 14:04:00 -0400
Branch: master [e7192486d] 2024-07-09 15:01:13 -0400
Branch: master [896cd266f] 2024-07-09 16:31:24 -0400
Branch: REL_17_STABLE [a9747be27] 2024-07-10 20:15:52 -0400
Branch: REL_16_STABLE [f85c91a18] 2024-07-10 20:15:52 -0400
Branch: REL_15_STABLE [f68d6aabb] 2024-07-10 20:15:52 -0400
Branch: REL_14_STABLE [475e1807c] 2024-07-10 20:15:52 -0400
Branch: REL_13_STABLE [48132587d] 2024-07-10 20:15:52 -0400
Branch: REL_12_STABLE [a134baea7] 2024-07-10 20:15:52 -0400
-->
     <para>
      Cope with behavioral changes in <application>libxml2</application>
      version 2.13.x (Erik Wienhold, Tom Lane)
      <ulink url="&commit_baseurl;475e1807c">&sect;</ulink>
     </para>

     <para>
      Notably, we now suppress <quote>chunk is not well balanced</quote>
      errors from <application>libxml2</application>, unless that is the
      only reported error.  This is to make error reports consistent
      between 2.13.x and earlier <application>libxml2</application>
      versions.  In earlier versions, that message was almost always
      redundant or outright incorrect, so 2.13.x substantially reduced the
      number of cases in which it's reported.
     </para>
    </listitem>

    <listitem>
<!--
Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
Branch: master Release: REL_17_BR [cbfbda784] 2024-06-27 21:09:58 +0300
Branch: REL_16_STABLE [b5b418b68] 2024-06-27 21:10:27 +0300
Branch: REL_15_STABLE [0e2f3d78b] 2024-06-27 21:10:31 +0300
Branch: REL_14_STABLE [9dbf8ab48] 2024-06-27 21:10:34 +0300
Branch: REL_13_STABLE [e9c8747ee] 2024-06-27 21:08:55 +0300
Branch: REL_12_STABLE [5dea6628b] 2024-06-27 21:09:15 +0300
-->
     <para>
      Fix handling of subtransactions of prepared transactions
      when starting a hot standby server (Heikki Linnakangas)
      <ulink url="&commit_baseurl;9dbf8ab48">&sect;</ulink>
     </para>

     <para>
      When starting a standby's replay at a shutdown checkpoint WAL
      record, transactions that had been prepared but not yet committed on
      the primary are correctly understood as being still in progress.
      But subtransactions of a prepared transaction (created by savepoints
      or <application>PL/pgSQL</application> exception blocks) were not
      accounted for and would be treated as aborted.  That led to
      inconsistency if the prepared transaction was later committed.
     </para>
    </listitem>

    <listitem>
<!--
Author: Masahiko Sawada <msawada@postgresql.org>
Branch: master [bb19b7008] 2024-07-11 22:48:23 +0900
Branch: REL_17_STABLE [068674f4a] 2024-07-11 22:48:21 +0900
Branch: REL_16_STABLE [2f3304ce1] 2024-07-11 22:48:18 +0900
Branch: REL_15_STABLE [aee8c2b95] 2024-07-11 22:48:16 +0900
Branch: REL_14_STABLE [f7d3caf9d] 2024-07-11 22:48:13 +0900
Branch: REL_13_STABLE [cf2c69ec5] 2024-07-11 22:48:10 +0900
Branch: REL_12_STABLE [1b3707587] 2024-07-11 22:48:08 +0900
-->
     <para>
      Prevent incorrect initialization of logical replication slots
      (Masahiko Sawada)
      <ulink url="&commit_baseurl;f7d3caf9d">&sect;</ulink>
     </para>

     <para>
      In some cases a replication slot's start point within the WAL stream
      could be set to a point within a transaction, leading to assertion
      failures or incorrect decoding results.
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: REL_17_STABLE [31f8d620b] 2024-07-01 12:21:07 -0400
Branch: REL_16_STABLE [54a7b21b3] 2024-07-01 12:21:07 -0400
Branch: REL_15_STABLE [4df767cf9] 2024-07-01 12:21:07 -0400
Branch: REL_14_STABLE [1608902fc] 2024-07-01 12:21:07 -0400
Branch: REL_13_STABLE [5f86cd70d] 2024-07-01 12:21:07 -0400
Branch: REL_12_STABLE [8565fb6fb] 2024-07-01 12:21:07 -0400
-->
     <para>
      Avoid memory leakage after servicing a notify or sinval interrupt
      (Tom Lane)
      <ulink url="&commit_baseurl;1608902fc">&sect;</ulink>
     </para>

     <para>
      The processing functions for these events could switch the current
      memory context to TopMemoryContext, resulting in session-lifespan
      leakage of any data allocated before the incorrect setting gets
      replaced.  There were observable leaks associated with (at least)
      encoding conversion of incoming queries and parameters attached to
      Bind messages.
     </para>
    </listitem>

    <listitem>
<!--
Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
Branch: master Release: REL_17_BR [b1ffe3ff0] 2024-06-26 23:02:06 +0300
Branch: REL_16_STABLE [e7cbe5a85] 2024-06-26 23:04:36 +0300
Branch: REL_15_STABLE [c809a2b2d] 2024-06-26 23:05:58 +0300
Branch: REL_14_STABLE [4c8e00ae9] 2024-06-26 23:06:12 +0300
-->
     <para>
      Prevent deadlocks and assertion failures during truncation of the
      multixact SLRU log (Heikki Linnakangas)
      <ulink url="&commit_baseurl;4c8e00ae9">&sect;</ulink>
     </para>

     <para>
      A process trying to delete SLRU segments could deadlock with the
      checkpointer process.
     </para>
    </listitem>

    <listitem>
<!--
Author: Thomas Munro <tmunro@postgresql.org>
Branch: master [a8458f508] 2024-07-13 14:59:46 +1200
Branch: REL_17_STABLE [3c1c82d40] 2024-07-13 15:02:33 +1200
Branch: REL_16_STABLE [a622095bc] 2024-07-13 15:27:35 +1200
Branch: REL_15_STABLE [5546a834c] 2024-07-13 15:28:38 +1200
Branch: REL_14_STABLE [894b497ac] 2024-07-13 15:43:43 +1200
Branch: REL_13_STABLE [3554d841d] 2024-07-13 15:44:11 +1200
Branch: REL_12_STABLE [ba9fcac72] 2024-07-13 15:45:28 +1200
-->
     <para>
      Avoid possibly missing end-of-input events on Windows sockets
      (Thomas Munro)
      <ulink url="&commit_baseurl;894b497ac">&sect;</ulink>
     </para>

     <para>
      Windows reports an FD_CLOSE event only once after the remote end of
      the connection disconnects.  With unlucky timing, we could miss that
      report and wait indefinitely, or at least until a timeout elapsed,
      expecting more input.
     </para>
    </listitem>

    <listitem>
<!--
Author: Michael Paquier <michael@paquier.xyz>
Branch: master Release: REL_17_BR [855517307] 2024-05-09 12:45:37 +0900
Branch: REL_16_STABLE [5396a2987] 2024-05-09 12:45:43 +0900
Branch: REL_15_STABLE [8c3f30e67] 2024-05-09 12:45:45 +0900
Branch: REL_14_STABLE [41adf9d96] 2024-05-09 12:45:48 +0900
Branch: REL_13_STABLE [377c25d32] 2024-05-09 12:45:51 +0900
-->
     <para>
      Fix buffer overread in JSON parse error reports for incomplete byte
      sequences (Jacob Champion)
      <ulink url="&commit_baseurl;41adf9d96">&sect;</ulink>
     </para>

     <para>
      It was possible to walk off the end of the input buffer by a few
      bytes when the last bytes comprise an incomplete multi-byte
      character.  While usually harmless, in principle this could cause a
      crash.
     </para>
    </listitem>

    <listitem>
<!--
Author: Daniel Gustafsson <dgustafsson@postgresql.org>
Branch: master [274bbced8] 2024-07-26 11:09:45 +0200
Branch: REL_17_STABLE [3df7f44a8] 2024-07-26 11:09:45 +0200
Branch: REL_16_STABLE [cc606afce] 2024-07-26 11:09:45 +0200
Branch: REL_15_STABLE [118ec331b] 2024-07-26 11:09:45 +0200
Branch: REL_14_STABLE [ecbb1cd9b] 2024-07-26 11:09:45 +0200
Branch: REL_13_STABLE [1f476bc75] 2024-07-26 11:09:45 +0200
Branch: REL_12_STABLE [32121c077] 2024-07-26 11:09:45 +0200
Branch: master [161c73462] 2024-07-26 16:25:28 +0200
Branch: REL_17_STABLE [1272cfb72] 2024-07-26 16:25:56 +0200
Branch: REL_16_STABLE [83b4a6358] 2024-07-26 16:29:47 +0200
Branch: REL_15_STABLE [970cd5c62] 2024-07-26 14:16:40 +0200
Branch: REL_14_STABLE [51c1b4fd1] 2024-07-26 14:16:40 +0200
Branch: REL_13_STABLE [40e8ea949] 2024-07-26 14:16:40 +0200
Branch: REL_12_STABLE [ac77add23] 2024-07-26 14:16:40 +0200
Branch: REL_16_STABLE [441eba34d] 2024-07-26 16:29:52 +0200
Branch: REL_15_STABLE [ce3045e9b] 2024-07-26 19:09:27 +0200
Branch: REL_14_STABLE [ddd66a629] 2024-07-26 19:09:54 +0200
Branch: REL_13_STABLE [634710dfb] 2024-07-26 19:10:12 +0200
Branch: REL_12_STABLE [e6dd0b863] 2024-07-26 19:10:37 +0200
-->
     <para>
      Disable creation of stateful TLS session tickets by OpenSSL
      (Daniel Gustafsson)
      <ulink url="&commit_baseurl;ecbb1cd9b">&sect;</ulink>
      <ulink url="&commit_baseurl;51c1b4fd1">&sect;</ulink>
      <ulink url="&commit_baseurl;ddd66a629">&sect;</ulink>
     </para>

     <para>
      This avoids possible failures with clients that think receipt of
      a session ticket means that TLS session resumption is supported.
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master Release: REL_17_BR [6dfac2440] 2024-06-13 13:37:49 -0400
Branch: REL_16_STABLE [82a931d3d] 2024-06-13 13:37:49 -0400
Branch: REL_15_STABLE [bf552b1b2] 2024-06-13 13:37:50 -0400
Branch: REL_14_STABLE [1450db793] 2024-06-13 13:37:50 -0400
Branch: REL_13_STABLE [1fa46dba5] 2024-06-13 13:37:50 -0400
Branch: REL_12_STABLE [ec210914c] 2024-06-13 13:37:51 -0400
-->
     <para>
      When replanning a <application>PL/pgSQL</application> <quote>simple
      expression</quote>, check it's still simple (Tom Lane)
      <ulink url="&commit_baseurl;1450db793">&sect;</ulink>
     </para>

     <para>
      Certain fairly-artificial cases, such as dropping a referenced
      function and recreating it as an aggregate, could lead to surprising
      failures such as <quote>unexpected plan node type</quote>.
     </para>
    </listitem>

    <listitem>
<!--
Author: Andrew Dunstan <andrew@dunslane.net>
Branch: REL_15_STABLE [f853e23bf] 2024-06-26 07:01:47 -0400
Branch: REL_14_STABLE [20f22e6a6] 2024-06-26 07:24:35 -0400
Branch: REL_13_STABLE [b7374f15b] 2024-06-26 07:25:00 -0400
Branch: REL_12_STABLE [ab46e132f] 2024-06-26 07:25:10 -0400
Branch: REL_11_STABLE [e1541d518] 2024-06-26 07:25:26 -0400
Branch: REL_10_STABLE [320534f8f] 2024-06-26 07:25:35 -0400
Branch: REL9_6_STABLE [12c8faaa7] 2024-06-26 07:29:31 -0400
Branch: REL9_5_STABLE [0536f8e2c] 2024-06-26 07:30:01 -0400
Branch: REL9_4_STABLE [8851d5c3a] 2024-06-26 07:30:06 -0400
Branch: REL9_3_STABLE [8f3be9661] 2024-06-26 07:30:11 -0400
Branch: REL9_2_STABLE [1c4173116] 2024-06-26 07:32:15 -0400
-->
     <para>
      Fix incompatibility between <application>PL/Perl</application> and
      Perl 5.40 (Andrew Dunstan)
      <ulink url="&commit_baseurl;20f22e6a6">&sect;</ulink>
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master Release: REL_17_BR [d727c5431] 2024-05-09 13:16:34 -0400
Branch: REL_16_STABLE [52ea653aa] 2024-05-09 13:16:21 -0400
Branch: REL_15_STABLE [6e29963ed] 2024-05-09 13:16:21 -0400
Branch: REL_14_STABLE [d39337021] 2024-05-09 13:16:21 -0400
Branch: REL_13_STABLE [272867792] 2024-05-09 13:16:21 -0400
Branch: REL_12_STABLE [157b1e6b4] 2024-05-09 13:16:21 -0400
-->
     <para>
      Fix recursive <type>RECORD</type>-returning
      <application>PL/Python</application> functions (Tom Lane)
      <ulink url="&commit_baseurl;d39337021">&sect;</ulink>
     </para>

     <para>
      If we recurse to a new call of the same function that passes a
      different column definition list (<literal>AS</literal> clause), it
      would fail because the inner call would overwrite the outer call's
      idea of what rowtype to return.
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master Release: REL_17_BR [c5bec5426] 2024-05-07 18:15:00 -0400
Branch: REL_16_STABLE [be18a12b6] 2024-05-07 18:15:00 -0400
Branch: REL_15_STABLE [363e8c2f9] 2024-05-07 18:15:00 -0400
Branch: REL_14_STABLE [90d39929a] 2024-05-07 18:15:00 -0400
Branch: REL_13_STABLE [abe60b6a0] 2024-05-07 18:15:00 -0400
Branch: REL_12_STABLE [4488142a4] 2024-05-07 18:15:00 -0400
-->
     <para>
      Don't corrupt <application>PL/Python</application>'s
      <literal>TD</literal> dictionary during a recursive trigger call
      (Tom Lane)
      <ulink url="&commit_baseurl;90d39929a">&sect;</ulink>
     </para>

     <para>
      If a <application>PL/Python</application>-language trigger caused
      another one to be invoked, the <literal>TD</literal> dictionary
      created for the inner one would overwrite the outer
      one's <literal>TD</literal> dictionary.
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master Release: REL_17_BR [b631d0149] 2024-06-04 18:02:13 -0400
Branch: REL_16_STABLE [c236ecc82] 2024-06-04 18:02:13 -0400
Branch: REL_15_STABLE [89ef2aeda] 2024-06-04 18:02:13 -0400
Branch: REL_14_STABLE [1488dee08] 2024-06-04 18:02:13 -0400
Branch: REL_13_STABLE [dda633a03] 2024-06-04 18:02:13 -0400
Branch: REL_12_STABLE [30487423c] 2024-06-04 18:02:13 -0400
-->
     <para>
      Fix <application>PL/Tcl</application>'s reporting of invalid list
      syntax in the result of a function returning tuple (Erik Wienhold,
      Tom Lane)
      <ulink url="&commit_baseurl;1488dee08">&sect;</ulink>
     </para>

     <para>
      Such a case could result in a crash, or in emission of misleading
      context information that actually refers to the previous Tcl error.
     </para>
    </listitem>

    <listitem>
<!--
Author: Peter Eisentraut <peter@eisentraut.org>
Branch: master [1e666fd7c] 2024-07-28 09:23:24 +0200
Branch: REL_17_STABLE [821fbd63e] 2024-07-28 10:19:57 +0200
Branch: REL_16_STABLE [c53016860] 2024-07-28 09:25:03 +0200
Branch: REL_15_STABLE [6ddc8556c] 2024-07-28 09:25:52 +0200
Branch: REL_14_STABLE [95e805e9c] 2024-07-28 09:26:21 +0200
Branch: REL_13_STABLE [da5d7a771] 2024-07-28 09:26:39 +0200
Branch: REL_12_STABLE [407048999] 2024-07-28 09:26:48 +0200
-->
     <para>
      Avoid non-thread-safe usage of <function>strerror()</function>
      in <application>libpq</application> (Peter Eisentraut)
      <ulink url="&commit_baseurl;95e805e9c">&sect;</ulink>
     </para>

     <para>
      Certain error messages returned by OpenSSL could become garbled in
      multi-threaded applications.
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master Release: REL_17_BR [c1aea206e] 2024-05-07 18:22:52 -0400
Branch: REL_16_STABLE [5dce8ce0a] 2024-05-07 18:23:01 -0400
Branch: REL_15_STABLE [6a458d93b] 2024-05-07 18:23:07 -0400
Branch: REL_14_STABLE [52b23b4e1] 2024-05-07 18:23:11 -0400
Branch: REL_13_STABLE [b99dc6694] 2024-05-07 18:23:15 -0400
Branch: REL_12_STABLE [a3c00ab15] 2024-05-07 18:23:20 -0400
-->
     <para>
      Ensure that <literal>pg_restore</literal> <option>-l</option>
      reports dependent TOC entries correctly (Tom Lane)
      <ulink url="&commit_baseurl;52b23b4e1">&sect;</ulink>
     </para>

     <para>
      If <option>-l</option> was specified together with selective-restore
      options such as <option>-n</option> or <option>-N</option>,
      dependent TOC entries such as comments would be omitted from the
      listing, even when an actual restore would have selected them.
     </para>
    </listitem>

    <listitem>
<!--
Author: Etsuro Fujita <efujita@postgresql.org>
Branch: master Release: REL_17_BR [8cfbac149] 2024-06-07 17:45:00 +0900
Branch: REL_16_STABLE [8405d5a37] 2024-06-07 17:45:02 +0900
Branch: REL_15_STABLE [b33c141cc] 2024-06-07 17:45:04 +0900
Branch: REL_14_STABLE [269e2c391] 2024-06-07 17:45:06 +0900
Branch: REL_13_STABLE [2b461efc5] 2024-06-07 17:45:08 +0900
-->
     <para>
      In <filename>contrib/postgres_fdw</filename>, do not
      send <literal>FETCH FIRST WITH TIES</literal> clauses to the remote
      server (Japin Li)
      <ulink url="&commit_baseurl;269e2c391">&sect;</ulink>
     </para>

     <para>
      The remote server might not implement this clause, or might
      interpret it differently than we would locally, so don't risk
      attempting remote execution.
     </para>
    </listitem>

    <listitem>
<!--
Author: Thomas Munro <tmunro@postgresql.org>
Branch: master [2a5ef0983] 2024-07-06 10:27:16 +1200
Branch: REL_17_STABLE [9c273679b] 2024-07-06 11:23:40 +1200
Branch: REL_16_STABLE [31423bc44] 2024-07-06 11:18:29 +1200
Branch: REL_15_STABLE [467d77bb1] 2024-07-06 10:53:13 +1200
Branch: REL_14_STABLE [c2342a925] 2024-07-06 10:44:41 +1200
Branch: REL_13_STABLE [440aedc0f] 2024-07-06 10:39:10 +1200
Branch: REL_12_STABLE [274a8195d] 2024-07-06 10:30:03 +1200
-->
     <para>
      Avoid clashing with
      system-provided <filename>&lt;regex.h&gt;</filename> headers
      (Thomas Munro)
      <ulink url="&commit_baseurl;c2342a925">&sect;</ulink>
     </para>

     <para>
      This fixes a compilation failure on macOS version 15 and up.
     </para>
    </listitem>

    <listitem>
<!--
Author: David Rowley <drowley@postgresql.org>
Branch: master Release: REL_17_BR [aa901a37c] 2024-06-19 10:20:24 +1200
Branch: REL_16_STABLE [6143c9c03] 2024-06-19 10:21:00 +1200
Branch: REL_15_STABLE [27c6242a0] 2024-06-19 10:21:26 +1200
Branch: REL_14_STABLE [dae9f16aa] 2024-06-19 10:21:52 +1200
-->
     <para>
      Fix otherwise-harmless assertion failure in Memoize cost estimation
      (David Rowley)
      <ulink url="&commit_baseurl;dae9f16aa">&sect;</ulink>
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master Release: REL_17_BR [92c49d106] 2024-06-17 14:30:59 -0400
Branch: REL_16_STABLE [06f81fed3] 2024-06-17 14:30:59 -0400
Branch: REL_15_STABLE [f55083319] 2024-06-17 14:30:59 -0400
Branch: REL_14_STABLE [e4a55378f] 2024-06-17 14:30:59 -0400
Branch: REL_13_STABLE [507a900ad] 2024-06-17 14:30:59 -0400
Branch: REL_12_STABLE [3e3e2ebea] 2024-06-17 14:30:59 -0400
-->
     <para>
      Fix otherwise-harmless assertion failures in <literal>REINDEX
      CONCURRENTLY</literal> applied to an SP-GiST index (Tom Lane)
      <ulink url="&commit_baseurl;e4a55378f">&sect;</ulink>
     </para>
    </listitem>

   </itemizedlist>

  </sect2>
 </sect1>

 <sect1 id="release-14-12">
  <title>Release 14.12</title>

  <formalpara>
  <title>Release date:</title>
  <para>2024-05-09</para>
  </formalpara>

  <para>
   This release contains a variety of fixes from 14.11.
   For information about new features in major release 14, see
   <xref linkend="release-14"/>.
  </para>

  <sect2>
   <title>Migration to Version 14.12</title>

   <para>
    A dump/restore is not required for those running 14.X.
   </para>

   <para>
    However, a security vulnerability was found in the system
    views <structname>pg_stats_ext</structname>
    and <structname>pg_stats_ext_exprs</structname>, potentially allowing
    authenticated database users to see data they shouldn't.  If this is
    of concern in your installation, follow the steps in the first
    changelog entry below to rectify it.
   </para>

   <para>
    Also, if you are upgrading from a version earlier than 14.11,
    see <xref linkend="release-14-11"/>.
   </para>
  </sect2>

  <sect2>
   <title>Changes</title>

   <itemizedlist>

    <listitem>
<!--
Author: Nathan Bossart <nathan@postgresql.org>
Branch: master [521a7156a] 2024-05-06 09:00:00 -0500
Branch: REL_16_STABLE [2485a85e9] 2024-05-06 09:00:07 -0500
Branch: REL_15_STABLE [9cc2b6289] 2024-05-06 09:00:13 -0500
Branch: REL_14_STABLE [c3425383b] 2024-05-06 09:00:19 -0500
-->
     <para>
      Restrict visibility of <structname>pg_stats_ext</structname> and
      <structname>pg_stats_ext_exprs</structname> entries to the table
      owner (Nathan Bossart)
      <ulink url="&commit_baseurl;c3425383b">&sect;</ulink>
     </para>

     <para>
      These views failed to hide statistics for expressions that involve
      columns the accessing user does not have permission to read.  View
      columns such as <structfield>most_common_vals</structfield> might
      expose security-relevant data.  The potential interactions here are
      not fully clear, so in the interest of erring on the side of safety,
      make rows in these views visible only to the owner of the associated
      table.
     </para>

     <para>
      The <productname>PostgreSQL</productname> Project thanks
      Lukas Fittl for reporting this problem.
      (CVE-2024-4317)
     </para>

     <para>
      By itself, this fix will only fix the behavior in newly initdb'd
      database clusters.  If you wish to apply this change in an existing
      cluster, you will need to do the following:
     </para>

     <procedure>
      <step>
       <para>
        Find the SQL script <filename>fix-CVE-2024-4317.sql</filename> in
        the <replaceable>share</replaceable> directory of
        the <productname>PostgreSQL</productname> installation (typically
        located someplace like <filename>/usr/share/postgresql/</filename>).
        Be sure to use the script appropriate to
        your <productname>PostgreSQL</productname> major version.
        If you do not see this file, either your version is not vulnerable
        (only v14&ndash;v16 are affected) or your minor version is too
        old to have the fix.
       </para>
      </step>

      <step>
       <para>
        In <emphasis>each</emphasis> database of the cluster, run
        the <filename>fix-CVE-2024-4317.sql</filename> script as superuser.
        In <application>psql</application> this would look like
<programlisting>
\i /usr/share/postgresql/fix-CVE-2024-4317.sql
</programlisting>
        (adjust the file path as appropriate).  Any error probably indicates
        that you've used the wrong script version.  It will not hurt to run
        the script more than once.
       </para>
      </step>

      <step>
       <para>
        Do not forget to include the <literal>template0</literal>
        and <literal>template1</literal> databases, or the vulnerability
        will still exist in databases you create later.  To
        fix <literal>template0</literal>, you'll need to temporarily make
        it accept connections.  Do that with
<programlisting>
ALTER DATABASE template0 WITH ALLOW_CONNECTIONS true;
</programlisting>
        and then after fixing <literal>template0</literal>, undo it with
<programlisting>
ALTER DATABASE template0 WITH ALLOW_CONNECTIONS false;
</programlisting>
       </para>
      </step>
     </procedure>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [b4a71cf65] 2024-03-14 14:57:16 -0400
Branch: REL_16_STABLE [52898c63e] 2024-03-14 14:57:16 -0400
Branch: REL_15_STABLE [7c61d2342] 2024-03-14 14:57:16 -0400
Branch: REL_14_STABLE [3621ffd9f] 2024-03-14 14:57:16 -0400
Branch: REL_13_STABLE [0200398dd] 2024-03-14 14:57:16 -0400
Branch: REL_12_STABLE [82c87af7a] 2024-03-14 14:57:16 -0400
-->
     <para>
      Fix <command>INSERT</command> from
      multiple <command>VALUES</command> rows into a target column that is
      a domain over an array or composite type (Tom Lane)
      <ulink url="&commit_baseurl;3621ffd9f">&sect;</ulink>
     </para>

     <para>
      Such cases would either fail with surprising complaints about
      mismatched datatypes, or insert unexpected coercions that could lead
      to odd results.
     </para>
    </listitem>

    <listitem>
<!--
Author: David Rowley <drowley@postgresql.org>
Branch: master [4c2369ac5] 2024-02-20 12:49:37 +1300
Branch: REL_16_STABLE [fb95cc72b] 2024-02-20 12:50:09 +1300
Branch: REL_15_STABLE [1b3495e29] 2024-02-20 12:50:34 +1300
Branch: REL_14_STABLE [f9c8f7ccd] 2024-02-20 12:50:57 +1300
Branch: REL_13_STABLE [3850fcca6] 2024-02-20 12:51:17 +1300
Branch: REL_12_STABLE [3ffcd24c2] 2024-02-20 12:51:38 +1300
-->
     <para>
      Fix incorrect pruning of NULL partition when a table is partitioned
      on a boolean column and the query has a boolean <literal>IS
      NOT</literal> clause (David Rowley)
      <ulink url="&commit_baseurl;f9c8f7ccd">&sect;</ulink>
     </para>

     <para>
      A NULL value satisfies a clause such
      as <literal><replaceable>boolcol</replaceable> IS NOT
      FALSE</literal>, so pruning away a partition containing NULLs
      yielded incorrect answers.
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [fad3b5b5a] 2024-03-26 15:28:31 -0400
Branch: REL_16_STABLE [7445f0928] 2024-03-26 15:28:16 -0400
Branch: REL_15_STABLE [b48eda4e5] 2024-03-26 15:28:16 -0400
Branch: REL_14_STABLE [66bbad581] 2024-03-26 15:28:16 -0400
Branch: REL_13_STABLE [97de2a159] 2024-03-26 15:28:16 -0400
Branch: REL_12_STABLE [a8b740868] 2024-03-26 15:28:16 -0400
-->
     <para>
      Make <command>ALTER FOREIGN TABLE SET SCHEMA</command> move any
      owned sequences into the new schema (Tom Lane)
      <ulink url="&commit_baseurl;66bbad581">&sect;</ulink>
     </para>

     <para>
      Moving a regular table to a new schema causes any sequences owned by
      the table to be moved to that schema too (along with indexes and
      constraints).  This was overlooked for foreign tables, however.
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [91e7115b1] 2024-05-02 17:36:31 -0400
Branch: REL_16_STABLE [11d40a44b] 2024-05-02 17:36:31 -0400
Branch: REL_15_STABLE [5f4a1a0a7] 2024-05-02 17:36:31 -0400
Branch: master [42b041243] 2024-04-28 14:34:21 -0400
Branch: REL_16_STABLE [b19255ca6] 2024-04-28 14:34:21 -0400
Branch: REL_15_STABLE [9b41d1d63] 2024-04-28 14:34:21 -0400
Branch: REL_14_STABLE [617a23927] 2024-04-28 14:34:21 -0400
-->
     <para>
      Improve <command>ALTER TABLE ... ALTER COLUMN TYPE</command>'s error
      message when there is a dependent function or publication (Tom Lane)
      <ulink url="&commit_baseurl;617a23927">&sect;</ulink>
     </para>
    </listitem>

    <listitem>
<!--
Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
Branch: master [0960ae196] 2024-03-18 14:03:58 +0200
Branch: REL_16_STABLE [1f4eb7342] 2024-03-18 14:04:13 +0200
Branch: REL_15_STABLE [d3d95f583] 2024-03-18 14:04:17 +0200
Branch: REL_14_STABLE [262757b73] 2024-03-18 14:04:19 +0200
Branch: REL_13_STABLE [992189a3e] 2024-03-18 14:04:24 +0200
Branch: REL_12_STABLE [f3e4581ac] 2024-03-18 14:04:28 +0200
-->
     <para>
      Fix <command>EXPLAIN</command>'s counting of heap pages accessed by
      a bitmap heap scan (Melanie Plageman)
      <ulink url="&commit_baseurl;262757b73">&sect;</ulink>
     </para>

     <para>
      Previously, heap pages that contain no visible tuples were not
      counted; but it seems more consistent to count all pages returned by
      the bitmap index scan.
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [6faca9ae2] 2024-04-02 14:59:32 -0400
Branch: REL_16_STABLE [cbfbb14bd] 2024-04-02 14:59:04 -0400
Branch: REL_15_STABLE [4fb56a734] 2024-04-02 14:59:04 -0400
Branch: REL_14_STABLE [ca392df8d] 2024-04-02 14:59:04 -0400
Branch: REL_13_STABLE [4afc2c219] 2024-04-02 14:59:04 -0400
Branch: REL_12_STABLE [f5d9212e5] 2024-04-02 14:59:04 -0400
-->
     <para>
      Avoid deadlock during removal of orphaned temporary tables
      (Mikhail Zhilin)
      <ulink url="&commit_baseurl;ca392df8d">&sect;</ulink>
     </para>

     <para>
      If the session that creates a temporary table crashes without
      removing the table, autovacuum will eventually try to remove the
      orphaned table.  However, an incoming session that's been assigned
      the same temporary namespace will do that too.  If a temporary table
      has a dependency (such as an owned sequence) then a deadlock could
      result between these two cleanup attempts.
     </para>
    </listitem>

    <listitem>
<!--
Author: Noah Misch <noah@leadboat.com>
Branch: master [f65ab862e] 2024-04-29 10:24:56 -0700
Branch: REL_16_STABLE [92685c389] 2024-04-29 10:24:59 -0700
Branch: REL_15_STABLE [7c5915c4b] 2024-04-29 10:24:59 -0700
Branch: REL_14_STABLE [2ca19aa81] 2024-04-29 10:25:00 -0700
Branch: REL_13_STABLE [70cadfba0] 2024-04-29 10:25:00 -0700
Branch: REL_12_STABLE [f222349c4] 2024-04-29 10:25:00 -0700
-->
     <para>
      Avoid race condition while examining per-relation frozen-XID values
      (Noah Misch)
      <ulink url="&commit_baseurl;2ca19aa81">&sect;</ulink>
     </para>

     <para>
      <command>VACUUM</command>'s computation of per-database frozen-XID
      values from per-relation values could get confused by a concurrent
      update of those values by another <command>VACUUM</command>.
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: REL_15_STABLE [bf379b555] 2024-04-30 15:22:55 -0400
Branch: REL_14_STABLE [51189f98a] 2024-04-30 15:22:55 -0400
Branch: REL_13_STABLE [1ee22d1e8] 2024-04-30 15:22:55 -0400
Branch: REL_12_STABLE [56d30fb10] 2024-04-30 15:22:56 -0400
-->
     <para>
      Disallow converting a table to a view within an outer SQL command
      that is using that table (Tom Lane)
      <ulink url="&commit_baseurl;51189f98a">&sect;</ulink>
     </para>

     <para>
      This avoids possible crashes.
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [03107b4ed] 2024-04-16 11:22:51 -0400
Branch: REL_16_STABLE [91800af13] 2024-04-16 11:03:43 -0400
Branch: REL_15_STABLE [5aacfa64e] 2024-04-16 11:22:39 -0400
Branch: REL_14_STABLE [ab2402268] 2024-04-16 11:22:39 -0400
Branch: REL_13_STABLE [d9e4ee74f] 2024-04-16 11:22:39 -0400
Branch: REL_12_STABLE [f502849d4] 2024-04-16 11:22:39 -0400
-->
     <para>
      Ensure that join conditions generated from equivalence classes are
      applied at the correct plan level (Tom Lane)
      <ulink url="&commit_baseurl;ab2402268">&sect;</ulink>
     </para>

     <para>
      In versions before <productname>PostgreSQL</productname> 16, it was
      possible for generated conditions to be evaluated below outer joins
      when they should be evaluated above (after) the outer join, leading
      to incorrect query results.  All versions have a similar hazard when
      considering joins to <command>UNION ALL</command> trees that have
      constant outputs for the join column in
      some <command>SELECT </command> arms.
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [a767cdc84] 2024-03-27 13:39:03 -0400
Branch: REL_16_STABLE [a94f51a7b] 2024-03-27 13:39:03 -0400
Branch: REL_15_STABLE [03561a6c7] 2024-03-27 13:39:03 -0400
Branch: REL_14_STABLE [0d30e48c2] 2024-03-27 13:39:03 -0400
Branch: REL_13_STABLE [de3c5b187] 2024-03-27 13:39:03 -0400
Branch: REL_12_STABLE [25675c474] 2024-03-27 13:39:03 -0400
-->
     <para>
      Avoid unnecessary use of moving-aggregate mode with a non-moving
      window frame (Vallimaharajan G)
      <ulink url="&commit_baseurl;0d30e48c2">&sect;</ulink>
     </para>

     <para>
      When a plain aggregate is used as a window function, and the window
      frame start is specified as <literal>UNBOUNDED PRECEDING</literal>,
      the frame's head cannot move so we do not need to use the special
      (and more expensive) moving-aggregate mode.  This optimization was
      intended all along, but due to a coding error it never triggered.
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [a6b2a51e1] 2024-02-23 15:21:53 -0500
Branch: REL_16_STABLE [ef0333e67] 2024-02-23 15:21:53 -0500
Branch: REL_15_STABLE [37bbe3d3a] 2024-02-23 15:21:53 -0500
Branch: REL_14_STABLE [cbeb45527] 2024-02-23 15:21:53 -0500
Branch: REL_13_STABLE [9061fd23c] 2024-02-23 15:21:53 -0500
Branch: REL_12_STABLE [cf807eba5] 2024-02-23 15:21:53 -0500
-->
     <para>
      Avoid use of already-freed data while planning partition-wise joins
      under GEQO (Tom Lane)
      <ulink url="&commit_baseurl;cbeb45527">&sect;</ulink>
     </para>

     <para>
      This would typically end in a crash or unexpected error message.
     </para>
    </listitem>

    <listitem>
<!--
Author: David Rowley <drowley@postgresql.org>
Branch: master [e62984647] 2024-03-11 18:19:56 +1300
Branch: REL_16_STABLE [348233cb1] 2024-03-11 18:20:39 +1300
Branch: REL_15_STABLE [74530804f] 2024-03-11 18:21:23 +1300
Branch: REL_14_STABLE [72b8507db] 2024-03-11 18:21:48 +1300
-->
     <para>
      Avoid freeing still-in-use data in Memoize (Tender Wang, Andrei
      Lepikhov)
      <ulink url="&commit_baseurl;72b8507db">&sect;</ulink>
     </para>

     <para>
      In production builds this error frequently didn't cause any
      problems, as the freed data would most likely not get overwritten
      before it was used.
     </para>
    </listitem>

    <listitem>
<!--
Author: David Rowley <drowley@postgresql.org>
Branch: master [a37a3e2b3] 2024-03-05 16:17:02 +1300
Branch: REL_16_STABLE [ac7e6a01c] 2024-03-05 16:17:53 +1300
Branch: REL_15_STABLE [164fe7a6e] 2024-03-05 16:18:19 +1300
Branch: REL_14_STABLE [0c2dda109] 2024-03-05 16:18:42 +1300
Branch: REL_13_STABLE [421dfb41a] 2024-03-05 16:19:05 +1300
Branch: REL_12_STABLE [94246405d] 2024-03-05 16:19:26 +1300
-->
     <para>
      Fix incorrectly-reported statistics kind codes in <quote>requested
      statistics kind <replaceable>X</replaceable> is not yet
      built</quote> error messages (David Rowley)
      <ulink url="&commit_baseurl;0c2dda109">&sect;</ulink>
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [e0df80828] 2024-04-15 12:56:56 -0400
Branch: REL_16_STABLE [cc1eb6a3c] 2024-04-15 12:56:56 -0400
Branch: REL_15_STABLE [09989ba84] 2024-04-15 12:56:56 -0400
Branch: REL_14_STABLE [78e81e14d] 2024-04-15 12:56:56 -0400
Branch: REL_13_STABLE [b6e21cef7] 2024-04-15 12:56:56 -0400
Branch: REL_12_STABLE [e0970862e] 2024-04-15 12:56:56 -0400
Branch: master [2ed8f9a01] 2024-03-06 14:41:13 -0500
Branch: REL_16_STABLE [1b3029be5] 2024-03-06 14:41:13 -0500
Branch: REL_15_STABLE [3b671dcf5] 2024-03-06 14:41:13 -0500
Branch: REL_14_STABLE [a595c3075] 2024-03-06 14:41:13 -0500
Branch: REL_13_STABLE [d769f9d97] 2024-03-06 14:41:13 -0500
Branch: REL_12_STABLE [466376c9f] 2024-03-06 14:41:13 -0500
-->
     <para>
      Be more careful with <type>RECORD</type>-returning functions
      in <literal>FROM</literal> (Tom Lane)
      <ulink url="&commit_baseurl;78e81e14d">&sect;</ulink>
      <ulink url="&commit_baseurl;a595c3075">&sect;</ulink>
     </para>

     <para>
      The output columns of such a function call must be defined by
      an <literal>AS</literal> clause that specifies the column names and
      data types.  If the actual function output value doesn't match that,
      an error is supposed to be thrown at runtime.  However, some code
      paths would examine the actual value prematurely, and potentially
      issue strange errors or suffer assertion failures if it doesn't
      match expectations.
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [6ee3261e9] 2024-03-12 18:16:25 -0400
Branch: REL_16_STABLE [40d1bdeb7] 2024-03-12 18:16:10 -0400
Branch: REL_15_STABLE [6f66fadad] 2024-03-12 18:16:10 -0400
Branch: REL_14_STABLE [649bbba11] 2024-03-12 18:16:10 -0400
Branch: REL_13_STABLE [28184f039] 2024-03-12 18:16:10 -0400
Branch: REL_12_STABLE [dc1503d5b] 2024-03-12 18:16:10 -0400
-->
     <para>
      Fix confusion about the return rowtype of SQL-language procedures
      (Tom Lane)
      <ulink url="&commit_baseurl;649bbba11">&sect;</ulink>
     </para>

     <para>
      A procedure implemented in SQL language that returns a single
      composite-type column would cause an assertion failure or core dump.
     </para>
    </listitem>

    <listitem>
<!--
Author: Alexander Korotkov <akorotkov@postgresql.org>
Branch: master [d57b7cc33] 2024-02-16 16:02:00 +0200
Branch: master [75bcba6cb] 2024-02-21 02:51:41 +0200
Branch: REL_16_STABLE [760767182] 2024-03-11 03:06:55 +0200
Branch: REL_15_STABLE [84788ee5b] 2024-03-11 03:06:45 +0200
Branch: REL_14_STABLE [84cc1a552] 2024-03-11 03:06:15 +0200
Branch: REL_13_STABLE [445c7e38f] 2024-03-11 03:06:10 +0200
Branch: REL_12_STABLE [98bfb7558] 2024-03-11 02:53:07 +0200
-->
     <para>
      Add protective stack depth checks to some recursive functions
      (Egor Chindyaskin)
      <ulink url="&commit_baseurl;84cc1a552">&sect;</ulink>
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [d163fdbfe] 2024-02-28 14:00:30 -0500
Branch: REL_16_STABLE [17db5436e] 2024-02-28 14:00:30 -0500
Branch: REL_15_STABLE [db8855b66] 2024-02-28 14:00:30 -0500
Branch: REL_14_STABLE [fe3b1b575] 2024-02-28 14:00:30 -0500
-->
     <para>
      Fix mis-rounding and overflow hazards
      in <function>date_bin()</function> (Moaaz Assali)
      <ulink url="&commit_baseurl;fe3b1b575">&sect;</ulink>
     </para>

     <para>
      In the case where the source timestamp is before the origin
      timestamp and their difference is already an exact multiple of the
      stride, the code incorrectly subtracted the stride anyway.  Also,
      detect some integer-overflow cases that would have produced
      incorrect results.
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [4019285c0] 2024-04-28 13:42:13 -0400
Branch: REL_16_STABLE [3752e3d21] 2024-04-28 13:42:13 -0400
Branch: REL_15_STABLE [e6e3ee5b7] 2024-04-28 13:42:13 -0400
Branch: REL_14_STABLE [1748379b6] 2024-04-28 13:42:13 -0400
Branch: REL_13_STABLE [440b6251b] 2024-04-28 13:42:13 -0400
Branch: REL_12_STABLE [cb0ccefa0] 2024-04-28 13:42:13 -0400
-->
     <para>
      Detect integer overflow when adding or subtracting
      an <type>interval</type> to/from a <type>timestamp</type>
      (Joseph Koshakow)
      <ulink url="&commit_baseurl;1748379b6">&sect;</ulink>
     </para>

     <para>
      Some cases that should cause an out-of-range error produced an
      incorrect result instead.
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [ce571434a] 2024-02-09 12:29:41 -0500
Branch: REL_16_STABLE [4eb261165] 2024-02-09 12:29:41 -0500
Branch: REL_15_STABLE [26c89d105] 2024-02-09 12:29:41 -0500
Branch: REL_14_STABLE [d21690edb] 2024-02-09 12:29:41 -0500
Branch: REL_13_STABLE [ceb224b62] 2024-02-09 12:29:41 -0500
Branch: REL_12_STABLE [f38903d1e] 2024-02-09 12:29:41 -0500
-->
     <para>
      Avoid race condition in <function>pg_get_expr()</function>
      (Tom Lane)
      <ulink url="&commit_baseurl;d21690edb">&sect;</ulink>
     </para>

     <para>
      If the relation referenced by the argument is dropped concurrently,
      the function's intention is to return NULL, but sometimes it failed
      instead.
     </para>
    </listitem>

    <listitem>
<!--
Author: Alexander Korotkov <akorotkov@postgresql.org>
Branch: master [165d921c9] 2024-02-08 12:45:26 +0200
Branch: REL_16_STABLE [e3e05adde] 2024-02-09 12:37:21 +0200
Branch: REL_15_STABLE [503299b7f] 2024-02-09 12:38:32 +0200
Branch: REL_14_STABLE [18388291a] 2024-02-09 12:39:42 +0200
Branch: REL_13_STABLE [4efaf4b09] 2024-02-09 12:39:54 +0200
Branch: REL_12_STABLE [d44060cfc] 2024-02-09 12:55:43 +0200
-->
     <para>
      Fix detection of old transaction IDs in XID status functions
      (Karina Litskevich)
      <ulink url="&commit_baseurl;18388291a">&sect;</ulink>
     </para>

     <para>
      Transaction IDs more than 2<superscript>31</superscript>
      transactions in the past could be misidentified as recent,
      leading to misbehavior of <function>pg_xact_status()</function>
      or <function>txid_status()</function>.
     </para>
    </listitem>

    <listitem>
<!--
Author: Noah Misch <noah@leadboat.com>
Branch: master [935829743] 2024-04-13 08:34:20 -0700
Branch: REL_16_STABLE [4e62ba21a] 2024-04-13 08:35:06 -0700
Branch: REL_15_STABLE [7c490a18b] 2024-04-13 08:35:20 -0700
Branch: REL_14_STABLE [08059fc04] 2024-04-13 08:35:32 -0700
-->
     <para>
      Ensure that a table's freespace map won't return a page that's past
      the end of the table (Ronan Dunklau)
      <ulink url="&commit_baseurl;08059fc04">&sect;</ulink>
     </para>

     <para>
      Because the freespace map isn't WAL-logged, this was possible in
      edge cases involving an OS crash, a replica promote, or a PITR
      restore.  The result would be a <quote>could not read block</quote>
      error.
     </para>
    </listitem>

    <listitem>
<!--
Author: Etsuro Fujita <efujita@postgresql.org>
Branch: REL_16_STABLE [e79ceafe9] 2024-04-11 19:05:00 +0900
Branch: REL_15_STABLE [b82dca2a5] 2024-04-11 19:05:02 +0900
Branch: REL_14_STABLE [b714bc40c] 2024-04-11 19:05:04 +0900
Branch: REL_13_STABLE [01b01a77f] 2024-04-11 19:05:05 +0900
Branch: REL_12_STABLE [0341d4b10] 2024-04-11 19:05:07 +0900
-->
     <para>
      Fix file descriptor leakage when an error is thrown while waiting
      in <function>WaitEventSetWait</function> (Etsuro Fujita)
      <ulink url="&commit_baseurl;b714bc40c">&sect;</ulink>
     </para>
    </listitem>

    <listitem>
<!--
Author: Etsuro Fujita <efujita@postgresql.org>
Branch: REL_16_STABLE [f6f61a4bd] 2024-04-04 17:25:00 +0900
Branch: REL_15_STABLE [3f96d113f] 2024-04-04 17:25:02 +0900
Branch: REL_14_STABLE [e10ca95ff] 2024-04-04 17:25:04 +0900
-->
     <para>
      Avoid corrupting exception stack if an FDW implements async append
      but doesn't configure any wait conditions for the Append plan node
      to wait for (Alexander Pyhalov)
      <ulink url="&commit_baseurl;e10ca95ff">&sect;</ulink>
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [f5a465f1a] 2024-02-25 16:15:07 -0500
Branch: REL_16_STABLE [8c785d354] 2024-02-25 16:15:07 -0500
Branch: REL_15_STABLE [940489b46] 2024-02-25 16:15:07 -0500
Branch: REL_14_STABLE [09f09884c] 2024-02-25 16:15:07 -0500
Branch: REL_13_STABLE [43cca9de9] 2024-02-25 16:15:07 -0500
Branch: REL_12_STABLE [c0b4dad38] 2024-02-25 16:15:07 -0500
-->
     <para>
      Throw an error if an index is accessed while it is being reindexed
      (Tom Lane)
      <ulink url="&commit_baseurl;09f09884c">&sect;</ulink>
     </para>

     <para>
      Previously this was just an assertion check, but promote it into a
      regular runtime error.  This will provide a more on-point error
      message when reindexing a user-defined index expression that
      attempts to access its own table.
     </para>
    </listitem>

    <listitem>
<!--
Author: David Rowley <drowley@postgresql.org>
Branch: master [a63224be4] 2024-05-01 13:21:21 +1200
Branch: REL_16_STABLE [68d358545] 2024-05-01 13:21:50 +1200
Branch: REL_15_STABLE [52f21f928] 2024-05-01 13:22:16 +1200
Branch: REL_14_STABLE [e6b0efc65] 2024-05-01 13:22:41 +1200
Branch: REL_13_STABLE [0a34bcd0c] 2024-05-01 13:23:05 +1200
Branch: REL_12_STABLE [e3f9dcabd] 2024-05-01 13:23:25 +1200
-->
     <para>
      Ensure that index-only scans on <type>name</type> columns return a
      fully-padded value (David Rowley)
      <ulink url="&commit_baseurl;e6b0efc65">&sect;</ulink>
     </para>

     <para>
      The value physically stored in the index is truncated, and
      previously a pointer to that value was returned to callers.  This
      provoked complaints when testing under valgrind.  In theory it could
      result in crashes, though none have been reported.
     </para>
    </listitem>

    <listitem>
<!--
Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
Branch: master [fbf9a7ac4] 2024-02-13 21:23:41 +0200
Branch: REL_16_STABLE [f2f09b825] 2024-02-13 21:24:45 +0200
Branch: REL_15_STABLE [d46c26961] 2024-02-13 21:25:27 +0200
Branch: REL_14_STABLE [9b8550fbd] 2024-02-13 21:25:39 +0200
Branch: REL_13_STABLE [e92375692] 2024-02-13 21:25:48 +0200
Branch: REL_12_STABLE [95cc48ca0] 2024-02-13 21:25:59 +0200
-->
     <para>
      Fix crash with DSM allocations larger than 4GB (Heikki Linnakangas)
      <ulink url="&commit_baseurl;9b8550fbd">&sect;</ulink>
     </para>
    </listitem>

    <listitem>
<!--
Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
Branch: master [f8c5317d0] 2024-03-12 10:18:32 +0200
Branch: REL_16_STABLE [539e328b1] 2024-03-12 10:18:44 +0200
Branch: REL_15_STABLE [4fce5f970] 2024-03-12 10:18:50 +0200
Branch: REL_14_STABLE [bf1f593e8] 2024-03-12 10:18:51 +0200
Branch: REL_13_STABLE [ad5cd55e6] 2024-03-12 10:18:53 +0200
Branch: REL_12_STABLE [df27d76d3] 2024-03-12 10:18:54 +0200
-->
     <para>
      Disconnect if a new server session's client socket cannot be put
      into non-blocking mode (Heikki Linnakangas)
      <ulink url="&commit_baseurl;bf1f593e8">&sect;</ulink>
     </para>

     <para>
      It was once theoretically possible for us to operate with a socket
      that's in blocking mode; but that hasn't worked fully in a long
      time, so fail at connection start rather than misbehave later.
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [453c46873] 2024-03-07 19:38:17 -0500
Branch: REL_16_STABLE [6a2c80e95] 2024-03-07 19:37:51 -0500
Branch: REL_15_STABLE [0fe82e45c] 2024-03-07 19:37:51 -0500
Branch: REL_14_STABLE [473babd42] 2024-03-07 19:37:51 -0500
Branch: REL_13_STABLE [9fbe07275] 2024-03-07 19:37:51 -0500
Branch: REL_12_STABLE [c42e5fdcf] 2024-03-07 19:37:51 -0500
-->
     <para>
      Fix inadequate error reporting
      with <application>OpenSSL</application> 3.0.0 and later (Heikki
      Linnakangas, Tom Lane)
      <ulink url="&commit_baseurl;473babd42">&sect;</ulink>
     </para>

     <para>
      System-reported errors passed through by OpenSSL were reported with
      a numeric error code rather than anything readable.
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [a584d03ce] 2024-02-09 11:21:08 -0500
Branch: REL_16_STABLE [52afe5632] 2024-02-09 11:21:08 -0500
Branch: REL_15_STABLE [806f98951] 2024-02-09 11:21:08 -0500
Branch: REL_14_STABLE [8ead39e38] 2024-02-09 11:21:08 -0500
Branch: REL_13_STABLE [8c5da20db] 2024-02-09 11:21:08 -0500
Branch: REL_12_STABLE [9fb1396a9] 2024-02-09 11:21:08 -0500
Branch: master [0028b55bc] 2024-02-09 11:11:39 -0500
Branch: REL_16_STABLE [9440d23a0] 2024-02-09 11:11:39 -0500
Branch: REL_15_STABLE [9f041b041] 2024-02-09 11:11:39 -0500
Branch: REL_14_STABLE [7d7cc7fd6] 2024-02-09 11:11:39 -0500
Branch: REL_13_STABLE [67f8cf0f0] 2024-02-09 11:11:39 -0500
Branch: REL_12_STABLE [95e960e81] 2024-02-09 11:11:39 -0500
-->
     <para>
      Avoid concurrent calls to <function>bindtextdomain()</function>
      in <application>libpq</application>
      and <application>ecpglib</application> (Tom Lane)
      <ulink url="&commit_baseurl;8ead39e38">&sect;</ulink>
      <ulink url="&commit_baseurl;7d7cc7fd6">&sect;</ulink>
     </para>

     <para>
      Although GNU <application>gettext</application>'s implementation
      seems to be fine with concurrent calls, the version available on
      Windows is not.
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [6f0cef935] 2024-04-16 12:31:42 -0400
Branch: REL_16_STABLE [392e6e9e6] 2024-04-16 12:31:32 -0400
Branch: REL_15_STABLE [25f937217] 2024-04-16 12:31:32 -0400
Branch: REL_14_STABLE [463164639] 2024-04-16 12:31:32 -0400
Branch: REL_13_STABLE [02531e8ca] 2024-04-16 12:31:32 -0400
Branch: REL_12_STABLE [2b6a74afe] 2024-04-16 12:31:32 -0400
Branch: REL_16_STABLE [0018f0af5] 2024-04-18 20:47:37 -0400
Branch: REL_15_STABLE [1e7b1b026] 2024-04-18 20:47:37 -0400
Branch: REL_14_STABLE [df66319f7] 2024-04-18 20:47:37 -0400
Branch: REL_13_STABLE [481597fc6] 2024-04-18 20:47:37 -0400
Branch: REL_12_STABLE [61dd815e0] 2024-04-18 20:47:37 -0400
Branch: REL_16_STABLE [dd3fddc85] 2024-04-19 01:07:16 -0400
Branch: REL_15_STABLE [f7e891748] 2024-04-19 01:07:32 -0400
Branch: REL_14_STABLE [de84608e2] 2024-04-19 01:07:41 -0400
Branch: REL_13_STABLE [c6bfeab42] 2024-04-19 01:07:47 -0400
Branch: REL_12_STABLE [cd26f08e4] 2024-04-19 01:07:52 -0400
-->
     <para>
      Fix crash in <application>ecpg</application>'s preprocessor if
      the program tries to redefine a macro that was defined on the
      preprocessor command line (Tom Lane)
      <ulink url="&commit_baseurl;463164639">&sect;</ulink>
      <ulink url="&commit_baseurl;df66319f7">&sect;</ulink>
      <ulink url="&commit_baseurl;de84608e2">&sect;</ulink>
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [096a761d6] 2024-04-04 15:31:53 -0400
Branch: REL_16_STABLE [118558e6d] 2024-04-04 15:31:53 -0400
Branch: REL_15_STABLE [f159f1814] 2024-04-04 15:31:53 -0400
Branch: REL_14_STABLE [d3167ed3f] 2024-04-04 15:31:53 -0400
Branch: REL_13_STABLE [5ba29e945] 2024-04-04 15:31:53 -0400
Branch: REL_12_STABLE [360d007e3] 2024-04-04 15:31:53 -0400
-->
     <para>
      In <application>ecpg</application>, avoid issuing
      false <quote>unsupported feature will be passed to server</quote>
      warnings (Tom Lane)
      <ulink url="&commit_baseurl;d3167ed3f">&sect;</ulink>
     </para>
    </listitem>

    <listitem>
<!--
Author: Michael Paquier <michael@paquier.xyz>
Branch: master [e77a1c58e] 2024-02-19 11:38:18 +0900
Branch: REL_16_STABLE [88e03d055] 2024-02-19 11:38:44 +0900
Branch: REL_15_STABLE [b5cb6022b] 2024-02-19 11:38:47 +0900
Branch: REL_14_STABLE [a05bb9add] 2024-02-19 11:38:49 +0900
Branch: REL_13_STABLE [c031ce97b] 2024-02-19 11:38:52 +0900
Branch: REL_12_STABLE [771240f97] 2024-02-19 11:38:54 +0900
-->
     <para>
      Ensure that the string result
      of <application>ecpg</application>'s <function>intoasc()</function>
      function is correctly zero-terminated (Oleg Tselebrovskiy)
      <ulink url="&commit_baseurl;a05bb9add">&sect;</ulink>
     </para>
    </listitem>

    <listitem>
<!--
Author: Daniel Gustafsson <dgustafsson@postgresql.org>
Branch: master [7e65ad197] 2024-03-21 23:31:57 +0100
Branch: REL_16_STABLE [5863bacb8] 2024-03-21 23:31:57 +0100
Branch: REL_15_STABLE [12128be62] 2024-03-21 23:31:57 +0100
Branch: REL_14_STABLE [be01c8c34] 2024-03-21 23:31:57 +0100
Branch: REL_13_STABLE [affc46b76] 2024-03-21 23:31:57 +0100
Branch: REL_12_STABLE [d82cb467b] 2024-03-21 23:31:57 +0100
Branch: REL_14_STABLE [6ebd43725] 2024-03-22 01:01:30 +0100
Branch: REL_13_STABLE [d5c6affb8] 2024-03-22 01:01:30 +0100
Branch: REL_12_STABLE [82c2192d9] 2024-03-22 01:01:30 +0100
-->
     <para>
      Fix <application>pg_dumpall</application> so that role comments, if
      present, will be dumped regardless of the setting
      of <option>--no-role-passwords</option> (Daniel Gustafsson,
      &Aacute;lvaro Herrera)
      <ulink url="&commit_baseurl;be01c8c34">&sect;</ulink>
      <ulink url="&commit_baseurl;6ebd43725">&sect;</ulink>
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [5392dd3d2] 2024-04-10 15:45:58 -0400
Branch: REL_16_STABLE [48f216dc6] 2024-04-10 15:45:58 -0400
Branch: REL_15_STABLE [d85db0a8e] 2024-04-10 15:45:59 -0400
Branch: REL_14_STABLE [dc5824a06] 2024-04-10 15:45:59 -0400
Branch: REL_13_STABLE [f5cee411a] 2024-04-10 15:45:59 -0400
Branch: REL_12_STABLE [5e9d8bed0] 2024-04-10 15:45:59 -0400
-->
     <para>
      Fix <application>PL/pgSQL</application>'s parsing of single-line
      comments (<literal>--</literal>-style comments) following
      expressions (Erik Wienhold, Tom Lane)
      <ulink url="&commit_baseurl;dc5824a06">&sect;</ulink>
     </para>

     <para>
      This mistake caused parse errors if such a comment followed
      a <literal>WHEN</literal> expression in
      a <application>PL/pgSQL</application> <command>CASE</command>
      statement.
     </para>
    </listitem>

    <listitem>
<!--
Author: Alexander Korotkov <akorotkov@postgresql.org>
Branch: master [b1fe8efdf] 2024-03-24 00:09:24 +0200
Branch: REL_16_STABLE [3676b846b] 2024-03-23 23:02:30 +0200
Branch: REL_15_STABLE [0d466bce9] 2024-03-23 23:02:43 +0200
Branch: REL_14_STABLE [4e8529da4] 2024-03-23 23:03:10 +0200
Branch: REL_13_STABLE [5cc1f2626] 2024-03-23 23:03:12 +0200
Branch: REL_12_STABLE [d603e6744] 2024-03-24 00:08:13 +0200
Branch: master [ab65dfb0f] 2024-03-24 00:09:24 +0200
Branch: REL_16_STABLE [a6ddb8ad0] 2024-03-23 23:02:30 +0200
Branch: REL_15_STABLE [54e6184db] 2024-03-23 23:02:43 +0200
Branch: REL_14_STABLE [5df5d9cd7] 2024-03-23 23:03:10 +0200
Branch: REL_13_STABLE [e2c241416] 2024-03-23 23:03:12 +0200
Branch: REL_12_STABLE [50f8611d0] 2024-03-23 23:03:14 +0200
-->
     <para>
      In <filename>contrib/amcheck</filename>, don't report false match
      failures due to short- versus long-header values (Andrey Borodin,
      Michael Zhilin)
      <ulink url="&commit_baseurl;4e8529da4">&sect;</ulink>
      <ulink url="&commit_baseurl;5df5d9cd7">&sect;</ulink>
     </para>

     <para>
      A variable-length datum in a heap tuple or index tuple could have
      either a short or a long header, depending on compression parameters
      that applied when it was made.  Treat these cases as equivalent
      rather than complaining if there's a difference.
     </para>
    </listitem>

    <listitem>
<!--
Author: Tomas Vondra <tomas.vondra@postgresql.org>
Branch: master [bb616ed3e] 2024-04-14 18:19:58 +0200
Branch: REL_16_STABLE [8cea358b1] 2024-04-14 18:24:38 +0200
Branch: master [2f20ced1e] 2024-04-14 18:07:15 +0200
Branch: REL_16_STABLE [ccd8f0fa1] 2024-04-14 18:17:09 +0200
Branch: REL_15_STABLE [3cd413511] 2024-04-14 18:17:29 +0200
Branch: REL_14_STABLE [ad23af83d] 2024-04-14 18:18:07 +0200
-->
     <para>
      Fix bugs in BRIN output functions (Tomas Vondra)
      <ulink url="&commit_baseurl;ad23af83d">&sect;</ulink>
     </para>

     <para>
      These output functions are only used for displaying index entries
      in <filename>contrib/pageinspect</filename>, so the errors are of
      limited practical concern.
     </para>
    </listitem>

    <listitem>
<!--
Author: David Rowley <drowley@postgresql.org>
Branch: master [c399248b3] 2024-03-11 12:27:11 +1300
Branch: REL_16_STABLE [6a9e2cb2b] 2024-03-11 12:27:46 +1300
Branch: REL_15_STABLE [ab64b275a] 2024-03-11 12:28:11 +1300
Branch: REL_14_STABLE [628c3f2e1] 2024-03-11 12:28:40 +1300
Branch: REL_13_STABLE [20b85b3da] 2024-03-11 12:29:03 +1300
Branch: REL_12_STABLE [9301e0f41] 2024-03-11 12:29:24 +1300
-->
     <para>
      In <filename>contrib/postgres_fdw</filename>, avoid emitting
      requests to sort by a constant (David Rowley)
      <ulink url="&commit_baseurl;628c3f2e1">&sect;</ulink>
     </para>

     <para>
      This could occur in cases involving <literal>UNION ALL</literal>
      with constant-emitting subqueries.  Sorting by a constant is useless
      of course, but it also risks being misinterpreted by the remote
      server, leading to <quote>ORDER BY
      position <replaceable>N</replaceable> is not in select list</quote>
      errors.
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [a3021aafc] 2024-04-21 13:46:20 -0400
Branch: REL_16_STABLE [75929b6cf] 2024-04-21 13:46:20 -0400
Branch: REL_15_STABLE [6c85e3359] 2024-04-21 13:46:20 -0400
Branch: REL_14_STABLE [3ed6e1698] 2024-04-21 13:46:20 -0400
Branch: REL_13_STABLE [0e56b2b94] 2024-04-21 13:46:20 -0400
Branch: REL_12_STABLE [ce1c30ece] 2024-04-21 13:46:20 -0400
-->
     <para>
      Make <filename>contrib/postgres_fdw</filename> set the remote
      session's time zone to <literal>GMT</literal>
      not <literal>UTC</literal> (Tom Lane)
      <ulink url="&commit_baseurl;3ed6e1698">&sect;</ulink>
     </para>

     <para>
      This should have the same results for practical purposes.
      However, <literal>GMT</literal> is recognized by hard-wired code in
      the server, while <literal>UTC</literal> is looked up in the
      timezone database.  So the old code could fail in the unlikely event
      that the remote server's timezone database is missing entries.
     </para>
    </listitem>

    <listitem>
<!--
Author: Michael Paquier <michael@paquier.xyz>
Branch: REL_16_STABLE [7c93f31de] 2024-04-16 12:25:48 +0900
Branch: REL_15_STABLE [689ba4f1c] 2024-04-16 12:26:10 +0900
Branch: REL_14_STABLE [6fa5e67e8] 2024-04-16 12:26:15 +0900
Branch: REL_13_STABLE [bb418aeee] 2024-04-16 12:26:17 +0900
Branch: REL_12_STABLE [4b0e5d601] 2024-04-16 12:26:21 +0900
-->
     <para>
      In <filename>contrib/xml2</filename>, avoid use of library functions
      that have been deprecated in recent versions
      of <application>libxml2</application> (Dmitry Koval)
      <ulink url="&commit_baseurl;6fa5e67e8">&sect;</ulink>
     </para>
    </listitem>

    <listitem>
<!--
Author: Thomas Munro <tmunro@postgresql.org>
Branch: master [53c8d6c9f] 2024-04-10 12:13:46 +1200
Branch: REL_16_STABLE [bf1cfe77e] 2024-04-10 10:46:15 +1200
Branch: REL_15_STABLE [74992929a] 2024-04-10 12:14:04 +1200
Branch: REL_14_STABLE [7fe32eaa4] 2024-04-10 12:15:07 +1200
Branch: REL_13_STABLE [4f90750b5] 2024-04-10 12:15:41 +1200
Branch: REL_12_STABLE [01b55203a] 2024-04-10 12:15:59 +1200
-->
     <para>
      Fix incompatibility with LLVM 18 (Thomas Munro, Dmitry Dolgov)
      <ulink url="&commit_baseurl;7fe32eaa4">&sect;</ulink>
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [8a92b70c1] 2024-03-26 11:44:49 -0400
Branch: REL_16_STABLE [7651fd387] 2024-03-26 11:44:49 -0400
Branch: REL_15_STABLE [3c3f4fd74] 2024-03-26 11:44:49 -0400
Branch: REL_14_STABLE [d82605bcd] 2024-03-26 11:44:49 -0400
Branch: REL_13_STABLE [243e99532] 2024-03-26 11:44:49 -0400
Branch: REL_12_STABLE [7124e7d52] 2024-03-26 11:44:49 -0400
-->
     <para>
      Allow <literal>make check</literal> to work with
      the <application>musl</application> C library (Thomas Munro, Bruce
      Momjian, Tom Lane)
      <ulink url="&commit_baseurl;d82605bcd">&sect;</ulink>
     </para>
    </listitem>

   </itemizedlist>

  </sect2>
 </sect1>

 <sect1 id="release-14-11">
  <title>Release 14.11</title>

  <formalpara>
  <title>Release date:</title>
  <para>2024-02-08</para>
  </formalpara>

  <para>
   This release contains a variety of fixes from 14.10.
   For information about new features in major release 14, see
   <xref linkend="release-14"/>.
  </para>

  <sect2>
   <title>Migration to Version 14.11</title>

   <para>
    A dump/restore is not required for those running 14.X.
   </para>

   <para>
    However, one bug was fixed that could have resulted in corruption of
    GIN indexes during concurrent updates.  If you suspect such
    corruption, reindex affected indexes after installing this update.
   </para>

   <para>
    Also, if you are upgrading from a version earlier than 14.10,
    see <xref linkend="release-14-10"/>.
   </para>
  </sect2>

  <sect2>
   <title>Changes</title>

   <itemizedlist>

    <listitem>
<!--
Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
Branch: master [5a9167c39] 2024-02-05 11:01:23 +0200
Branch: REL_16_STABLE [d6a61cb3b] 2024-02-05 11:02:56 +0200
Branch: REL_15_STABLE [f2fdea198] 2024-02-05 11:03:26 +0200
Branch: REL_14_STABLE [f4f288352] 2024-02-05 11:03:43 +0200
Branch: REL_13_STABLE [d541ce3b6] 2024-02-05 11:04:08 +0200
Branch: REL_12_STABLE [2699fc035] 2024-02-05 11:04:22 +0200
Branch: master [b96115acb] 2024-02-05 11:01:30 +0200
Branch: REL_16_STABLE [fb3836855] 2024-02-05 11:03:03 +0200
Branch: REL_15_STABLE [06f36bc01] 2024-02-05 11:03:28 +0200
Branch: REL_14_STABLE [a45c950ae] 2024-02-05 11:03:43 +0200
Branch: REL_13_STABLE [b73d21648] 2024-02-05 11:04:10 +0200
Branch: REL_12_STABLE [add8bc9b8] 2024-02-05 11:04:23 +0200
-->
     <para>
      Tighten security restrictions within <command>REFRESH MATERIALIZED
      VIEW CONCURRENTLY</command> (Heikki Linnakangas)
      <ulink url="&commit_baseurl;f4f288352">&sect;</ulink>
      <ulink url="&commit_baseurl;a45c950ae">&sect;</ulink>
     </para>

     <para>
      One step of a concurrent refresh command was run under weak security
      restrictions.  If a materialized view's owner could persuade a
      superuser or other high-privileged user to perform a concurrent
      refresh on that view, the view's owner could control code executed
      with the privileges of the user running <command>REFRESH</command>.
      Fix things so that all user-determined code is run as the view's
      owner, as expected.
     </para>

     <para>
      The only known exploit for this error does not work
      in <productname>PostgreSQL</productname> 16.0 and later, so it may
      be that v16 is not vulnerable in practice.
     </para>

     <para>
      The <productname>PostgreSQL</productname> Project thanks Pedro
      Gallegos for reporting this problem.
      (CVE-2024-0985) <!-- not CVE-2023-5869 as claimed in commit msg -->
     </para>
    </listitem>

    <listitem>
<!--
Author: Daniel Gustafsson <dgustafsson@postgresql.org>
Branch: master [9dce22033] 2023-09-27 13:02:21 +0200
Branch: REL_16_STABLE [2cf50585e] 2023-11-17 10:18:38 +0100
Branch: REL_15_STABLE [aef521849] 2023-11-17 10:21:34 +0100
Branch: REL_14_STABLE [75a20a4b4] 2023-11-17 10:27:45 +0100
Branch: REL_13_STABLE [10912f7d4] 2023-11-17 11:46:31 +0100
Branch: REL_12_STABLE [3b991f81c] 2023-11-17 11:47:17 +0100
Branch: REL_12_STABLE [c922b2410] 2023-12-11 12:02:01 +0100
-->
     <para>
      Fix memory leak when performing JIT inlining (Andres Freund,
      Daniel Gustafsson)
      <ulink url="&commit_baseurl;75a20a4b4">&sect;</ulink>
     </para>

     <para>
      There have been multiple reports of backend processes suffering
      out-of-memory conditions after sufficiently many JIT compilations.
      This fix should resolve that.
     </para>
    </listitem>

    <listitem>
<!--
Author: Andres Freund <andres@anarazel.de>
Branch: REL_15_STABLE [f374fb4aa] 2024-01-18 11:12:31 +0900
Branch: REL_14_STABLE [5f6ec27a6] 2024-01-18 11:12:38 +0900
Branch: REL_13_STABLE [dc9d424cf] 2024-01-18 11:12:43 +0900
Branch: REL_12_STABLE [810382285] 2024-01-18 11:12:48 +0900
-->
     <para>
      When dequeueing from an LWLock, avoid needing to search the list of
      waiting processes (Andres Freund)
      <ulink url="&commit_baseurl;5f6ec27a6">&sect;</ulink>
     </para>

     <para>
      This fixes O(N^2) behavior when the list of waiters is long.  In
      some use-cases this results in substantial throughput improvements.
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: REL_16_STABLE [62f120203] 2024-02-01 12:34:21 -0500
Branch: REL_15_STABLE [12ec16d11] 2024-02-01 12:34:21 -0500
Branch: REL_14_STABLE [e031995d5] 2024-02-01 12:34:21 -0500
Branch: REL_13_STABLE [7af96a66f] 2024-02-01 12:34:21 -0500
Branch: REL_12_STABLE [2e822a1d6] 2024-02-01 12:34:21 -0500
-->
     <para>
      Avoid generating incorrect partitioned-join plans (Richard Guo)
      <ulink url="&commit_baseurl;e031995d5">&sect;</ulink>
     </para>

     <para>
      Some uncommon situations involving lateral references could create
      incorrect plans.  Affected queries could produce wrong answers, or
      odd failures such as <quote>variable not found in subplan target
      list</quote>, or executor crashes.
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [29f114b6f] 2024-01-11 15:28:22 -0500
Branch: REL_16_STABLE [80bece312] 2024-01-11 15:28:13 -0500
Branch: REL_15_STABLE [a0b4fda44] 2024-01-11 15:28:13 -0500
Branch: REL_14_STABLE [ea1d54288] 2024-01-11 15:28:13 -0500
Branch: REL_13_STABLE [bfd28bb07] 2024-01-11 15:28:13 -0500
Branch: REL_12_STABLE [69c12c417] 2024-01-11 15:28:13 -0500
-->
     <para>
      Fix incorrect wrapping of subquery output expressions in
      PlaceHolderVars (Tom Lane)
      <ulink url="&commit_baseurl;ea1d54288">&sect;</ulink>
     </para>

     <para>
      This fixes incorrect results when a subquery is underneath an outer
      join and has an output column that laterally references something
      outside the outer join's scope.  The output column might not appear
      as NULL when it should do so due to the action of the outer join.
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [6545ba96c] 2024-01-14 12:38:41 -0500
Branch: REL_16_STABLE [23e0ba59c] 2024-01-14 12:38:41 -0500
Branch: REL_15_STABLE [1a4e54617] 2024-01-14 12:38:41 -0500
Branch: REL_14_STABLE [c7edaeec5] 2024-01-14 12:38:41 -0500
-->
     <para>
      Prevent access to a no-longer-pinned buffer in <literal>BEFORE ROW
      UPDATE</literal> triggers (Alexander Lakhin, Tom Lane)
      <ulink url="&commit_baseurl;c7edaeec5">&sect;</ulink>
     </para>

     <para>
      If the tuple being updated had just been updated and moved to
      another page by another session, there was a narrow window where
      we would attempt to fetch data from the new tuple version without
      any pin on its buffer.  In principle this could result in garbage
      data appearing in non-updated columns of the proposed new tuple.
      The odds of problems in practice seem rather low, however.
     </para>
    </listitem>

    <listitem>
<!--
Author: Alexander Korotkov <akorotkov@postgresql.org>
Branch: master [2a67b5a60] 2024-01-07 09:10:19 +0200
Branch: REL_16_STABLE [714a987bc] 2024-01-07 09:32:58 +0200
Branch: REL_15_STABLE [1a7c03e6f] 2024-01-07 09:10:40 +0200
Branch: REL_14_STABLE [3bdaa8fc6] 2024-01-07 09:10:49 +0200
Branch: REL_13_STABLE [60de25c6e] 2024-01-07 09:11:00 +0200
Branch: REL_12_STABLE [72d5b2776] 2024-01-07 09:18:43 +0200
Branch: master [6d94cc6ca] 2024-01-08 20:00:20 +0200
Branch: REL_16_STABLE [20a566cd4] 2024-01-08 19:57:09 +0200
Branch: REL_15_STABLE [6eecc3a62] 2024-01-08 19:57:03 +0200
Branch: REL_14_STABLE [97e64911d] 2024-01-08 19:57:58 +0200
Branch: REL_13_STABLE [17b6f39f1] 2024-01-08 19:58:38 +0200
Branch: REL_12_STABLE [a5e2853c3] 2024-01-08 19:58:51 +0200
-->
     <para>
      Avoid requesting an oversize shared-memory area in parallel hash
      join (Thomas Munro, Andrei Lepikhov, Alexander Korotkov)
      <ulink url="&commit_baseurl;3bdaa8fc6">&sect;</ulink>
      <ulink url="&commit_baseurl;97e64911d">&sect;</ulink>
     </para>

     <para>
      The limiting value was too large, allowing <quote>invalid DSA memory
      alloc request size</quote> errors to occur with sufficiently large
      expected hash table sizes.
     </para>
    </listitem>

    <listitem>
<!--
Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
Branch: master [60f227316] 2023-11-28 12:00:14 +0200
Branch: REL_16_STABLE [9fee3232a] 2023-11-28 11:59:45 +0200
Branch: REL_15_STABLE [2873fbfe0] 2023-11-28 11:59:50 +0200
Branch: REL_14_STABLE [59c62a21f] 2023-11-28 11:59:51 +0200
Branch: REL_13_STABLE [e434d3620] 2023-11-28 11:59:52 +0200
Branch: REL_12_STABLE [b8a606e21] 2023-11-28 11:59:53 +0200
-->
     <para>
      Avoid assertion failures in <function>heap_update()</function>
      and <function>heap_delete()</function> when a tuple to be updated by
      a foreign-key enforcement trigger fails the extra visibility
      crosscheck (Alexander Lakhin)
      <ulink url="&commit_baseurl;59c62a21f">&sect;</ulink>
     </para>

     <para>
      This error had no impact in non-assert builds.
     </para>
    </listitem>

    <listitem>
<!--
Author: Michael Paquier <michael@paquier.xyz>
Branch: master [1b2c6b756] 2023-11-08 14:06:26 +0900
Branch: REL_16_STABLE [4dccf9575] 2023-11-08 14:06:36 +0900
Branch: REL_15_STABLE [7e18c0bd6] 2023-11-08 14:06:39 +0900
Branch: REL_14_STABLE [59fc39c0d] 2023-11-08 14:06:42 +0900
-->
     <para>
      Fix overly tight assertion
      about <varname>false_positive_rate</varname> parameter of
      BRIN bloom operator classes (Alexander Lakhin)
      <ulink url="&commit_baseurl;59fc39c0d">&sect;</ulink>
     </para>

     <para>
      This error had no impact in non-assert builds, either.
     </para>
    </listitem>

    <listitem>
<!--
Author: Michael Paquier <michael@paquier.xyz>
Branch: master [bb812ab09] 2024-01-24 14:20:01 +0900
Branch: REL_16_STABLE [51193e7a7] 2024-01-24 14:20:08 +0900
Branch: REL_15_STABLE [ad6fbbeeb] 2024-01-24 14:20:10 +0900
Branch: REL_14_STABLE [5a7833f49] 2024-01-24 14:20:11 +0900
Branch: REL_13_STABLE [bfec14d06] 2024-01-24 14:20:13 +0900
Branch: REL_12_STABLE [2f7242837] 2024-01-24 14:20:14 +0900
-->
     <para>
      Fix possible failure during <command>ALTER TABLE ADD
      COLUMN</command> on a complex inheritance tree (Tender Wang)
      <ulink url="&commit_baseurl;5a7833f49">&sect;</ulink>
     </para>

     <para>
      If a grandchild table would inherit the new column via multiple
      intermediate parents, the command failed with <quote>tuple already
      updated by self</quote>.
     </para>
    </listitem>

    <listitem>
<!--
Author: Michael Paquier <michael@paquier.xyz>
Branch: master [3e91dba8b] 2024-01-31 13:15:21 +0900
Branch: REL_16_STABLE [f33e83285] 2024-01-31 13:16:43 +0900
Branch: REL_15_STABLE [41fa4b31c] 2024-01-31 13:16:46 +0900
Branch: REL_14_STABLE [dde5b01c3] 2024-01-31 13:16:47 +0900
Branch: REL_13_STABLE [4d0e8a008] 2024-01-31 13:16:49 +0900
Branch: REL_12_STABLE [056109782] 2024-01-31 13:16:50 +0900
-->
     <para>
      Fix problems with duplicate token names in <command>ALTER TEXT
      SEARCH CONFIGURATION ... MAPPING</command> commands (Tender Wang,
      Michael Paquier)
      <ulink url="&commit_baseurl;dde5b01c3">&sect;</ulink>
     </para>
    </listitem>

    <listitem>
<!--
Author: Tomas Vondra <tomas.vondra@postgresql.org>
Branch: master [28f84f72f] 2023-11-19 21:03:38 +0100
Branch: REL_16_STABLE [ee32b824d] 2023-11-19 21:03:50 +0100
Branch: REL_15_STABLE [0177fc773] 2023-11-19 21:04:16 +0100
Branch: REL_14_STABLE [9dd50e92e] 2023-11-19 21:04:28 +0100
Branch: REL_13_STABLE [1e468ea4e] 2023-11-19 21:04:39 +0100
Branch: REL_12_STABLE [4f8d3c5b5] 2023-11-19 21:04:47 +0100
-->
     <para>
      Properly lock the associated table during <command>DROP
      STATISTICS</command> (Tomas Vondra)
      <ulink url="&commit_baseurl;9dd50e92e">&sect;</ulink>
     </para>

     <para>
      Failure to acquire the lock could result in <quote>tuple
      concurrently deleted</quote> errors if the <command>DROP</command>
      executes concurrently with <command>ANALYZE</command>.
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [743ddafc7] 2023-11-16 10:05:14 -0500
Branch: REL_16_STABLE [f07a3039c] 2023-11-16 10:05:14 -0500
Branch: REL_15_STABLE [9057ddbef] 2023-11-16 10:05:14 -0500
Branch: REL_14_STABLE [9bd0f74ea] 2023-11-16 10:05:14 -0500
Branch: REL_13_STABLE [5c11104c7] 2023-11-16 10:05:14 -0500
Branch: REL_12_STABLE [abd1b1325] 2023-11-16 10:05:14 -0500
-->
     <para>
      Fix function volatility checking for <literal>GENERATED</literal>
      and <literal>DEFAULT</literal> expressions (Tom Lane)
      <ulink url="&commit_baseurl;9bd0f74ea">&sect;</ulink>
     </para>

     <para>
      These places could fail to detect insertion of a volatile function
      default-argument expression, or decide that a polymorphic function
      is volatile although it is actually immutable on the datatype of
      interest.  This could lead to improperly rejecting or accepting
      a <literal>GENERATED</literal> clause, or to mistakenly applying the
      constant-default-value optimization in <command>ALTER TABLE ADD
      COLUMN</command>.
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [ad98fb142] 2024-01-13 13:46:27 -0500
Branch: REL_16_STABLE [7e2561e1a] 2024-01-13 13:46:27 -0500
Branch: REL_15_STABLE [2a46a0df4] 2024-01-13 13:46:27 -0500
Branch: REL_14_STABLE [db122d426] 2024-01-13 13:46:27 -0500
Branch: REL_13_STABLE [98e03f957] 2024-01-13 13:46:27 -0500
Branch: REL_12_STABLE [3b4d85cf1] 2024-01-13 13:46:27 -0500
Branch: master [96c019ffa] 2024-01-13 13:54:11 -0500
Branch: REL_16_STABLE [56dcd71de] 2024-01-13 13:54:11 -0500
Branch: REL_15_STABLE [d41358f4b] 2024-01-13 13:54:11 -0500
Branch: REL_14_STABLE [7ceeb57ba] 2024-01-13 13:54:11 -0500
Branch: REL_13_STABLE [475b3ea3c] 2024-01-13 13:54:11 -0500
Branch: REL_12_STABLE [d29a4fbac] 2024-01-13 13:54:11 -0500
-->
     <para>
      Detect that a new catalog cache entry became stale while detoasting
      its fields (Tom Lane)
      <ulink url="&commit_baseurl;db122d426">&sect;</ulink>
      <ulink url="&commit_baseurl;7ceeb57ba">&sect;</ulink>
     </para>

     <para>
      We expand any out-of-line fields in a catalog tuple before inserting
      it into the catalog caches.  That involves database access which
      might cause invalidation of catalog cache entries &mdash; but the
      new entry isn't in the cache yet, so we would miss noticing that it
      should get invalidated.  The result is a race condition in which an
      already-stale cache entry could get made, and then persist
      indefinitely.  This would lead to hard-to-predict misbehavior.
      Fix by rechecking the tuple's visibility after detoasting.
     </para>
    </listitem>

    <listitem>
<!--
Author: Dean Rasheed <dean.a.rasheed@gmail.com>
Branch: master [0e3e8fbd3] 2023-11-09 09:50:23 +0000
Branch: REL_16_STABLE [c396aca2b] 2023-11-09 09:53:05 +0000
Branch: REL_15_STABLE [308a69a98] 2023-11-09 09:54:22 +0000
Branch: REL_14_STABLE [dea12b40d] 2023-11-09 09:55:39 +0000
Branch: REL_13_STABLE [4f4a0010a] 2023-11-09 09:56:31 +0000
Branch: REL_12_STABLE [b17a02be2] 2023-11-09 09:57:52 +0000
-->
     <para>
      Fix edge-case integer overflow detection bug on some platforms (Dean
      Rasheed)
      <ulink url="&commit_baseurl;dea12b40d">&sect;</ulink>
     </para>

     <para>
      Computing <literal>0 - INT64_MIN</literal> should result in an
      overflow error, and did on most platforms.  However, platforms with
      neither integer overflow builtins nor 128-bit integers would fail to
      spot the overflow, instead returning <literal>INT64_MIN</literal>.
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [25cd2d640] 2024-01-26 13:39:45 -0500
Branch: REL_16_STABLE [7204aea83] 2024-01-26 13:39:37 -0500
Branch: REL_15_STABLE [86b6243a8] 2024-01-26 13:39:37 -0500
Branch: REL_14_STABLE [3eb8a87f6] 2024-01-26 13:39:37 -0500
Branch: REL_13_STABLE [425127bed] 2024-01-26 13:39:37 -0500
Branch: REL_12_STABLE [c3bdb25fb] 2024-01-26 13:39:37 -0500
-->
     <para>
      Detect Julian-date overflow when adding or subtracting
      an <type>interval</type> to/from a <type>timestamp</type> (Tom Lane)
      <ulink url="&commit_baseurl;3eb8a87f6">&sect;</ulink>
     </para>

     <para>
      Some cases that should cause an out-of-range error produced an
      incorrect result instead.
     </para>
    </listitem>

    <listitem>
<!--
Author: Dean Rasheed <dean.a.rasheed@gmail.com>
Branch: master [b218fbb7a] 2023-11-18 14:41:20 +0000
Branch: REL_16_STABLE [72d0c135b] 2023-11-18 14:46:02 +0000
Branch: REL_15_STABLE [2851aa7d1] 2023-11-18 14:47:04 +0000
Branch: REL_14_STABLE [2ffcebdba] 2023-11-18 14:48:10 +0000
Branch: REL_13_STABLE [428770aad] 2023-11-18 14:49:18 +0000
Branch: REL_12_STABLE [f499d2b20] 2023-11-18 14:50:00 +0000
-->
     <para>
      Add more checks for overflow in <function>interval_mul()</function>
      and <function>interval_div()</function> (Dean Rasheed)
      <ulink url="&commit_baseurl;2ffcebdba">&sect;</ulink>
     </para>

     <para>
      Some cases that should cause an out-of-range error produced an
      incorrect result instead.
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [059de3ca4] 2023-12-26 17:57:48 -0500
Branch: REL_16_STABLE [e87252ceb] 2023-12-26 17:57:48 -0500
Branch: REL_15_STABLE [76dd3d94a] 2023-12-26 17:57:48 -0500
Branch: REL_14_STABLE [bf4f30a0f] 2023-12-26 17:57:48 -0500
Branch: REL_13_STABLE [cb88f44ec] 2023-12-26 17:57:48 -0500
Branch: REL_12_STABLE [ea61b1cf6] 2023-12-26 17:57:48 -0500
-->
     <para>
      Make the <structname>pg_file_settings</structname> view check
      validity of unapplied values for settings
      with <literal>backend</literal>
      or <literal>superuser-backend</literal> context (Tom Lane)
      <ulink url="&commit_baseurl;bf4f30a0f">&sect;</ulink>
     </para>

     <para>
      Invalid values were not noted in the view as intended.  This escaped
      detection because there are very few settings in these groups.
     </para>
    </listitem>

    <listitem>
<!--
Author: Peter Eisentraut <peter@eisentraut.org>
Branch: master [a11c9c42e] 2023-12-01 16:05:41 +0100
Branch: REL_16_STABLE [267f33f68] 2023-12-01 16:09:54 +0100
Branch: REL_15_STABLE [15d485921] 2023-12-01 16:14:22 +0100
Branch: REL_14_STABLE [e846fc491] 2023-12-01 16:17:38 +0100
Branch: REL_13_STABLE [3c49fa2af] 2023-12-01 16:23:18 +0100
Branch: REL_12_STABLE [5d40b3c4f] 2023-12-01 16:27:18 +0100
-->
     <para>
      Match collation too when matching an existing index to a new
      partitioned index (Peter Eisentraut)
      <ulink url="&commit_baseurl;e846fc491">&sect;</ulink>
     </para>

     <para>
      Previously we could accept an index that has a different collation
      from the corresponding element of the partition key, possibly
      leading to misbehavior.
     </para>
    </listitem>

    <listitem>
<!--
Author: Michael Paquier <michael@paquier.xyz>
Branch: master [0ae3b4662] 2024-01-18 16:30:11 +0900
Branch: REL_16_STABLE [c030e263e] 2024-01-18 16:31:38 +0900
Branch: REL_15_STABLE [a0c19de11] 2024-01-18 16:31:46 +0900
Branch: REL_14_STABLE [b6f2e019d] 2024-01-18 16:31:50 +0900
Branch: master [8013850c8] 2024-01-18 15:04:24 +0900
Branch: REL_16_STABLE [7ce65c6f7] 2024-01-18 15:04:31 +0900
Branch: REL_15_STABLE [1cf2dba84] 2024-01-18 15:04:35 +0900
Branch: REL_14_STABLE [b685b41cf] 2024-01-18 15:04:39 +0900
-->
     <para>
      Avoid failure if a child index is dropped concurrently
      with <command>REINDEX INDEX</command> on a partitioned index
      (Fei Changhong)
      <ulink url="&commit_baseurl;b6f2e019d">&sect;</ulink>
      <ulink url="&commit_baseurl;b685b41cf">&sect;</ulink>
     </para>
    </listitem>

    <listitem>
<!--
Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
Branch: master [6a1ea02c4] 2024-01-29 13:46:22 +0200
Branch: REL_16_STABLE [b899e00e7] 2024-01-29 13:46:30 +0200
Branch: REL_15_STABLE [e43425f48] 2024-01-29 13:46:42 +0200
Branch: REL_14_STABLE [f120c0872] 2024-01-29 13:46:43 +0200
Branch: REL_13_STABLE [e74c91665] 2024-01-29 13:46:45 +0200
Branch: REL_12_STABLE [e6511fe64] 2024-01-29 13:46:48 +0200
-->
     <para>
      Fix insufficient locking when cleaning up an incomplete split of
      a GIN index's internal page (Fei Changhong, Heikki Linnakangas)
      <ulink url="&commit_baseurl;f120c0872">&sect;</ulink>
     </para>

     <para>
      The code tried to do this with shared rather than exclusive lock on
      the buffer.  This could lead to index corruption if two processes
      attempted the cleanup concurrently.
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [5c62ecf6e] 2023-11-13 11:44:35 -0500
Branch: REL_16_STABLE [f76b975d5] 2023-11-13 11:44:48 -0500
Branch: REL_15_STABLE [4c73ec604] 2023-11-13 11:44:57 -0500
Branch: REL_14_STABLE [d900e74e0] 2023-11-13 11:45:04 -0500
Branch: REL_13_STABLE [c859d688b] 2023-11-13 11:45:09 -0500
Branch: REL_12_STABLE [5a6937ec9] 2023-11-13 11:45:13 -0500
-->
     <para>
      Avoid premature release of buffer pin in GIN index insertion
      (Tom Lane)
      <ulink url="&commit_baseurl;d900e74e0">&sect;</ulink>
     </para>

     <para>
      If an index root page split occurs concurrently with our own
      insertion, the code could fail with <quote>buffer NNNN is not owned
      by resource owner</quote>.
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [903737c5b] 2023-12-21 12:43:36 -0500
Branch: REL_16_STABLE [0977bd64e] 2023-12-21 12:43:36 -0500
Branch: REL_15_STABLE [ab04c1901] 2023-12-21 12:43:36 -0500
Branch: REL_14_STABLE [375f441bd] 2023-12-21 12:43:36 -0500
Branch: REL_13_STABLE [cc3865150] 2023-12-21 12:43:36 -0500
Branch: REL_12_STABLE [1771ec9a8] 2023-12-21 12:43:36 -0500
-->
     <para>
      Avoid failure with partitioned SP-GiST indexes (Tom Lane)
      <ulink url="&commit_baseurl;375f441bd">&sect;</ulink>
     </para>

     <para>
      Trying to use an index of this kind could lead to <quote>No such
      file or directory</quote> errors.
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [59bd34c2f] 2023-12-15 13:55:05 -0500
Branch: REL_16_STABLE [152bfc0af] 2023-12-15 13:55:05 -0500
Branch: REL_15_STABLE [7a99fb6e1] 2023-12-15 13:55:05 -0500
Branch: REL_14_STABLE [f552f2be2] 2023-12-15 13:55:05 -0500
Branch: REL_13_STABLE [55b5c67da] 2023-12-15 13:55:05 -0500
Branch: REL_12_STABLE [ba66f2533] 2023-12-15 13:55:05 -0500
-->
     <para>
      Fix ownership change reporting for large objects (Tom Lane)
      <ulink url="&commit_baseurl;f552f2be2">&sect;</ulink>
     </para>

     <para>
      A no-op <command>ALTER LARGE OBJECT OWNER</command> command (that
      is, one selecting the existing owner) passed the wrong class ID to
      the <varname>PostAlterHook</varname>, probably confusing any
      extension using that hook.
     </para>
    </listitem>

    <listitem>
<!--
Author: Michael Paquier <michael@paquier.xyz>
Branch: master [8a7cbfce1] 2023-12-12 17:05:18 +0100
Branch: REL_16_STABLE [0e2c05af9] 2023-12-12 17:05:27 +0100
Branch: REL_15_STABLE [f5d8f59ca] 2023-12-12 17:05:29 +0100
Branch: REL_14_STABLE [0cfd3ddfe] 2023-12-12 17:05:33 +0100
Branch: REL_13_STABLE [d99294e77] 2023-12-12 17:05:34 +0100
Branch: REL_12_STABLE [4d45ecc92] 2023-12-12 17:05:36 +0100
-->
     <para>
      Prevent standby servers from incorrectly processing dead index
      tuples during subtransactions (Fei Changhong)
      <ulink url="&commit_baseurl;0cfd3ddfe">&sect;</ulink>
     </para>

     <para>
      The <structfield>startedInRecovery</structfield> flag was not
      correctly set for a subtransaction.  This affects only processing of
      dead index tuples.  It could allow a query in a subtransaction to
      ignore index entries that it should return (if they are already dead
      on the primary server, but not dead to the standby transaction), or
      to prematurely mark index entries as dead that are not yet dead on
      the primary.  It is not clear that the latter case has any serious
      consequences, but it's not the intended behavior.
     </para>
    </listitem>

    <listitem>
<!--
Author: Amit Kapila <akapila@postgresql.org>
Branch: master [8d7d2197f] 2023-12-11 08:50:43 +0530
Branch: REL_16_STABLE [01cc92fa6] 2023-12-11 08:36:17 +0530
Branch: REL_15_STABLE [332b43063] 2023-12-11 08:23:33 +0530
Branch: REL_14_STABLE [3f86867d5] 2023-12-11 08:10:46 +0530
Branch: REL_13_STABLE [b47ea4f3d] 2023-12-11 07:57:50 +0530
Branch: REL_12_STABLE [e81e617f3] 2023-12-11 07:45:45 +0530
-->
     <para>
      Fix deadlock between a logical replication apply worker, its
      tablesync worker, and a session process trying to alter the
      subscription (Shlok Kyal)
      <ulink url="&commit_baseurl;3f86867d5">&sect;</ulink>
     </para>

     <para>
      One edge of the deadlock loop did not involve a lock wait, so the
      deadlock went undetected and would persist until manual
      intervention.
     </para>
    </listitem>

    <listitem>
<!--
Author: Amit Kapila <akapila@postgresql.org>
Branch: REL_15_STABLE [b793a416b] 2024-01-29 10:42:41 +0530
Branch: REL_14_STABLE [6b77048e5] 2024-01-29 10:34:03 +0530
-->
     <para>
      Prevent examining system catalogs with the wrong snapshot during
      logical decoding (Fei Changhong)
      <ulink url="&commit_baseurl;6b77048e5">&sect;</ulink>
     </para>

     <para>
      If decoding begins partway through a transaction that modifies
      system catalogs, the decoder may not recognize that, causing it to
      fail to treat that transaction as in-progress for catalog lookups.
      This fix deals with the case that a top-level transaction is already
      marked as containing catalog changes, but its subtransaction(s) are
      not.
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [aaf09c592] 2024-01-03 17:40:41 -0500
Branch: REL_16_STABLE [fb464a1ae] 2024-01-03 17:40:38 -0500
Branch: REL_15_STABLE [a0d016393] 2024-01-03 17:40:38 -0500
Branch: REL_14_STABLE [9b042e27e] 2024-01-03 17:40:38 -0500
Branch: REL_13_STABLE [5810888c5] 2024-01-03 17:40:38 -0500
Branch: REL_12_STABLE [c20f2aab6] 2024-01-03 17:40:38 -0500
-->
     <para>
      Return the correct status code when a new client disconnects without
      responding to the server's password challenge (Liu Lang, Tom Lane)
      <ulink url="&commit_baseurl;9b042e27e">&sect;</ulink>
     </para>

     <para>
      In some cases we'd treat this as a loggable error, which was not the
      intention and tends to create log spam, since common clients
      like <application>psql</application> frequently do this.  It may
      also confuse extensions that
      use <varname>ClientAuthentication_hook</varname>.
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [c82207a54] 2023-11-28 12:34:03 -0500
Branch: REL_16_STABLE [efa8f6064] 2023-11-28 12:34:03 -0500
Branch: REL_15_STABLE [5dd30bb54] 2023-11-28 12:34:03 -0500
Branch: REL_14_STABLE [b2b1f1288] 2023-11-28 12:34:03 -0500
Branch: REL_13_STABLE [efb804682] 2023-11-28 12:34:03 -0500
Branch: REL_12_STABLE [0bd682246] 2023-11-28 12:34:03 -0500
-->
     <para>
      Fix incompatibility with <application>OpenSSL</application> 3.2
      (Tristan Partin, Bo Andreson)
      <ulink url="&commit_baseurl;b2b1f1288">&sect;</ulink>
     </para>

     <para>
      Use the BIO <quote>app_data</quote> field for our private storage,
      instead of assuming it's okay to use the <quote>data</quote> field.
      This mistake didn't cause problems before, but with 3.2 it leads
      to crashes and complaints about double frees.
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [0a5c46a7a] 2023-12-11 11:51:56 -0500
Branch: REL_16_STABLE [ebbd499d4] 2023-12-11 11:51:56 -0500
Branch: REL_15_STABLE [551d4b28e] 2023-12-11 11:51:56 -0500
Branch: REL_14_STABLE [07ce24326] 2023-12-11 11:51:56 -0500
Branch: REL_13_STABLE [87b46ad90] 2023-12-11 11:51:56 -0500
Branch: REL_12_STABLE [271d24f31] 2023-12-11 11:51:56 -0500
-->
     <para>
      Be more wary about <application>OpenSSL</application> not
      setting <varname>errno</varname> on error (Tom Lane)
      <ulink url="&commit_baseurl;07ce24326">&sect;</ulink>
     </para>

     <para>
      If <varname>errno</varname> isn't set, assume the cause of the
      reported failure is read EOF.  This fixes rare cases of strange
      error reports like <quote>could not accept SSL connection:
      Success</quote>.
     </para>
    </listitem>

    <listitem>
<!--
Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
Branch: REL_16_STABLE [501cfd07d] 2023-11-23 13:30:13 +0200
Branch: REL_15_STABLE [481d7d1c0] 2023-11-23 13:31:51 +0200
Branch: REL_14_STABLE [555276f85] 2023-11-23 13:31:57 +0200
-->
     <para>
      Fix file descriptor leakage when a foreign data
      wrapper's <function>ForeignAsyncRequest</function> function fails
      (Heikki Linnakangas)
      <ulink url="&commit_baseurl;555276f85">&sect;</ulink>
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [e4e63cd98] 2024-02-02 15:34:29 -0500
Branch: REL_16_STABLE [a15378100] 2024-02-02 15:34:29 -0500
Branch: REL_15_STABLE [3766b8b64] 2024-02-02 15:34:29 -0500
Branch: REL_14_STABLE [329b96882] 2024-02-02 15:34:29 -0500
Branch: REL_13_STABLE [29df29dad] 2024-02-02 15:34:29 -0500
Branch: REL_12_STABLE [4493bfb70] 2024-02-02 15:34:29 -0500
-->
     <para>
      Report <systemitem>ENOMEM</systemitem> errors from file-related system
      calls as <literal>ERRCODE_OUT_OF_MEMORY</literal>,
      not <literal>ERRCODE_INTERNAL_ERROR</literal> (Alexander Kuzmenkov)
      <ulink url="&commit_baseurl;329b96882">&sect;</ulink>
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [57b440ec1] 2024-01-18 16:11:16 -0500
Branch: REL_16_STABLE [00f941356] 2024-01-18 16:10:57 -0500
Branch: REL_15_STABLE [de2d393a8] 2024-01-18 16:10:57 -0500
Branch: REL_14_STABLE [b7e8f27d1] 2024-01-18 16:10:57 -0500
-->
     <para>
      In <application>PL/pgSQL</application>, support SQL commands that
      are <command>CREATE FUNCTION</command>/<command>CREATE
      PROCEDURE</command> with SQL-standard bodies (Tom Lane)
      <ulink url="&commit_baseurl;b7e8f27d1">&sect;</ulink>
     </para>

     <para>
      Previously, such cases failed with parsing errors due to the
      semicolon(s) appearing in the function body.
     </para>
    </listitem>

    <listitem>
<!--
Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
Branch: master [b8ba7344e] 2023-12-05 12:43:24 +0100
Branch: REL_16_STABLE [878aa41f8] 2023-12-05 12:43:24 +0100
Branch: REL_15_STABLE [1171c6e74] 2023-12-05 12:43:24 +0100
Branch: REL_14_STABLE [f89681816] 2023-12-05 12:43:24 +0100
Branch: master [c6605c1bd] 2024-01-16 12:27:52 +0100
Branch: REL_16_STABLE [39aab1108] 2024-01-16 12:27:52 +0100
Branch: REL_15_STABLE [2b656cbd2] 2024-01-16 12:27:52 +0100
Branch: REL_14_STABLE [7a7c8c98a] 2024-01-16 12:27:52 +0100
-->
     <para>
      Fix <application>libpq</application>'s
      handling of errors in pipelines (&Aacute;lvaro Herrera)
      <ulink url="&commit_baseurl;f89681816">&sect;</ulink>
      <ulink url="&commit_baseurl;7a7c8c98a">&sect;</ulink>
     </para>

     <para>
      The pipeline state could get out of sync if an error is returned
      for reasons other than a query problem (for example, if the
      connection is lost).  Potentially this would lead to a busy-loop in
      the calling application.
     </para>
    </listitem>

    <listitem>
<!--
Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
Branch: master [1a5594b95] 2023-11-08 16:44:08 +0100
Branch: REL_16_STABLE [42f832685] 2023-11-08 16:44:08 +0100
Branch: REL_15_STABLE [0e28091d5] 2023-11-08 16:44:08 +0100
Branch: REL_14_STABLE [99fa98766] 2023-11-08 16:44:08 +0100
-->
     <para>
      Make <application>libpq</application>'s
      <function>PQsendFlushRequest()</function> function flush the client
      output buffer under the same rules as
      other <literal>PQsend</literal> functions (Jelte Fennema-Nio)
      <ulink url="&commit_baseurl;99fa98766">&sect;</ulink>
     </para>

     <para>
      In pipeline mode, it may still be necessary to
      call <function>PQflush()</function> as well; but this change removes
      some inconsistency.
     </para>
    </listitem>

    <listitem>
<!--
Author: Michael Paquier <michael@paquier.xyz>
Branch: master [01eca6a91] 2023-11-27 09:40:44 +0900
Branch: REL_16_STABLE [8984480b5] 2023-11-27 09:40:49 +0900
Branch: REL_15_STABLE [b97226815] 2023-11-27 09:40:50 +0900
Branch: REL_14_STABLE [c3b79223f] 2023-11-27 09:40:52 +0900
Branch: REL_13_STABLE [09f680d11] 2023-11-27 09:40:55 +0900
Branch: REL_12_STABLE [0217a7444] 2023-11-27 09:40:57 +0900
-->
     <para>
      Avoid race condition when <application>libpq</application>
      initializes OpenSSL support concurrently in two different threads
      (Willi Mann, Michael Paquier)
      <ulink url="&commit_baseurl;c3b79223f">&sect;</ulink>
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [d053a879b] 2023-11-23 13:30:18 -0500
Branch: REL_16_STABLE [85eb77185] 2023-11-23 13:30:18 -0500
Branch: REL_15_STABLE [a50053777] 2023-11-23 13:30:18 -0500
Branch: REL_14_STABLE [8f23e6a45] 2023-11-23 13:30:18 -0500
Branch: REL_13_STABLE [5abdfd88f] 2023-11-23 13:30:18 -0500
Branch: REL_12_STABLE [18fad508b] 2023-11-23 13:30:19 -0500
-->
     <para>
      Fix timing-dependent failure in GSSAPI data transmission (Tom Lane)
      <ulink url="&commit_baseurl;8f23e6a45">&sect;</ulink>
     </para>

     <para>
      When using GSSAPI encryption in non-blocking
      mode, <application>libpq</application> sometimes failed
      with <quote>GSSAPI caller failed to retransmit all data needing to
      be retried</quote>.
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [a70f2a57f] 2023-11-13 17:04:26 -0500
Branch: REL_16_STABLE [64d2467fc] 2023-11-13 17:04:26 -0500
Branch: REL_15_STABLE [f15147df6] 2023-11-13 17:04:10 -0500
Branch: REL_14_STABLE [15439205d] 2023-11-13 17:04:10 -0500
Branch: REL_13_STABLE [9e08789d4] 2023-11-13 17:04:10 -0500
Branch: REL_12_STABLE [891afa84c] 2023-11-13 17:04:10 -0500
Branch: master [1e3f461e8] 2023-11-14 00:31:39 -0500
Branch: REL_16_STABLE [f1674ac6b] 2023-11-14 00:31:39 -0500
Branch: REL_15_STABLE [63c1b4d88] 2023-11-14 00:31:39 -0500
Branch: REL_14_STABLE [c532be99d] 2023-11-14 00:31:39 -0500
Branch: REL_13_STABLE [7836f6838] 2023-11-14 00:31:39 -0500
Branch: REL_12_STABLE [e43790342] 2023-11-14 00:31:39 -0500
-->
     <para>
      In <application>pg_dump</application>, don't dump RLS policies or
      security labels for extension member objects (Tom Lane, Jacob
      Champion)
      <ulink url="&commit_baseurl;15439205d">&sect;</ulink>
      <ulink url="&commit_baseurl;c532be99d">&sect;</ulink>
     </para>

     <para>
      Previously, commands would be included in the dump to set these
      properties, which is really incorrect since they should be
      considered as internal affairs of the extension.  Moreover, the
      restoring user might not have adequate privilege to set them, and
      indeed the dumping user might not have enough privilege to dump them
      (since dumping RLS policies requires acquiring lock on their table).
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [7418767f1] 2023-12-29 10:57:11 -0500
Branch: REL_16_STABLE [b2c9936a7] 2023-12-29 10:57:11 -0500
Branch: REL_15_STABLE [1e0841426] 2023-12-29 10:57:11 -0500
Branch: REL_14_STABLE [aa2e323ee] 2023-12-29 10:57:11 -0500
Branch: REL_13_STABLE [8d4e8b746] 2023-12-29 10:57:11 -0500
Branch: REL_12_STABLE [69d7edb06] 2023-12-29 10:57:11 -0500
-->
     <para>
      In <application>pg_dump</application>, don't dump an extended
      statistics object if its underlying table isn't being dumped
      (Rian McGuire, Tom Lane)
      <ulink url="&commit_baseurl;aa2e323ee">&sect;</ulink>
     </para>

     <para>
      This conforms to the behavior for other dependent objects such as
      indexes.
     </para>
    </listitem>

    <listitem>
<!--
Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
Branch: master [49f7c6c44] 2024-01-22 17:48:30 +0100
Branch: REL_16_STABLE [07b53de70] 2024-01-22 17:48:30 +0100
Branch: REL_15_STABLE [3fd36be52] 2024-01-22 17:48:30 +0100
Branch: REL_14_STABLE [85ecff891] 2024-01-22 17:48:30 +0100
-->
     <para>
      Make it an error for a <application>pgbench</application> script to
      end with an open pipeline (Anthonin Bonnefoy)
      <ulink url="&commit_baseurl;85ecff891">&sect;</ulink>
     </para>

     <para>
      Previously, <application>pgbench</application> would behave oddly if
      a <command>\startpipeline</command> command lacked a
      matching <command>\endpipeline</command>.  This seems like a
      scripting mistake rather than a case
      that <application>pgbench</application> needs to handle nicely, so
      throw an error.
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [9034a2d51] 2024-01-07 15:19:50 -0500
Branch: REL_16_STABLE [cf6f802bf] 2024-01-07 15:19:50 -0500
Branch: REL_15_STABLE [940ab02b5] 2024-01-07 15:19:50 -0500
Branch: REL_14_STABLE [90e8b86fc] 2024-01-07 15:19:50 -0500
Branch: REL_13_STABLE [9e7432faf] 2024-01-07 15:19:50 -0500
Branch: REL_12_STABLE [1c7443521] 2024-01-07 15:19:50 -0500
-->
     <para>
      Fix crash in <filename>contrib/intarray</filename> if an array with
      an element equal to <literal>INT_MAX</literal> is inserted into
      a <literal>gist__int_ops</literal> index
      (Alexander Lakhin, Tom Lane)
      <ulink url="&commit_baseurl;90e8b86fc">&sect;</ulink>
     </para>
    </listitem>

    <listitem>
<!--
Author: Michael Paquier <michael@paquier.xyz>
Branch: master [208470136] 2023-12-19 18:19:05 +0900
Branch: REL_16_STABLE [7f68b1462] 2023-12-19 18:19:15 +0900
Branch: REL_15_STABLE [2e08440d6] 2023-12-19 18:19:16 +0900
Branch: REL_14_STABLE [bfbe4a146] 2023-12-19 18:19:18 +0900
Branch: REL_13_STABLE [586c6a091] 2023-12-19 18:19:19 +0900
Branch: REL_12_STABLE [f610d4f11] 2023-12-19 18:19:21 +0900
-->
     <para>
      Report a better error
      when <filename>contrib/pageinspect</filename>'s
      <function>hash_bitmap_info()</function> function is applied to a
      partitioned hash index (Alexander Lakhin, Michael Paquier)
      <ulink url="&commit_baseurl;bfbe4a146">&sect;</ulink>
     </para>
    </listitem>

    <listitem>
<!--
Author: Michael Paquier <michael@paquier.xyz>
Branch: master [a8dd62ef4] 2023-12-19 15:20:39 +0900
Branch: REL_16_STABLE [b4948ed66] 2023-12-19 15:20:48 +0900
Branch: REL_15_STABLE [b745f1680] 2023-12-19 15:20:50 +0900
Branch: REL_14_STABLE [f729fdab4] 2023-12-19 15:20:52 +0900
Branch: REL_13_STABLE [b4c1d255c] 2023-12-19 15:20:53 +0900
Branch: REL_12_STABLE [bd2d3c928] 2023-12-19 15:20:55 +0900
-->
     <para>
      Report a better error
      when <filename>contrib/pgstattuple</filename>'s
      <function>pgstathashindex()</function> function is applied to a
      partitioned hash index (Alexander Lakhin)
      <ulink url="&commit_baseurl;f729fdab4">&sect;</ulink>
     </para>
    </listitem>

    <listitem>
<!--
Author: Michael Paquier <michael@paquier.xyz>
Branch: master [9886744a3] 2024-01-10 10:41:57 +0900
Branch: REL_16_STABLE [714bfb781] 2024-01-12 13:53:07 +0900
Branch: REL_15_STABLE [33d1be06a] 2024-01-12 13:53:10 +0900
Branch: REL_14_STABLE [4c6944223] 2024-01-12 13:53:12 +0900
Branch: REL_13_STABLE [c8aab699e] 2024-01-12 13:53:13 +0900
Branch: REL_12_STABLE [9e70e6564] 2024-01-12 13:53:14 +0900
Branch: master [b83747a8a] 2024-01-11 10:39:58 +0900
Branch: REL_16_STABLE [506c77f9b] 2024-01-12 13:59:51 +0900
Branch: REL_15_STABLE [7e7d827f5] 2024-01-12 13:59:58 +0900
Branch: REL_14_STABLE [4a7475e9a] 2024-01-12 14:00:00 +0900
Branch: REL_13_STABLE [2a0eb80ae] 2024-01-12 14:00:01 +0900
Branch: REL_12_STABLE [e50a52b2b] 2024-01-12 14:00:02 +0900
-->
     <para>
      On Windows, suppress autorun options when launching subprocesses
      in <application>pg_ctl</application>
      and <application>pg_regress</application> (Kyotaro Horiguchi)
      <ulink url="&commit_baseurl;4c6944223">&sect;</ulink>
      <ulink url="&commit_baseurl;4a7475e9a">&sect;</ulink>
     </para>

     <para>
      When launching a child process via <filename>cmd.exe</filename>,
      pass the <option>/D</option> flag to prevent executing any autorun
      commands specified in the registry.  This avoids possibly-surprising
      side effects.
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [400928b83] 2024-01-29 12:06:13 -0500
Branch: REL_16_STABLE [e02fea093] 2024-01-29 12:06:07 -0500
Branch: REL_15_STABLE [3f8ac13b1] 2024-01-29 12:06:07 -0500
Branch: REL_14_STABLE [29e25a6b1] 2024-01-29 12:06:08 -0500
Branch: REL_13_STABLE [7c53b1977] 2024-01-29 12:06:08 -0500
Branch: REL_12_STABLE [b2fd1dab9] 2024-01-29 12:06:08 -0500
-->
     <para>
      Fix compilation failures with <application>libxml2</application>
      version 2.12.0 and later (Tom Lane)
      <ulink url="&commit_baseurl;29e25a6b1">&sect;</ulink>
     </para>
    </listitem>

    <listitem>
<!--
Author: Michael Paquier <michael@paquier.xyz>
Branch: master [7636725b9] 2023-12-06 14:10:39 +0900
Branch: REL_16_STABLE [6248a2bb9] 2023-12-06 14:11:41 +0900
Branch: REL_15_STABLE [87ed81a87] 2023-12-06 14:11:44 +0900
Branch: REL_14_STABLE [c49b6cab1] 2023-12-06 14:11:46 +0900
Branch: REL_13_STABLE [7d5a74033] 2023-12-06 14:11:47 +0900
-->
     <para>
      Fix compilation failure of <literal>WAL_DEBUG</literal> code on
      Windows (Bharath Rupireddy)
      <ulink url="&commit_baseurl;c49b6cab1">&sect;</ulink>
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [58c3151bb] 2023-12-26 16:16:37 -0500
Branch: REL_16_STABLE [b0115e7e2] 2023-12-26 16:16:29 -0500
Branch: REL_15_STABLE [5f8d6d709] 2023-12-26 16:16:29 -0500
Branch: REL_14_STABLE [7978eee02] 2023-12-26 16:16:29 -0500
Branch: REL_13_STABLE [48e797164] 2023-12-26 16:16:29 -0500
Branch: REL_12_STABLE [1613e2fae] 2023-12-26 16:16:29 -0500
Branch: master [a46972e30] 2023-12-26 17:03:02 -0500
Branch: REL_16_STABLE [c72049dbc] 2023-12-26 17:03:24 -0500
-->
     <para>
      Suppress compiler warnings from Python's header files
      (Peter Eisentraut, Tom Lane)
      <ulink url="&commit_baseurl;7978eee02">&sect;</ulink>
     </para>

     <para>
      Our preferred compiler options provoke warnings about constructs
      appearing in recent versions of Python's header files.  When using
      <application>gcc</application>, we can suppress these warnings with
      a pragma.
     </para>
    </listitem>

    <listitem>
<!--
Author: Thomas Munro <tmunro@postgresql.org>
Branch: master [d282e88e5] 2024-01-25 13:44:54 +1300
Branch: REL_16_STABLE [60ba7cae7] 2024-01-25 13:45:22 +1300
Branch: REL_15_STABLE [67f7aaa38] 2024-01-25 13:46:07 +1300
Branch: REL_14_STABLE [364283c92] 2024-01-25 13:46:38 +1300
Branch: REL_13_STABLE [70a82f40a] 2024-01-25 13:47:20 +1300
Branch: REL_12_STABLE [d060cb658] 2024-01-25 13:47:35 +1300
-->
     <para>
      Avoid deprecation warning when compiling with LLVM 18 (Thomas Munro)
      <ulink url="&commit_baseurl;364283c92">&sect;</ulink>
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [272a7c303] 2024-02-01 15:57:53 -0500
Branch: REL_16_STABLE [b4fb76fb5] 2024-02-01 15:57:53 -0500
Branch: REL_15_STABLE [970b1aeeb] 2024-02-01 15:57:53 -0500
Branch: REL_14_STABLE [35b8b2c4a] 2024-02-01 15:57:53 -0500
Branch: REL_13_STABLE [ac3afc3f7] 2024-02-01 15:57:53 -0500
Branch: REL_12_STABLE [b59ae79b7] 2024-02-01 15:57:53 -0500
-->
     <para>
      Update time zone data files to <application>tzdata</application>
      release 2024a for DST law changes in Greenland, Kazakhstan, and
      Palestine, plus corrections for the Antarctic stations Casey and
      Vostok.  Also historical corrections for Vietnam, Toronto, and
      Miquelon. (Tom Lane)
      <ulink url="&commit_baseurl;35b8b2c4a">&sect;</ulink>
     </para>
    </listitem>

   </itemizedlist>

  </sect2>
 </sect1>

 <sect1 id="release-14-10">
  <title>Release 14.10</title>

  <formalpara>
  <title>Release date:</title>
  <para>2023-11-09</para>
  </formalpara>

  <para>
   This release contains a variety of fixes from 14.9.
   For information about new features in major release 14, see
   <xref linkend="release-14"/>.
  </para>

  <sect2>
   <title>Migration to Version 14.10</title>

   <para>
    A dump/restore is not required for those running 14.X.
   </para>

   <para>
    However, several mistakes have been discovered that could lead to
    certain types of indexes yielding wrong search results or being
    unnecessarily inefficient.  It is advisable
    to <command>REINDEX</command> potentially-affected indexes after
    installing this update.  See the fourth through seventh changelog
    entries below.
   </para>

   <para>
    Also, if you are upgrading from a version earlier than 14.9,
    see <xref linkend="release-14-9"/>.
   </para>
  </sect2>

  <sect2>
   <title>Changes</title>

   <itemizedlist>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [3b0776fde] 2023-11-06 10:38:00 -0500
Branch: REL_16_STABLE [d3d1e2509] 2023-11-06 10:38:00 -0500
Branch: REL_15_STABLE [4f4a422fb] 2023-11-06 10:38:00 -0500
Branch: REL_14_STABLE [9146d0d65] 2023-11-06 10:38:00 -0500
Branch: REL_13_STABLE [d3de70fdb] 2023-11-06 10:38:00 -0500
Branch: REL_12_STABLE [e911afd09] 2023-11-06 10:38:00 -0500
Branch: REL_11_STABLE [8c6633f4d] 2023-11-06 10:38:00 -0500
-->
     <para>
      Fix handling of unknown-type arguments
      in <literal>DISTINCT</literal> <type>"any"</type> aggregate
      functions (Tom Lane)
      <ulink url="&commit_baseurl;9146d0d65">&sect;</ulink>
     </para>

     <para>
      This error led to a <type>text</type>-type value being interpreted
      as an <type>unknown</type>-type value (that is, a zero-terminated
      string) at runtime.  This could result in disclosure of server
      memory following the <type>text</type> value.
     </para>

     <para>
      The <productname>PostgreSQL</productname> Project thanks Jingzhou Fu
      for reporting this problem.
      (CVE-2023-5868)
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [18b585155] 2023-11-06 10:56:43 -0500
Branch: REL_16_STABLE [e24daa94b] 2023-11-06 10:56:43 -0500
Branch: REL_15_STABLE [3bc6bc3ee] 2023-11-06 10:56:43 -0500
Branch: REL_14_STABLE [edc0a8d82] 2023-11-06 10:56:43 -0500
Branch: REL_13_STABLE [26c599beb] 2023-11-06 10:56:43 -0500
Branch: REL_12_STABLE [d267cea24] 2023-11-06 10:56:43 -0500
Branch: REL_11_STABLE [c48008f59] 2023-11-06 10:56:43 -0500
-->
     <para>
      Detect integer overflow while computing new array dimensions
      (Tom Lane)
      <ulink url="&commit_baseurl;edc0a8d82">&sect;</ulink>
     </para>

     <para>
      When assigning new elements to array subscripts that are outside the
      current array bounds, an undetected integer overflow could occur in
      edge cases.  Memory stomps that are potentially exploitable for
      arbitrary code execution are possible, and so is disclosure of
      server memory.
     </para>

     <para>
      The <productname>PostgreSQL</productname> Project thanks Pedro
      Gallegos for reporting this problem.
      (CVE-2023-5869)
     </para>
    </listitem>

    <listitem>
<!--
Author: Noah Misch <noah@leadboat.com>
Branch: master [3a9b18b30] 2023-11-06 06:14:13 -0800
Branch: REL_16_STABLE [785412731] 2023-11-06 06:14:16 -0800
Branch: REL_15_STABLE [595c988c9] 2023-11-06 06:14:16 -0800
Branch: REL_14_STABLE [508acb901] 2023-11-06 06:14:17 -0800
Branch: REL_13_STABLE [28b609550] 2023-11-06 06:14:17 -0800
Branch: REL_12_STABLE [2893f2f40] 2023-11-06 06:14:17 -0800
Branch: REL_11_STABLE [e082734c8] 2023-11-06 06:14:18 -0800
Author: Noah Misch <noah@leadboat.com>
Branch: master [b72de09a1] 2023-11-06 06:14:13 -0800
Branch: REL_16_STABLE [2c3c5ec49] 2023-11-06 06:14:16 -0800
Branch: REL_15_STABLE [fbc371909] 2023-11-06 06:14:16 -0800
Branch: REL_14_STABLE [ecd5d240c] 2023-11-06 06:14:17 -0800
Branch: REL_13_STABLE [2c7a2a00a] 2023-11-06 06:14:17 -0800
Branch: REL_12_STABLE [7bbf4d037] 2023-11-06 06:14:17 -0800
Branch: REL_11_STABLE [a27be40c1] 2023-11-06 06:14:18 -0800
-->
     <para>
      Prevent the <literal>pg_signal_backend</literal> role from
      signalling background workers and autovacuum processes
      (Noah Misch, Jelte Fennema-Nio)
      <ulink url="&commit_baseurl;508acb901">&sect;</ulink>
      <ulink url="&commit_baseurl;ecd5d240c">&sect;</ulink>
     </para>

     <para>
      The documentation says that <literal>pg_signal_backend</literal>
      cannot issue signals to superuser-owned processes.  It was able to
      signal these background processes, though, because they advertise a
      role OID of zero.  Treat that as indicating superuser ownership.
      The security implications of cancelling one of these process types
      are fairly small so far as the core code goes (we'll just start
      another one), but extensions might add background workers that are
      more vulnerable.
     </para>

     <para>
      Also ensure that the <varname>is_superuser</varname> parameter is
      set correctly in such processes.  No specific security consequences
      are known for that oversight, but it might be significant for some
      extensions.
     </para>

     <para>
      The <productname>PostgreSQL</productname> Project thanks
      Hemanth Sandrana and Mahendrakar Srinivasarao
      for reporting this problem.
      (CVE-2023-5870)
     </para>
    </listitem>

    <listitem>
<!--
Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
Branch: master [28d3c2ddc] 2023-09-26 14:14:49 +0300
Branch: REL_16_STABLE [d7f521325] 2023-09-26 14:15:01 +0300
Branch: REL_15_STABLE [c3c284b37] 2023-09-26 14:15:19 +0300
Branch: REL_14_STABLE [747cef5a5] 2023-09-26 14:15:28 +0300
Branch: REL_13_STABLE [db7394d4d] 2023-09-26 14:15:35 +0300
Branch: REL_12_STABLE [26917ebea] 2023-09-26 15:41:44 +0300
-->
     <para>
      Fix misbehavior during recursive page split in GiST index build
      (Heikki Linnakangas)
      <ulink url="&commit_baseurl;747cef5a5">&sect;</ulink>
     </para>

     <para>
      Fix a case where the location of a page downlink was incorrectly
      tracked, and introduce some logic to allow recovering from such
      situations rather than silently doing the wrong thing.  This error
      could result in incorrect answers from subsequent index searches.
      It may be advisable to reindex all GiST indexes after installing
      this update.
     </para>
    </listitem>

    <listitem>
<!--
Author: Noah Misch <noah@leadboat.com>
Branch: master [5f27b5f84] 2023-10-14 16:33:51 -0700
Branch: REL_16_STABLE [bf1c21c4f] 2023-10-14 16:33:54 -0700
Branch: REL_15_STABLE [782be0f71] 2023-10-14 16:33:54 -0700
Branch: REL_14_STABLE [0834df909] 2023-10-14 16:33:54 -0700
Branch: REL_13_STABLE [6fd1dbdb2] 2023-10-14 16:33:54 -0700
-->
     <para>
      Prevent de-duplication of btree index entries
      for <type>interval</type> columns (Noah Misch)
      <ulink url="&commit_baseurl;0834df909">&sect;</ulink>
     </para>

     <para>
      There are <type>interval</type> values that are distinguishable but
      compare equal, for example <literal>24:00:00</literal>
      and <literal>1 day</literal>.  This breaks assumptions made by btree
      de-duplication, so <type>interval</type> columns need to be excluded
      from de-duplication.  This oversight can cause incorrect results
      from index-only scans.  Moreover, after
      updating <application>amcheck</application> will report an error for
      almost all such indexes.  Users should reindex any btree indexes
      on <type>interval</type> columns.
     </para>
    </listitem>

    <listitem>
<!--
Author: Tomas Vondra <tomas.vondra@postgresql.org>
Branch: master [394d51731] 2023-10-27 18:15:37 +0200
Branch: REL_16_STABLE [e7965226d] 2023-10-27 18:28:19 +0200
Branch: REL_15_STABLE [088233f8d] 2023-10-27 18:37:59 +0200
Branch: REL_14_STABLE [d1740e169] 2023-10-27 18:46:49 +0200
-->
     <para>
      Process <type>date</type> values more sanely in
      BRIN <literal>datetime_minmax_multi_ops</literal> indexes
      (Tomas Vondra)
      <ulink url="&commit_baseurl;d1740e169">&sect;</ulink>
     </para>

     <para>
      The distance calculation for dates was backward, causing poor
      decisions about which entries to merge.  The index still produces
      correct results, but is much less efficient than it should be.
      Reindexing BRIN <literal>minmax_multi</literal> indexes
      on <type>date</type> columns is advisable.
     </para>
    </listitem>

    <listitem>
<!--
Author: Tomas Vondra <tomas.vondra@postgresql.org>
Branch: master [8da86d62a] 2023-10-27 18:15:37 +0200
Branch: REL_16_STABLE [497fc9208] 2023-10-27 18:28:28 +0200
Branch: REL_15_STABLE [d04a9283b] 2023-10-27 18:38:02 +0200
Branch: REL_14_STABLE [52c934cc1] 2023-10-27 18:46:53 +0200
Branch: master [b5489b75c] 2023-10-27 18:15:37 +0200
Branch: REL_16_STABLE [0635fe02b] 2023-10-27 18:28:04 +0200
Branch: REL_15_STABLE [daa7b0d7c] 2023-10-27 18:37:56 +0200
Branch: REL_14_STABLE [90c4da6d4] 2023-10-27 18:46:46 +0200
-->
     <para>
      Process large <type>timestamp</type> and <type>timestamptz</type>
      values more sanely in
      BRIN <literal>datetime_minmax_multi_ops</literal> indexes
      (Tomas Vondra)
      <ulink url="&commit_baseurl;52c934cc1">&sect;</ulink>
      <ulink url="&commit_baseurl;90c4da6d4">&sect;</ulink>
     </para>

     <para>
      Infinities were mistakenly treated as having distance zero rather
      than a large distance from other values, causing poor decisions
      about which entries to merge.  Also, finite-but-very-large values
      (near the endpoints of the representable timestamp range) could
      result in internal overflows, again causing poor decisions.  The
      index still produces correct results, but is much less efficient
      than it should be.  Reindexing BRIN <literal>minmax_multi</literal>
      indexes on <type>timestamp</type> and <type>timestamptz</type>
      columns is advisable if the column contains, or has contained,
      infinities or large finite values.
     </para>
    </listitem>

    <listitem>
<!--
Author: Tomas Vondra <tomas.vondra@postgresql.org>
Branch: master [c6cf6d353] 2023-10-27 18:15:37 +0200
Branch: REL_16_STABLE [924e0e2ee] 2023-10-27 18:28:37 +0200
Branch: REL_15_STABLE [2fbb2fcb0] 2023-10-27 18:38:05 +0200
Branch: REL_14_STABLE [0fa73c5cd] 2023-10-27 18:46:56 +0200
-->
     <para>
      Avoid calculation overflows in
      BRIN <literal>interval_minmax_multi_ops</literal> indexes with
      extreme interval values (Tomas Vondra)
      <ulink url="&commit_baseurl;0fa73c5cd">&sect;</ulink>
     </para>

     <para>
      This bug might have caused unexpected failures while trying to
      insert large interval values into such an index.
     </para>
    </listitem>

    <listitem>
<!--
Author: David Rowley <drowley@postgresql.org>
Branch: master [d9e46dfb7] 2023-10-13 01:12:31 +1300
Branch: REL_16_STABLE [595db9e9c] 2023-10-13 01:13:07 +1300
Branch: REL_15_STABLE [1e81d3e6e] 2023-10-13 01:13:36 +1300
Branch: REL_14_STABLE [d26f33c32] 2023-10-13 01:13:59 +1300
Branch: REL_13_STABLE [890a73ba3] 2023-10-13 01:14:22 +1300
Branch: REL_12_STABLE [3cc0c2517] 2023-10-13 01:14:46 +1300
Branch: REL_11_STABLE [2759924f3] 2023-10-13 01:15:12 +1300
Author: David Rowley <drowley@postgresql.org>
Branch: master [f0c409d9c] 2023-10-12 19:50:38 +1300
Branch: REL_16_STABLE [6352f1627] 2023-10-12 19:51:26 +1300
Branch: REL_15_STABLE [916adc7c5] 2023-10-12 19:52:05 +1300
Branch: REL_14_STABLE [cd15bff48] 2023-10-12 19:52:31 +1300
Branch: REL_13_STABLE [45c4b2a3a] 2023-10-12 19:52:58 +1300
Branch: REL_12_STABLE [cd259de50] 2023-10-12 19:53:23 +1300
Branch: REL_11_STABLE [07f261b31] 2023-10-12 19:53:50 +1300
-->
     <para>
      Fix partition step generation and runtime partition pruning for
      hash-partitioned tables with multiple partition keys (David Rowley)
      <ulink url="&commit_baseurl;d26f33c32">&sect;</ulink>
      <ulink url="&commit_baseurl;cd15bff48">&sect;</ulink>
     </para>

     <para>
      Some cases involving an <literal>IS NULL</literal> condition on one
      of the partition keys could result in a crash.
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [387f9ed0a] 2023-10-24 14:48:33 -0400
Branch: REL_16_STABLE [b1444a09d] 2023-10-24 14:48:34 -0400
Branch: REL_15_STABLE [1268e7378] 2023-10-24 14:48:34 -0400
Branch: REL_14_STABLE [8f4a6b9e4] 2023-10-24 14:48:34 -0400
Author: Amit Langote <amitlan@postgresql.org>
Branch: master [01575ad78] 2023-10-26 11:53:56 +0900
Branch: REL_16_STABLE [178ee1d85] 2023-10-26 11:53:41 +0900
Author: Amit Langote <amitlan@postgresql.org>
Branch: master [1f06b7fc6] 2023-10-26 17:32:38 +0900
Branch: REL_16_STABLE [2bf99b48d] 2023-10-26 17:29:32 +0900
-->
     <para>
      Correctly identify the target table in an
      inherited <command>UPDATE</command>/<command>DELETE</command>/<command>MERGE</command>
      even when the parent table is excluded by constraints (Amit Langote,
      Tom Lane)
      <ulink url="&commit_baseurl;8f4a6b9e4">&sect;</ulink>
     </para>

     <para>
      If the initially-named table is excluded by constraints, but not all
      its inheritance descendants are, the first non-excluded descendant
      was identified as the primary target table.  This would lead to
      firing statement-level triggers associated with that table, rather
      than the initially-named table as should happen.  In v16, the same
      oversight could also lead to <quote>invalid perminfoindex 0 in RTE
      with relid NNNN</quote> errors.
     </para>
    </listitem>

    <listitem>
<!--
Author: Peter Geoghegan <pg@bowt.ie>
Branch: master [714780dcd] 2023-09-28 16:29:37 -0700
Branch: REL_16_STABLE [3fa81b62e] 2023-09-28 16:29:35 -0700
Branch: REL_15_STABLE [cac37c1a1] 2023-09-28 16:29:32 -0700
Branch: REL_14_STABLE [41486c4aa] 2023-09-28 16:29:29 -0700
Branch: REL_13_STABLE [d4724e94a] 2023-09-28 16:29:27 -0700
Branch: REL_12_STABLE [b36d72cbc] 2023-09-28 16:29:24 -0700
Branch: REL_11_STABLE [7c07305e6] 2023-09-28 16:29:22 -0700
-->
     <para>
      Fix edge case in btree mark/restore processing of ScalarArrayOpExpr
      clauses (Peter Geoghegan)
      <ulink url="&commit_baseurl;41486c4aa">&sect;</ulink>
     </para>

     <para>
      When restoring an indexscan to a previously marked position, the
      code could miss required setup steps if the scan had advanced
      exactly to the end of the matches for a ScalarArrayOpExpr (that is,
      an <literal>indexcol = ANY(ARRAY[])</literal>) clause.  This could
      result in missing some rows that should have been fetched.
     </para>
    </listitem>

    <listitem>
<!--
Author: David Rowley <drowley@postgresql.org>
Branch: master [0b053e78b] 2023-10-05 20:30:47 +1300
Branch: REL_16_STABLE [31b2b2d72] 2023-10-05 20:31:25 +1300
Branch: REL_15_STABLE [689af6db6] 2023-10-05 20:31:51 +1300
Branch: REL_14_STABLE [e4b95b9b0] 2023-10-05 20:32:14 +1300
-->
     <para>
      Fix intra-query memory leak in Memoize execution
      (Orlov Aleksej, David Rowley)
      <ulink url="&commit_baseurl;e4b95b9b0">&sect;</ulink>
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [237f8765d] 2023-10-28 14:05:01 -0400
Branch: REL_16_STABLE [07494a0df] 2023-10-28 14:04:43 -0400
Branch: REL_15_STABLE [592cb11fb] 2023-10-28 14:04:43 -0400
Branch: REL_14_STABLE [5d7515d7d] 2023-10-28 14:04:43 -0400
Branch: REL_13_STABLE [b7684473d] 2023-10-28 14:04:43 -0400
Branch: REL_12_STABLE [d8d7f282f] 2023-10-28 14:04:43 -0400
Branch: REL_11_STABLE [7ab6971c6] 2023-10-28 14:04:43 -0400
-->
     <para>
      Fix intra-query memory leak when a set-returning function repeatedly
      returns zero rows (Tom Lane)
      <ulink url="&commit_baseurl;5d7515d7d">&sect;</ulink>
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [f73fa5a47] 2023-09-18 14:28:17 -0400
Branch: REL_16_STABLE [ec693a3f3] 2023-09-18 14:27:47 -0400
Branch: REL_15_STABLE [95f54f0d0] 2023-09-18 14:27:47 -0400
Branch: REL_14_STABLE [9baabfa38] 2023-09-18 14:27:47 -0400
Branch: REL_13_STABLE [e6e50ada0] 2023-09-18 14:27:47 -0400
Branch: REL_12_STABLE [123337079] 2023-09-18 14:27:47 -0400
Branch: REL_11_STABLE [db00be6d7] 2023-09-18 14:27:47 -0400
-->
     <para>
      Don't crash if <function>cursor_to_xmlschema()</function> is applied
      to a non-data-returning Portal (Boyu Yang)
      <ulink url="&commit_baseurl;9baabfa38">&sect;</ulink>
     </para>
    </listitem>

    <listitem>
<!--
Author: David Rowley <drowley@postgresql.org>
Branch: master [73635b6d6] 2023-10-31 16:42:08 +1300
Branch: REL_16_STABLE [a98f01c93] 2023-10-31 16:42:35 +1300
Branch: REL_15_STABLE [136068353] 2023-10-31 16:43:01 +1300
Branch: REL_14_STABLE [c5988e69f] 2023-10-31 16:43:28 +1300
Branch: REL_13_STABLE [b3c8d1d0e] 2023-10-31 16:44:00 +1300
Branch: REL_12_STABLE [efcb601d2] 2023-10-31 16:44:27 +1300
-->
     <para>
      Throw the intended error if <function>pgrowlocks()</function> is
      applied to a partitioned table (David Rowley)
      <ulink url="&commit_baseurl;c5988e69f">&sect;</ulink>
     </para>

     <para>
      Previously, a not-on-point complaint <quote>only heap AM is
      supported</quote> would be raised.
     </para>
    </listitem>

    <listitem>
<!--
Author: Noah Misch <noah@leadboat.com>
Branch: master [13503eb59] 2023-10-30 14:46:05 -0700
Branch: REL_16_STABLE [1a368dd3e] 2023-10-30 14:46:08 -0700
Branch: REL_15_STABLE [e633e9b13] 2023-10-30 14:46:08 -0700
Branch: REL_14_STABLE [0a7b183fd] 2023-10-30 14:46:09 -0700
Branch: REL_13_STABLE [123b0d111] 2023-10-30 14:46:09 -0700
Branch: REL_12_STABLE [975ae0553] 2023-10-30 14:46:09 -0700
Branch: REL_11_STABLE [bae063db4] 2023-10-30 14:46:09 -0700
-->
     <para>
      Handle invalid indexes more cleanly in assorted SQL functions
      (Noah Misch)
      <ulink url="&commit_baseurl;0a7b183fd">&sect;</ulink>
     </para>

     <para>
      Report an error if <function>pgstatindex()</function>,
      <function>pgstatginindex()</function>,
      <function>pgstathashindex()</function>,
      or <function>pgstattuple()</function> is applied to an invalid
      index.  If <function>brin_desummarize_range()</function>,
      <function>brin_summarize_new_values()</function>,
      <function>brin_summarize_range()</function>,
      or <function>gin_clean_pending_list()</function> is applied to an
      invalid index, do nothing except to report a debug-level message.
      Formerly these functions attempted to process the index, and might
      fail in strange ways depending on what the failed <command>CREATE
      INDEX</command> had left behind.
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [cf1c65070] 2023-09-25 11:50:28 -0400
Branch: REL_16_STABLE [8465efc1a] 2023-09-25 11:50:28 -0400
Branch: REL_15_STABLE [71bb73f60] 2023-09-25 11:50:28 -0400
Branch: REL_14_STABLE [a2799f53d] 2023-09-25 11:50:28 -0400
Branch: REL_13_STABLE [52a676ef4] 2023-09-25 11:50:28 -0400
Branch: REL_12_STABLE [4a81ed29d] 2023-09-25 11:50:28 -0400
Branch: REL_11_STABLE [0fb91ed2b] 2023-09-25 11:50:28 -0400
-->
     <para>
      Avoid premature memory allocation failure with long inputs
      to <function>to_tsvector()</function> (Tom Lane)
      <ulink url="&commit_baseurl;a2799f53d">&sect;</ulink>
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [5b7b38246] 2023-10-01 13:16:47 -0400
Branch: REL_16_STABLE [5c34a7374] 2023-10-01 13:16:59 -0400
Branch: REL_15_STABLE [55e188a15] 2023-10-01 13:17:06 -0400
Branch: REL_14_STABLE [cf12c4fd2] 2023-10-01 13:17:11 -0400
Branch: REL_13_STABLE [9da153846] 2023-10-01 13:17:15 -0400
Branch: REL_12_STABLE [2296bc362] 2023-10-01 13:17:20 -0400
Branch: REL_11_STABLE [7a310cae0] 2023-10-01 13:17:25 -0400
-->
     <para>
      Fix over-allocation of the constructed <type>tsvector</type>
      in <function>tsvectorrecv()</function> (Denis Erokhin)
      <ulink url="&commit_baseurl;cf12c4fd2">&sect;</ulink>
     </para>

     <para>
      If the incoming vector includes position data, the binary receive
      function left wasted space (roughly equal to the size of the
      position data) in the finished <type>tsvector</type>.  In extreme
      cases this could lead to <quote>maximum total lexeme length
      exceeded</quote> failures for vectors that were under the length
      limit when emitted.  In any case it could lead to wasted space
      on-disk.
     </para>
    </listitem>

    <listitem>
<!--
Author: Michael Paquier <michael@paquier.xyz>
Branch: master [ae10dbb0c] 2023-09-04 14:55:37 +0900
Branch: REL_16_STABLE Release: REL_16_0 [fac3fa0d5] 2023-09-04 14:55:49 +0900
Branch: REL_15_STABLE [88aa4a049] 2023-09-04 14:55:51 +0900
Branch: REL_14_STABLE [df11421d8] 2023-09-04 14:55:53 +0900
Branch: REL_13_STABLE [82fa8ae5f] 2023-09-04 14:55:55 +0900
Branch: REL_12_STABLE [40ddb8db9] 2023-09-04 14:55:57 +0900
Branch: REL_11_STABLE [358cd2b25] 2023-09-04 14:55:58 +0900
-->
     <para>
      Fix incorrect coding in <function>gtsvector_picksplit()</function>
      (Alexander Lakhin)
      <ulink url="&commit_baseurl;df11421d8">&sect;</ulink>
     </para>

     <para>
      This could lead to poor page-split decisions in GiST indexes
      on <type>tsvector</type> columns.
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [9b103f861] 2023-10-18 20:43:27 -0400
Branch: REL_16_STABLE [cfa4eba02] 2023-10-18 20:43:17 -0400
Branch: REL_15_STABLE [985ac5ce2] 2023-10-18 20:43:17 -0400
Branch: REL_14_STABLE [2c63dc035] 2023-10-18 20:43:17 -0400
Branch: REL_13_STABLE [817669ea2] 2023-10-18 20:43:17 -0400
-->
     <para>
      Improve checks for corrupt PGLZ compressed data (Flavien Guedez)
      <ulink url="&commit_baseurl;2c63dc035">&sect;</ulink>
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [48e2b234f] 2023-09-21 23:11:30 -0400
Branch: REL_16_STABLE [227c7cf15] 2023-09-21 23:11:30 -0400 !! no live bug
Branch: REL_15_STABLE [77dc81602] 2023-09-21 23:11:31 -0400 !! no live bug
Branch: REL_14_STABLE [10323f140] 2023-09-21 23:11:31 -0400
Branch: REL_13_STABLE [555a8d9d3] 2023-09-21 23:11:31 -0400
Branch: REL_12_STABLE [7cabb20a9] 2023-09-21 23:11:31 -0400
-->
     <para>
      Fix <command>COMMIT AND CHAIN</command>/<command>ROLLBACK AND
      CHAIN</command> to work properly when there is an unreleased
      savepoint (Liu Xiang, Tom Lane)
      <ulink url="&commit_baseurl;10323f140">&sect;</ulink>
     </para>

     <para>
      Instead of propagating the current transaction's properties to the
      new transaction, they propagated some previous transaction's
      properties.
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [d8a09939a] 2023-10-01 12:09:26 -0400
Branch: REL_16_STABLE [ea0e7cd6b] 2023-10-01 12:09:26 -0400
Branch: REL_15_STABLE [95fd5c89f] 2023-10-01 12:09:26 -0400
Branch: REL_14_STABLE [a715c0212] 2023-10-01 12:09:26 -0400
-->
     <para>
      In <command>COPY FROM</command>, fail cleanly when an unsupported
      encoding conversion is needed (Tom Lane)
      <ulink url="&commit_baseurl;a715c0212">&sect;</ulink>
     </para>

     <para>
      Recent refactoring accidentally removed the intended error check for
      this, such that it ended in <quote>cache lookup failed for function
      0</quote> instead of a useful error message.
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [7704a1a72] 2023-11-02 11:47:33 -0400
Branch: REL_16_STABLE [82063edd4] 2023-11-02 11:47:33 -0400
Branch: REL_15_STABLE [ae33659d4] 2023-11-02 11:47:33 -0400
Branch: REL_14_STABLE [47c0f00cf] 2023-11-02 11:47:33 -0400
Branch: REL_13_STABLE [137227c6d] 2023-11-02 11:47:33 -0400
Branch: REL_12_STABLE [65810fc6d] 2023-11-02 11:47:33 -0400
Branch: REL_11_STABLE [6e1cca511] 2023-11-02 11:47:33 -0400 !! no live bug
-->
     <para>
      Avoid crash in <command>EXPLAIN</command> if a parameter marked to
      be displayed by <command>EXPLAIN</command> has a NULL boot-time
      value (Xing Guo, Aleksander Alekseev, Tom Lane)
      <ulink url="&commit_baseurl;47c0f00cf">&sect;</ulink>
     </para>

     <para>
      No built-in parameter fits this description, but an extension could
      define such a parameter.
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [54b208f90] 2023-10-16 14:06:14 -0400
Branch: REL_16_STABLE [57e6e861d] 2023-10-16 14:06:15 -0400
Branch: REL_15_STABLE [0d1a7cd14] 2023-10-16 14:06:15 -0400
Branch: REL_14_STABLE [f6e1ee3cf] 2023-10-16 14:06:11 -0400
Branch: REL_13_STABLE [1e678175c] 2023-10-16 14:06:11 -0400
Branch: REL_12_STABLE [07eb22a77] 2023-10-16 14:06:11 -0400
Branch: REL_11_STABLE [a295684b8] 2023-10-16 14:06:12 -0400
-->
     <para>
      Ensure we have a snapshot while dropping <literal>ON COMMIT
      DROP</literal> temp tables (Tom Lane)
      <ulink url="&commit_baseurl;f6e1ee3cf">&sect;</ulink>
     </para>

     <para>
      This prevents possible misbehavior if any catalog entries for the
      temp tables have fields wide enough to require toasting (such as a
      very complex <literal>CHECK</literal> condition).
     </para>
    </listitem>

    <listitem>
<!--
Author: Nathan Bossart <nathan@postgresql.org>
Branch: master [97550c071] 2023-10-17 10:41:48 -0500
Branch: REL_16_STABLE [ee06199fc] 2023-10-17 10:41:58 -0500
Branch: REL_15_STABLE [c9265ae80] 2023-10-17 10:42:06 -0500
Branch: REL_14_STABLE [54fc9dca5] 2023-10-17 10:42:12 -0500
Branch: REL_13_STABLE [ac1dfc303] 2023-10-17 10:42:17 -0500
Branch: REL_12_STABLE [e2e169042] 2023-10-17 10:42:22 -0500
Branch: REL_11_STABLE [d0e7f95b4] 2023-10-17 10:42:28 -0500
Author: Nathan Bossart <nathan@postgresql.org>
Branch: REL_14_STABLE [555bc89c9] 2023-10-17 16:11:03 -0500
Branch: REL_13_STABLE [ebc093fa6] 2023-10-17 16:11:08 -0500
Branch: REL_12_STABLE [0e32652a7] 2023-10-17 16:11:13 -0500
Branch: REL_11_STABLE [bc322c73c] 2023-10-17 16:11:18 -0500
-->
     <para>
      Avoid improper response to shutdown signals in child processes
      just forked by <function>system()</function> (Nathan Bossart)
      <ulink url="&commit_baseurl;54fc9dca5">&sect;</ulink>
      <ulink url="&commit_baseurl;555bc89c9">&sect;</ulink>
     </para>

     <para>
      This fix avoids a race condition in which a child process that has
      been forked off by <function>system()</function>, but hasn't yet
      exec'd the intended child program, might receive and act on a signal
      intended for the parent server process.  That would lead to
      duplicate cleanup actions being performed, which will not end well.
     </para>
    </listitem>

    <listitem>
<!--
Author: Thomas Munro <tmunro@postgresql.org>
Branch: master [63a582222] 2023-10-16 17:33:08 +1300
Branch: REL_16_STABLE [5725e4ebe] 2023-10-16 17:21:41 +1300
Branch: REL_15_STABLE [5e39884d3] 2023-10-16 17:23:02 +1300
Branch: REL_14_STABLE [dc75748a9] 2023-10-16 17:23:25 +1300
Branch: REL_13_STABLE [67060be3d] 2023-10-16 17:24:35 +1300
Branch: REL_12_STABLE [43c979086] 2023-10-16 17:25:43 +1300
-->
     <para>
      Cope with torn reads of <filename>pg_control</filename> in frontend
      programs (Thomas Munro)
      <ulink url="&commit_baseurl;dc75748a9">&sect;</ulink>
     </para>

     <para>
      On some file systems, reading <filename>pg_control</filename> may
      not be an atomic action when the server concurrently writes that
      file.  This is detectable via a bad CRC.  Retry a few times to see
      if the file becomes valid before we report error.
     </para>
    </listitem>

    <listitem>
<!--
Author: Thomas Munro <tmunro@postgresql.org>
Branch: master [c558e6fd9] 2023-10-16 10:43:47 +1300
Branch: REL_16_STABLE [2371432cd] 2023-10-16 10:45:05 +1300
Branch: REL_15_STABLE [606be8a35] 2023-10-16 10:45:18 +1300
Branch: REL_14_STABLE [a56fe5cf0] 2023-10-16 10:47:01 +1300
Branch: REL_13_STABLE [ae9da357b] 2023-10-16 10:47:10 +1300
Branch: REL_12_STABLE [637e86ecc] 2023-10-16 10:47:33 +1300
Branch: REL_11_STABLE [f1634c968] 2023-10-16 10:52:40 +1300
-->
     <para>
      Avoid torn reads of <filename>pg_control</filename> in relevant SQL
      functions (Thomas Munro)
      <ulink url="&commit_baseurl;a56fe5cf0">&sect;</ulink>
     </para>

     <para>
      Acquire the appropriate lock before
      reading <filename>pg_control</filename>, to ensure we get a
      consistent view of that file.
     </para>
    </listitem>

    <listitem>
<!--
Author: Michael Paquier <michael@paquier.xyz>
Branch: master [a956bd3fa] 2023-10-03 15:37:00 +0900
Branch: REL_16_STABLE [75f31a3f2] 2023-10-03 15:37:18 +0900
Branch: REL_15_STABLE [95e91da66] 2023-10-03 15:37:19 +0900
Branch: REL_14_STABLE [f91c87b31] 2023-10-03 15:37:21 +0900
Branch: REL_13_STABLE [a0b013625] 2023-10-03 15:37:23 +0900
Branch: REL_12_STABLE [9b3900cdb] 2023-10-03 15:37:24 +0900
-->
     <para>
      Avoid integer overflow when computing size of backend activity
      string array (Jakub Wartak)
      <ulink url="&commit_baseurl;f91c87b31">&sect;</ulink>
     </para>

     <para>
      On 64-bit machines we will allow values
      of <varname>track_activity_query_size</varname> large enough to
      cause 32-bit overflow when multiplied by the allowed number of
      connections.  The code actually allocating the per-backend local
      array was careless about this though, and allocated the array
      incorrectly.
     </para>
    </listitem>

    <listitem>
<!--
Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
Branch: master [c181f2e2b] 2023-09-30 17:03:50 +0300
Branch: REL_16_STABLE [992d2ca81] 2023-09-30 17:07:24 +0300
Branch: REL_15_STABLE [5ae245664] 2023-09-30 17:07:32 +0300
Branch: REL_14_STABLE [2d4f99bc6] 2023-09-30 17:07:37 +0300
Branch: REL_13_STABLE [ed9247cd7] 2023-09-30 17:07:41 +0300
-->
     <para>
      Fix briefly showing inconsistent progress statistics
      for <command>ANALYZE</command> on inherited tables
      (Heikki Linnakangas)
      <ulink url="&commit_baseurl;2d4f99bc6">&sect;</ulink>
     </para>

     <para>
      The block-level counters should be reset to zero at the same time we
      update the current-relation field.
     </para>
    </listitem>

    <listitem>
<!--
Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
Branch: master [e64c733bb] 2023-10-02 12:39:35 +0300
Branch: REL_16_STABLE [4a97a43a7] 2023-10-02 12:49:25 +0300
Branch: REL_15_STABLE [0684d1949] 2023-10-02 12:49:29 +0300
Branch: REL_14_STABLE [594001864] 2023-10-02 12:50:32 +0300
-->
     <para>
      Fix the background writer to report any WAL writes it makes to the
      statistics counters (Nazir Bilal Yavuz)
      <ulink url="&commit_baseurl;594001864">&sect;</ulink>
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [dc8d72c1c] 2023-09-25 14:42:17 -0400
Branch: REL_16_STABLE [055f786ea] 2023-09-25 14:42:17 -0400
Branch: REL_15_STABLE [0e59266a5] 2023-09-25 14:41:57 -0400
Branch: REL_14_STABLE [5cff431bc] 2023-09-25 14:41:57 -0400
Branch: REL_13_STABLE [8cfc3e80b] 2023-09-25 14:41:57 -0400
Branch: REL_12_STABLE [4435a8d5d] 2023-09-25 14:41:57 -0400
Branch: REL_11_STABLE [fdc7cf73b] 2023-09-25 14:41:57 -0400
-->
     <para>
      Track the dependencies of cached <command>CALL</command> statements,
      and re-plan them when needed (Tom Lane)
      <ulink url="&commit_baseurl;5cff431bc">&sect;</ulink>
     </para>

     <para>
      DDL commands, such as replacement of a function that has been
      inlined into a <command>CALL</command> argument, can create the need
      to re-plan a <command>CALL</command> that has been cached by
      PL/pgSQL.  That was not happening, leading to misbehavior or strange
      errors such as <quote>cache lookup failed</quote>.
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [e0e492e5a] 2023-09-15 17:01:52 -0400
Branch: REL_16_STABLE [53630f12d] 2023-09-15 17:01:26 -0400
Branch: REL_15_STABLE [2679a107a] 2023-09-15 17:01:26 -0400
Branch: REL_14_STABLE [ae13f8166] 2023-09-15 17:01:26 -0400
Branch: REL_13_STABLE [c5b7f791d] 2023-09-15 17:01:26 -0400
Branch: REL_12_STABLE [d29812c0c] 2023-09-15 17:01:26 -0400
Branch: REL_11_STABLE [a374f6c61] 2023-09-15 17:01:26 -0400
-->
     <para>
      Track nesting depth correctly when
      inspecting <type>RECORD</type>-type Vars from outer query levels
      (Richard Guo)
      <ulink url="&commit_baseurl;ae13f8166">&sect;</ulink>
     </para>

     <para>
      This oversight could lead to assertion failures, core dumps,
      or <quote>bogus varno</quote> errors.
     </para>
    </listitem>

    <listitem>
<!--
Author: David Rowley <drowley@postgresql.org>
Branch: master [ee3a551e9] 2023-09-14 11:27:29 +1200
Branch: REL_16_STABLE [1a6900e58] 2023-09-14 11:27:16 +1200
Branch: REL_15_STABLE [17a3f1c34] 2023-09-14 11:27:00 +1200
Branch: REL_14_STABLE [6341cb0b0] 2023-09-14 11:27:43 +1200
-->
     <para>
      Track hash function and negator function dependencies of
      ScalarArrayOpExpr plan nodes (David Rowley)
      <ulink url="&commit_baseurl;6341cb0b0">&sect;</ulink>
     </para>

     <para>
      In most cases this oversight was harmless, since these functions
      would be unlikely to disappear while the node's original operator
      remains present.
     </para>
    </listitem>

    <listitem>
<!--
Author: Thomas Munro <tmunro@postgresql.org>
Branch: master [3acd0599b] 2023-09-13 14:58:22 +1200
Branch: REL_16_STABLE [f899c7f1e] 2023-09-13 15:06:07 +1200
Branch: REL_15_STABLE [a26cc0334] 2023-09-13 14:43:04 +1200
Branch: REL_14_STABLE [e2452c2a6] 2023-09-13 14:46:16 +1200
Branch: REL_13_STABLE [189097db8] 2023-09-13 14:48:00 +1200
Branch: REL_12_STABLE [012b80ad2] 2023-09-13 14:50:14 +1200
Branch: REL_11_STABLE [6ae57f190] 2023-09-13 14:52:34 +1200
-->
     <para>
      Fix error-handling bug in <type>RECORD</type> type cache management
      (Thomas Munro)
      <ulink url="&commit_baseurl;e2452c2a6">&sect;</ulink>
     </para>

     <para>
      An out-of-memory error occurring at just the wrong point could leave
      behind inconsistent state that would lead to an infinite loop.
     </para>
    </listitem>

    <listitem>
<!--
Author: Amit Kapila <akapila@postgresql.org>
Branch: REL_15_STABLE [c7256e656] 2023-09-12 10:23:17 +0530
Branch: REL_14_STABLE [f7d25117b] 2023-09-12 10:12:51 +0530
Branch: REL_13_STABLE [c570bb4d6] 2023-09-12 09:58:50 +0530
Branch: REL_12_STABLE [7e57208ed] 2023-09-12 09:44:37 +0530
Branch: REL_11_STABLE [feb4e218e] 2023-09-12 09:36:56 +0530
-->
     <para>
      Fix assertion failure when logical decoding is retried in the same
      session after an error (Hou Zhijie)
      <ulink url="&commit_baseurl;f7d25117b">&sect;</ulink>
     </para>
    </listitem>

    <listitem>
<!--
Author: Michael Paquier <michael@paquier.xyz>
Branch: master [6b18b3fe2] 2023-10-03 10:21:44 +0900
Branch: REL_16_STABLE [a06efbc3a] 2023-10-03 10:25:12 +0900
Branch: REL_15_STABLE [afc79591d] 2023-10-03 10:25:14 +0900
Branch: REL_14_STABLE [baeb8542c] 2023-10-03 10:25:15 +0900
Branch: REL_13_STABLE [6103d2cca] 2023-10-03 10:25:17 +0900
Branch: REL_12_STABLE [22b2e6e9d] 2023-10-03 10:25:19 +0900
-->
     <para>
      Treat out-of-memory failures as fatal while reading WAL
      (Michael Paquier)
      <ulink url="&commit_baseurl;baeb8542c">&sect;</ulink>
     </para>

     <para>
      Previously this would be treated as a bogus-data condition, leading
      to the conclusion that we'd reached the end of WAL, which is
      incorrect and could lead to inconsistent WAL replay.
     </para>
    </listitem>

    <listitem>
<!--
Author: Thomas Munro <tmunro@postgresql.org>
Branch: master [bae868caf] 2023-09-23 10:26:24 +1200
Branch: REL_16_STABLE [ce497f648] 2023-09-23 10:27:02 +1200
Branch: REL_15_STABLE [f4d152edd] 2023-09-23 10:28:12 +1200
Branch: REL_14_STABLE [3ce3b53d7] 2023-09-23 10:28:40 +1200
Branch: REL_13_STABLE [6606c5716] 2023-09-23 10:29:44 +1200
Branch: REL_12_STABLE [e8f3c0687] 2023-09-23 10:29:56 +1200
Author: Thomas Munro <tmunro@postgresql.org>
Branch: master [becfbdd6c] 2023-09-26 10:53:38 +1300
Branch: REL_16_STABLE [10d0591ea] 2023-09-26 10:53:52 +1300
Branch: REL_15_STABLE [99d334a18] 2023-09-26 10:54:02 +1300
Branch: REL_14_STABLE [3d413c5a7] 2023-09-26 10:54:24 +1300
Branch: REL_13_STABLE [45d1fe8b5] 2023-09-26 10:54:47 +1300
Branch: REL_12_STABLE [bde2f1847] 2023-09-26 10:59:49 +1300
-->
     <para>
      Fix possible recovery failure due to trying to allocate memory based
      on a bogus WAL record length field (Thomas Munro, Michael Paquier)
      <ulink url="&commit_baseurl;3ce3b53d7">&sect;</ulink>
      <ulink url="&commit_baseurl;3d413c5a7">&sect;</ulink>
     </para>
    </listitem>

    <listitem>
<!--
Author: Fujii Masao <fujii@postgresql.org>
Branch: REL_14_STABLE [2f13e8d9e] 2023-09-12 09:35:42 +0900
Branch: REL_13_STABLE [5dc093eac] 2023-09-12 09:35:51 +0900
Branch: REL_12_STABLE [7b03d3a3b] 2023-09-12 09:35:57 +0900
-->
     <para>
      Ensure that standby-mode WAL recovery reports an error when an
      invalid page header is found (Yugo Nagata, Kyotaro Horiguchi)
      <ulink url="&commit_baseurl;2f13e8d9e">&sect;</ulink>
     </para>
    </listitem>

    <listitem>
<!--
Author: Michael Paquier <michael@paquier.xyz>
Branch: master [52c6c0f19] 2023-08-30 08:03:42 +0900
Branch: REL_16_STABLE Release: REL_16_0 [1d2939b6d] 2023-08-30 08:03:48 +0900
Branch: REL_15_STABLE [5180160c1] 2023-08-30 08:03:51 +0900
Branch: REL_14_STABLE [d2bd4ba30] 2023-08-30 08:03:52 +0900
Branch: REL_13_STABLE [420c8dc7e] 2023-08-30 08:03:54 +0900
-->
     <para>
      Fix datatype size confusion in logical tape management
      (Ranier Vilela)
      <ulink url="&commit_baseurl;d2bd4ba30">&sect;</ulink>
     </para>

     <para>
      Integer overflow was possible on platforms where long is wider than
      int, although it would take a multiple-terabyte temporary file to
      cause a problem.
     </para>
    </listitem>

    <listitem>
<!--
Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
Branch: master [5fec3c870] 2023-08-29 09:09:40 +0300
Branch: REL_16_STABLE Release: REL_16_0 [5f38ff3d0] 2023-08-29 09:10:28 +0300
Branch: REL_15_STABLE [0c1024060] 2023-08-29 09:12:35 +0300
Branch: REL_14_STABLE [3d895f95a] 2023-08-29 09:12:24 +0300
Branch: REL_13_STABLE [a01e479e8] 2023-08-29 09:12:17 +0300
-->
     <para>
      Avoid unintended close of syslogger process's stdin
      (Heikki Linnakangas)
      <ulink url="&commit_baseurl;3d895f95a">&sect;</ulink>
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [d8b2fcc9d] 2023-08-24 12:02:46 -0400
Branch: REL_16_STABLE Release: REL_16_0 [ba0d737ca] 2023-08-24 12:02:40 -0400
Branch: REL_15_STABLE [870085135] 2023-08-24 12:02:40 -0400
Branch: REL_14_STABLE [9b2a41db1] 2023-08-24 12:02:40 -0400
Branch: REL_13_STABLE [27566bcf3] 2023-08-24 12:02:40 -0400
Branch: REL_12_STABLE [b808dbf90] 2023-08-24 12:02:40 -0400
Branch: REL_11_STABLE [9c59f3862] 2023-08-24 12:02:40 -0400
-->
     <para>
      Avoid doing plan cache revalidation of utility statements
      that do not receive interesting processing during parse analysis
      (Tom Lane)
      <ulink url="&commit_baseurl;9b2a41db1">&sect;</ulink>
     </para>

     <para>
      Aside from saving a few cycles, this prevents failure after a cache
      invalidation for statements that must not set a snapshot, such
      as <command>SET TRANSACTION ISOLATION LEVEL</command>.
     </para>
    </listitem>

    <listitem>
<!--
Author: Andrew Dunstan <andrew@dunslane.net>
Branch: master [a68458108] 2023-08-22 15:17:05 -0400
Branch: REL_16_STABLE Release: REL_16_0 [f938acd68] 2023-08-22 15:18:19 -0400
Branch: REL_15_STABLE [75f323aa1] 2023-08-22 15:16:01 -0400
Branch: REL_14_STABLE [7f4515a58] 2023-08-22 15:15:45 -0400
Branch: REL_13_STABLE [1bb619d4d] 2023-08-22 15:15:31 -0400
Branch: REL_12_STABLE [01993ac74] 2023-08-22 15:15:18 -0400
Branch: REL_11_STABLE [2d13dab04] 2023-08-23 17:22:16 -0400
Branch: REL_11_STABLE [b915bf495] 2023-08-24 16:14:26 -0400
-->
     <para>
      Keep by-reference <structfield>attmissingval</structfield> values in
      a long-lived context while they are being used (Andrew Dunstan)
      <ulink url="&commit_baseurl;7f4515a58">&sect;</ulink>
     </para>

     <para>
      This avoids possible use of dangling pointers when a tuple slot
      outlives the tuple descriptor with which its value was constructed.
     </para>
    </listitem>

    <listitem>
<!--
Author: Jeff Davis <jdavis@postgresql.org>
Branch: master [fa2e87494] 2023-08-09 13:09:25 -0700
Branch: REL_16_STABLE Release: REL_16_0 [0d56c32c8] 2023-08-09 13:09:01 -0700
Branch: REL_15_STABLE [9f3343e40] 2023-08-07 15:12:49 -0700
Branch: REL_14_STABLE [00953f1e2] 2023-08-07 15:12:33 -0700
Branch: REL_13_STABLE [90cadfd49] 2023-08-07 15:12:09 -0700
Branch: REL_12_STABLE [a86d40227] 2023-08-07 15:11:18 -0700
Branch: REL_11_STABLE [43ba5105a] 2023-08-07 15:09:11 -0700
Branch: master [bee263b08] 2023-08-10 10:20:54 -0700
Branch: REL_16_STABLE Release: REL_16_0 [7bed93a46] 2023-08-10 10:24:58 -0700
Branch: REL_15_STABLE [1bc19dfcf] 2023-08-10 10:25:47 -0700
Branch: REL_14_STABLE [5a32af3f2] 2023-08-10 10:26:12 -0700
Branch: REL_13_STABLE [4caa9e33e] 2023-08-10 10:26:46 -0700
Branch: REL_12_STABLE [01bc42634] 2023-08-10 10:27:00 -0700
Branch: REL_11_STABLE [ae1269295] 2023-08-10 10:27:24 -0700
-->
     <para>
      Recalculate the effective value of <varname>search_path</varname>
      after <command>ALTER ROLE</command> (Jeff Davis)
      <ulink url="&commit_baseurl;00953f1e2">&sect;</ulink>
      <ulink url="&commit_baseurl;5a32af3f2">&sect;</ulink>
     </para>

     <para>
      This ensures that after renaming a role, the meaning of the special
      string <literal>$user</literal> is re-determined.
     </para>
    </listitem>

    <listitem>
<!--
Author: Thomas Munro <tmunro@postgresql.org>
Branch: master [dab889d60] 2023-10-22 10:04:55 +1300
Branch: REL_16_STABLE [174ccda5e] 2023-10-22 10:05:22 +1300
Branch: REL_15_STABLE [f72790b29] 2023-10-22 10:05:40 +1300
Branch: REL_14_STABLE [fb9a16a1a] 2023-10-22 10:05:59 +1300
-->
     <para>
      Fix <quote>could not duplicate handle</quote> error occurring on
      Windows when <varname>min_dynamic_shared_memory</varname> is set
      above zero (Thomas Munro)
      <ulink url="&commit_baseurl;fb9a16a1a">&sect;</ulink>
     </para>
    </listitem>

    <listitem>
<!--
Author: Jeff Davis <jdavis@postgresql.org>
Branch: master [ef74c7197] 2023-10-10 11:01:13 -0700
Branch: REL_16_STABLE [b8963e8a2] 2023-10-10 11:01:55 -0700
Branch: REL_15_STABLE [b9bb02620] 2023-10-10 11:02:45 -0700
Branch: REL_14_STABLE [6615bb95a] 2023-10-10 11:02:56 -0700
Branch: REL_13_STABLE [469d367be] 2023-10-10 11:03:03 -0700
Branch: REL_12_STABLE [6dbd01b9f] 2023-10-10 11:03:10 -0700
Branch: REL_11_STABLE [04f0baa85] 2023-10-10 11:03:20 -0700
-->
     <para>
      Fix order of operations in <function>GenericXLogFinish</function>
      (Jeff Davis)
      <ulink url="&commit_baseurl;6615bb95a">&sect;</ulink>
     </para>

     <para>
      This code violated the conditions required for crash safety by
      writing WAL before marking changed buffers dirty.  No core code uses
      this function, but extensions do (<filename>contrib/bloom</filename>
      does, for example).
     </para>
    </listitem>

    <listitem>
<!--
Author: Michael Paquier <michael@paquier.xyz>
Branch: master [af5b3c3d1] 2023-09-19 08:31:06 +0900
Branch: REL_16_STABLE [f171430f0] 2023-09-19 08:31:22 +0900
Branch: REL_15_STABLE [9e0ce80f3] 2023-09-19 08:31:24 +0900
Branch: REL_14_STABLE [bb65f3c1b] 2023-09-19 08:31:26 +0900
Branch: REL_13_STABLE [35e8ba3e5] 2023-09-19 08:31:27 +0900
Branch: REL_12_STABLE [99d27e55c] 2023-09-19 08:31:29 +0900
Branch: REL_11_STABLE [ddded779a] 2023-09-19 08:31:31 +0900
-->
     <para>
      Remove incorrect assertion in PL/Python exception handling
      (Alexander Lakhin)
      <ulink url="&commit_baseurl;bb65f3c1b">&sect;</ulink>
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [06c0c3688] 2023-10-02 13:27:58 -0400
Branch: REL_16_STABLE [aaaf8fbb6] 2023-10-02 13:27:51 -0400
Branch: REL_15_STABLE [10e705bd2] 2023-10-02 13:27:51 -0400
Branch: REL_14_STABLE [829d91cc6] 2023-10-02 13:27:51 -0400
Branch: REL_13_STABLE [295953f8b] 2023-10-02 13:27:51 -0400
Branch: REL_12_STABLE [c02f29758] 2023-10-02 13:27:51 -0400
Branch: REL_11_STABLE [4f16152d9] 2023-10-02 13:27:51 -0400
-->
     <para>
      Fix <application>pg_restore</application> so that selective restores
      will include both table-level and column-level ACLs for selected
      tables (Euler Taveira, Tom Lane)
      <ulink url="&commit_baseurl;829d91cc6">&sect;</ulink>
     </para>

     <para>
      Formerly, only the table-level ACL would get restored if both types
      were present.
     </para>
    </listitem>

    <listitem>
<!--
Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
Branch: master [2e3dc8c14] 2023-09-25 14:27:33 +0200
Branch: REL_16_STABLE [fb9ddd0fa] 2023-09-25 14:34:06 +0200
Branch: REL_15_STABLE [8845d8597] 2023-09-25 14:34:06 +0200
Branch: REL_14_STABLE [26c291a15] 2023-09-25 14:34:06 +0200
Branch: REL_13_STABLE [d3946c4f6] 2023-09-25 14:34:05 +0200
Branch: REL_12_STABLE [af9f6cd1d] 2023-09-25 14:34:05 +0200
Author: Peter Eisentraut <peter@eisentraut.org>
Branch: REL_15_STABLE [04d2d605f] 2023-11-03 12:07:11 -0400
Branch: REL_14_STABLE [f9280e77e] 2023-11-03 12:07:25 -0400
Branch: REL_13_STABLE [2f1f49975] 2023-11-03 12:07:35 -0400
Branch: REL_12_STABLE [d3246a2ad] 2023-11-03 12:07:40 -0400
-->
     <para>
      Add logic to <application>pg_upgrade</application> to check for use
      of <type>abstime</type>, <type>reltime</type>,
      and <type>tinterval</type> data types (&Aacute;lvaro Herrera)
      <ulink url="&commit_baseurl;26c291a15">&sect;</ulink>
      <ulink url="&commit_baseurl;f9280e77e">&sect;</ulink>
     </para>

     <para>
      These obsolete data types were removed
      in <productname>PostgreSQL</productname> version 12, so check to
      make sure they aren't present in an older database before claiming
      it can be upgraded.
     </para>
    </listitem>

    <listitem>
<!--
Author: Michael Paquier <michael@paquier.xyz>
Branch: master [e1c6db630] 2023-09-07 14:12:18 +0900
Branch: REL_16_STABLE Release: REL_16_0 [105795843] 2023-09-07 14:12:25 +0900
Branch: REL_15_STABLE [574bff7bd] 2023-09-07 14:12:29 +0900
Branch: REL_14_STABLE [9de74ca70] 2023-09-07 14:12:31 +0900
Branch: REL_13_STABLE [6cdd7b805] 2023-09-07 14:12:33 +0900
Branch: REL_12_STABLE [2fe968ce9] 2023-09-07 14:12:34 +0900
Branch: REL_11_STABLE [dbd1a06c9] 2023-09-07 14:12:36 +0900
-->
     <para>
      Avoid generating invalid temporary slot names
      in <application>pg_basebackup</application> (Jelte Fennema)
      <ulink url="&commit_baseurl;9de74ca70">&sect;</ulink>
     </para>

     <para>
      This has only been seen to occur when the server connection runs
      through <application>pgbouncer</application>.
     </para>
    </listitem>

    <listitem>
<!--
Author: Noah Misch <noah@leadboat.com>
Branch: master [90ebcc32d] 2023-10-14 15:54:46 -0700
Branch: REL_16_STABLE [06ff06484] 2023-10-14 15:54:49 -0700
Branch: REL_15_STABLE [1102f4ece] 2023-10-14 15:54:49 -0700
Branch: REL_14_STABLE [0df88a686] 2023-10-14 15:54:49 -0700
Branch: REL_13_STABLE [3895e9153] 2023-10-14 15:54:50 -0700
Branch: REL_12_STABLE [73cda80a3] 2023-10-14 15:54:50 -0700
-->
     <para>
      Avoid false <quote>too many client connections</quote> errors
      in <application>pgbench</application> on Windows (Noah Misch)
      <ulink url="&commit_baseurl;0df88a686">&sect;</ulink>
     </para>
    </listitem>

    <listitem>
<!--
Author: Noah Misch <noah@leadboat.com>
Branch: master [6ec9e9975] 2023-10-30 14:46:05 -0700
Branch: REL_16_STABLE [3c6a05b80] 2023-10-30 14:46:08 -0700
Branch: REL_15_STABLE [6f81386a9] 2023-10-30 14:46:08 -0700
Branch: REL_14_STABLE [42496cba6] 2023-10-30 14:46:09 -0700
Branch: REL_13_STABLE [f31ccb575] 2023-10-30 14:46:09 -0700
Branch: REL_12_STABLE [3a205c916] 2023-10-30 14:46:09 -0700
Branch: REL_11_STABLE [e04509f32] 2023-10-30 14:46:09 -0700
-->
     <para>
      In <filename>contrib/amcheck</filename>, do not report interrupted
      page deletion as corruption (Noah Misch)
      <ulink url="&commit_baseurl;42496cba6">&sect;</ulink>
     </para>

     <para>
      This fix prevents false-positive reports of <quote>the first child
      of leftmost target page is not leftmost of its
      level</quote>, <quote>block NNNN is not leftmost</quote>
      or <quote>left link/right link pair in index XXXX not in
      agreement</quote>.  They appeared
      if <application>amcheck</application> ran after an unfinished btree
      index page deletion and before <command>VACUUM</command> had cleaned
      things up.
     </para>
    </listitem>

    <listitem>
<!--
Author: Dean Rasheed <dean.a.rasheed@gmail.com>
Branch: master [849172ff4] 2023-10-29 11:14:37 +0000
Branch: REL_16_STABLE [ab73a37e9] 2023-10-29 11:14:36 +0000
Branch: REL_15_STABLE [5f0691839] 2023-10-29 11:14:35 +0000
Branch: REL_14_STABLE [162b38a06] 2023-10-29 11:14:34 +0000
Branch: REL_13_STABLE [35e6a5c20] 2023-10-29 11:14:34 +0000
Branch: REL_12_STABLE [f7cd7b265] 2023-10-29 11:14:33 +0000
Branch: REL_11_STABLE [c804ffb56] 2023-10-29 11:14:32 +0000
-->
     <para>
      Fix failure of <filename>contrib/btree_gin</filename> indexes
      on <type>interval</type> columns,
      when an indexscan using the <literal>&lt;</literal>
      or <literal>&lt;=</literal> operator is performed (Dean Rasheed)
      <ulink url="&commit_baseurl;162b38a06">&sect;</ulink>
     </para>

     <para>
      Such an indexscan failed to return all the entries it should.
     </para>
    </listitem>

    <listitem>
<!--
Author: Thomas Munro <tmunro@postgresql.org>
Branch: master [76200e5ee] 2023-10-19 05:13:23 +1300
Branch: REL_16_STABLE [774185056] 2023-10-19 05:14:07 +1300
Branch: REL_15_STABLE [b60e3ac76] 2023-10-19 05:15:38 +1300
Branch: REL_14_STABLE [0a8b7d5c1] 2023-10-19 05:16:00 +1300
Branch: REL_13_STABLE [53c4dabe1] 2023-10-19 05:16:24 +1300
Branch: REL_12_STABLE [7da915e33] 2023-10-19 05:17:27 +1300
Author: Thomas Munro <tmunro@postgresql.org>
Branch: master [37d5babb5] 2023-10-18 22:47:23 +1300
Branch: REL_16_STABLE [74d19ec09] 2023-10-18 22:53:56 +1300
Branch: REL_15_STABLE [eed1feb3f] 2023-10-18 22:59:46 +1300
Branch: REL_14_STABLE [82d9a782a] 2023-10-18 23:04:09 +1300
Branch: REL_13_STABLE [f28956b23] 2023-10-18 23:16:48 +1300
Branch: REL_12_STABLE [15ddc9725] 2023-10-18 23:18:16 +1300
Author: Thomas Munro <tmunro@postgresql.org>
Branch: master [f90b4a846] 2023-10-19 03:01:55 +1300
Branch: REL_16_STABLE [60596f148] 2023-10-19 03:07:18 +1300
Branch: REL_15_STABLE [b2e097788] 2023-10-19 03:03:27 +1300
Branch: REL_14_STABLE [ee3e4c41f] 2023-10-19 03:03:46 +1300
Branch: REL_13_STABLE [981292c19] 2023-10-19 03:04:00 +1300
Branch: REL_12_STABLE [d701f0d1f] 2023-10-19 03:04:09 +1300
Author: Thomas Munro <tmunro@postgresql.org>
Branch: REL_13_STABLE [7c070e224] 2023-10-24 11:23:08 +1300
Branch: REL_12_STABLE [9ad986276] 2023-10-24 11:23:21 +1300
-->
     <para>
      Add support for LLVM 16 and 17 (Thomas Munro, Dmitry Dolgov)
      <ulink url="&commit_baseurl;0a8b7d5c1">&sect;</ulink>
      <ulink url="&commit_baseurl;82d9a782a">&sect;</ulink>
      <ulink url="&commit_baseurl;ee3e4c41f">&sect;</ulink>
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [06843df4a] 2023-09-29 14:07:30 -0400
Branch: REL_16_STABLE [75c562653] 2023-09-29 14:07:30 -0400
Branch: REL_15_STABLE [be3398ea1] 2023-09-29 14:07:30 -0400
Branch: REL_14_STABLE [e9d1560d3] 2023-09-29 14:07:30 -0400
Branch: REL_13_STABLE [1b64e374c] 2023-09-29 14:07:30 -0400
Branch: REL_12_STABLE [d8ceb98e4] 2023-09-29 14:07:30 -0400
Branch: REL_11_STABLE [4d10fda52] 2023-09-29 14:07:30 -0400
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [3aa021b29] 2023-09-26 21:06:21 -0400
Branch: REL_16_STABLE [e73d6a0df] 2023-09-26 21:06:21 -0400
Branch: REL_15_STABLE [78f17fb97] 2023-09-26 21:06:21 -0400
Branch: REL_14_STABLE [5d60e8ed3] 2023-09-26 21:06:21 -0400
Branch: REL_13_STABLE [53cc19bfa] 2023-09-26 21:06:21 -0400
Branch: REL_12_STABLE [abe423712] 2023-09-26 21:06:21 -0400
Branch: REL_11_STABLE [0e0de20c8] 2023-09-26 21:06:21 -0400
-->
     <para>
      Suppress assorted build-time warnings on
      recent <productname>macOS</productname> (Tom Lane)
      <ulink url="&commit_baseurl;e9d1560d3">&sect;</ulink>
      <ulink url="&commit_baseurl;5d60e8ed3">&sect;</ulink>
     </para>

     <para>
      <productname>Xcode 15</productname> (released
      with <productname>macOS Sonoma</productname>) changed the linker's
      behavior in a way that causes many duplicate-library warnings while
      building <productname>PostgreSQL</productname>.  These were
      harmless, but they're annoying so avoid citing the same libraries
      twice.  Also remove use of the <option>-multiply_defined
      suppress</option> linker switch, which apparently has been a no-op
      for a long time, and is now actively complained of.
     </para>
    </listitem>

    <listitem>
<!--
Author: Michael Paquier <michael@paquier.xyz>
Branch: master [6fc3a138b] 2023-09-27 14:40:23 +0900
Branch: REL_16_STABLE [641db601b] 2023-09-27 14:41:15 +0900
Branch: REL_15_STABLE [8a9e4e84e] 2023-09-27 14:41:21 +0900
Branch: REL_14_STABLE [e4d7ad30f] 2023-09-27 14:41:23 +0900
Branch: REL_13_STABLE [a64b8b035] 2023-09-27 14:41:26 +0900
-->
     <para>
      When building <filename>contrib/unaccent</filename>'s rules file,
      fall back to using <literal>python</literal>
      if <literal>--with-python</literal> was not given and make
      variable <literal>PYTHON</literal> was not set (Japin Li)
      <ulink url="&commit_baseurl;e4d7ad30f">&sect;</ulink>
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [5fd3e06f6] 2023-10-28 11:54:40 -0400
Branch: REL_16_STABLE [d1537afe3] 2023-10-28 11:54:51 -0400
Branch: REL_15_STABLE [85b98a70b] 2023-10-28 11:54:59 -0400
Branch: REL_14_STABLE [877e7b4b9] 2023-10-28 11:55:06 -0400
Branch: REL_13_STABLE [d94612873] 2023-10-28 11:55:14 -0400
Branch: REL_12_STABLE [7180bb827] 2023-10-28 11:55:22 -0400
Branch: REL_11_STABLE [64fc5e005] 2023-10-28 11:55:30 -0400
-->
     <para>
      Remove <literal>PHOT</literal> (Phoenix Islands Time) from the
      default timezone abbreviations list (Tom Lane)
      <ulink url="&commit_baseurl;877e7b4b9">&sect;</ulink>
     </para>

     <para>
      Presence of this abbreviation in the default list can cause failures
      on recent Debian and Ubuntu releases, as they no longer install the
      underlying tzdb entry by default.  Since this is a made-up
      abbreviation for a zone with a total human population of about two
      dozen, it seems unlikely that anyone will miss it.  If someone does,
      they can put it back via a custom abbreviations file.
     </para>
    </listitem>

   </itemizedlist>

  </sect2>
 </sect1>

 <sect1 id="release-14-9">
  <title>Release 14.9</title>

  <formalpara>
  <title>Release date:</title>
  <para>2023-08-10</para>
  </formalpara>

  <para>
   This release contains a variety of fixes from 14.8.
   For information about new features in major release 14, see
   <xref linkend="release-14"/>.
  </para>

  <sect2>
   <title>Migration to Version 14.9</title>

   <para>
    A dump/restore is not required for those running 14.X.
   </para>

   <para>
    However, if you use BRIN indexes, it may be advisable to reindex them;
    see the second changelog entry below.
   </para>

   <para>
    Also, if you are upgrading from a version earlier than 14.4,
    see <xref linkend="release-14-4"/>.
   </para>
  </sect2>

  <sect2>
   <title>Changes</title>

   <itemizedlist>

    <listitem>
<!--
Author: Noah Misch <noah@leadboat.com>
Branch: master [cd5f2a357] 2023-08-07 06:05:56 -0700
Branch: REL_16_STABLE [f53511010] 2023-08-07 06:05:59 -0700
Branch: REL_15_STABLE [de494ec14] 2023-08-07 06:06:00 -0700
Branch: REL_14_STABLE [d4648a74b] 2023-08-07 06:06:00 -0700
Branch: REL_13_STABLE [b1b585e0f] 2023-08-07 06:06:00 -0700
Branch: REL_12_STABLE [eb044d8f0] 2023-08-07 06:06:00 -0700
Branch: REL_11_STABLE [919ebb023] 2023-08-07 06:06:01 -0700
-->
     <para>
      Disallow substituting a schema or owner name into an extension script
      if the name contains a quote, backslash, or dollar sign (Noah Misch)
      <ulink url="&commit_baseurl;d4648a74b">&sect;</ulink>
     </para>

     <para>
      This restriction guards against SQL-injection hazards for trusted
      extensions.
     </para>

     <para>
      The <productname>PostgreSQL</productname> Project thanks Micah Gates,
      Valerie Woolard, Tim Carey-Smith, and Christoph Berg for reporting
      this problem.
      (CVE-2023-39417)
     </para>
    </listitem>

    <listitem>
<!--
Author: Tomas Vondra <tomas.vondra@postgresql.org>
Branch: master Release: REL_16_BR [3581cbdcd] 2023-05-19 01:29:44 +0200
Branch: REL_15_STABLE [e18769323] 2023-05-19 00:15:13 +0200
Branch: REL_14_STABLE [40d465caf] 2023-05-19 00:15:00 +0200
Branch: REL_13_STABLE [6c512fc6e] 2023-05-19 00:14:05 +0200
Branch: REL_12_STABLE [d78a66d92] 2023-05-19 00:16:13 +0200
Branch: REL_11_STABLE [fc7dc728d] 2023-05-19 00:21:05 +0200
Branch: master Release: REL_16_BR [3ec8a3bfb] 2023-05-18 23:33:23 +0200
Branch: REL_15_STABLE [80f64b900] 2023-05-18 23:33:45 +0200
Branch: REL_14_STABLE [3f1356e5d] 2023-05-18 23:34:10 +0200
Branch: REL_13_STABLE [2b1ab28b9] 2023-05-18 23:34:35 +0200
Branch: REL_12_STABLE [d42ffda68] 2023-05-18 23:34:56 +0200
Branch: REL_11_STABLE [b511d7323] 2023-05-18 23:35:16 +0200
-->
     <para>
      Fix confusion between empty (no rows) ranges and all-NULL ranges in
      BRIN indexes, as well as incorrect merging of all-NULL summaries
      (Tomas Vondra)
      <ulink url="&commit_baseurl;40d465caf">&sect;</ulink>
      <ulink url="&commit_baseurl;3f1356e5d">&sect;</ulink>
     </para>

     <para>
      Each of these oversights could result in forgetting that a BRIN
      index range contains any NULL values, potentially allowing
      subsequent queries that should return NULL values to miss doing so.
     </para>

     <para>
      This fix will not in itself correct faulty BRIN entries.
      It's recommended to <command>REINDEX</command> any BRIN indexes that
      may be used to search for nulls.
     </para>
    </listitem>

    <listitem>
<!--
Author: Andres Freund <andres@anarazel.de>
Branch: master [c66a7d75e] 2023-07-13 13:03:28 -0700
Branch: REL_16_STABLE [a4b4cc1d6] 2023-07-13 13:03:30 -0700
Branch: REL_15_STABLE [f66403749] 2023-07-13 13:04:45 -0700
Branch: REL_14_STABLE [d11efe830] 2023-07-13 13:03:33 -0700
Branch: REL_13_STABLE [81ce00006] 2023-07-13 13:03:34 -0700
Branch: REL_12_STABLE [034a9fcd2] 2023-07-13 13:03:36 -0700
Branch: REL_11_STABLE [1c38e7ae1] 2023-07-13 13:03:37 -0700
-->
     <para>
      Avoid leaving a corrupted database behind when <command>DROP
      DATABASE</command> is interrupted (Andres Freund)
      <ulink url="&commit_baseurl;d11efe830">&sect;</ulink>
     </para>

     <para>
      If <command>DROP DATABASE</command> was interrupted after it had
      already begun taking irreversible steps, the target database
      remained accessible (because the removal of
      its <structname>pg_database</structname> row would roll back),
      but it would have corrupt contents.  Fix by marking the database
      as inaccessible before we begin to perform irreversible operations.
      A failure after that will leave the database still partially
      present, but nothing can be done with it except to issue
      another <command>DROP DATABASE</command>.
     </para>
    </listitem>

    <listitem>
<!--
Author: Michael Paquier <michael@paquier.xyz>
Branch: master [cfc43aeb3] 2023-06-30 13:54:48 +0900
Branch: REL_16_STABLE [f4691e2e7] 2023-06-30 13:54:53 +0900
Branch: REL_15_STABLE [cb4ac3e56] 2023-06-30 13:54:55 +0900
Branch: REL_14_STABLE [663b35f2d] 2023-06-30 13:54:56 +0900
Branch: REL_13_STABLE [537b70b82] 2023-06-30 13:54:59 +0900
Branch: REL_12_STABLE [dbe0e5c56] 2023-06-30 13:55:02 +0900
Branch: REL_11_STABLE [c75c33de5] 2023-06-30 13:55:07 +0900
-->
     <para>
      Ensure that partitioned indexes are correctly marked as valid or not
      at creation (Michael Paquier)
      <ulink url="&commit_baseurl;663b35f2d">&sect;</ulink>
     </para>

     <para>
      If a new partitioned index matches an existing but invalid index on
      one of the partitions, the partitioned index could end up being
      marked valid prematurely.  This could lead to misbehavior or
      assertion failures in subsequent queries on the partitioned table.
     </para>
    </listitem>

    <listitem>
<!--
Author: Michael Paquier <michael@paquier.xyz>
Branch: master Release: REL_16_BR [fc55c7ff8] 2023-06-28 15:57:31 +0900
Branch: REL_15_STABLE [7aa17b498] 2023-06-28 15:57:43 +0900
Branch: REL_14_STABLE [6160e221d] 2023-06-28 15:57:48 +0900
Branch: REL_13_STABLE [f42844069] 2023-06-28 15:57:51 +0900
Branch: REL_12_STABLE [63b292e73] 2023-06-28 15:57:53 +0900
Branch: REL_11_STABLE [e90e9275f] 2023-06-28 15:57:55 +0900
-->
     <para>
      Ignore invalid child indexes when matching partitioned indexes to
      child indexes during <command>ALTER TABLE ATTACH PARTITION</command>
      (Michael Paquier)
      <ulink url="&commit_baseurl;6160e221d">&sect;</ulink>
     </para>

     <para>
      Such an index will now be ignored, and a new child index created
      instead.
     </para>
    </listitem>

    <listitem>
<!--
Author: Michael Paquier <michael@paquier.xyz>
Branch: master [38ea6aa90] 2023-07-14 10:12:48 +0900
Branch: REL_16_STABLE [31f9d41d6] 2023-07-14 10:13:14 +0900
Branch: REL_15_STABLE [c0dc97c7b] 2023-07-14 10:13:15 +0900
Branch: REL_14_STABLE [954cc2139] 2023-07-14 10:13:17 +0900
Branch: REL_13_STABLE [c89d74c18] 2023-07-14 10:13:20 +0900
Branch: REL_12_STABLE [f1d6bcdd8] 2023-07-14 10:13:21 +0900
Branch: REL_11_STABLE [ed2b58c15] 2023-07-14 10:13:22 +0900
-->
     <para>
      Fix possible failure when marking a partitioned index valid after
      all of its partitions have been attached (Michael Paquier)
      <ulink url="&commit_baseurl;954cc2139">&sect;</ulink>
     </para>

     <para>
      The update of the index's <structname>pg_index</structname> entry
      could use stale data for other columns.  One reported symptom is
      an <quote>attempted to update invisible tuple</quote> error.
     </para>
    </listitem>

    <listitem>
<!--
Author: Michael Paquier <michael@paquier.xyz>
Branch: master [bd5ddbe86] 2023-07-10 09:40:07 +0900
Branch: REL_16_STABLE [55c95f24c] 2023-07-10 09:40:12 +0900
Branch: REL_15_STABLE [d1e0f408c] 2023-07-10 09:40:14 +0900
Branch: REL_14_STABLE [235e716bc] 2023-07-10 09:40:15 +0900
Branch: REL_13_STABLE [f5b075adc] 2023-07-10 09:40:17 +0900
Branch: REL_12_STABLE [02021f1b2] 2023-07-10 09:40:22 +0900
Branch: REL_11_STABLE [914e72e6e] 2023-07-10 09:40:24 +0900
-->
     <para>
      Fix <command>ALTER EXTENSION SET SCHEMA</command> to complain if the
      extension contains any objects outside the extension's schema
      (Michael Paquier, Heikki Linnakangas)
      <ulink url="&commit_baseurl;235e716bc">&sect;</ulink>
     </para>

     <para>
      Erroring out if the extension contains objects in multiple schemas
      was always intended; but the check was mis-coded so that it would
      fail to detect some cases, leading to surprising behavior.
     </para>
    </listitem>

    <listitem>
<!--
Author: David Rowley <drowley@postgresql.org>
Branch: master Release: REL_16_BR [7fcd7ef2a] 2023-06-19 13:00:42 +1200
Branch: REL_15_STABLE [8f2ec8cc7] 2023-06-19 13:01:29 +1200
Branch: REL_14_STABLE [73f1c17fc] 2023-06-19 13:01:58 +1200
Branch: REL_13_STABLE [06286f8a2] 2023-06-19 13:02:24 +1200
Branch: REL_12_STABLE [dcef5b052] 2023-06-19 13:02:52 +1200
Branch: REL_11_STABLE [f6345f03f] 2023-06-19 13:03:17 +1200
-->
     <para>
      Don't use partial unique indexes for uniqueness proofs in the
      planner (David Rowley)
      <ulink url="&commit_baseurl;73f1c17fc">&sect;</ulink>
     </para>

     <para>
      This could give rise to incorrect plans, since the presumed
      uniqueness of rows read from a table might not hold if the index in
      question isn't used to scan the table.
     </para>
    </listitem>

    <listitem>
<!--
Author: David Rowley <drowley@postgresql.org>
Branch: master [990c3650c] 2023-08-07 22:14:21 +1200
Branch: REL_16_STABLE [ae89129aa] 2023-08-07 22:14:54 +1200
Branch: REL_15_STABLE [71662373b] 2023-08-07 22:15:23 +1200
Branch: REL_14_STABLE [bf315354e] 2023-08-07 22:15:50 +1200
-->
     <para>
      Don't Memoize lateral joins with volatile join conditions
      (Richard Guo)
      <ulink url="&commit_baseurl;bf315354e">&sect;</ulink>
     </para>

     <para>
      Applying Memoize to a sub-plan that contains volatile filter
      conditions is likely to lead to wrong answers.  The check to avoid
      doing this missed some cases that can arise when
      using <literal>LATERAL</literal>.
     </para>
    </listitem>

    <listitem>
<!--
Author: Etsuro Fujita <efujita@postgresql.org>
Branch: master [6f80a8d9c] 2023-07-28 15:45:00 +0900
Branch: REL_16_STABLE [695f5deb7] 2023-07-28 15:45:01 +0900
Branch: REL_15_STABLE [d1ef5631e] 2023-07-28 15:45:02 +0900
Branch: REL_14_STABLE [b0e390e6d] 2023-07-28 15:45:04 +0900
Branch: REL_13_STABLE [730f983ef] 2023-07-28 15:45:06 +0900
Branch: REL_12_STABLE [9edf72aa7] 2023-07-28 15:45:08 +0900
Branch: REL_11_STABLE [db01f2696] 2023-07-28 15:45:09 +0900
-->
     <para>
      Avoid producing incorrect plans for foreign joins with
      pseudoconstant join clauses (Etsuro Fujita)
      <ulink url="&commit_baseurl;b0e390e6d">&sect;</ulink>
     </para>

     <para>
      The planner currently lacks support for attaching pseudoconstant
      join clauses to a pushed-down remote join, so disable generation
      of remote joins in such cases.  (A better solution will require
      ABI-breaking changes of planner data structures, so it will have to
      wait for a future major release.)
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master Release: REL_16_BR [792213f2e] 2023-06-13 15:58:43 -0400
Branch: REL_15_STABLE [cc6974df1] 2023-06-13 15:58:37 -0400
Branch: REL_14_STABLE [d1423c52e] 2023-06-13 15:58:37 -0400
Branch: REL_13_STABLE [a36d0014f] 2023-06-13 15:58:37 -0400
Branch: REL_12_STABLE [b4110bdbf] 2023-06-13 15:58:37 -0400
Branch: REL_11_STABLE [13192a324] 2023-06-13 15:58:37 -0400
-->
     <para>
      Correctly handle sub-SELECTs in RLS policy expressions and
      security-barrier views when expanding rule actions (Tom Lane)
      <ulink url="&commit_baseurl;d1423c52e">&sect;</ulink>
     </para>
    </listitem>

    <listitem>
<!--
Author: Thomas Munro <tmunro@postgresql.org>
Branch: master [126552c85] 2023-07-04 09:07:31 +1200
Branch: REL_16_STABLE [12529028a] 2023-07-04 09:04:35 +1200
Branch: REL_15_STABLE [d34aa0a2f] 2023-07-04 09:10:37 +1200
Branch: REL_14_STABLE [fb663f387] 2023-07-04 09:14:16 +1200
Branch: REL_13_STABLE [fc1547384] 2023-07-04 09:20:55 +1200
Branch: REL_12_STABLE [255a925d3] 2023-07-04 09:21:33 +1200
Branch: REL_11_STABLE [13f127800] 2023-07-04 09:40:30 +1200
Branch: master [bcc93a389] 2023-07-04 09:07:31 +1200
Branch: REL_16_STABLE [d03d9a261] 2023-07-04 09:04:35 +1200
Branch: REL_15_STABLE [ab265e985] 2023-07-04 09:10:37 +1200
Branch: REL_14_STABLE [3f7d3a77e] 2023-07-04 09:14:16 +1200
Branch: REL_13_STABLE [8976ac5c5] 2023-07-04 09:20:55 +1200
Branch: REL_12_STABLE [17b8887c2] 2023-07-04 09:21:33 +1200
Branch: REL_11_STABLE [814f3c8e4] 2023-07-04 09:40:30 +1200
Branch: master [f9b7fc651] 2023-07-04 09:07:31 +1200
Branch: REL_16_STABLE [0cb1fb2c9] 2023-07-04 09:04:35 +1200
Branch: REL_15_STABLE [0f275b0ee] 2023-07-04 09:10:37 +1200
Branch: REL_14_STABLE [ae6d536ed] 2023-07-04 09:14:16 +1200
Branch: REL_13_STABLE [8f705d7b9] 2023-07-04 09:20:55 +1200
Branch: REL_12_STABLE [fe88497b4] 2023-07-04 09:21:33 +1200
Branch: REL_11_STABLE [0048c3b51] 2023-07-04 09:27:00 +1200
-->
     <para>
      Fix race conditions in conflict detection
      for <literal>SERIALIZABLE</literal> isolation mode
      (Thomas Munro)
      <ulink url="&commit_baseurl;fb663f387">&sect;</ulink>
      <ulink url="&commit_baseurl;3f7d3a77e">&sect;</ulink>
      <ulink url="&commit_baseurl;ae6d536ed">&sect;</ulink>
     </para>

     <para>
      Conflicts could be missed when using bitmap heap scans, when using
      GIN indexes, and when examining an initially-empty btree index.
      All these cases could lead to serializability failures due to
      improperly allowing conflicting transactions to commit.
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master Release: REL_16_BR [70b42f279] 2023-05-19 14:26:40 -0400
Branch: REL_15_STABLE [4729d1e8a] 2023-05-19 14:26:34 -0400
Branch: REL_14_STABLE [f8320cc72] 2023-05-19 14:26:34 -0400
-->
     <para>
      Fix misbehavior of EvalPlanQual checks with inherited or partitioned
      target tables (Tom Lane)
      <ulink url="&commit_baseurl;f8320cc72">&sect;</ulink>
     </para>

     <para>
      This oversight could lead to update or delete actions
      in <literal>READ COMMITTED</literal> isolation mode getting
      performed when they should have been skipped because of a
      conflicting concurrent update.
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master Release: REL_16_BR [45392626c] 2023-06-20 17:47:53 -0400
Branch: REL_15_STABLE [c2f974fff] 2023-06-20 17:47:53 -0400
Branch: REL_14_STABLE [d911dce14] 2023-06-20 17:47:36 -0400
Branch: REL_13_STABLE [2f97105e9] 2023-06-20 17:47:36 -0400
Branch: REL_12_STABLE [9529b1eb1] 2023-06-20 17:47:36 -0400
-->
     <para>
      Fix hash join with an inner-side hash key that contains Params
      coming from an outer nested loop (Tom Lane)
      <ulink url="&commit_baseurl;d911dce14">&sect;</ulink>
     </para>

     <para>
      When rescanning the join after the values of such Params have
      changed, we must rebuild the hash table, but neglected to do so.
      This could result in missing join output rows.
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master Release: REL_16_BR [43af714de] 2023-06-29 10:19:10 -0400
Branch: REL_15_STABLE [cc8cca3c2] 2023-06-29 10:19:10 -0400
Branch: REL_14_STABLE [0789b82a9] 2023-06-29 10:19:10 -0400
Branch: REL_13_STABLE [d0ab203bc] 2023-06-29 10:19:10 -0400
Branch: REL_12_STABLE [53b93e853] 2023-06-29 10:19:10 -0400
Branch: REL_11_STABLE [7f11b7a9c] 2023-06-29 10:19:10 -0400
-->
     <para>
      Fix intermittent failures when trying to update a field of a
      composite column (Tom Lane)
      <ulink url="&commit_baseurl;0789b82a9">&sect;</ulink>
     </para>

     <para>
      If the overall value of the composite column is wide enough to
      require out-of-line toasting, then an unluckily-timed cache flush
      could cause errors or server crashes.
     </para>
    </listitem>

    <listitem>
<!--
Author: Tomas Vondra <tomas.vondra@postgresql.org>
Branch: master Release: REL_16_BR [f24523672] 2023-06-07 18:54:34 +0200
Branch: REL_15_STABLE [ee87f8b63] 2023-06-07 18:52:21 +0200
Branch: REL_14_STABLE [7f528e96c] 2023-06-07 18:53:04 +0200
Branch: REL_13_STABLE [c504aa857] 2023-06-07 18:53:16 +0200
Branch: REL_12_STABLE [54e1b8587] 2023-06-07 18:53:30 +0200
Branch: master [ce5aaea8c] 2023-07-02 22:21:02 +0200
Branch: REL_16_STABLE [9cf85093b] 2023-07-02 22:22:31 +0200
Branch: REL_15_STABLE [7ae4e7868] 2023-07-02 22:22:50 +0200
Branch: REL_14_STABLE [260dbf19a] 2023-07-02 22:23:04 +0200
Branch: REL_13_STABLE [984c23f6f] 2023-07-02 22:23:20 +0200
-->
     <para>
      Prevent query-lifespan memory leaks in some <command>UPDATE</command>
      queries with triggers (Tomas Vondra)
      <ulink url="&commit_baseurl;7f528e96c">&sect;</ulink>
      <ulink url="&commit_baseurl;260dbf19a">&sect;</ulink>
     </para>
    </listitem>

    <listitem>
<!--
Author: Tomas Vondra <tomas.vondra@postgresql.org>
Branch: master [98640f960] 2023-07-02 20:03:30 +0200
Branch: REL_16_STABLE [9ae7b5d1f] 2023-07-02 20:04:16 +0200
Branch: REL_15_STABLE [0c5fe4ff6] 2023-07-02 20:04:40 +0200
Branch: REL_14_STABLE [c1affa38c] 2023-07-02 20:05:14 +0200
Branch: REL_13_STABLE [3ce761d5c] 2023-07-02 20:05:35 +0200
-->
     <para>
      Prevent query-lifespan memory leaks when an Incremental Sort plan
      node is rescanned (James Coleman, Laurenz Albe, Tom Lane)
      <ulink url="&commit_baseurl;c1affa38c">&sect;</ulink>
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master Release: REL_16_BR [7398e2722] 2023-06-12 10:54:44 -0400
Branch: REL_15_STABLE [bd590d1fe] 2023-06-12 10:54:28 -0400
Branch: REL_14_STABLE [5eaa05f63] 2023-06-12 10:54:28 -0400
Branch: REL_13_STABLE [6f23b5f74] 2023-06-12 10:54:28 -0400
-->
     <para>
      Accept fractional seconds in the input to <type>jsonpath</type>'s
      <function>datetime()</function> method (Tom Lane)
      <ulink url="&commit_baseurl;5eaa05f63">&sect;</ulink>
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master Release: REL_16_BR [691594acd] 2023-06-24 17:18:08 -0400
Branch: REL_15_STABLE [a77d90171] 2023-06-24 17:18:08 -0400
Branch: REL_14_STABLE [4c61afa47] 2023-06-24 17:18:08 -0400
Branch: REL_13_STABLE [b6ab18a99] 2023-06-24 17:18:08 -0400
Branch: REL_12_STABLE [3b4580f5c] 2023-06-24 17:18:08 -0400
Branch: REL_11_STABLE [c7f33a197] 2023-06-24 17:18:08 -0400
-->
     <para>
      Prevent stack-overflow crashes with very complex text search
      patterns (Tom Lane)
      <ulink url="&commit_baseurl;4c61afa47">&sect;</ulink>
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [38df84c65] 2023-07-27 11:56:35 -0400
Branch: REL_16_STABLE [de3f0e3fe] 2023-07-27 11:56:35 -0400
Branch: REL_15_STABLE [313ceda2f] 2023-07-27 12:07:48 -0400
Branch: REL_14_STABLE [341996248] 2023-07-27 12:07:48 -0400
Branch: REL_13_STABLE [288b4288c] 2023-07-27 12:07:48 -0400
Branch: REL_12_STABLE [0660f74e8] 2023-07-27 12:07:48 -0400
Branch: REL_11_STABLE [1d031ad54] 2023-07-27 12:07:48 -0400
-->
     <para>
      Allow tokens up to 10240 bytes long
      in <filename>pg_hba.conf</filename>
      and <filename>pg_ident.conf</filename> (Tom Lane)
      <ulink url="&commit_baseurl;341996248">&sect;</ulink>
     </para>

     <para>
      The previous limit of 256 bytes has been found insufficient for some
      use-cases.
     </para>
    </listitem>

    <listitem>
<!--
Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
Branch: master [4f4d73466] 2023-07-05 13:13:13 +0300
Branch: REL_16_STABLE [dc0b58417] 2023-07-05 13:25:59 +0300
Branch: REL_15_STABLE [fa96a74a0] 2023-07-05 13:13:30 +0300
Branch: REL_14_STABLE [bfb493dba] 2023-07-05 13:13:35 +0300
Branch: REL_13_STABLE [59c2a6fe9] 2023-07-05 13:13:39 +0300
Branch: REL_12_STABLE [162aa47c3] 2023-07-05 13:14:24 +0300
Branch: REL_11_STABLE [2316ff1ae] 2023-07-05 13:14:33 +0300
-->
     <para>
      Fix mishandling of C++ out-of-memory conditions (Heikki Linnakangas)
      <ulink url="&commit_baseurl;bfb493dba">&sect;</ulink>
     </para>

     <para>
      If JIT is in use, running out of memory in a
      C++ <function>new</function> call would lead to
      a <productname>PostgreSQL</productname> FATAL error, instead of the
      expected C++ exception.
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [9089287aa] 2023-07-20 14:23:46 -0400
Branch: REL_16_STABLE [c0f531396] 2023-07-20 14:23:46 -0400
Branch: REL_15_STABLE [fbaf65cd6] 2023-07-20 14:23:46 -0400
Branch: REL_14_STABLE [10fd061bb] 2023-07-20 14:23:46 -0400
Branch: REL_13_STABLE [291c02540] 2023-07-20 14:23:46 -0400
-->
     <para>
      Fix rare null-pointer crash in <filename>plancache.c</filename>
      (Tom Lane)
      <ulink url="&commit_baseurl;10fd061bb">&sect;</ulink>
     </para>
    </listitem>

    <listitem>
<!--
Author: Thomas Munro <tmunro@postgresql.org>
Branch: master [03f80daac] 2023-07-04 15:16:47 +1200
Branch: REL_16_STABLE [af8f9ec66] 2023-07-04 15:21:36 +1200
Branch: REL_15_STABLE [9ffb10f18] 2023-07-04 15:24:42 +1200
Branch: REL_14_STABLE [b7ec66731] 2023-07-04 15:26:42 +1200
Branch: REL_13_STABLE [a0003572f] 2023-07-04 15:28:29 +1200
Branch: REL_12_STABLE [74ad9b0d1] 2023-07-04 15:29:41 +1200
Branch: REL_11_STABLE [1605623ec] 2023-07-04 16:13:12 +1200
-->
     <para>
      Avoid losing track of possibly-useful shared memory segments when a
      page free results in coalescing ranges of free space (Dongming Liu)
      <ulink url="&commit_baseurl;b7ec66731">&sect;</ulink>
     </para>

     <para>
      Ensure that the segment is moved into the
      appropriate <quote>bin</quote> for its new amount of free space, so
      that it will be found by subsequent searches.
     </para>
    </listitem>

    <listitem>
<!--
Author: Peter Geoghegan <pg@bowt.ie>
Branch: master Release: REL_16_BR [5f0762f14] 2023-06-21 17:41:58 -0700
Branch: REL_15_STABLE [642bec1f8] 2023-06-21 17:41:56 -0700
Branch: REL_14_STABLE [63fa0deb3] 2023-06-21 17:41:54 -0700
Branch: REL_13_STABLE [b6311824f] 2023-06-21 17:41:52 -0700
Branch: REL_12_STABLE [355917c07] 2023-06-21 17:41:50 -0700
Branch: REL_11_STABLE [7ddba19eb] 2023-06-21 17:41:48 -0700
Branch: master Release: REL_16_BR [5abff197c] 2023-05-25 15:33:00 -0700
Branch: REL_15_STABLE [6983a5112] 2023-05-25 15:32:57 -0700
Branch: REL_14_STABLE [322c9b340] 2023-05-25 15:32:53 -0700
Branch: REL_13_STABLE [8f876d15c] 2023-05-25 15:32:50 -0700
Branch: REL_12_STABLE [188dad680] 2023-05-25 15:32:48 -0700
Branch: REL_11_STABLE [a72b503ca] 2023-05-25 15:32:45 -0700
-->
     <para>
      Allow <command>VACUUM</command> to continue after detecting certain
      types of b-tree index corruption (Peter Geoghegan)
      <ulink url="&commit_baseurl;63fa0deb3">&sect;</ulink>
      <ulink url="&commit_baseurl;322c9b340">&sect;</ulink>
     </para>

     <para>
      If an invalid sibling-page link is detected, log the issue and press
      on, rather than throwing an error as before.  Nothing short
      of <command>REINDEX</command> will fix the broken index, but
      preventing <command>VACUUM</command> from completing until that is
      done risks making matters far worse.
     </para>
    </listitem>

    <listitem>
<!--
Author: Andres Freund <andres@anarazel.de>
Branch: master [83ecfa9fa] 2023-07-13 13:03:28 -0700
Branch: REL_16_STABLE [03ccc9569] 2023-07-13 13:03:30 -0700
Branch: REL_15_STABLE [82e97b864] 2023-07-13 13:03:31 -0700
Branch: REL_14_STABLE [e246fd423] 2023-07-13 13:03:33 -0700
Branch: REL_13_STABLE [53336e8f6] 2023-07-13 13:03:34 -0700
Branch: REL_12_STABLE [7aec84e4c] 2023-07-13 13:03:36 -0700
Branch: REL_11_STABLE [1386f0987] 2023-07-13 13:03:37 -0700
-->
     <para>
      Ensure that <varname>WrapLimitsVacuumLock</varname> is released
      after <command>VACUUM</command> detects invalid data
      in <structname>pg_database</structname>.<structfield>datfrozenxid</structfield>
      or <structname>pg_database</structname>.<structfield>datminmxid</structfield>
      (Andres Freund)
      <ulink url="&commit_baseurl;e246fd423">&sect;</ulink>
     </para>

     <para>
      Failure to release this lock could lead to a deadlock later,
      although the lock would be cleaned up if the session exits or
      encounters some other error.
     </para>
    </listitem>

    <listitem>
<!--
Author: Michael Paquier <michael@paquier.xyz>
Branch: master [cb0cca188] 2023-07-18 13:43:44 +0900
Branch: REL_16_STABLE [f88bc9f38] 2023-07-18 13:44:27 +0900
Branch: REL_15_STABLE [a878eff6b] 2023-07-18 13:44:29 +0900
Branch: REL_14_STABLE [442749100] 2023-07-18 13:44:31 +0900
Branch: REL_13_STABLE [db59108a2] 2023-07-18 13:44:33 +0900
Branch: REL_12_STABLE [d2ee542a2] 2023-07-18 13:44:34 +0900
Branch: REL_11_STABLE [bc0581f8f] 2023-07-18 13:44:35 +0900
Branch: master [4e465aac3] 2023-07-18 14:04:31 +0900
Branch: REL_16_STABLE [926aa6d11] 2023-07-18 14:04:46 +0900
Branch: REL_15_STABLE [f6ecd2622] 2023-07-18 14:04:48 +0900
Branch: REL_14_STABLE [763d26205] 2023-07-18 14:04:50 +0900
Branch: REL_13_STABLE [b3ca4f0a5] 2023-07-18 14:04:51 +0900
Branch: REL_12_STABLE [410a0d6bd] 2023-07-18 14:04:52 +0900
Branch: REL_11_STABLE [6c7bffc09] 2023-07-18 14:04:54 +0900
-->
     <para>
      Avoid double replay of prepared transactions during crash
      recovery (suyu.cmj, Michael Paquier)
      <ulink url="&commit_baseurl;442749100">&sect;</ulink>
      <ulink url="&commit_baseurl;763d26205">&sect;</ulink>
     </para>

     <para>
      After a crash partway through a checkpoint with some two-phase
      transaction state data already flushed to disk by this checkpoint,
      crash recovery could attempt to replay the prepared transaction(s)
      twice, leading to a fatal error such as <quote>lock is already
      held</quote> in the startup process.
     </para>
    </listitem>

    <listitem>
<!--
Author: Michael Paquier <michael@paquier.xyz>
Branch: REL_14_STABLE [f663b0091] 2023-06-20 09:36:35 +0900
Branch: REL_13_STABLE [896012b88] 2023-06-20 09:36:58 +0900
-->
     <para>
      Fix possible failure while promoting a standby server, if archiving
      is enabled and two-phase transactions need to be recovered (Julian
      Markwort)
      <ulink url="&commit_baseurl;f663b0091">&sect;</ulink>
     </para>

     <para>
      If any required two-phase transactions were logged in the most
      recent (partial) log segment, promotion would fail with an incorrect
      complaint about <quote>requested WAL segment has already been
      removed</quote>.
     </para>
    </listitem>

    <listitem>
<!--
Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
Branch: master [4b4798e13] 2023-07-04 17:57:03 +0300
Branch: REL_16_STABLE [d431644b4] 2023-07-04 18:04:27 +0300
Branch: REL_15_STABLE [e24c02e4d] 2023-07-04 18:07:27 +0300
Branch: REL_14_STABLE [d85bf0719] 2023-07-04 18:07:46 +0300
Branch: REL_13_STABLE [acc8cdff4] 2023-07-04 18:08:08 +0300
Branch: REL_12_STABLE [1b4f1c6f8] 2023-07-04 18:08:26 +0300
Branch: REL_11_STABLE [6377f705c] 2023-07-04 18:08:40 +0300
-->
     <para>
      Ensure that a newly created, but still empty table
      is <function>fsync</function>'ed at the next checkpoint (Heikki
      Linnakangas)
      <ulink url="&commit_baseurl;d85bf0719">&sect;</ulink>
     </para>

     <para>
      Without this, if there is an operating system crash causing the
      empty file to disappear, subsequent operations on the table might
      fail with <quote>could not open file</quote> errors.
     </para>
    </listitem>

    <listitem>
<!--
Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
Branch: master [3142a8845] 2023-07-06 17:25:29 +0300
Branch: REL_16_STABLE [bf7b70e6b] 2023-07-06 17:28:50 +0300
Branch: REL_15_STABLE [25624c5d3] 2023-07-06 17:29:12 +0300
Branch: REL_14_STABLE [32f327f68] 2023-07-06 17:29:13 +0300
Branch: REL_13_STABLE [c50b869ed] 2023-07-06 17:29:14 +0300
Branch: REL_12_STABLE [80abec387] 2023-07-06 17:29:15 +0300
Branch: REL_11_STABLE [988719b88] 2023-07-06 17:29:16 +0300
-->
     <para>
      Ensure that creation of the init fork of an unlogged index is
      WAL-logged (Heikki Linnakangas)
      <ulink url="&commit_baseurl;32f327f68">&sect;</ulink>
     </para>

     <para>
      While an unlogged index's main data fork is not WAL-logged, its init
      fork should be, to ensure that we have a consistent state to restore
      the index to after a crash.  This step was missed if the init fork
      contains no data, which is a case not used by any standard index AM;
      but perhaps some extension behaves that way.
     </para>
    </listitem>

    <listitem>
<!--
Author: Michael Paquier <michael@paquier.xyz>
Branch: REL_14_STABLE [c6043fcbb] 2023-06-11 10:33:46 +0900
Branch: REL_13_STABLE [37236ca06] 2023-06-11 10:33:56 +0900
Branch: REL_12_STABLE [9920552e1] 2023-06-11 10:33:59 +0900
Branch: REL_11_STABLE [a9c3472e0] 2023-06-11 10:34:00 +0900
-->
     <para>
      Fix missing reinitializations of delay-checkpoint-end flags
      (suyu.cmj)
      <ulink url="&commit_baseurl;c6043fcbb">&sect;</ulink>
     </para>

     <para>
      This could result in unnecessary delays of checkpoints, or in
      assertion failures in assert-enabled builds.
     </para>
    </listitem>

    <listitem>
<!--
Author: David Rowley <drowley@postgresql.org>
Branch: master [deae1657e] 2023-08-02 01:39:47 +1200
Branch: REL_16_STABLE [b25acc302] 2023-08-02 01:40:27 +1200
Branch: REL_15_STABLE [67f3a697b] 2023-08-02 01:40:56 +1200
Branch: REL_14_STABLE [f457f2ef1] 2023-08-02 01:41:21 +1200
Branch: REL_13_STABLE [74a5bf1b6] 2023-08-02 01:41:55 +1200
Branch: REL_12_STABLE [668990980] 2023-08-02 01:44:31 +1200
-->
     <para>
      Fix overly strict assertion in <type>jsonpath</type> code
      (David Rowley)
      <ulink url="&commit_baseurl;f457f2ef1">&sect;</ulink>
     </para>

     <para>
      This assertion failed if a query applied
      the <literal>.type()</literal> operator to
      a <literal>like_regex</literal> result.
      There was no bug in non-assert builds.
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master Release: REL_16_BR [555b929bb] 2023-06-21 11:07:24 -0400
Branch: REL_15_STABLE [cb74f7bec] 2023-06-21 11:07:11 -0400
Branch: REL_14_STABLE [120ea65b8] 2023-06-21 11:07:11 -0400
Branch: REL_13_STABLE [d1fc0f382] 2023-06-21 11:07:11 -0400
Branch: REL_12_STABLE [a98a04005] 2023-06-21 11:07:11 -0400
Branch: REL_11_STABLE [a8be2356c] 2023-06-21 11:07:11 -0400
-->
     <para>
      Avoid assertion failure when processing an empty statement via the
      extended query protocol in an already-aborted transaction (Tom Lane)
      <ulink url="&commit_baseurl;120ea65b8">&sect;</ulink>
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master Release: REL_16_BR [1d369c9e9] 2023-05-16 10:53:42 -0400
Branch: REL_15_STABLE [eaf99e4c4] 2023-05-16 10:53:42 -0400
Branch: REL_14_STABLE [ccd362325] 2023-05-16 10:53:42 -0400
Branch: REL_13_STABLE [0409c7fc7] 2023-05-16 10:53:42 -0400
Branch: REL_12_STABLE [0966291a4] 2023-05-16 10:53:42 -0400
Branch: REL_11_STABLE [8084bf9a4] 2023-05-16 10:53:42 -0400
-->
     <para>
      Fix <filename>contrib/fuzzystrmatch</filename>'s
      Soundex <function>difference()</function> function to handle empty
      input sanely (Alexander Lakhin, Tom Lane)
      <ulink url="&commit_baseurl;ccd362325">&sect;</ulink>
     </para>

     <para>
      An input string containing no alphabetic characters resulted in
      unpredictable output.
     </para>
    </listitem>

    <listitem>
<!--
Author: Michael Paquier <michael@paquier.xyz>
Branch: master Release: REL_16_BR [d522b05c8] 2023-06-12 09:14:03 +0900
Branch: REL_15_STABLE [3a5222a43] 2023-06-12 09:14:13 +0900
Branch: REL_14_STABLE [e0e682945] 2023-06-12 09:14:14 +0900
Branch: REL_13_STABLE [78bf0a256] 2023-06-12 09:14:17 +0900
Branch: REL_12_STABLE [edf1de65e] 2023-06-12 09:14:19 +0900
Branch: REL_11_STABLE [bbfc26d86] 2023-06-12 09:14:20 +0900
-->
     <para>
      Tighten whitespace checks in <filename>contrib/hstore</filename>
      input (Evan Jones)
      <ulink url="&commit_baseurl;e0e682945">&sect;</ulink>
     </para>

     <para>
      In some cases, characters would be falsely recognized as whitespace
      and hence discarded.
     </para>
    </listitem>

    <listitem>
<!--
Author: Michael Paquier <michael@paquier.xyz>
Branch: master Release: REL_16_BR [c00fbe89d] 2023-06-15 13:45:34 +0900
Branch: REL_15_STABLE [4be308ede] 2023-06-15 13:45:38 +0900
Branch: REL_14_STABLE [019a40d61] 2023-06-15 13:45:40 +0900
Branch: REL_13_STABLE [ae9aac64a] 2023-06-15 13:45:41 +0900
Branch: REL_12_STABLE [6ecc1c02a] 2023-06-15 13:45:42 +0900
Branch: REL_11_STABLE [ab40b0395] 2023-06-15 13:45:44 +0900
-->
     <para>
      Disallow oversize input arrays
      with <filename>contrib/intarray</filename>'s
      <literal>gist__int_ops</literal> index opclass (Ankit Kumar Pandey,
      Alexander Lakhin)
      <ulink url="&commit_baseurl;019a40d61">&sect;</ulink>
     </para>

     <para>
      Previously this code would report a <literal>NOTICE</literal> but
      press on anyway, creating an invalid index entry that presents a
      risk of crashes when the index is read.
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [8aac9759b] 2023-07-13 13:07:51 -0400
Branch: REL_16_STABLE [e27f3f52c] 2023-07-13 13:08:08 -0400
Branch: REL_15_STABLE [5cb461989] 2023-07-13 13:08:17 -0400
Branch: REL_14_STABLE [a6991f763] 2023-07-13 13:08:23 -0400
Branch: REL_13_STABLE [7fffcc2ee] 2023-07-13 13:08:28 -0400
Branch: REL_12_STABLE [8d8f37149] 2023-07-13 13:08:33 -0400
Branch: REL_11_STABLE [9f70f6d4c] 2023-07-13 13:08:40 -0400
-->
     <para>
      Avoid useless double decompression of GiST index entries
      in <filename>contrib/intarray</filename> (Konstantin Knizhnik,
      Matthias van de Meent, Tom Lane)
      <ulink url="&commit_baseurl;a6991f763">&sect;</ulink>
     </para>
    </listitem>

    <listitem>
<!--
Author: Michael Paquier <michael@paquier.xyz>
Branch: master Release: REL_16_BR [e7bff46e5] 2023-05-19 12:37:58 +0900
Branch: REL_15_STABLE [2dd778221] 2023-05-19 12:38:15 +0900
Branch: REL_14_STABLE [e72580232] 2023-05-19 12:38:18 +0900
-->
     <para>
      Fix <filename>contrib/pageinspect</filename>'s
      <function>gist_page_items()</function> function to work when there
      are included index columns (Alexander Lakhin, Michael Paquier)
      <ulink url="&commit_baseurl;e72580232">&sect;</ulink>
     </para>

     <para>
      Previously, if the index has included
      columns, <function>gist_page_items()</function> would fail to
      display those values on index leaf pages, or crash outright on
      non-leaf pages.
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master Release: REL_16_BR [016107478] 2023-06-04 13:05:54 -0400
Branch: REL_15_STABLE [ca9e79274] 2023-06-04 13:05:54 -0400
Branch: REL_14_STABLE [d6f549d7a] 2023-06-04 13:05:54 -0400
-->
     <para>
      Fix <application>pg_dump</application> to correctly handle new-style
      SQL-language functions whose bodies require parse-time dependencies
      on unique indexes (Tom Lane)
      <ulink url="&commit_baseurl;d6f549d7a">&sect;</ulink>
     </para>

     <para>
      Such cases can arise from <literal>GROUP BY</literal>
      and <literal>ON CONFLICT</literal> clauses, for example.  The
      function must then be postponed until after the unique index in the
      dump output, but <application>pg_dump</application> did not do that
      and instead printed a warning about <quote>could not resolve
      dependency loop</quote>.
     </para>
    </listitem>

    <listitem>
<!--
Author: Michael Paquier <michael@paquier.xyz>
Branch: master [a5ea825f9] 2023-07-14 11:15:34 +0900
Branch: REL_16_STABLE [27da47122] 2023-07-14 11:16:03 +0900
Branch: REL_15_STABLE [eb3abec4b] 2023-07-14 11:16:06 +0900
Branch: REL_14_STABLE [7af65523a] 2023-07-14 11:16:08 +0900
Branch: REL_13_STABLE [bdaaf1bf1] 2023-07-14 11:16:10 +0900
Branch: REL_12_STABLE [7d27493b7] 2023-07-14 11:16:11 +0900
Branch: REL_11_STABLE [db9813819] 2023-07-14 11:16:13 +0900
-->
     <para>
      Ensure
      that <structname>pg_index</structname>.<structfield>indisreplident</structfield>
      is kept up-to-date in relation cache entries (Shruthi Gowda)
      <ulink url="&commit_baseurl;7af65523a">&sect;</ulink>
     </para>

     <para>
      This value could be stale in some cases.  There is no core code that
      relies on the relation cache's copy, so this is only a latent bug as
      far as Postgres itself is concerned; but there may be extensions for
      which it is a live bug.
     </para>
    </listitem>

   </itemizedlist>

  </sect2>
 </sect1>

 <sect1 id="release-14-8">
  <title>Release 14.8</title>

  <formalpara>
  <title>Release date:</title>
  <para>2023-05-11</para>
  </formalpara>

  <para>
   This release contains a variety of fixes from 14.7.
   For information about new features in major release 14, see
   <xref linkend="release-14"/>.
  </para>

  <sect2>
   <title>Migration to Version 14.8</title>

   <para>
    A dump/restore is not required for those running 14.X.
   </para>

   <para>
    However, if you are upgrading from a version earlier than 14.4,
    see <xref linkend="release-14-4"/>.
   </para>
  </sect2>

  <sect2>
   <title>Changes</title>

   <itemizedlist>

    <listitem>
<!--
Author: Noah Misch <noah@leadboat.com>
Branch: master [681d9e462] 2023-05-08 06:14:07 -0700
Branch: REL_15_STABLE [dbd5795e7] 2023-05-08 06:14:11 -0700
Branch: REL_14_STABLE [01e8182c7] 2023-05-08 06:14:11 -0700
Branch: REL_13_STABLE [2212f7db8] 2023-05-08 06:14:12 -0700
Branch: REL_12_STABLE [78119a0bf] 2023-05-08 06:14:12 -0700
Branch: REL_11_STABLE [23cb8eaeb] 2023-05-08 06:14:12 -0700
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [8d525d7b9] 2023-05-08 11:24:47 -0400
Branch: REL_15_STABLE [1b761d896] 2023-05-08 11:24:47 -0400
Branch: REL_14_STABLE [1913f63dc] 2023-05-08 11:24:47 -0400
Branch: REL_13_STABLE [feb9e7fbb] 2023-05-08 11:24:47 -0400
Branch: REL_12_STABLE [2cd843cc9] 2023-05-08 11:24:47 -0400
Branch: REL_11_STABLE [766e06140] 2023-05-08 11:24:47 -0400
-->
     <para>
      Prevent <command>CREATE SCHEMA</command> from defeating changes
      in <varname>search_path</varname> (Alexander Lakhin)
      <ulink url="&commit_baseurl;01e8182c7">&sect;</ulink>
      <ulink url="&commit_baseurl;1913f63dc">&sect;</ulink>
     </para>

     <para>
      Within a <command>CREATE SCHEMA</command> command, objects in the
      prevailing <varname>search_path</varname>, as well as those in the
      newly-created schema, would be visible even within a called
      function or script that attempted to set a
      secure <varname>search_path</varname>.  This could allow any user
      having permission to create a schema to hijack the privileges of a
      security definer function or extension script.
     </para>

     <para>
      The <productname>PostgreSQL</productname> Project thanks
      Alexander Lakhin for reporting this problem.
      (CVE-2023-2454)
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [ca73753b0] 2023-05-08 10:12:44 -0400
Branch: REL_15_STABLE [04e560604] 2023-05-08 10:12:44 -0400
Branch: REL_14_STABLE [f8d799eda] 2023-05-08 10:12:44 -0400
Branch: REL_13_STABLE [b8e28f04f] 2023-05-08 10:12:44 -0400
Branch: REL_12_STABLE [ee87b482c] 2023-05-08 10:12:45 -0400
Branch: REL_11_STABLE [473626cf0] 2023-05-08 10:12:45 -0400
-->
     <para>
      Enforce row-level security policies correctly after inlining a
      set-returning function (Stephen Frost, Tom Lane)
      <ulink url="&commit_baseurl;f8d799eda">&sect;</ulink>
     </para>

     <para>
      If a set-returning SQL-language function refers to a table having
      row-level security policies, and it can be inlined into a calling
      query, those RLS policies would not get enforced properly in some
      cases involving re-using a cached plan under a different role.
      This could allow a user to see or modify rows that should have been
      invisible.
     </para>

     <para>
      The <productname>PostgreSQL</productname> Project thanks
      Wolfgang Walther for reporting this problem.
      (CVE-2023-2455)
     </para>
    </listitem>

    <listitem>
<!--
Author: Michael Paquier <michael@paquier.xyz>
Branch: master [4dadd660f] 2023-04-28 19:29:12 +0900
Branch: REL_15_STABLE [b9ad73ad2] 2023-04-28 19:29:36 +0900
Branch: REL_14_STABLE [d29eba198] 2023-04-28 19:29:38 +0900
Branch: REL_13_STABLE [7e95a33b4] 2023-04-28 19:29:40 +0900
Branch: REL_12_STABLE [63f7e91ec] 2023-04-28 19:29:42 +0900
Branch: REL_11_STABLE [a9212716b] 2023-04-28 19:29:44 +0900
-->
     <para>
      Avoid crash when the new schema name is omitted
      in <command>CREATE SCHEMA</command> (Michael Paquier)
      <ulink url="&commit_baseurl;d29eba198">&sect;</ulink>
     </para>

     <para>
      The SQL standard allows writing <literal>CREATE SCHEMA AUTHORIZATION
      <replaceable>owner_name</replaceable></literal>, with the schema
      name defaulting to <replaceable>owner_name</replaceable>.  However
      some code paths expected the schema name to be present and would
      fail.
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [4766eef31] 2023-04-05 12:56:32 -0400
Branch: REL_15_STABLE [2624de79e] 2023-04-05 12:56:30 -0400
Branch: REL_14_STABLE [0a6aaf011] 2023-04-05 12:56:30 -0400
Branch: REL_13_STABLE [b02bf1e46] 2023-04-05 12:56:30 -0400
Note: no live bug fixed in v15 or HEAD
-->
     <para>
      Fix enabling/disabling of cloned triggers in partitioned tables
      (Tom Lane)
      <ulink url="&commit_baseurl;0a6aaf011">&sect;</ulink>
     </para>

     <para>
      <command>ALTER TABLE ... ENABLE/DISABLE TRIGGER USER</command>
      skipped cloned triggers, mistaking them for system triggers.
      Other variants of <literal>ENABLE/DISABLE TRIGGER</literal> would
      process them, but only after improperly enforcing a superuserness
      check.
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [a3c9d35ae] 2023-03-27 15:04:15 -0400
Branch: REL_15_STABLE [d90d59e25] 2023-03-27 15:04:02 -0400
Branch: REL_14_STABLE [334cc4c96] 2023-03-27 15:04:02 -0400
Branch: REL_13_STABLE [29a20ff06] 2023-03-27 15:04:02 -0400
Branch: REL_12_STABLE [cd07163c0] 2023-03-27 15:04:02 -0400
Branch: REL_11_STABLE [78838bc3d] 2023-03-27 15:04:02 -0400
-->
     <para>
      Disallow altering composite types that are stored in indexes
      (Tom Lane)
      <ulink url="&commit_baseurl;334cc4c96">&sect;</ulink>
     </para>

     <para>
      <command>ALTER TYPE</command> disallows non-binary-compatible
      modifications of composite types if they are stored in any table
      columns.  (Perhaps that will be allowed someday, but it hasn't
      happened yet; the locking implications of rewriting many tables are
      daunting.)  We overlooked the possibility that an index might
      contain a composite type that doesn't also appear in its table.
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [f0d65c0ea] 2023-03-31 11:18:49 -0400
Branch: REL_15_STABLE [6e3698173] 2023-03-31 11:18:49 -0400
Branch: REL_14_STABLE [b0b55d8b8] 2023-03-31 11:18:49 -0400
Branch: REL_13_STABLE [bfb993b1b] 2023-03-31 11:18:49 -0400
Branch: REL_12_STABLE [e8d74aac5] 2023-03-31 11:18:49 -0400
-->
     <para>
      Disallow system columns as elements of foreign keys (Tom Lane)
      <ulink url="&commit_baseurl;b0b55d8b8">&sect;</ulink>
     </para>

     <para>
      Since the removal of OID as a system column, there is no plausible
      use-case for this, and various bits of code no longer support it.
      Disallow it rather than trying to fix all the cases.
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [d66bb048c] 2023-03-10 13:52:44 -0500
Branch: REL_15_STABLE [59947bac7] 2023-03-10 13:52:28 -0500
Branch: REL_14_STABLE [53a53ea33] 2023-03-10 13:52:28 -0500
Branch: REL_13_STABLE [866fd004d] 2023-03-10 13:52:28 -0500
Branch: REL_12_STABLE [a30310833] 2023-03-10 13:52:28 -0500
Branch: REL_11_STABLE [6e2674d77] 2023-03-10 13:52:28 -0500
-->
     <para>
      Ensure that <command>COPY TO</command> from an RLS-enabled parent
      table does not copy any rows from child tables (Antonin Houska)
      <ulink url="&commit_baseurl;53a53ea33">&sect;</ulink>
     </para>

     <para>
      The documentation is quite clear that <command>COPY TO</command>
      copies rows from only the named table, not any inheritance children
      it may have.  However, if row-level security was enabled on the table
      then this stopped being true.
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [4c40995f6] 2023-05-04 11:48:23 -0400
Branch: REL_15_STABLE [ccb479e76] 2023-05-04 11:48:23 -0400
Branch: REL_14_STABLE [d5de344a5] 2023-05-04 11:48:23 -0400
Branch: REL_13_STABLE [9a72f499a] 2023-05-04 11:48:23 -0400
Branch: REL_12_STABLE [580df5078] 2023-05-04 11:48:23 -0400
Branch: REL_11_STABLE [4624aad61] 2023-05-04 11:48:23 -0400
-->
     <para>
      Avoid possible crash when <function>array_position()</function>
      or <function>array_positions()</function> is passed an empty array
      (Tom Lane)
      <ulink url="&commit_baseurl;d5de344a5">&sect;</ulink>
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [b081fe419] 2023-03-14 19:17:31 -0400
Branch: REL_15_STABLE [a67c75f82] 2023-03-14 19:17:31 -0400
Branch: REL_14_STABLE [7cac19105] 2023-03-14 19:17:31 -0400
Branch: REL_13_STABLE [386a26023] 2023-03-14 19:17:31 -0400
Branch: REL_12_STABLE [6d3a9a60f] 2023-03-14 19:17:31 -0400
Branch: REL_11_STABLE [8e33fb9ef] 2023-03-14 19:17:31 -0400
-->
     <para>
      Fix possible out-of-bounds fetch in <function>to_char()</function>
      (Tom Lane)
      <ulink url="&commit_baseurl;7cac19105">&sect;</ulink>
     </para>

     <para>
      With bad luck this could have resulted in a server crash.
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [d7056bc1c] 2023-03-01 11:30:31 -0500
Branch: REL_15_STABLE [eae09137d] 2023-03-01 11:30:17 -0500
Branch: REL_14_STABLE [1a9356f65] 2023-03-01 11:30:17 -0500
Branch: REL_13_STABLE [3b37e8442] 2023-03-01 11:30:17 -0500
Branch: REL_12_STABLE [b162660d3] 2023-03-01 11:30:17 -0500
Branch: REL_11_STABLE [b1a9d8ef2] 2023-03-01 11:30:17 -0500
-->
     <para>
      Avoid buffer overread in <function>translate()</function> function
      (Daniil Anisimov)
      <ulink url="&commit_baseurl;1a9356f65">&sect;</ulink>
     </para>

     <para>
      When using the deletion feature, the function might fetch the byte
      just after the input string, creating a small risk of crash.
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [25a7812cd] 2023-03-13 15:19:00 -0400
Branch: REL_15_STABLE [74a1a36d7] 2023-03-13 15:19:00 -0400
Branch: REL_14_STABLE [0ee9d685d] 2023-03-13 15:19:00 -0400
Branch: REL_13_STABLE [52e9a7816] 2023-03-13 15:19:00 -0400
Branch: REL_12_STABLE [c25a929a6] 2023-03-13 15:19:00 -0400
Branch: REL_11_STABLE [234941a3b] 2023-03-13 15:19:00 -0400
-->
     <para>
      Fix error cursor setting for parse errors in JSON string literals
      (Tom Lane)
      <ulink url="&commit_baseurl;0ee9d685d">&sect;</ulink>
     </para>

     <para>
      Most cases in which a syntax error is detected in a string literal
      within a JSON value failed to set the error cursor appropriately.
      This led at least to an unhelpful error message (pointing to the
      token before the string, rather than the actual trouble spot), and
      could even result in a crash in v14 and later.
     </para>
    </listitem>

    <listitem>
<!--
Author: Andres Freund <andres@anarazel.de>
Branch: master [be504a3e9] 2023-03-07 21:52:32 -0800
Branch: REL_15_STABLE [391f08fd6] 2023-03-07 21:36:48 -0800
Branch: REL_14_STABLE [324281fd5] 2023-03-07 21:36:49 -0800
Branch: REL_13_STABLE [e6d77f22c] 2023-03-07 21:36:51 -0800
Branch: REL_12_STABLE [3c92f7e9d] 2023-03-07 21:36:52 -0800
-->
     <para>
      Fix data corruption due to <varname>vacuum_defer_cleanup_age</varname>
      being larger than the current 64-bit xid (Andres Freund)
      <ulink url="&commit_baseurl;324281fd5">&sect;</ulink>
     </para>

     <para>
      In v14 and later with non-default settings
      of <varname>vacuum_defer_cleanup_age</varname>, it was possible to
      compute a very large vacuum cleanup horizon xid, leading to vacuum
      removing rows that are still live.  v12 and v13 have a lesser form
      of the same problem affecting only GiST indexes, which could lead to
      index pages getting recycled too early.
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [30dbdbe75] 2023-03-13 12:40:28 -0400
Branch: REL_15_STABLE [5fd61bdc1] 2023-03-13 12:40:28 -0400
Branch: REL_14_STABLE [096e70805] 2023-03-13 12:40:28 -0400
Branch: REL_13_STABLE [bc0bcce2e] 2023-03-13 12:40:28 -0400
Branch: REL_12_STABLE [62a91a1b0] 2023-03-13 12:40:28 -0400
Branch: REL_11_STABLE [0736b1131] 2023-03-13 12:40:28 -0400
-->
     <para>
      Fix parser's failure to detect some cases of improperly-nested
      aggregates (Tom Lane)
      <ulink url="&commit_baseurl;096e70805">&sect;</ulink>
     </para>

     <para>
      This oversight could lead to executor failures for queries that
      should have been rejected as invalid.
     </para>
    </listitem>

    <listitem>
<!--
Author: David Rowley <drowley@postgresql.org>
Branch: master [6c3b697b1] 2023-03-31 12:13:05 +1300
Branch: REL_15_STABLE [df567fbf6] 2023-03-31 12:13:34 +1300
Branch: REL_14_STABLE [211016220] 2023-03-31 12:14:04 +1300
Branch: REL_13_STABLE [8d684c445] 2023-03-31 12:14:31 +1300
Branch: REL_12_STABLE [33510bc64] 2023-03-31 12:15:07 +1300
Branch: REL_11_STABLE [07554c99d] 2023-03-31 12:15:39 +1300
-->
     <para>
      Fix data structure corruption during parsing of
      serial <literal>SEQUENCE NAME</literal> options (David Rowley)
      <ulink url="&commit_baseurl;211016220">&sect;</ulink>
     </para>

     <para>
      This can lead to trouble if an event trigger captures the corrupted
      parse tree.
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [88ceac5d7] 2023-04-12 10:46:38 -0400
Branch: REL_15_STABLE [f4badbcf4] 2023-04-12 10:46:30 -0400
Branch: REL_14_STABLE [0dd55ef9b] 2023-04-12 10:46:30 -0400
Branch: REL_13_STABLE [96c698e3f] 2023-04-12 10:46:30 -0400
Branch: REL_12_STABLE [953ff99c2] 2023-04-12 10:46:30 -0400
Branch: REL_11_STABLE [60c8aeaf6] 2023-04-12 10:46:30 -0400
-->
     <para>
      Correctly update plan nodes' parallel-safety markings when moving
      initplans from one node to another (Tom Lane)
      <ulink url="&commit_baseurl;0dd55ef9b">&sect;</ulink>
     </para>

     <para>
      This planner oversight could lead to <quote>subplan was not
      initialized</quote> errors at runtime.
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [684ffac8c] 2023-03-14 11:10:45 -0400
Branch: REL_15_STABLE [3b4594443] 2023-03-14 11:10:45 -0400
Branch: REL_14_STABLE [7c509f7e5] 2023-03-14 11:10:45 -0400
-->
     <para>
      Avoid failure with PlaceHolderVars in extended-statistics code
      (Tom Lane)
      <ulink url="&commit_baseurl;7c509f7e5">&sect;</ulink>
     </para>

     <para>
      Use of dependency-type extended statistics could fail with
      <quote>PlaceHolderVar found where not expected</quote>.
     </para>
    </listitem>

    <listitem>
<!--
Author: David Rowley <drowley@postgresql.org>
Branch: master [836c31ba5] 2023-02-13 17:11:03 +1300
Branch: REL_15_STABLE [a9fa6d79a] 2023-02-13 17:10:31 +1300
Branch: REL_14_STABLE [4aa43ba21] 2023-02-13 17:09:55 +1300
Branch: REL_13_STABLE [301eb3ee4] 2023-02-13 17:09:26 +1300
Branch: REL_12_STABLE [ac55abd33] 2023-02-13 17:08:46 +1300
Branch: REL_11_STABLE [8d2a8581b] 2023-02-13 17:07:04 +1300
-->
     <para>
      Disable the inverse-transition optimization for window aggregates
      when the call contains sub-SELECTs (David Rowley)
      <ulink url="&commit_baseurl;4aa43ba21">&sect;</ulink>
     </para>

     <para>
      This optimization requires that the aggregate's argument expressions
      have repeatable results, which might not hold for a sub-SELECT.
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [554841699] 2023-03-26 13:41:06 -0400
Branch: REL_15_STABLE [7c4873438] 2023-03-26 13:41:06 -0400
Branch: REL_14_STABLE [11213d446] 2023-03-26 13:41:06 -0400
Branch: REL_13_STABLE [1bbbe1460] 2023-03-26 13:41:06 -0400
Branch: REL_12_STABLE [ad5fe7420] 2023-03-26 13:41:06 -0400
Branch: REL_11_STABLE [ae320fc21] 2023-03-26 13:41:06 -0400
-->
     <para>
      Fix oversights in execution of nested <literal>ARRAY[]</literal>
      constructs (Alexander Lakhin, Tom Lane)
      <ulink url="&commit_baseurl;11213d446">&sect;</ulink>
     </para>

     <para>
      Correctly detect overflow of the total space needed for the result
      array, avoiding a possible crash due to undersized output
      allocation.  Also ensure that any trailing padding space in the
      result array is zeroed; while leaving garbage there is harmless for
      most purposes, it can result in odd behavior later.
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [064eb89e8] 2023-04-15 12:01:39 -0400
Branch: REL_15_STABLE [c53ed26ea] 2023-04-15 12:01:39 -0400
Branch: REL_14_STABLE [9b104a27c] 2023-04-15 12:01:39 -0400
Branch: REL_13_STABLE [7428aecdd] 2023-04-15 12:01:39 -0400
Branch: REL_12_STABLE [048caf8d7] 2023-04-15 12:01:39 -0400
-->
     <para>
      Prevent crash when updating a field within an
      array-of-domain-over-composite-type column (Dmitry Dolgov)
      <ulink url="&commit_baseurl;9b104a27c">&sect;</ulink>
     </para>
    </listitem>

    <listitem>
<!--
Author: David Rowley <drowley@postgresql.org>
Branch: master [e0693faf7] 2023-04-14 16:20:27 +1200
Branch: REL_15_STABLE [0c09160e1] 2023-04-14 16:21:07 +1200
Branch: REL_14_STABLE [ae85fb828] 2023-04-14 16:21:42 +1200
Branch: REL_13_STABLE [6848f0c67] 2023-04-14 16:22:11 +1200
Branch: REL_12_STABLE [0b2e77ce2] 2023-04-14 16:22:46 +1200
Branch: REL_11_STABLE [1c19e2863] 2023-04-14 16:23:11 +1200
-->
     <para>
      Fix partition pruning logic for partitioning on boolean columns
      (David Rowley)
      <ulink url="&commit_baseurl;ae85fb828">&sect;</ulink>
     </para>

     <para>
      Pruning with a condition like <literal>boolcol IS NOT TRUE</literal>
      was done incorrectly, leading to possibly not returning rows in
      which <literal>boolcol</literal> is NULL.  Also, the rather unlikely
      case of partitioning on <literal>NOT boolcol</literal> was handled
      incorrectly.
     </para>
    </listitem>

    <listitem>
<!--
Author: Thomas Munro <tmunro@postgresql.org>
Branch: master [8d578b9b2] 2023-03-21 14:29:34 +1300
Branch: REL_15_STABLE [c03c6e8cf] 2023-03-21 14:32:14 +1300
Branch: REL_14_STABLE [1b9e42e82] 2023-03-21 14:37:33 +1300
Branch: REL_13_STABLE [6e94d62e3] 2023-03-21 14:38:59 +1300
Branch: REL_12_STABLE [44d44aa97] 2023-03-21 14:41:35 +1300
Branch: REL_11_STABLE [ef16d2724] 2023-03-21 14:43:07 +1300
-->
     <para>
      Fix race condition in per-batch cleanup during parallel hash join
      (Thomas Munro, Melanie Plageman)
      <ulink url="&commit_baseurl;1b9e42e82">&sect;</ulink>
     </para>

     <para>
      A crash was possible given unlucky timing and
      <varname>parallel_leader_participation</varname>
      = <literal>off</literal> (which is not the default).
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [7fee7871b] 2023-03-06 18:31:27 -0500
Branch: REL_15_STABLE [70ef50954] 2023-03-06 18:31:16 -0500
Branch: REL_14_STABLE [1e05ea51d] 2023-03-06 18:31:16 -0500
Branch: REL_13_STABLE [4a94cbd02] 2023-03-06 18:31:16 -0500
Branch: REL_12_STABLE [23b75dd03] 2023-03-06 18:31:16 -0500
-->
     <para>
      Recalculate <literal>GENERATED</literal> columns after an
      EvalPlanQual check (Tom Lane)
      <ulink url="&commit_baseurl;1e05ea51d">&sect;</ulink>
     </para>

     <para>
      In <literal>READ COMMITTED</literal> isolation mode, the effects of
      a row update might need to get reapplied to a newer version of the
      row than the query found originally.  If so, we need to recompute
      any <literal>GENERATED</literal> columns, in case they depend on
      columns that were changed by the concurrent update.
     </para>
    </listitem>

    <listitem>
<!--
Author: David Rowley <drowley@postgresql.org>
Branch: master [579ee5df1] 2023-03-20 13:28:47 +1300
Branch: REL_15_STABLE [8de4660a5] 2023-03-20 13:30:15 +1300
Branch: REL_14_STABLE [f654f343c] 2023-03-20 13:30:55 +1300
-->
     <para>
      Fix memory leak in Memoize plan execution (David Rowley)
      <ulink url="&commit_baseurl;f654f343c">&sect;</ulink>
     </para>
    </listitem>

    <listitem>
<!--
Author: Michael Paquier <michael@paquier.xyz>
Branch: master [806fad757] 2023-04-25 09:42:19 +0900
Branch: REL_15_STABLE [aa6177c88] 2023-04-25 09:42:33 +0900
Branch: REL_14_STABLE [4cc56f8ed] 2023-04-25 09:42:36 +0900
-->
     <para>
      Fix buffer refcount leak when using batched inserts for a foreign
      table included in a partitioned tree (Alexander Pyhalov)
      <ulink url="&commit_baseurl;4cc56f8ed">&sect;</ulink>
     </para>
    </listitem>

    <listitem>
<!--
Author: Thomas Munro <tmunro@postgresql.org>
Branch: master [720de00af] 2023-03-15 13:58:18 +1300
Branch: REL_15_STABLE [d9c9c43af] 2023-03-15 14:02:49 +1300
Branch: REL_14_STABLE [2bef57ee8] 2023-03-15 14:05:27 +1300
-->
     <para>
      Restore support for
      sub-millisecond <varname>vacuum_cost_delay</varname> settings
      (Thomas Munro)
      <ulink url="&commit_baseurl;2bef57ee8">&sect;</ulink>
     </para>
    </listitem>

    <listitem>
<!--
Author: Daniel Gustafsson <dgustafsson@postgresql.org>
Branch: master [bfac8f8bc] 2023-04-25 13:54:10 +0200
Branch: REL_15_STABLE [0319b306e] 2023-04-25 13:54:10 +0200
Branch: REL_14_STABLE [0e8e5e856] 2023-04-25 13:54:10 +0200
Branch: REL_13_STABLE [b95f36f86] 2023-04-25 13:54:10 +0200
Branch: REL_12_STABLE [cba3c8f6d] 2023-04-25 13:54:10 +0200
Branch: REL_11_STABLE [0151d2c5f] 2023-04-25 13:54:10 +0200
-->
     <para>
      Don't balance vacuum cost delay when a table has a
      per-relation <varname>vacuum_cost_delay</varname> setting of zero
      (Masahiko Sawada)
      <ulink url="&commit_baseurl;0e8e5e856">&sect;</ulink>
     </para>

     <para>
      Delay balancing is supposed to be disabled whenever autovacuum is
      processing a table with a
      per-relation <varname>vacuum_cost_delay</varname> setting, but this
      was done only for positive settings, not zero.
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [99be6feec] 2023-03-07 18:21:53 -0500
Branch: REL_15_STABLE [76d2177fb] 2023-03-07 18:21:53 -0500
Branch: REL_14_STABLE [9f1e51b59] 2023-03-07 18:21:37 -0500
Branch: REL_13_STABLE [695b34ab3] 2023-03-07 18:21:37 -0500
Branch: REL_12_STABLE [5a19da58e] 2023-03-07 18:21:37 -0500
Branch: REL_11_STABLE [721626cb5] 2023-03-07 18:21:37 -0500
-->
     <para>
      Fix corner-case crashes when columns have been added to the end of a
      view (Tom Lane)
      <ulink url="&commit_baseurl;9f1e51b59">&sect;</ulink>
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [87f3667ec] 2023-02-25 14:44:14 -0500
Branch: REL_15_STABLE [a033f9165] 2023-02-25 14:44:14 -0500
Branch: REL_14_STABLE [9eaba0602] 2023-02-25 14:44:14 -0500
Branch: REL_13_STABLE [1e199c259] 2023-02-25 14:44:14 -0500
Branch: REL_12_STABLE [904b171a4] 2023-02-25 14:44:14 -0500
Branch: REL_11_STABLE [ffec64ba8] 2023-02-25 14:44:14 -0500
-->
     <para>
      Repair rare failure of MULTIEXPR_SUBLINK subplans in partitioned
      updates (Andres Freund, Tom Lane)
      <ulink url="&commit_baseurl;9eaba0602">&sect;</ulink>
     </para>

     <para>
      Use of the syntax <literal>INSERT ... ON CONFLICT DO UPDATE SET (c1,
      ...) = (SELECT ...)</literal> with a partitioned target table could
      result in failure if any child table is dissimilar from the parent
      (for example, different physical column order).
      This typically manifested as failure of consistency checks in the
      executor; but a crash or incorrect data updates are also possible.
     </para>
    </listitem>

    <listitem>
<!--
Author: Dean Rasheed <dean.a.rasheed@gmail.com>
Branch: master [75c737636] 2023-02-23 10:53:01 +0000
Branch: REL_15_STABLE [940b54743] 2023-02-23 10:54:51 +0000
Branch: REL_14_STABLE [f0423bea7] 2023-02-23 10:55:48 +0000
Branch: REL_13_STABLE [226da3d47] 2023-02-23 10:56:41 +0000
Branch: REL_12_STABLE [98b83b734] 2023-02-23 10:57:46 +0000
Branch: REL_11_STABLE [e68b133c3] 2023-02-23 10:58:43 +0000
-->
     <para>
      Fix handling of <literal>DEFAULT</literal> markers within a
      multi-row <literal>INSERT ... VALUES</literal> query on a view that
      has a <literal>DO ALSO INSERT ... SELECT</literal> rule (Dean
      Rasheed)
      <ulink url="&commit_baseurl;f0423bea7">&sect;</ulink>
     </para>

     <para>
      Such cases typically failed with <quote>unrecognized node
      type</quote> errors or assertion failures.
     </para>
    </listitem>

    <listitem>
<!--
Author: Dean Rasheed <dean.a.rasheed@gmail.com>
Branch: master [a7d71c41d] 2023-02-25 14:41:12 +0000
Branch: REL_15_STABLE [8e5b4e001] 2023-02-25 14:43:57 +0000
Branch: REL_14_STABLE [27ff93d18] 2023-02-25 14:44:49 +0000
Branch: REL_13_STABLE [39ad791e8] 2023-02-25 14:45:44 +0000
Branch: REL_12_STABLE [4fd093af7] 2023-02-25 14:47:03 +0000
Branch: REL_11_STABLE [79f194cc0] 2023-02-25 14:48:08 +0000
-->
     <para>
      Support references to <literal>OLD</literal>
      and <literal>NEW</literal> within subqueries in rule actions
      (Dean Rasheed, Tom Lane)
      <ulink url="&commit_baseurl;27ff93d18">&sect;</ulink>
     </para>

     <para>
      Such references are really lateral references, but the server could
      crash if the subquery wasn't explicitly marked
      with <literal>LATERAL</literal>.  Arrange to do that implicitly when
      necessary.
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [393430f57] 2023-02-17 16:40:34 -0500
Branch: REL_15_STABLE [c8a5f1685] 2023-02-17 16:40:34 -0500
Branch: REL_14_STABLE [14345f3c6] 2023-02-17 16:40:34 -0500
Branch: REL_13_STABLE [4efb4f0d4] 2023-02-17 16:40:34 -0500
Branch: REL_12_STABLE [3dd287c14] 2023-02-17 16:40:34 -0500
Branch: REL_11_STABLE [df931e9ab] 2023-02-17 16:40:34 -0500
-->
     <para>
      When decompiling a rule or SQL function body
      containing <command>INSERT</command>/<command>UPDATE</command>/<command>DELETE</command>
      within <command>WITH</command>, take care to print the correct alias
      for the target table (Tom Lane)
      <ulink url="&commit_baseurl;14345f3c6">&sect;</ulink>
     </para>
    </listitem>

    <listitem>
<!--
Author: Thomas Munro <tmunro@postgresql.org>
Branch: master [47c0accbe] 2023-03-06 15:07:15 +1300
Branch: REL_15_STABLE [055990904] 2023-03-06 16:05:47 +1300
Branch: REL_14_STABLE [e9051ecd5] 2023-03-06 16:17:22 +1300
Branch: REL_13_STABLE [a0f55fc86] 2023-03-06 16:28:34 +1300
Branch: REL_12_STABLE [afa122e41] 2023-03-06 16:41:34 +1300
Branch: master [65e388d41] 2023-03-09 16:33:24 +1300
Branch: REL_15_STABLE [af397c6c2] 2023-03-09 16:56:51 +1300
Branch: REL_14_STABLE [d811d74be] 2023-03-09 16:57:11 +1300
Branch: REL_13_STABLE [ae632f7a3] 2023-03-09 17:09:57 +1300
Branch: REL_12_STABLE [e30fd0942] 2023-03-09 17:25:20 +1300
Branch: REL_11_STABLE [d1c0f81e7] 2023-03-09 17:26:06 +1300
-->
     <para>
      Fix glitches in <literal>SERIALIZABLE READ ONLY</literal>
      optimization (Thomas Munro)
      <ulink url="&commit_baseurl;e9051ecd5">&sect;</ulink>
      <ulink url="&commit_baseurl;d811d74be">&sect;</ulink>
     </para>

     <para>
      Transactions already marked as <quote>doomed</quote> confused the
      safe-snapshot optimization for <literal>SERIALIZABLE READ
      ONLY</literal> transactions.  The optimization was unnecessarily
      skipped in some cases.  In other cases an assertion failure occurred
      (but there was no problem in non-assert builds).
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [05172f1f3] 2023-02-23 15:40:42 -0500
Branch: REL_15_STABLE [cef1c9c0c] 2023-02-23 15:40:28 -0500
Branch: REL_14_STABLE [0f78df719] 2023-02-23 15:40:28 -0500
Branch: REL_13_STABLE [861e9e486] 2023-02-23 15:40:28 -0500
Branch: REL_12_STABLE [95558bc8f] 2023-02-23 15:40:28 -0500
Branch: REL_11_STABLE [44dbc960f] 2023-02-23 15:40:28 -0500
-->
     <para>
      Avoid leaking cache callback slots in
      the <literal>pgoutput</literal> logical decoding plugin (Shi Yu)
      <ulink url="&commit_baseurl;0f78df719">&sect;</ulink>
     </para>

     <para>
      Multiple cycles of starting up and shutting down the plugin within a
      single session would eventually lead to an <quote>out of
      relcache_callback_list slots</quote> error.
     </para>
    </listitem>

    <listitem>
<!--
Author: Alexander Korotkov <akorotkov@postgresql.org>
Branch: master [cd115c353] 2023-04-23 13:58:41 +0300
Branch: REL_15_STABLE [6e7361c85] 2023-04-23 14:00:06 +0300
Branch: REL_14_STABLE [9ef5a3583] 2023-04-23 14:00:13 +0300
Branch: REL_13_STABLE [02191136c] 2023-04-23 14:00:16 +0300
-->
     <para>
      Avoid unnecessary calls to custom validators for index operator
      class options (Alexander Korotkov)
      <ulink url="&commit_baseurl;9ef5a3583">&sect;</ulink>
     </para>

     <para>
      This change fixes some cases where an unexpected error was thrown.
     </para>
    </listitem>

    <listitem>
<!--
Author: Tomas Vondra <tomas.vondra@postgresql.org>
Branch: master [e72910f80] 2023-02-19 01:46:58 +0100
Branch: REL_15_STABLE [305d89ad9] 2023-02-19 01:48:04 +0100
Branch: REL_14_STABLE [f3daa3116] 2023-02-19 01:48:22 +0100
-->
     <para>
      Avoid useless work while scanning a multi-column BRIN index with
      multiple scan keys (Tomas Vondra)
      <ulink url="&commit_baseurl;f3daa3116">&sect;</ulink>
     </para>

     <para>
      The existing code effectively considered only the last scan key
      while deciding whether a range matched, thus usually scanning more
      of the index than it needed to.
     </para>
    </listitem>

    <listitem>
<!--
Author: Tomas Vondra <tomas.vondra@postgresql.org>
Branch: master [e85831268] 2023-03-20 10:24:14 +0100
Branch: REL_15_STABLE [0c7726c28] 2023-03-20 10:20:35 +0100
Branch: REL_14_STABLE [6a78a42fe] 2023-03-20 10:16:54 +0100
-->
     <para>
      Fix netmask handling in BRIN inet_minmax_multi_ops opclass
      (Tomas Vondra)
      <ulink url="&commit_baseurl;6a78a42fe">&sect;</ulink>
     </para>

     <para>
      This error triggered an assertion failure in assert-enabled builds,
      but is mostly harmless in production builds.
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [8e5eef50c] 2023-03-29 11:31:30 -0400
Branch: REL_15_STABLE [2dc77adc7] 2023-03-29 11:31:30 -0400
Branch: REL_14_STABLE [a1904c9ce] 2023-03-29 11:31:30 -0400
Branch: REL_13_STABLE [2adb6adad] 2023-03-29 11:31:30 -0400
Branch: REL_12_STABLE [d2a1d4b19] 2023-03-29 11:31:30 -0400
Branch: REL_11_STABLE [b5c6776c1] 2023-03-29 11:31:30 -0400
-->
     <para>
      Fix dereference of dangling pointer during buffering build of a GiST
      index (Alexander Lakhin)
      <ulink url="&commit_baseurl;a1904c9ce">&sect;</ulink>
     </para>

     <para>
      This error seems to usually be harmless in production builds, as the
      fetched value is noncritical; but in principle it could cause a
      server crash.
     </para>
    </listitem>

    <listitem>
<!--
Author: Amit Kapila <akapila@postgresql.org>
Branch: master [adedf54e6] 2023-03-23 11:58:36 +0530
Branch: REL_15_STABLE [b6bf90edc] 2023-03-23 11:46:16 +0530
Branch: REL_14_STABLE [9dac02c77] 2023-03-23 11:32:22 +0530
Branch: REL_13_STABLE [be52fff91] 2023-03-23 11:21:13 +0530
Branch: REL_12_STABLE [0f2d4adbf] 2023-03-23 11:08:38 +0530
Branch: master [b797def59] 2023-03-21 09:47:21 +0530
Branch: REL_15_STABLE [3c12407f4] 2023-03-21 09:40:41 +0530
Branch: REL_14_STABLE [65ead7696] 2023-03-21 09:18:51 +0530
Branch: REL_13_STABLE [751d6676d] 2023-03-21 09:07:37 +0530
Branch: REL_12_STABLE [fc63e6ba8] 2023-03-21 08:50:23 +0530
Branch: REL_11_STABLE [4cdaea7a2] 2023-03-21 08:39:00 +0530
-->
     <para>
      Ignore dropped columns and generated columns during logical
      replication of an update or delete action (Onder Kalaci, Shi Yu)
      <ulink url="&commit_baseurl;9dac02c77">&sect;</ulink>
      <ulink url="&commit_baseurl;65ead7696">&sect;</ulink>
     </para>

     <para>
      Replication with the <literal>REPLICA IDENTITY FULL</literal> option
      failed if the table contained such columns.
     </para>
    </listitem>

    <listitem>
<!--
Author: Michael Paquier <michael@paquier.xyz>
Branch: master [58f5edf84] 2023-05-05 21:25:44 +0900
Branch: REL_15_STABLE [d31dab9a5] 2023-05-05 21:25:50 +0900
Branch: REL_14_STABLE [ae4ffa722] 2023-05-05 21:25:56 +0900
Branch: REL_13_STABLE [cedcc4191] 2023-05-05 21:26:02 +0900
-->
     <para>
      Correct the name of the wait event for SLRU buffer I/O for commit
      timestamps (Alexander Lakhin)
      <ulink url="&commit_baseurl;ae4ffa722">&sect;</ulink>
     </para>

     <para>
      This wait event is named <literal>CommitTsBuffer</literal> according
      to the documentation, but the code had it
      as <literal>CommitTSBuffer</literal>.  Change the code to match the
      documentation, as that way is more consistent with the naming of
      related wait events.
     </para>
    </listitem>

    <listitem>
<!--
Author: Michael Paquier <michael@paquier.xyz>
Branch: master [84cc14267] 2023-04-26 07:10:06 +0900
Branch: REL_15_STABLE [1ed1b84bd] 2023-04-26 07:30:42 +0900
Branch: REL_14_STABLE [aeb6f4b3b] 2023-04-26 07:30:47 +0900
-->
     <para>
      Re-activate reporting of wait event <literal>SLRUFlushSync</literal>
      (Thomas Munro)
      <ulink url="&commit_baseurl;aeb6f4b3b">&sect;</ulink>
     </para>

     <para>
      Reporting of this type of wait was accidentally removed in code
      refactoring.
     </para>
    </listitem>

    <listitem>
<!--
Author: Nathan Bossart <nathan@postgresql.org>
Branch: master [b72623671] 2023-04-27 14:31:17 -0700
Branch: REL_15_STABLE [c98b06e2f] 2023-04-27 14:31:33 -0700
Branch: REL_14_STABLE [137003036] 2023-04-27 14:32:40 -0700
Branch: REL_13_STABLE [be40dd63e] 2023-04-27 14:32:55 -0700
-->
     <para>
      Avoid possible underflow when calculating how many WAL segments to
      keep (Kyotaro Horiguchi)
      <ulink url="&commit_baseurl;137003036">&sect;</ulink>
     </para>

     <para>
      This could result in not honoring <varname>wal_keep_size</varname>
      accurately.
     </para>
    </listitem>

    <listitem>
<!--
Author: Michael Paquier <michael@paquier.xyz>
Branch: master [9244c11af] 2023-02-15 10:12:16 +0900
Branch: REL_15_STABLE [5fd61055e] 2023-02-15 10:12:31 +0900
Branch: REL_14_STABLE [864f80fea] 2023-02-15 10:12:33 +0900
Branch: REL_13_STABLE [2eb8e54cc] 2023-02-15 10:12:36 +0900
Branch: REL_12_STABLE [a40e7b75e] 2023-02-15 10:12:38 +0900
Branch: REL_11_STABLE [88d606f7c] 2023-02-15 10:12:40 +0900
-->
     <para>
      Support RSA-PSS certificates with SCRAM-SHA-256 channel binding
      (Jacob Champion, Heikki Linnakangas)
      <ulink url="&commit_baseurl;864f80fea">&sect;</ulink>
     </para>

     <para>
      This feature requires building with OpenSSL 1.1.1 or newer.  Both
      the server and <application>libpq</application> are affected.
     </para>
    </listitem>

    <listitem>
<!--
Author: Thomas Munro <tmunro@postgresql.org>
Branch: master [d41a178b3] 2023-03-15 13:24:47 +1300
Branch: REL_15_STABLE [06066915d] 2023-03-15 13:25:56 +1300
Branch: REL_14_STABLE [9b6e0b9c3] 2023-03-15 13:30:58 +1300
Branch: REL_13_STABLE [9f1c64018] 2023-03-15 13:31:34 +1300
Branch: REL_12_STABLE [836288427] 2023-03-15 13:32:21 +1300
Branch: REL_11_STABLE [5ff8e69d8] 2023-03-15 13:32:41 +1300
Branch: master [6a9229da6] 2023-03-17 10:44:46 +1300
Branch: REL_15_STABLE [75e7378f6] 2023-03-17 10:45:20 +1300
Branch: REL_14_STABLE [00fc4b3a3] 2023-03-17 09:52:45 +1300
Branch: REL_13_STABLE [798dae9f6] 2023-03-17 09:54:03 +1300
Branch: REL_12_STABLE [6f508b8bc] 2023-03-17 09:54:51 +1300
Branch: REL_11_STABLE [9d6c34397] 2023-03-17 09:58:08 +1300
Branch: master [10b6745d3] 2023-03-17 14:44:12 +1300
Branch: REL_15_STABLE [e8a774d00] 2023-03-17 14:46:03 +1300
Branch: REL_14_STABLE [1c0d4affa] 2023-03-17 14:46:50 +1300
Branch: REL_13_STABLE [77a8133c9] 2023-03-17 14:47:16 +1300
Branch: REL_12_STABLE [8fcd1517f] 2023-03-17 14:47:38 +1300
Branch: REL_11_STABLE [b23f2a729] 2023-03-17 14:48:08 +1300
-->
     <para>
      Avoid race condition with process ID tracking on Windows (Thomas Munro)
      <ulink url="&commit_baseurl;9b6e0b9c3">&sect;</ulink>
      <ulink url="&commit_baseurl;00fc4b3a3">&sect;</ulink>
      <ulink url="&commit_baseurl;1c0d4affa">&sect;</ulink>
     </para>

     <para>
      The operating system could recycle a PID before the postmaster
      observed that that child process was gone.  This could lead to
      tracking more than one child with the same PID, resulting in
      confusion.
     </para>
    </listitem>

    <listitem>
<!--
Author: Dean Rasheed <dean.a.rasheed@gmail.com>
Branch: master [d0460a31d] 2023-02-22 13:23:09 +0000
Branch: REL_15_STABLE [576b25bfd] 2023-02-22 13:24:51 +0000
Branch: REL_14_STABLE [482ab3e4f] 2023-02-22 13:26:20 +0000
Branch: REL_13_STABLE [906356cf6] 2023-02-22 13:27:29 +0000
Branch: REL_12_STABLE [52dbd9f84] 2023-02-22 13:28:30 +0000
Branch: REL_11_STABLE [83a54d966] 2023-02-22 13:29:39 +0000
-->
     <para>
      Add missing cases to <function>SPI_result_code_string()</function>
      (Dean Rasheed)
      <ulink url="&commit_baseurl;482ab3e4f">&sect;</ulink>
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [b3e184a5d] 2023-02-21 18:48:15 -0500
Branch: REL_15_STABLE [f6a55c1d5] 2023-02-21 18:47:46 -0500
Branch: REL_14_STABLE [dc44180f6] 2023-02-21 18:47:47 -0500
Branch: REL_13_STABLE [99e74cd23] 2023-02-21 18:47:47 -0500
Branch: REL_12_STABLE [463bef383] 2023-02-21 18:47:47 -0500
Branch: REL_11_STABLE [21bd818d0] 2023-02-21 18:47:47 -0500
-->
     <para>
      Fix erroneous Valgrind markings
      in <function>AllocSetRealloc()</function> (Karina Litskevich)
      <ulink url="&commit_baseurl;dc44180f6">&sect;</ulink>
     </para>

     <para>
      In the unusual case where the size of a large (&gt;8kB) palloc chunk
      is decreased, a Valgrind-aware build would mismark the defined-ness
      state of the memory released from the chunk, possibly causing
      incorrect results during Valgrind testing.
     </para>
    </listitem>

    <listitem>
<!--
Author: Tomas Vondra <tomas.vondra@postgresql.org>
Branch: master [7fe1aa991] 2023-02-22 15:24:18 +0100
Branch: REL_15_STABLE [949ac32e1] 2023-02-22 16:48:30 +0100
Branch: REL_14_STABLE [8b9cbd42b] 2023-02-22 16:25:45 +0100
Branch: REL_13_STABLE [4df581fa0] 2023-02-22 16:09:30 +0100
Branch: REL_12_STABLE [497f863f0] 2023-02-22 15:50:37 +0100
Branch: REL_11_STABLE [8de91ebf2] 2023-02-22 15:35:19 +0100
-->
     <para>
      Avoid assertion failure when decoding a transactional logical
      replication message (Tomas Vondra)
      <ulink url="&commit_baseurl;8b9cbd42b">&sect;</ulink>
     </para>
    </listitem>

    <listitem>
<!--
Author: Jeff Davis <jdavis@postgresql.org>
Branch: master [c04c6c5d6] 2023-04-21 08:19:41 -0700
Branch: REL_15_STABLE [109363de0] 2023-04-21 08:20:17 -0700
Branch: REL_14_STABLE [dde926b0f] 2023-04-21 08:20:32 -0700
Branch: REL_13_STABLE [79a66c617] 2023-04-21 08:20:47 -0700
Branch: REL_12_STABLE [5bcb15b81] 2023-04-21 08:21:04 -0700
Branch: REL_11_STABLE [106a1bf82] 2023-04-21 08:21:18 -0700
-->
     <para>
      Avoid locale sensitivity when processing regular expression escapes
      (Jeff Davis)
      <ulink url="&commit_baseurl;dde926b0f">&sect;</ulink>
     </para>

     <para>
      A backslash followed by a non-ASCII character could sometimes cause
      an assertion failure, depending on the prevailing locale.
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [3e383f9b6] 2023-04-17 14:22:26 -0400
Branch: REL_15_STABLE [2207df7c3] 2023-04-17 14:22:06 -0400
Branch: REL_14_STABLE [72a914e9f] 2023-04-17 14:22:06 -0400
Branch: REL_13_STABLE [86874a6df] 2023-04-17 14:22:06 -0400
Branch: REL_12_STABLE [9b0c1f213] 2023-04-17 14:22:06 -0400
Branch: REL_11_STABLE [c796d7296] 2023-04-17 14:22:06 -0400
-->
     <para>
      Avoid trying to write an empty WAL record
      in <function>log_newpage_range()</function> when the last few pages
      in the specified range are empty (Matthias van de Meent)
      <ulink url="&commit_baseurl;72a914e9f">&sect;</ulink>
     </para>

     <para>
      It is not entirely clear whether this case is reachable in released
      branches, but if it is then an assertion failure could occur.
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [441ee1677] 2023-04-24 14:19:46 -0400
Branch: REL_15_STABLE [c1598d85f] 2023-04-24 14:19:46 -0400
Branch: REL_14_STABLE [2ba890ce7] 2023-04-24 14:19:46 -0400
Branch: REL_13_STABLE [bfa691087] 2023-04-24 14:19:46 -0400
Branch: REL_12_STABLE [ee71cad9a] 2023-04-24 14:19:46 -0400
-->
     <para>
      Fix session-lifespan memory leakage in <application>plpgsql</application>
      <literal>DO</literal> blocks that use cast expressions
      (Ajit Awekar, Tom Lane)
      <ulink url="&commit_baseurl;2ba890ce7">&sect;</ulink>
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [f47004add] 2023-04-29 13:06:44 -0400
Branch: REL_15_STABLE [ce9a1a3ea] 2023-04-29 13:06:44 -0400
Branch: REL_14_STABLE [1e868bb6c] 2023-04-29 13:06:44 -0400
Branch: REL_13_STABLE [ee24b5e79] 2023-04-29 13:06:44 -0400
Branch: REL_12_STABLE [900a8d526] 2023-04-29 13:06:44 -0400
Branch: REL_11_STABLE [ea96fbe77] 2023-04-29 13:06:44 -0400
-->
     <para>
      Tighten array dimensionality checks when converting Perl
      list structures to multi-dimensional SQL arrays (Tom Lane)
      <ulink url="&commit_baseurl;1e868bb6c">&sect;</ulink>
     </para>

     <para>
      <application>plperl</application> could misbehave when the nesting
      of sub-lists is inconsistent so that the data does not represent a
      rectangular array of values.  Such cases now produce errors, but
      previously they could result in a crash or garbage output.
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [0553528e7] 2023-05-04 11:00:33 -0400
Branch: REL_15_STABLE [b7001c6b6] 2023-05-04 11:00:33 -0400
Branch: REL_14_STABLE [9d517339e] 2023-05-04 11:00:33 -0400
Branch: REL_13_STABLE [0e6354ed9] 2023-05-04 11:00:33 -0400
Branch: REL_12_STABLE [b7fcf3824] 2023-05-04 11:00:33 -0400
Branch: REL_11_STABLE [aa7e5e404] 2023-05-04 11:00:33 -0400
Branch: master [81eaaf65e] 2023-04-28 12:24:29 -0400
Branch: REL_15_STABLE [512c55522] 2023-04-28 12:24:29 -0400
Branch: REL_14_STABLE [a1d9aacc4] 2023-04-28 12:24:29 -0400
Branch: REL_13_STABLE [7dcd9998c] 2023-04-28 12:24:29 -0400
Branch: REL_12_STABLE [ff9203f46] 2023-04-28 12:24:29 -0400
Branch: REL_11_STABLE [b7c6af375] 2023-04-28 12:24:29 -0400
-->
     <para>
      Tighten array dimensionality checks when converting Python
      list structures to multi-dimensional SQL arrays (Tom Lane)
      <ulink url="&commit_baseurl;9d517339e">&sect;</ulink>
      <ulink url="&commit_baseurl;a1d9aacc4">&sect;</ulink>
     </para>

     <para>
      <application>plpython</application> could misbehave when dealing
      with empty sub-lists, or when the nesting of sub-lists is
      inconsistent so that the data does not represent a rectangular array
      of values.  The former should result in an empty output array, and
      the latter in an error.  But some cases resulted in a crash, and
      others in unexpected output.
     </para>
    </listitem>

    <listitem>
<!--
Author: Nathan Bossart <nathan@postgresql.org>
Branch: master [57d005170] 2023-05-04 16:23:05 -0700
Branch: REL_15_STABLE [825ebc984] 2023-05-04 16:24:48 -0700
Branch: REL_14_STABLE [52c9cf323] 2023-05-04 16:25:05 -0700
Branch: REL_13_STABLE [800531846] 2023-05-04 16:26:00 -0700
Branch: REL_12_STABLE [24964394a] 2023-05-04 16:26:05 -0700
Branch: REL_11_STABLE [0af386b0f] 2023-05-04 16:26:11 -0700
-->
     <para>
      Fix unwinding of exception stack
      in <application>plpython</application> (Xing Guo)
      <ulink url="&commit_baseurl;52c9cf323">&sect;</ulink>
     </para>

     <para>
      Some rare failure cases could return without cleaning up the PG_TRY
      exception stack, risking a crash if another error was raised before
      the next stack level was unwound.
     </para>
    </listitem>

    <listitem>
<!--
Author: Michael Paquier <michael@paquier.xyz>
Branch: master [e0a09d4e3] 2023-03-13 16:36:20 +0900
Branch: REL_15_STABLE [4493256c5] 2023-03-13 16:36:28 +0900
Branch: REL_14_STABLE [7e319231c] 2023-03-13 16:36:31 +0900
Branch: REL_13_STABLE [96bef4374] 2023-03-13 16:36:33 +0900
Branch: REL_12_STABLE [2bc36a56c] 2023-03-13 16:36:34 +0900
-->
     <para>
      Fix inconsistent GSS-encryption error handling
      in <application>libpq</application>'s
      <function>PQconnectPoll()</function>
      (Michael Paquier)
      <ulink url="&commit_baseurl;7e319231c">&sect;</ulink>
     </para>

     <para>
      With <option>gssencmode</option> set to <literal>require</literal>,
      the connection was not marked dead after a GSS initialization
      failure.  Make it fail immediately, as the equivalent case for TLS
      encryption has long done.
     </para>
    </listitem>

    <listitem>
<!--
Author: Michael Paquier <michael@paquier.xyz>
Branch: master [f18029084] 2023-04-18 11:20:41 +0900
Branch: REL_15_STABLE [8c746be44] 2023-04-18 11:20:47 +0900
Branch: REL_14_STABLE [02f076454] 2023-04-18 11:20:50 +0900
Branch: REL_13_STABLE [e9e457d22] 2023-04-18 11:20:51 +0900
Branch: REL_12_STABLE [a28bd7713] 2023-04-18 11:20:53 +0900
Branch: REL_11_STABLE [9eb44bb04] 2023-04-18 11:20:55 +0900
Branch: REL_11_STABLE [dbd25dd0b] 2023-04-18 12:00:31 +0900
-->
     <para>
      Fix possible data corruption in <application>ecpg</application>
      programs built with the <option>-C ORACLE</option> option
      (Kyotaro Horiguchi)
      <ulink url="&commit_baseurl;02f076454">&sect;</ulink>
     </para>

     <para>
      When <function>ecpg_get_data()</function> is called
      with <varname>varcharsize</varname> set to zero, it could write a
      terminating zero character into the last byte of the preceding
      field, truncating the data in that field.
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [bc8cd50fe] 2023-03-17 13:31:40 -0400
Branch: REL_15_STABLE [2b216da1e] 2023-03-17 13:31:40 -0400
Branch: REL_14_STABLE [5fc1ac151] 2023-03-17 13:31:40 -0400
Branch: REL_13_STABLE [7e7c5b683] 2023-03-17 13:31:40 -0400
Branch: REL_12_STABLE [8f83ce8c5] 2023-03-17 13:31:40 -0400
Branch: REL_11_STABLE [012ffb365] 2023-03-17 13:31:40 -0400
-->
     <para>
      Fix <application>pg_dump</application> so that partitioned tables
      that are hash-partitioned on an enum-type column can be restored
      successfully (Tom Lane)
      <ulink url="&commit_baseurl;5fc1ac151">&sect;</ulink>
     </para>

     <para>
      Since the hash codes for enum values depend on the OIDs assigned to
      the enum, they are typically different after a dump and restore,
      meaning that rows often need to go into a different partition than
      they were in originally.  Users can work around that by specifying
      the <option>--load-via-partition-root</option> option; but since
      there is very little chance of success without that,
      teach <application>pg_dump</application> to apply it automatically
      to such tables.
     </para>

     <para>
      Also, fix <application>pg_restore</application> to not try
      to <command>TRUNCATE</command> target tables before restoring into
      them when <option>--load-via-partition-root</option> mode is used.
      This avoids a hazard of deadlocks and lost data.
     </para>
    </listitem>

    <listitem>
<!--
Author: Michael Paquier <michael@paquier.xyz>
Branch: master [a923e2163] 2023-04-12 09:09:38 +0900
Branch: REL_15_STABLE [5c3254946] 2023-04-12 09:09:53 +0900
Branch: REL_14_STABLE [34105eea6] 2023-04-12 09:09:58 +0900
Branch: master [765f5df72] 2023-03-15 12:55:51 +0900
Branch: REL_15_STABLE [69b6032e0] 2023-03-15 12:56:06 +0900
Branch: REL_14_STABLE [bbf18fe19] 2023-03-15 12:56:10 +0900
-->
     <para>
      Correctly detect non-seekable files on Windows
      (Juan José Santamaría Flecha, Michael Paquier, Daniel Watzinger)
      <ulink url="&commit_baseurl;34105eea6">&sect;</ulink>
      <ulink url="&commit_baseurl;bbf18fe19">&sect;</ulink>
     </para>

     <para>
      This bug led to misbehavior when <application>pg_dump</application>
      writes to a pipe or <application>pg_restore</application> reads from
      one.
     </para>
    </listitem>

    <listitem>
<!--
Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
Branch: master [038f586d5] 2023-02-21 10:56:37 +0100
Branch: REL_15_STABLE [108a22bd1] 2023-02-21 10:56:37 +0100
Branch: REL_14_STABLE [663e50e83] 2023-02-21 10:56:37 +0100
-->
     <para>
      In <application>pgbench</application>'s <quote>prepared</quote>
      mode, prepare all the commands in a pipeline before starting the
      pipeline (&Aacute;lvaro Herrera)
      <ulink url="&commit_baseurl;663e50e83">&sect;</ulink>
     </para>

     <para>
      This avoids a failure when a pgbench script tries to
      start a serializable transaction inside a pipeline.
     </para>
    </listitem>

    <listitem>
<!--
Author: Robert Haas <rhaas@postgresql.org>
Branch: master [e88754a19] 2023-03-24 10:56:10 -0400
Branch: REL_15_STABLE [701ec5557] 2023-03-24 10:59:10 -0400
Branch: REL_14_STABLE [8fd5aa76c] 2023-03-24 11:06:45 -0400
Branch: master [b7cea5882] 2023-03-28 16:16:53 -0400
Branch: REL_15_STABLE [453f53821] 2023-03-28 16:17:03 -0400
Branch: REL_14_STABLE [e3363cda9] 2023-03-28 16:21:29 -0400
-->
     <para>
      In <filename>contrib/amcheck</filename>'s heap checking code, deal
      correctly with tuples having zero xmin or xmax (Robert Haas)
      <ulink url="&commit_baseurl;8fd5aa76c">&sect;</ulink>
      <ulink url="&commit_baseurl;e3363cda9">&sect;</ulink>
     </para>
    </listitem>

    <listitem>
<!--
Author: Andres Freund <andres@anarazel.de>
Branch: master [4f5d461e0] 2023-03-11 14:12:52 -0800
Branch: REL_15_STABLE [e8a9750d0] 2023-03-11 14:14:50 -0800
Branch: REL_14_STABLE [b3a83055c] 2023-03-11 14:17:51 -0800
-->
     <para>
      In <filename>contrib/amcheck</filename>, deal sanely with xids that
      appear to be before epoch zero (Andres Freund)
      <ulink url="&commit_baseurl;b3a83055c">&sect;</ulink>
     </para>

     <para>
      In cases of corruption we might see a wrapped-around 32-bit xid that
      appears to be before the first xid epoch.  Promoting such a value to
      64-bit form produced a value far in the future, resulting in wrong
      reports.  Return FirstNormalFullTransactionId in such cases so that
      things work reasonably sanely.
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [df38157d9] 2023-04-27 11:55:06 -0400
Branch: REL_15_STABLE [85ec8bcce] 2023-04-27 11:55:06 -0400
Branch: REL_14_STABLE [c74f88c40] 2023-04-27 11:55:06 -0400
Branch: REL_13_STABLE [de2dfa053] 2023-04-27 11:55:06 -0400
Branch: REL_12_STABLE [ce9662598] 2023-04-27 11:55:06 -0400
Branch: REL_11_STABLE [c3c1097dc] 2023-04-27 11:55:06 -0400
-->
     <para>
      In <filename>contrib/hstore_plpython</filename>, avoid crashing if
      the Python value to be transformed isn't a mapping (Dmitry Dolgov,
      Tom Lane)
      <ulink url="&commit_baseurl;c74f88c40">&sect;</ulink>
     </para>

     <para>
      This should give an error, but Python 3 changed some APIs in a way
      that caused the check to misbehave, allowing a crash to ensue.
     </para>
    </listitem>

    <listitem>
<!--
Author: Alexander Korotkov <akorotkov@postgresql.org>
Branch: master [8bbd0cce9] 2023-04-23 14:30:09 +0300
Branch: REL_15_STABLE [214495dc5] 2023-04-23 14:30:51 +0300
Branch: REL_14_STABLE [f4a4a18ec] 2023-04-23 14:31:11 +0300
Branch: REL_13_STABLE [48c6825d0] 2023-04-23 14:00:16 +0300
-->
     <para>
      Require the <literal>siglen</literal> option of a GiST index on
      an <type>ltree</type> column, if specified, to be a multiple of 4
      (Alexander Korotkov)
      <ulink url="&commit_baseurl;f4a4a18ec">&sect;</ulink>
     </para>

     <para>
      Other values result in misaligned accesses to index content, which
      is harmless on Intel-compatible hardware but can cause a crash on
      some other architectures.
     </para>
    </listitem>

    <listitem>
<!--
Author: Michael Paquier <michael@paquier.xyz>
Branch: master [be753639d] 2023-03-02 14:03:02 +0900
Branch: REL_15_STABLE [9d41ecfcd] 2023-03-02 14:03:08 +0900
Branch: REL_14_STABLE [5ad63eee1] 2023-03-02 14:03:21 +0900
-->
     <para>
      In <filename>contrib/pageinspect</filename>, add defenses against
      incorrect input for the <function>gist_page_items()</function> function
      (Dmitry Koval)
      <ulink url="&commit_baseurl;5ad63eee1">&sect;</ulink>
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [1925ac281] 2023-03-11 12:15:41 -0500
Branch: REL_15_STABLE [6170386c7] 2023-03-11 12:15:41 -0500
Branch: REL_14_STABLE [786528039] 2023-03-11 12:15:41 -0500
Branch: REL_13_STABLE [bc436e4a9] 2023-03-11 12:15:41 -0500
Branch: REL_12_STABLE [1279414bc] 2023-03-11 12:15:41 -0500
Branch: REL_11_STABLE [b18327489] 2023-03-11 12:15:41 -0500
-->
     <para>
      Fix misbehavior in <filename>contrib/pg_trgm</filename> with an
      unsatisfiable regular expression (Tom Lane)
      <ulink url="&commit_baseurl;786528039">&sect;</ulink>
     </para>

     <para>
      A regex such as <literal>$foo</literal> is legal but unsatisfiable;
      the regex compiler recognizes that and produces an empty NFA graph.
      Attempting to optimize such a graph into a pg_trgm GIN or GiST index
      qualification resulted in accessing off the end of a work array,
      possibly leading to crashes.
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [eab2d3147] 2023-04-20 18:12:32 -0400
Branch: REL_15_STABLE [a14afd3bd] 2023-04-20 18:12:48 -0400
Branch: REL_14_STABLE [6d60b718c] 2023-04-20 18:12:32 -0400
Branch: REL_13_STABLE [6dce37203] 2023-04-20 18:12:32 -0400
Branch: REL_12_STABLE [e2e34dfff] 2023-04-20 18:12:32 -0400
Branch: REL_11_STABLE [c976ccc9e] 2023-04-20 18:12:32 -0400
-->
     <para>
      Use the <option>--strip-unneeded</option> option when stripping
      static libraries with
      GNU-compatible <application>strip</application> (Tom Lane)
      <ulink url="&commit_baseurl;6d60b718c">&sect;</ulink>
     </para>

     <para>
      Previously, <literal>make install-strip</literal> used
      the <option>-x</option> option in this case.  This change avoids
      misbehavior of <application>llvm-strip</application>, and gives
      slightly smaller output as well.
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [969509c3f] 2023-02-08 17:15:25 -0500
Branch: REL_15_STABLE [2ee703c9d] 2023-02-08 17:15:23 -0500
Branch: REL_14_STABLE [7f8778fcf] 2023-02-08 17:15:23 -0500
Branch: REL_13_STABLE [c7b608600] 2023-02-08 17:15:23 -0500
Branch: REL_12_STABLE [11f1f9f4f] 2023-02-08 17:15:27 -0500
Branch: REL_11_STABLE [36a646d99] 2023-02-08 17:15:27 -0500
-->
     <para>
      Stop recommending auto-download of DTD files for building the
      documentation, and indeed disable it (Aleksander Alekseev, Peter
      Eisentraut, Tom Lane)
      <ulink url="&commit_baseurl;7f8778fcf">&sect;</ulink>
     </para>

     <para>
      It appears no longer possible to build the SGML documentation
      without a local installation of the DocBook DTD files.
      Formerly <application>xsltproc</application> could download those
      files on-the-fly from sourceforge.net; but sourceforge.net now
      permits only HTTPS access, and no common version
      of <application>xsltproc</application> supports that.  Hence, remove
      the bits of our documentation suggesting that that's possible or
      useful, and instead
      add <application>xsltproc</application>'s <option>--nonet</option>
      option to the build recipes.
     </para>
    </listitem>

    <listitem>
<!--
Author: Peter Eisentraut <peter@eisentraut.org>
Branch: master [5d42a9751] 2023-05-05 07:09:52 +0200
Branch: REL_15_STABLE [3d37476f5] 2023-05-05 07:10:15 +0200
Branch: REL_14_STABLE [e07022500] 2023-05-05 07:10:30 +0200
Branch: REL_13_STABLE [670494477] 2023-05-05 07:11:58 +0200
Branch: REL_12_STABLE [14bb2e76c] 2023-05-05 07:12:18 +0200
Branch: REL_11_STABLE [b189f71e5] 2023-05-05 07:12:26 +0200
-->
     <para>
      When running TAP tests in PGXS builds, use a saner location for the
      temporary <filename>portlock</filename> directory (Peter Eisentraut)
      <ulink url="&commit_baseurl;e07022500">&sect;</ulink>
     </para>

     <para>
      Place it under <filename>tmp_check</filename> in the build
      directory.  With the previous coding, a PGXS build would try to place
      it in the installation directory, which is not necessarily writable.
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [4ddee4d9d] 2023-04-18 14:46:39 -0400
Branch: REL_15_STABLE [62b22caa5] 2023-04-18 14:46:39 -0400
Branch: REL_14_STABLE [b79b36f26] 2023-04-18 14:46:39 -0400
Branch: REL_13_STABLE [87d8ec3e4] 2023-04-18 14:46:39 -0400
Branch: REL_12_STABLE [2ad35cf06] 2023-04-18 14:46:39 -0400
Branch: REL_11_STABLE [7228f2f81] 2023-04-18 14:46:39 -0400
-->
     <para>
      Update time zone data files to <application>tzdata</application>
      release 2023c for DST law changes in Egypt, Greenland, Morocco, and
      Palestine. (Tom Lane)
      <ulink url="&commit_baseurl;b79b36f26">&sect;</ulink>
     </para>

     <para>
      When observing Moscow time, Europe/Kirov and Europe/Volgograd now
      use the abbreviations MSK/MSD instead of numeric abbreviations,
      for consistency with other timezones observing Moscow time.
      Also, America/Yellowknife is no longer distinct from America/Edmonton;
      this affects some pre-1948 timestamps in that area.
     </para>
    </listitem>

   </itemizedlist>

  </sect2>
 </sect1>

 <sect1 id="release-14-7">
  <title>Release 14.7</title>

  <formalpara>
  <title>Release date:</title>
  <para>2023-02-09</para>
  </formalpara>

  <para>
   This release contains a variety of fixes from 14.6.
   For information about new features in major release 14, see
   <xref linkend="release-14"/>.
  </para>

  <sect2>
   <title>Migration to Version 14.7</title>

   <para>
    A dump/restore is not required for those running 14.X.
   </para>

   <para>
    However, if you are upgrading from a version earlier than 14.4,
    see <xref linkend="release-14-4"/>.
   </para>
  </sect2>

  <sect2>
   <title>Changes</title>

   <itemizedlist>

    <listitem>
<!--
Author: Michael Paquier <michael@paquier.xyz>
Branch: master [71c37797d] 2023-02-06 11:20:07 +0900
Branch: REL_15_STABLE [715c345dd] 2023-02-06 11:20:20 +0900
Branch: REL_14_STABLE [626f2c1d6] 2023-02-06 11:20:23 +0900
Branch: REL_13_STABLE [45a945ee9] 2023-02-06 11:20:27 +0900
Branch: REL_12_STABLE [3f7342671] 2023-02-06 11:20:31 +0900
-->
     <para>
      <application>libpq</application> can leak memory contents after
      GSSAPI transport encryption initiation fails (Jacob Champion)
      <ulink url="&commit_baseurl;626f2c1d6">&sect;</ulink>
     </para>

     <para>
      A modified server, or an unauthenticated man-in-the-middle, can
      send a not-zero-terminated error message during setup of GSSAPI
      (Kerberos) transport encryption.  <application>libpq</application>
      will then copy that string, as well as following bytes in
      application memory up to the next zero byte, to its error report.
      Depending on what the calling application does with the error
      report, this could result in disclosure of application memory
      contents.  There is also a small probability of a crash due to
      reading beyond the end of memory.  Fix by properly zero-terminating
      the server message.
      (CVE-2022-41862)
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [3f7836ff6] 2023-01-05 14:12:17 -0500
Branch: REL_15_STABLE [3706cc97a] 2023-01-05 14:12:17 -0500
Branch: REL_14_STABLE [8cd190e13] 2023-01-05 14:12:17 -0500
Branch: REL_13_STABLE [ad38e2f89] 2023-01-05 14:12:17 -0500
Branch: master [3f244d020] 2023-01-15 13:14:52 -0500
Branch: REL_15_STABLE [a8f7687a0] 2023-01-15 14:06:46 -0500
Branch: REL_14_STABLE [a8b88c26f] 2023-01-15 14:06:46 -0500
Branch: REL_13_STABLE [787db4be9] 2023-01-15 14:06:46 -0500
-->
     <para>
      Fix calculation of which <literal>GENERATED</literal> columns need
      to be updated in child tables during an <command>UPDATE</command> on
      a partitioned table or inheritance tree (Amit Langote, Tom Lane)
      <ulink url="&commit_baseurl;8cd190e13">&sect;</ulink>
      <ulink url="&commit_baseurl;a8b88c26f">&sect;</ulink>
     </para>

     <para>
      This fixes failure to update <literal>GENERATED</literal> columns
      that do not exist in the parent table, or that have different
      dependencies than are in the parent column's generation expression.
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [935277b24] 2022-12-16 13:07:42 -0500
Branch: REL_15_STABLE [ae98debf7] 2022-12-16 13:07:42 -0500
Branch: REL_14_STABLE [ea5ae4cae] 2022-12-16 13:07:42 -0500
-->
     <para>
      Allow a <literal>WITH RECURSIVE ... CYCLE</literal> CTE
      to access its output column (Tom Lane)
      <ulink url="&commit_baseurl;ea5ae4cae">&sect;</ulink>
     </para>

     <para>
      A reference to the <literal>SET</literal> column from within the CTE
      would fail with <quote>cache lookup failed for type 0</quote>.
     </para>
    </listitem>

    <listitem>
<!--
Author: Etsuro Fujita <efujita@postgresql.org>
Branch: master [ffbb7e65a] 2022-11-25 17:45:00 +0900
Branch: REL_15_STABLE [fc02019c0] 2022-11-25 17:45:01 +0900
Branch: REL_14_STABLE [e52245228] 2022-11-25 17:45:03 +0900
Branch: master [4b3e37993] 2022-12-08 16:15:00 +0900
Branch: REL_15_STABLE [a0bf7a0ec] 2022-12-08 16:15:01 +0900
Branch: REL_14_STABLE [d43a97ef4] 2022-12-08 16:15:03 +0900
-->
     <para>
      Fix handling of pending inserts when doing a bulk insertion to a
      foreign table (Etsuro Fujita)
      <ulink url="&commit_baseurl;e52245228">&sect;</ulink>
      <ulink url="&commit_baseurl;d43a97ef4">&sect;</ulink>
     </para>

     <para>
      In some cases pending insertions were not flushed to the FDW soon
      enough, leading to logical inconsistencies, for
      example <literal>BEFORE ROW</literal> triggers not seeing rows they
      should be able to see.
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [c9f7f9264] 2023-01-21 13:10:29 -0500
Branch: REL_15_STABLE [9e4288ce6] 2023-01-21 13:10:29 -0500
Branch: REL_14_STABLE [70ec756b0] 2023-01-21 13:10:29 -0500
Branch: REL_13_STABLE [72d611109] 2023-01-21 13:10:29 -0500
Branch: REL_12_STABLE [a5f3f2fce] 2023-01-21 13:10:30 -0500
Branch: REL_11_STABLE [6c122edde] 2023-01-21 13:10:30 -0500
-->
     <para>
      Allow <literal>REPLICA IDENTITY</literal>
      to be set on an index that's not (yet) valid (Tom Lane)
      <ulink url="&commit_baseurl;70ec756b0">&sect;</ulink>
     </para>

     <para>
      When <application>pg_dump</application> dumps a partitioned index
      that's marked <literal>REPLICA IDENTITY</literal>, it generates a
      command sequence that applies <literal>REPLICA IDENTITY</literal>
      before the partitioned index has been marked valid, causing restore
      to fail.  There seems no very good reason to prohibit doing it in
      that order, so allow it.  The marking will have no effect anyway
      until the index becomes valid.
     </para>
    </listitem>

    <listitem>
<!--
Author: Dean Rasheed <dean.a.rasheed@gmail.com>
Branch: master [2605643a3] 2022-12-03 12:11:33 +0000
Branch: REL_15_STABLE [c67204db6] 2022-12-03 12:14:36 +0000
Branch: REL_14_STABLE [2c7ed9f75] 2022-12-03 12:16:07 +0000
Branch: REL_13_STABLE [3bed88123] 2022-12-03 12:17:47 +0000
Branch: REL_12_STABLE [33f600f04] 2022-12-03 12:18:58 +0000
Branch: REL_11_STABLE [30f9b03a0] 2022-12-03 12:20:02 +0000
-->
     <para>
      Fix handling of <literal>DEFAULT</literal> markers in rules that
      perform an <command>INSERT</command> from a
      multi-row <literal>VALUES</literal> list (Dean Rasheed)
      <ulink url="&commit_baseurl;2c7ed9f75">&sect;</ulink>
     </para>

     <para>
      In some cases a <literal>DEFAULT</literal> marker would not get
      replaced with the proper default-value expression, leading to
      an <quote>unrecognized node type</quote> error.
     </para>
    </listitem>

    <listitem>
<!--
Author: Alexander Korotkov <akorotkov@postgresql.org>
Branch: master [3161ae86c] 2023-01-12 18:16:34 +0300
Branch: REL_15_STABLE [4dc3f94fa] 2023-01-12 18:17:43 +0300
Branch: REL_14_STABLE [0d9221f1d] 2023-01-12 18:18:04 +0300
Branch: REL_13_STABLE [2ff3ac3b5] 2023-01-12 18:18:31 +0300
Branch: REL_12_STABLE [9e24e4781] 2023-01-12 18:19:19 +0300
-->
     <para>
      Reject uses of undefined variables in <type>jsonpath</type>
      existence checks (Alexander Korotkov, David G. Johnston)
      <ulink url="&commit_baseurl;0d9221f1d">&sect;</ulink>
     </para>

     <para>
      While <type>jsonpath</type> match operators threw an error for an
      undefined variable in the path pattern, the existence operators
      silently treated it as a match.
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [b0feda79f] 2022-12-12 16:17:54 -0500
Branch: REL_15_STABLE [d79b76b10] 2022-12-12 16:17:49 -0500
Branch: REL_14_STABLE [a18328bb3] 2022-12-12 16:17:49 -0500
-->
     <para>
      Fix <type>jsonb</type> subscripting to cope with toasted subscript
      values (Tom Lane, David G. Johnston)
      <ulink url="&commit_baseurl;a18328bb3">&sect;</ulink>
     </para>

     <para>
      Using a text value fetched directly from a table as
      a <type>jsonb</type> subscript was likely to fail.
      Fetches would usually not find any matching element.
      Assignments could store the value with a garbage key,
      although keys long enough to cause that problem are probably rare in
      the field.
     </para>
    </listitem>

    <listitem>
<!--
Author: Thomas Munro <tmunro@postgresql.org>
Branch: master [ffcf6f4cf] 2023-01-26 14:52:19 +1300
Branch: REL_15_STABLE [d9f5345bf] 2023-01-26 14:53:37 +1300
Branch: REL_14_STABLE [2f65b8468] 2023-01-26 14:54:17 +1300
Branch: REL_13_STABLE [1a5afe007] 2023-01-26 14:54:39 +1300
Branch: REL_12_STABLE [b55303792] 2023-01-26 14:55:03 +1300
Branch: REL_11_STABLE [d95dcc9ab] 2023-01-26 14:55:37 +1300
-->
     <para>
      Fix edge-case data corruption in parallel hash joins (Dmitry Astapov)
      <ulink url="&commit_baseurl;2f65b8468">&sect;</ulink>
     </para>

     <para>
      If the final chunk of a large tuple being written out to a temporary
      file was exactly 32760 bytes, it would be corrupted due to a
      fencepost bug.  The query would typically fail later with
      corrupted-data symptoms.
     </para>
    </listitem>

    <listitem>
<!--
Author: Michael Paquier <michael@paquier.xyz>
Branch: master [7e8a80d1f] 2023-01-19 13:13:05 +0900
Branch: REL_15_STABLE [49e3a5e71] 2023-01-19 13:13:27 +0900
Branch: REL_14_STABLE [2e21e2857] 2023-01-19 13:13:28 +0900
Branch: REL_13_STABLE [fed4e92f3] 2023-01-19 13:13:30 +0900
Branch: REL_12_STABLE [162a48287] 2023-01-19 13:13:32 +0900
Branch: REL_11_STABLE [0c2f34af7] 2023-01-19 13:13:34 +0900
-->
     <para>
      Honor non-default settings
      of <varname>checkpoint_completion_target</varname>
      (Bharath Rupireddy)
      <ulink url="&commit_baseurl;2e21e2857">&sect;</ulink>
     </para>

     <para>
      Internal state was not updated after a change
      in <varname>checkpoint_completion_target</varname>, possibly
      resulting in performing checkpoint I/O faster or slower than
      desired, especially if that setting was changed on-the-fly.
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [44e9e3426] 2023-01-19 12:23:20 -0500
Branch: REL_15_STABLE [abe203304] 2023-01-19 12:23:20 -0500
Branch: REL_14_STABLE [103450724] 2023-01-19 12:23:20 -0500
Branch: REL_13_STABLE [1b9a0b96a] 2023-01-19 12:23:20 -0500
Branch: REL_12_STABLE [87591db19] 2023-01-19 12:23:20 -0500
Branch: REL_11_STABLE [0a269527f] 2023-01-19 12:23:20 -0500
-->
     <para>
      Log the correct ending timestamp
      in <varname>recovery_target_xid</varname> mode (Tom Lane)
      <ulink url="&commit_baseurl;103450724">&sect;</ulink>
     </para>

     <para>
      When ending recovery based on the <varname>recovery_target_xid</varname>
      setting with <varname>recovery_target_inclusive</varname>
      = <literal>off</literal>, we printed an incorrect timestamp (always
      2000-01-01) in the <quote>recovery stopping before
      ... transaction</quote> log message.
     </para>
    </listitem>

    <listitem>
<!--
Author: Peter Eisentraut <peter@eisentraut.org>
Branch: master [1561612e3] 2023-01-16 09:44:04 +0100
Branch: REL_15_STABLE [ac01fa647] 2023-01-16 09:45:03 +0100
Branch: REL_14_STABLE [f463335e1] 2023-01-16 09:48:09 +0100
Branch: REL_13_STABLE [cf74b6ead] 2023-01-16 09:54:15 +0100
-->
     <para>
      Improve error reporting for some buffered file read failures
      (Peter Eisentraut)
      <ulink url="&commit_baseurl;f463335e1">&sect;</ulink>
     </para>

     <para>
      Correctly report a short read, giving the numbers of bytes desired
      and actually read, instead of reporting an irrelevant error code.
      Most places got this right already, but some recently-written
      replication logic did not.
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [20432f873] 2022-12-13 14:23:58 -0500
Branch: REL_15_STABLE [18431ee6f] 2022-12-13 14:23:59 -0500
Branch: REL_14_STABLE [ae47f8a96] 2022-12-13 14:23:59 -0500
Branch: REL_13_STABLE [942cc240f] 2022-12-13 14:23:59 -0500
Branch: REL_12_STABLE [1cca4a75f] 2022-12-13 14:23:59 -0500
Branch: REL_11_STABLE [f48aa5df4] 2022-12-13 14:23:59 -0500
-->
     <para>
      In extended query protocol, avoid an immediate commit
      after <command>ANALYZE</command> if we're running a pipeline
      (Tom Lane)
      <ulink url="&commit_baseurl;ae47f8a96">&sect;</ulink>
     </para>

     <para>
      If there's not been an explicit <command>BEGIN
      TRANSACTION</command>, <command>ANALYZE</command> would take it on
      itself to commit, which should not happen within a pipelined series
      of commands.
     </para>
    </listitem>

    <listitem>
<!--
Author: Noah Misch <noah@leadboat.com>
Branch: master [e52daaabf] 2023-01-21 06:08:00 -0800
Branch: REL_15_STABLE [b152bb7b2] 2023-01-21 06:08:03 -0800
Branch: REL_14_STABLE [6900aea67] 2023-01-21 06:08:04 -0800
Branch: REL_13_STABLE [a9bccffe5] 2023-01-21 06:08:04 -0800
Branch: REL_12_STABLE [e75b5c855] 2023-01-21 06:08:04 -0800
Branch: REL_11_STABLE [8f70de7e0] 2023-01-21 06:08:05 -0800
-->
     <para>
      Reject cancel request packets having the wrong length
      (Andrey Borodin)
      <ulink url="&commit_baseurl;6900aea67">&sect;</ulink>
     </para>

     <para>
      The server would process a cancel request even if its length word
      was too small.  This led to reading beyond the end of the allocated
      buffer.  In theory that could cause a segfault, but it seems quite
      unlikely to happen in practice, since the buffer would have to be
      very close to the end of memory.  The more likely outcome was a bogus
      log message about wrong backend PID or cancel code.  Complain about
      the wrong length, instead.
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [5beb7881f] 2022-12-22 10:35:02 -0500
Branch: REL_15_STABLE [1a3daa5bb] 2022-12-22 10:35:02 -0500
Branch: REL_14_STABLE [97431d673] 2022-12-22 10:35:02 -0500
Branch: REL_13_STABLE [4fceb454f] 2022-12-22 10:35:03 -0500
Branch: REL_12_STABLE [d572003f7] 2022-12-22 10:35:03 -0500
Branch: REL_11_STABLE [8cd700cc5] 2022-12-22 10:35:03 -0500
-->
     <para>
      Add recursion and looping defenses in subquery pullup (Tom Lane)
      <ulink url="&commit_baseurl;97431d673">&sect;</ulink>
     </para>

     <para>
      A contrived query can result in deep recursion and unreasonable
      amounts of time spent trying to flatten subqueries.  A proper fix
      for that seems unduly invasive for a back-patch, but we can at least
      add stack depth checks and an interrupt check to allow the query to
      be cancelled.
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [d69d01ba9] 2022-12-05 12:36:40 -0500
Branch: REL_15_STABLE [c959f84c2] 2022-12-05 12:36:41 -0500
Branch: REL_14_STABLE [dc3648f65] 2022-12-05 12:36:41 -0500
Branch: master [e76913802] 2022-12-04 13:48:12 -0500
Branch: REL_15_STABLE [834d97c32] 2022-12-04 13:48:12 -0500
Branch: REL_14_STABLE [ce093aa18] 2022-12-04 13:48:12 -0500
-->
     <para>
      Fix planner issues when combining Memoize nodes with partitionwise
      joins or parameterized nestloops (Richard Guo)
      <ulink url="&commit_baseurl;dc3648f65">&sect;</ulink>
      <ulink url="&commit_baseurl;ce093aa18">&sect;</ulink>
     </para>

     <para>
      These errors could lead to not using Memoize in contexts where it
      would be useful, or possibly to wrong query plans.
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [fe12f2f8f] 2022-12-04 13:17:18 -0500
Branch: REL_15_STABLE [bf8fd64ff] 2022-12-04 13:17:18 -0500
Branch: REL_14_STABLE [ec3daeec3] 2022-12-04 13:17:18 -0500
Branch: REL_13_STABLE [4ebca555c] 2022-12-04 13:17:18 -0500
Branch: REL_12_STABLE [1ff549e84] 2022-12-04 13:17:18 -0500
Branch: REL_11_STABLE [2df073313] 2022-12-04 13:17:18 -0500
-->
     <para>
      Fix partitionwise-join code to tolerate failure to produce a plan for
      each partition (Tom Lane)
      <ulink url="&commit_baseurl;ec3daeec3">&sect;</ulink>
     </para>

     <para>
      This could result in <quote>could not devise a query plan for the
      given query</quote> errors.
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [9c6ad5eaa] 2022-11-22 14:40:20 -0500
Branch: REL_15_STABLE [2debceed2] 2022-11-22 14:40:44 -0500
Branch: REL_14_STABLE [bd06fe4de] 2022-11-22 14:40:45 -0500
Branch: REL_13_STABLE [6e639267a] 2022-11-22 14:40:45 -0500
Branch: REL_12_STABLE [ec10b6139] 2022-11-22 14:40:45 -0500
Branch: REL_11_STABLE [b96a096db] 2022-11-22 14:40:46 -0500
-->
     <para>
      Limit the amount of cleanup work done
      by <function>get_actual_variable_range</function> (Simon Riggs)
      <ulink url="&commit_baseurl;bd06fe4de">&sect;</ulink>
     </para>

     <para>
      Planner runs occurring just after deletion of a large number of
      tuples appearing at the end of an index could expend significant
      amounts of work setting the <quote>killed</quote> bits for those
      index entries.  Limit the amount of work done in any one query by
      giving up on this process after examining 100 heap pages.  All the
      cleanup will still happen eventually, but without so large a
      performance hiccup.
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [1dd6700f4] 2022-12-01 11:38:14 -0500
Branch: REL_15_STABLE [a711b36e5] 2022-12-01 11:38:15 -0500
Branch: REL_14_STABLE [de0ff6088] 2022-12-01 11:38:15 -0500
-->
     <para>
      Fix under-parenthesized display of <literal>AT TIME ZONE</literal>
      constructs (Tom Lane)
      <ulink url="&commit_baseurl;de0ff6088">&sect;</ulink>
     </para>

     <para>
      This could result in dump/restore failures for rules or views in
      which an argument of <literal>AT TIME ZONE</literal> is itself an
      expression.
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [8b47ccb62] 2022-11-29 11:46:33 -0500
Branch: REL_15_STABLE [5dfc2b753] 2022-11-29 11:46:33 -0500
Branch: REL_14_STABLE [7715a3c24] 2022-11-29 11:46:33 -0500
-->
     <para>
      Prevent clobbering of cached parsetrees for utility statements in
      SQL functions (Tom Lane, Daniel Gustafsson)
      <ulink url="&commit_baseurl;7715a3c24">&sect;</ulink>
     </para>

     <para>
      If a SQL-language function executes the same utility command more
      than once within a single calling query, it could crash or report
      strange errors such as <quote>unrecognized node type</quote>.
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [5644d6f90] 2022-11-21 17:07:29 -0500
Branch: REL_15_STABLE [0353db996] 2022-11-21 17:07:07 -0500
Branch: REL_14_STABLE [1b9c04b13] 2022-11-21 17:07:07 -0500
Branch: REL_13_STABLE [74670688f] 2022-11-21 17:07:07 -0500
Branch: REL_12_STABLE [1aed4c4fd] 2022-11-21 17:07:07 -0500
Branch: REL_11_STABLE [c0eed8891] 2022-11-21 17:07:07 -0500
-->
     <para>
      Ensure that execution of full-text-search queries can be cancelled
      while they are performing phrase matches (Tom Lane)
      <ulink url="&commit_baseurl;1b9c04b13">&sect;</ulink>
     </para>
    </listitem>

    <listitem>
<!--
Author: Jeff Davis <jdavis@postgresql.org>
Branch: master [edf12e7bb] 2022-12-01 11:49:15 -0800
Branch: REL_15_STABLE [9377b4f30] 2022-12-01 11:55:59 -0800
Branch: REL_14_STABLE [47e1224d5] 2022-12-01 11:53:53 -0800
Branch: REL_13_STABLE [a844052b5] 2022-12-01 11:52:06 -0800
Branch: REL_12_STABLE [f98c4fb1d] 2022-12-01 11:49:43 -0800
-->
     <para>
      Fix memory leak in hashing strings with nondeterministic collations
      (Jeff Davis)
      <ulink url="&commit_baseurl;47e1224d5">&sect;</ulink>
     </para>
    </listitem>

    <listitem>
<!--
Author: Amit Kapila <akapila@postgresql.org>
Branch: master [6c6d6ba3e] 2023-01-24 09:25:36 +0530
Branch: REL_15_STABLE [267135d01] 2023-01-24 09:12:04 +0530
Branch: REL_14_STABLE [fd270b728] 2023-01-24 09:02:05 +0530
-->
     <para>
      Fix deadlock between <command>DROP DATABASE</command> and logical
      replication worker process (Hou Zhijie)
      <ulink url="&commit_baseurl;fd270b728">&sect;</ulink>
     </para>

     <para>
      This was caused by an ill-advised choice to block interrupts while
      creating a logical replication slot in the worker.  In version 15
      that could lead to an undetected deadlock.  In version 14, no
      deadlock has been observed, but it's still a bad idea to block
      interrupts while waiting for network I/O.
     </para>
    </listitem>

    <listitem>
<!--
Author: Andres Freund <andres@anarazel.de>
Branch: master [bc54ef4ec] 2023-01-23 18:27:42 -0800
Branch: REL_15_STABLE [704a330a9] 2023-01-23 18:27:45 -0800
Branch: REL_14_STABLE [0a796b8b3] 2023-01-23 18:27:48 -0800
Branch: REL_13_STABLE [c5864805b] 2023-01-23 18:27:51 -0800
Branch: REL_12_STABLE [92fc12787] 2023-01-23 18:27:55 -0800
Branch: REL_11_STABLE [243373159] 2023-01-23 18:27:58 -0800
-->
     <para>
      Clean up the <application>libpq</application> connection object
      after a failed replication connection attempt (Andres Freund)
      <ulink url="&commit_baseurl;0a796b8b3">&sect;</ulink>
     </para>

     <para>
      The previous coding leaked the connection object.  In background
      code paths that's pretty harmless because the calling process will
      give up and exit.  But in commands such as <command>CREATE
      SUBSCRIPTION</command>, such a failure resulted in a small
      session-lifespan memory leak.
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [8242752f9] 2022-11-29 15:43:17 -0500
Branch: REL_15_STABLE [55fa993d7] 2022-11-29 15:43:17 -0500
Branch: REL_14_STABLE [06998eab1] 2022-11-29 15:43:17 -0500
Branch: REL_13_STABLE [6e8ad1152] 2022-11-29 15:43:17 -0500
Branch: REL_12_STABLE [c4a153d77] 2022-11-29 15:43:17 -0500
Branch: REL_11_STABLE [a6c9e1db2] 2022-11-29 15:43:17 -0500
-->
     <para>
      In hot-standby servers, reduce processing effort for tracking XIDs
      known to be active on the primary (Simon Riggs, Michail Nikolaev)
      <ulink url="&commit_baseurl;06998eab1">&sect;</ulink>
     </para>

     <para>
      Insufficiently-aggressive cleanup of the KnownAssignedXids array
      could lead to poor performance, particularly
      when <varname>max_connections</varname> is set to a large value on
      the standby.
     </para>
    </listitem>

    <listitem>
<!--
Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
Branch: master [0557e1770] 2022-11-22 10:56:07 +0100
Branch: REL_15_STABLE [1ad033df1] 2022-11-22 10:56:07 +0100
Branch: REL_14_STABLE [1b3ed7571] 2022-11-22 10:56:07 +0100
Branch: REL_13_STABLE [36eeb37cd] 2022-11-22 10:56:07 +0100
-->
     <para>
      Ignore invalidated logical-replication slots while determining
      oldest catalog xmin (Sirisha Chamarthi)
      <ulink url="&commit_baseurl;1b3ed7571">&sect;</ulink>
     </para>

     <para>
      A replication slot could prevent cleanup of dead tuples in the
      system catalogs even after it becomes invalidated due to
      exceeding <varname>max_slot_wal_keep_size</varname>.  Thus, failure
      of a replication consumer could lead to indefinitely-large catalog
      bloat.
     </para>
    </listitem>

    <listitem>
<!--
Author: Amit Kapila <akapila@postgresql.org>
Branch: master [2b6df0546] 2023-01-07 12:17:14 +0530
Branch: REL_15_STABLE [18b81258a] 2023-01-07 12:04:33 +0530
Branch: REL_14_STABLE [b2cc5b810] 2023-01-07 11:52:41 +0530
-->
     <para>
      In logical decoding, notify the remote node when a transaction is
      detected to have crashed (Hou Zhijie)
      <ulink url="&commit_baseurl;b2cc5b810">&sect;</ulink>
     </para>

     <para>
      After a server restart, we'll re-stream the changes for transactions
      occurring shortly before the restart.  Some of these transactions
      probably never completed; when we realize that one didn't we throw
      away the relevant decoding state locally, but we neglected to tell
      the subscriber about it.  That led to the subscriber keeping useless
      streaming files until it's next restarted.
     </para>
    </listitem>

    <listitem>
<!--
Author: Amit Kapila <akapila@postgresql.org>
Branch: REL_15_STABLE [898ef41bf] 2022-11-25 09:38:03 +0530
Branch: REL_14_STABLE [9f2cc1a73] 2022-11-25 09:25:50 +0530
Branch: REL_13_STABLE [4ec157c15] 2022-11-25 09:15:31 +0530
Branch: REL_12_STABLE [aa9d916f6] 2022-11-25 09:00:15 +0530
Branch: REL_11_STABLE [9b788aafd] 2022-11-25 08:56:54 +0530
-->
     <para>
      Fix uninitialized-memory usage in logical decoding (Masahiko Sawada)
      <ulink url="&commit_baseurl;9f2cc1a73">&sect;</ulink>
     </para>

     <para>
      In certain cases, resumption of logical decoding could try to re-use
      XID data that had already been freed, leading to unpredictable
      behavior.
     </para>
    </listitem>

    <listitem>
<!--
Author: Amit Kapila <akapila@postgresql.org>
Branch: master [e848be60b] 2022-11-14 10:43:33 +0530
Branch: REL_15_STABLE [e49e19181] 2022-11-14 10:32:47 +0530
Branch: REL_14_STABLE [9693f1900] 2022-11-14 10:22:28 +0530
Branch: REL_13_STABLE [20c223336] 2022-11-14 10:11:10 +0530
Branch: REL_12_STABLE [4dccccb37] 2022-11-14 10:01:14 +0530
Branch: REL_11_STABLE [1703033f8] 2022-11-14 09:52:06 +0530
-->
     <para>
      Avoid rare <quote>failed to acquire cleanup lock</quote> panic
      during WAL replay of hash-index page split operations (Robert Haas)
      <ulink url="&commit_baseurl;9693f1900">&sect;</ulink>
     </para>
    </listitem>

    <listitem>
<!--
Author: Jeff Davis <jdavis@postgresql.org>
Branch: master [d6a3dbe14] 2022-11-11 12:38:29 -0800
Branch: REL_15_STABLE [7bf713dd2] 2022-11-11 12:46:11 -0800
Branch: REL_14_STABLE [f893af496] 2022-11-11 12:46:22 -0800
Branch: REL_13_STABLE [58a45bb1d] 2022-11-11 12:46:34 -0800
Branch: REL_12_STABLE [7dd39e9e8] 2022-11-11 12:46:44 -0800
Branch: REL_11_STABLE [5eaf3e375] 2022-11-11 12:46:52 -0800
-->
     <para>
      Advance a heap page's LSN when setting its all-visible bit during
      WAL replay (Jeff Davis)
      <ulink url="&commit_baseurl;f893af496">&sect;</ulink>
     </para>

     <para>
      Failure to do this left the page possibly different on standby
      servers than the primary, and violated some other expectations about
      when the LSN changes.  This seems only a theoretical hazard so
      far as <productname>PostgreSQL</productname> itself is concerned,
      but it could upset third-party tools.
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: REL_14_STABLE [32d5a4974] 2022-11-17 16:54:30 -0500
Branch: REL_13_STABLE [9a299cf7c] 2022-11-17 16:54:30 -0500
Branch: REL_12_STABLE [e21856fd6] 2022-11-17 16:54:31 -0500
Branch: REL_11_STABLE [d4acf2eb9] 2022-11-17 16:54:31 -0500
-->
     <para>
      Prevent unsafe usage of a relation cache
      entry's <structfield>rd_smgr</structfield> pointer (Amul Sul)
      <ulink url="&commit_baseurl;32d5a4974">&sect;</ulink>
     </para>

     <para>
      Remove various assumptions that <structfield>rd_smgr</structfield>
      would stay valid over a series of operations, by wrapping all uses
      of it in a function that will recompute it if needed.  This prevents
      bugs occurring when an unexpected cache flush occurs partway through
      such a series.
     </para>
    </listitem>

    <listitem>
<!--
Author: Dean Rasheed <dean.a.rasheed@gmail.com>
Branch: master [b2d479289] 2023-02-03 11:13:34 +0000
Branch: REL_15_STABLE [4f74741a5] 2023-02-03 11:11:59 +0000
Branch: REL_14_STABLE [86bfbeab4] 2023-02-03 11:09:15 +0000
-->
     <para>
      Fix <function>int64_div_fast_to_numeric()</function> to work for a
      wider range of inputs (Dean Rasheed)
      <ulink url="&commit_baseurl;86bfbeab4">&sect;</ulink>
     </para>

     <para>
      This function misbehaved with some values of its second argument.
      No such usages exist in core <productname>PostgreSQL</productname>,
      but it's clearly a hazard for external modules, so repair.
     </para>
    </listitem>

    <listitem>
<!--
Author: Thomas Munro <tmunro@postgresql.org>
Branch: master [f1821b58f] 2023-01-13 11:02:12 +1300
Branch: REL_15_STABLE [8a98523a5] 2023-01-13 11:02:00 +1300
Branch: REL_14_STABLE [547e60b83] 2023-01-13 10:57:29 +1300
Branch: REL_13_STABLE [c159b0383] 2023-01-13 10:54:49 +1300
Branch: REL_12_STABLE [bf388ab82] 2023-01-13 10:54:34 +1300
Branch: REL_11_STABLE [1b40710a8] 2023-01-13 10:54:20 +1300
-->
     <para>
      Fix latent buffer-overrun problem in <literal>WaitEventSet</literal>
      logic (Thomas Munro)
      <ulink url="&commit_baseurl;547e60b83">&sect;</ulink>
     </para>

     <para>
      The <function>epoll</function>-based
      and <function>kqueue</function>-based implementations could ask the
      kernel for too many events if the size of their internal buffer was
      different from the size of the caller's output buffer.  That case is
      not known to occur in released <productname>PostgreSQL</productname>
      versions, but this error is a hazard for external modules and future
      bug fixes.
     </para>
    </listitem>

    <listitem>
<!--
Author: Andres Freund <andres@anarazel.de>
Branch: master [8c954168c] 2022-11-19 12:22:04 -0800
Branch: REL_15_STABLE [a0d35ebcc] 2022-11-19 12:33:11 -0800
Branch: REL_14_STABLE [fc4154286] 2022-11-19 12:33:14 -0800
Branch: REL_13_STABLE [c13667b51] 2022-11-19 12:36:33 -0800
Branch: REL_12_STABLE [4cbcb7ed8] 2022-11-19 12:36:48 -0800
Branch: REL_11_STABLE [140c80372] 2022-11-19 12:36:52 -0800
-->
     <para>
      Avoid nominally-undefined behavior when accessing shared memory in
      32-bit builds (Andres Freund)
      <ulink url="&commit_baseurl;fc4154286">&sect;</ulink>
     </para>

     <para>
      clang's undefined-behavior sanitizer complained about use of a
      pointer that was less aligned than it should be.  It's very unlikely
      that this would cause a problem in non-debug builds, but it's worth
      fixing for testing purposes.
     </para>
    </listitem>

    <listitem>
<!--
Author: Tomas Vondra <tomas.vondra@postgresql.org>
Branch: master [02699bc1f] 2022-12-30 20:49:50 +0100
Branch: REL_15_STABLE [c4f64cfab] 2022-12-30 20:49:11 +0100
Branch: REL_14_STABLE [883dc0214] 2022-12-30 20:47:58 +0100
-->
     <para>
      Fix assertion failure in BRIN minmax-multi opclasses (Tomas Vondra)
      <ulink url="&commit_baseurl;883dc0214">&sect;</ulink>
     </para>

     <para>
      The assertion was overly strict, so this mistake was harmless in
      non-assert builds.
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [51dfaa0b0] 2022-11-29 10:52:44 -0500
Branch: REL_15_STABLE [556c0b913] 2022-11-29 10:52:44 -0500
Branch: REL_14_STABLE [0224646be] 2022-11-29 10:52:44 -0500
Branch: REL_13_STABLE [aca695fb6] 2022-11-29 10:52:44 -0500
Branch: REL_12_STABLE [bb8d48cb9] 2022-11-29 10:52:44 -0500
-->
     <para>
      Remove faulty assertion in useless-RESULT-RTE optimization logic
      (Tom Lane)
      <ulink url="&commit_baseurl;0224646be">&sect;</ulink>
     </para>
    </listitem>

    <listitem>
<!--
Author: Michael Paquier <michael@paquier.xyz>
Branch: master [2fcf685f6] 2022-12-23 10:04:18 +0900
Branch: REL_15_STABLE [e3897a3a4] 2022-12-23 10:04:30 +0900
Branch: REL_14_STABLE [7ad458e06] 2022-12-23 10:04:33 +0900
Branch: REL_13_STABLE [4dbe72d61] 2022-12-23 10:04:34 +0900
Branch: REL_12_STABLE [7445869e1] 2022-12-23 10:04:36 +0900
Branch: REL_11_STABLE [df6fea51f] 2022-12-23 10:04:37 +0900
-->
     <para>
      Fix copy-and-paste errors in cache-lookup-failure messages for ACL
      checks (Justin Pryzby)
      <ulink url="&commit_baseurl;7ad458e06">&sect;</ulink>
     </para>

     <para>
      In principle these errors should never be reached.  But if they are,
      some of them reported the wrong type of object.
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: REL_14_STABLE [55f30e6c7] 2022-11-19 11:40:30 -0500
Branch: REL_13_STABLE [e46e986ba] 2022-11-19 11:40:30 -0500
Branch: REL_12_STABLE [344b78492] 2022-11-19 11:40:30 -0500
Branch: REL_11_STABLE [b1f106420] 2022-11-19 11:40:30 -0500
Branch: REL_14_STABLE [03ac48549] 2022-11-19 12:00:27 -0500
Branch: REL_13_STABLE [a5b26aaaf] 2022-11-19 12:00:27 -0500
Branch: REL_12_STABLE [1ed6f1b91] 2022-11-19 12:00:27 -0500
Branch: REL_11_STABLE [b7333e826] 2022-11-19 12:00:27 -0500
-->
     <para>
      In <application>pg_dump</application>,
      avoid calling unsafe server functions before we have locks on the
      tables to be examined (Tom Lane, Gilles Darold)
      <ulink url="&commit_baseurl;55f30e6c7">&sect;</ulink>
      <ulink url="&commit_baseurl;03ac48549">&sect;</ulink>
     </para>

     <para>
      <application>pg_dump</application> uses certain server functions
      that can fail if examining a table that gets dropped concurrently.
      Avoid this type of failure by ensuring that we obtain access share
      lock before inquiring too deeply into a table's properties, and that
      we don't apply such functions to tables we don't intend to dump at
      all.
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [cabfb8241] 2022-12-02 14:24:44 -0500
Branch: REL_15_STABLE [97299cf99] 2022-12-02 14:24:44 -0500
Branch: REL_14_STABLE [303b26c1b] 2022-12-02 14:24:44 -0500
-->
     <para>
      Fix <application>psql</application>'s <literal>\sf</literal>
      and <literal>\ef</literal> commands to handle SQL-language functions
      that have <acronym>SQL</acronym>-standard function bodies (Tom Lane)
      <ulink url="&commit_baseurl;303b26c1b">&sect;</ulink>
     </para>

     <para>
      These commands misidentified the start of the function body when it
      used new-style syntax.
     </para>
    </listitem>

    <listitem>
<!--
Author: Dean Rasheed <dean.a.rasheed@gmail.com>
Branch: master [e7a59094b] 2023-01-06 11:18:44 +0000
Branch: REL_15_STABLE [2daf4664c] 2023-01-06 11:16:53 +0000
Branch: REL_14_STABLE [48599a18d] 2023-01-06 11:15:22 +0000
Branch: REL_13_STABLE [2ad4abedf] 2023-01-06 11:13:34 +0000
Branch: REL_12_STABLE [274185d11] 2023-01-06 11:11:51 +0000
Branch: REL_11_STABLE [c54b88870] 2023-01-06 11:09:56 +0000
-->
     <para>
      Fix tab completion of <command>ALTER
      FUNCTION/PROCEDURE/ROUTINE</command> ... <command>SET
      SCHEMA</command> (Dean Rasheed)
      <ulink url="&commit_baseurl;48599a18d">&sect;</ulink>
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [701c881f7] 2022-12-21 17:51:50 -0500
Branch: REL_15_STABLE [b87037b37] 2022-12-21 17:51:50 -0500
Branch: REL_14_STABLE [f489b480f] 2022-12-21 17:51:50 -0500
Branch: REL_13_STABLE [d35f1d485] 2022-12-21 17:51:50 -0500
Branch: REL_12_STABLE [c8314d62a] 2022-12-21 17:51:50 -0500
Branch: REL_11_STABLE [0ff4056b8] 2022-12-21 17:51:50 -0500
-->
     <para>
      Fix <filename>contrib/seg</filename> to not crash or print garbage
      if an input number has more than 127 digits (Tom Lane)
      <ulink url="&commit_baseurl;f489b480f">&sect;</ulink>
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: REL_15_STABLE [576506303] 2022-11-10 10:23:49 -0500
Branch: REL_14_STABLE [06dca17ad] 2022-11-10 10:23:49 -0500
Branch: REL_13_STABLE [0942acb73] 2022-11-10 10:23:49 -0500
Branch: REL_12_STABLE [cf0f465c0] 2022-11-10 10:23:49 -0500
-->
     <para>
      Fix build on Microsoft Visual Studio 2013 (Tom Lane)
      <ulink url="&commit_baseurl;06dca17ad">&sect;</ulink>
     </para>

     <para>
      A previous patch supposed that all platforms of interest
      have <function>snprintf()</function>, but MSVC 2013 isn't quite
      there yet.  Revert to using <function>sprintf()</function> on that
      platform.
     </para>
    </listitem>

    <listitem>
<!--
Author: Andrew Dunstan <andrew@dunslane.net>
Branch: master [341f4e002] 2022-11-25 15:28:38 -0500
Branch: REL_15_STABLE [fed54fc9a] 2022-11-25 15:37:33 -0500
Branch: REL_14_STABLE [f76191fd9] 2022-11-25 15:37:33 -0500
Branch: REL_13_STABLE [9fe5cff14] 2022-11-25 15:37:33 -0500
Branch: REL_12_STABLE [171c7fffa] 2022-11-25 15:37:34 -0500
Branch: REL_11_STABLE [ae7c51213] 2022-11-25 15:37:34 -0500
-->
     <para>
      Fix compile failure in building PL/Perl with MSVC when using
      Strawberry Perl (Andrew Dunstan)
      <ulink url="&commit_baseurl;f76191fd9">&sect;</ulink>
     </para>
    </listitem>

    <listitem>
<!--
Author: Andrew Dunstan <andrew@dunslane.net>
Branch: master [ccc59a83c] 2022-11-27 09:03:22 -0500
Branch: REL_15_STABLE [b5d8fd418] 2022-11-27 09:18:14 -0500
Branch: REL_14_STABLE [f3f70b8de] 2022-11-27 09:18:20 -0500
Branch: REL_13_STABLE [68d89d80c] 2022-11-27 09:18:32 -0500
Branch: REL_12_STABLE [85565cbca] 2022-11-27 09:18:40 -0500
Branch: REL_11_STABLE [724dd5649] 2022-11-27 09:18:46 -0500
-->
     <para>
      Fix mismatch of PL/Perl built with MSVC versus a Perl library built
      with gcc (Andrew Dunstan)
      <ulink url="&commit_baseurl;f3f70b8de">&sect;</ulink>
     </para>

     <para>
      Such combinations could previously fail with <quote>loadable library
      and perl binaries are mismatched</quote> errors.
     </para>
    </listitem>

    <listitem>
<!--
Author: Andres Freund <andres@anarazel.de>
Branch: master [388e80132] 2022-12-29 12:47:29 -0800
Branch: REL_15_STABLE [c6e75e4c2] 2023-01-02 15:49:33 -0800
Branch: REL_14_STABLE [7b5dec760] 2023-01-02 15:50:00 -0800
Branch: REL_13_STABLE [ce073d014] 2023-01-02 15:50:33 -0800
Branch: REL_12_STABLE [f0e13802f] 2023-01-02 15:51:03 -0800
Branch: REL_11_STABLE [99f8bc335] 2023-01-02 15:51:05 -0800
-->
     <para>
      Suppress compiler warnings from Perl's header files (Andres Freund)
      <ulink url="&commit_baseurl;7b5dec760">&sect;</ulink>
     </para>

     <para>
      Our preferred compiler options provoke warnings about constructs
      appearing in recent versions of Perl's header files.  When using
      <application>gcc</application>, we can suppress these warnings with
      a pragma.
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: REL_15_STABLE [9a40a0311] 2023-01-20 11:58:12 -0500
Branch: REL_14_STABLE [21c058648] 2023-01-20 11:58:12 -0500
Branch: REL_13_STABLE [c78f109b8] 2023-01-20 11:58:12 -0500
Branch: REL_12_STABLE [6d066d56b] 2023-01-20 11:58:12 -0500
Branch: REL_11_STABLE [b69e9dfab] 2023-01-20 11:58:12 -0500
-->
     <para>
      Fix <application>pg_waldump</application> to build on compilers that
      don't discard unused static-inline functions (Tom Lane)
      <ulink url="&commit_baseurl;21c058648">&sect;</ulink>
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [758f44bc3] 2023-01-31 17:36:55 -0500
Branch: REL_15_STABLE [65f0d9d27] 2023-01-31 17:37:06 -0500
Branch: REL_14_STABLE [7e6154779] 2023-01-31 17:37:14 -0500
Branch: REL_13_STABLE [20d9da107] 2023-01-31 17:37:22 -0500
Branch: REL_12_STABLE [2c95d8776] 2023-01-31 17:37:28 -0500
Branch: REL_11_STABLE [7ddc428ef] 2023-01-31 17:37:34 -0500
-->
     <para>
      Update time zone data files to <application>tzdata</application>
      release 2022g for DST law changes in Greenland and Mexico,
      plus historical corrections for northern Canada, Colombia, and
      Singapore. (Tom Lane)
      <ulink url="&commit_baseurl;7e6154779">&sect;</ulink>
     </para>

     <para>
      Notably, a new timezone America/Ciudad_Juarez has been split off
      from America/Ojinaga.
     </para>
    </listitem>

   </itemizedlist>

  </sect2>
 </sect1>

 <sect1 id="release-14-6">
  <title>Release 14.6</title>

  <formalpara>
  <title>Release date:</title>
  <para>2022-11-10</para>
  </formalpara>

  <para>
   This release contains a variety of fixes from 14.5.
   For information about new features in major release 14, see
   <xref linkend="release-14"/>.
  </para>

  <sect2>
   <title>Migration to Version 14.6</title>

   <para>
    A dump/restore is not required for those running 14.X.
   </para>

   <para>
    However, if you are upgrading from a version earlier than 14.4,
    see <xref linkend="release-14-4"/>.
   </para>
  </sect2>

  <sect2>
   <title>Changes</title>

   <itemizedlist>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [2dc2e4e31] 2022-09-30 19:37:00 -0400
Branch: REL_15_STABLE Release: REL_15_0 [2267085c1] 2022-09-30 19:36:46 -0400
Branch: REL_14_STABLE [b93d7e688] 2022-09-30 19:36:46 -0400
Branch: REL_13_STABLE [92941f264] 2022-09-30 19:36:46 -0400
Branch: REL_12_STABLE [e7bd2d671] 2022-09-30 19:36:46 -0400
Author: Jeff Davis <jdavis@postgresql.org>
Branch: master [163b0993a] 2022-09-22 11:04:00 -0700
Branch: REL_15_STABLE Release: REL_15_0 [dd6070bc8] 2022-09-22 11:04:36 -0700
Branch: REL_14_STABLE [21934612d] 2022-09-22 11:04:58 -0700
Branch: REL_13_STABLE [410c422b7] 2022-09-22 11:06:42 -0700
Branch: REL_12_STABLE [cab72f0fd] 2022-09-22 11:07:05 -0700
-->
     <para>
      Avoid rare PANIC during updates occurring concurrently
      with <command>VACUUM</command> (Tom Lane, Jeff Davis)
      <ulink url="&commit_baseurl;b93d7e688">&sect;</ulink>
      <ulink url="&commit_baseurl;21934612d">&sect;</ulink>
     </para>

     <para>
      If a concurrent <command>VACUUM</command> sets the all-visible flag
      bit in a page that <command>UPDATE</command>
      or <command>DELETE</command> is in process of modifying, the
      updating command needs to clear that bit again; but some code paths
      failed to do so, ending in a PANIC exit and database restart.
     </para>

     <para>
      This is known to be possible in versions 14 and 15.  It may be only
      latent in previous branches.
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [b8f2687fd] 2022-10-11 18:24:14 -0400
Branch: REL_15_STABLE [07ce67698] 2022-10-11 18:24:14 -0400
Branch: REL_14_STABLE [3162bd95c] 2022-10-11 18:24:14 -0400
Branch: REL_13_STABLE [21e042b0b] 2022-10-11 18:24:14 -0400
Branch: REL_12_STABLE [abc510fa2] 2022-10-11 18:24:15 -0400
Branch: REL_11_STABLE [addde9bc6] 2022-10-11 18:24:15 -0400
Branch: REL_10_STABLE [23e2a06ac] 2022-10-11 18:24:15 -0400
-->
     <para>
      Fix handling of <literal>DEFAULT</literal> tokens that appear
      in a multi-row <literal>VALUES</literal> clause of an
      <command>INSERT</command> on an updatable view (Tom Lane)
      <ulink url="&commit_baseurl;3162bd95c">&sect;</ulink>
     </para>

     <para>
      This oversight could lead to <quote>cache lookup failed for
      type</quote> errors, or in older branches even to crashes.
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [797e313dc] 2022-10-17 12:14:39 -0400
Branch: REL_15_STABLE [4a41a069e] 2022-10-17 12:14:39 -0400
Branch: REL_14_STABLE [2f26cec48] 2022-10-17 12:14:39 -0400
Branch: REL_13_STABLE [b21615d1e] 2022-10-17 12:14:39 -0400
Branch: REL_12_STABLE [65c1106d8] 2022-10-17 12:14:39 -0400
Branch: REL_11_STABLE [e9377e3e5] 2022-10-17 12:14:39 -0400
Branch: REL_10_STABLE [ecf4ce689] 2022-10-17 12:14:39 -0400
-->
     <para>
      Disallow rules named <literal>_RETURN</literal> that are
      not <literal>ON SELECT</literal> (Tom Lane)
      <ulink url="&commit_baseurl;2f26cec48">&sect;</ulink>
     </para>

     <para>
      This avoids confusion between a view's <literal>ON SELECT</literal>
      rule and any other rules it may have.
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [216f9c1ab] 2022-09-25 17:10:58 -0400
Branch: REL_15_STABLE Release: REL_15_0 [c82766c02] 2022-09-25 17:10:58 -0400
Branch: REL_14_STABLE [992376461] 2022-09-25 17:10:58 -0400
Branch: REL_13_STABLE [8c17c8615] 2022-09-25 17:10:58 -0400
Branch: REL_12_STABLE [519763094] 2022-09-25 17:10:58 -0400
-->
     <para>
      Fix resource management bug in saving tuples
      for <literal>AFTER</literal> triggers (Tom Lane)
      <ulink url="&commit_baseurl;992376461">&sect;</ulink>
     </para>

     <para>
      Given the right circumstances, this manifested as a <quote>tupdesc
      reference <replaceable>NNNN</replaceable> is not owned by resource
      owner</quote> error followed by a PANIC exit.
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [d57534740] 2022-10-16 19:18:08 -0400
Branch: REL_15_STABLE [d4abb0bc5] 2022-10-16 19:18:08 -0400
Branch: REL_14_STABLE [8122160ff] 2022-10-16 19:18:08 -0400
-->
     <para>
      Avoid failure in <command>EXPLAIN VERBOSE</command> for a query
      using <literal>SEARCH BREADTH FIRST</literal> with constant
      initial values (Tom Lane)
      <ulink url="&commit_baseurl;8122160ff">&sect;</ulink>
     </para>
    </listitem>

    <listitem>
<!--
Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
Branch: master [b0284bfb1] 2022-11-03 20:40:21 +0100
Branch: REL_15_STABLE [c301e1c0c] 2022-11-03 20:40:21 +0100
Branch: REL_14_STABLE [18865f4df] 2022-11-03 20:40:21 +0100
Branch: REL_13_STABLE [41b6e7c9a] 2022-11-03 20:40:21 +0100
Branch: REL_12_STABLE [ab70b3a52] 2022-11-03 20:40:21 +0100
Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
Branch: master [614a406b4] 2022-10-07 19:37:48 +0200
Branch: REL_15_STABLE Release: REL_15_0 [6083132ab] 2022-10-07 19:37:48 +0200
Branch: REL_14_STABLE [483d26930] 2022-10-07 19:37:48 +0200
Branch: REL_13_STABLE [7d520e68e] 2022-10-07 19:37:48 +0200
Branch: REL_12_STABLE [669803af0] 2022-10-07 19:37:48 +0200
-->
     <para>
      Fix construction of per-partition foreign key constraints while
      doing <command>ALTER TABLE ATTACH PARTITION</command>
      (Jehan-Guillaume de Rorthais, &Aacute;lvaro Herrera)
      <ulink url="&commit_baseurl;18865f4df">&sect;</ulink>
      <ulink url="&commit_baseurl;483d26930">&sect;</ulink>
     </para>

     <para>
      Previously, incorrect or duplicate constraints could be constructed
      for the newly-added partition.
     </para>
    </listitem>

    <listitem>
<!--
Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
Branch: master [e7936f8b3] 2022-09-08 13:17:02 +0200
Branch: REL_15_STABLE Release: REL_15_0 [ade2409b1] 2022-09-08 13:17:02 +0200
Branch: REL_14_STABLE [640c20d62] 2022-09-08 13:17:02 +0200
Branch: REL_13_STABLE [80ef25b1a] 2022-09-08 13:17:02 +0200
Branch: REL_12_STABLE [562e100ae] 2022-09-08 13:17:02 +0200
-->
     <para>
      Fix generation of constraint names for per-partition foreign key
      constraints (Jehan-Guillaume de Rorthais)
      <ulink url="&commit_baseurl;640c20d62">&sect;</ulink>
     </para>

     <para>
      If the initially-given name is already in use for some constraint of
      the partition, a new one is selected; but it wasn't being spelled as
      intended.
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [e6dbb4848] 2022-08-18 12:12:03 -0400
Branch: REL_15_STABLE Release: REL_15_0 [2a42c1c51] 2022-08-18 12:12:03 -0400
Branch: REL_14_STABLE [3bfea5cbb] 2022-08-18 12:11:47 -0400
Branch: REL_13_STABLE [9f0073ef7] 2022-08-18 12:11:47 -0400
Branch: REL_12_STABLE [2cf16cd74] 2022-08-18 12:11:47 -0400
Branch: REL_11_STABLE [116f20f92] 2022-08-18 12:11:47 -0400
-->
     <para>
      Fix incorrect matching of index expressions and predicates when
      creating a partitioned index (Richard Guo, Tom Lane)
      <ulink url="&commit_baseurl;3bfea5cbb">&sect;</ulink>
     </para>

     <para>
      While creating a partitioned index, we try to identify any existing
      indexes on the partitions that match the partitioned index, so that
      we can absorb those as child indexes instead of building new ones.
      Matching of expressions was not done right, so that a usable child
      index might be ignored, leading to creation of a duplicative index.
     </para>
    </listitem>

    <listitem>
<!--
Author: Robert Haas <rhaas@postgresql.org>
Branch: master [6672d7913] 2022-08-29 11:07:37 -0400
Branch: REL_15_STABLE Release: REL_15_0 [eb29fa388] 2022-08-29 11:18:55 -0400
Branch: REL_14_STABLE [0e54a5e27] 2022-08-29 11:25:00 -0400
Branch: REL_13_STABLE [3f2701cda] 2022-08-29 11:30:17 -0400
Branch: REL_12_STABLE [3c0ef0832] 2022-08-29 11:55:49 -0400
Branch: REL_11_STABLE [002fba80e] 2022-08-29 12:06:30 -0400
Branch: REL_10_STABLE [0b3ff539d] 2022-08-29 12:21:50 -0400
-->
     <para>
      Prevent WAL corruption after a standby promotion (Dilip Kumar,
      Robert Haas)
      <ulink url="&commit_baseurl;0e54a5e27">&sect;</ulink>
     </para>

     <para>
      When a <productname>PostgreSQL</productname> instance performing
      archive recovery (but not using standby mode) is promoted, and the
      last WAL segment that it attempted to read ended in a partial
      record, the instance would write an invalid WAL segment on the new
      timeline.
     </para>
    </listitem>

    <listitem>
<!--
Author: Michael Paquier <michael@paquier.xyz>
Branch: master [56b662523] 2022-10-13 09:31:57 +0900
Branch: REL_15_STABLE [ca4070f2b] 2022-10-26 09:41:13 +0900
Branch: REL_14_STABLE [5a30d43fa] 2022-10-26 09:41:18 +0900
Branch: REL_13_STABLE [594b97509] 2022-10-26 09:41:22 +0900
Branch: REL_12_STABLE [51c24d9e2] 2022-10-26 09:41:26 +0900
Branch: REL_11_STABLE [341fba2a6] 2022-10-26 09:41:28 +0900
Branch: REL_10_STABLE [b02fc7df1] 2022-10-26 09:41:31 +0900
-->
     <para>
      Fix mis-ordering of WAL operations in fast insert path for GIN
      indexes (Matthias van de Meent, Zhang Mingli)
      <ulink url="&commit_baseurl;5a30d43fa">&sect;</ulink>
     </para>

     <para>
      This mistake is not known to have any negative consequences within
      core <productname>PostgreSQL</productname>, but it did cause issues
      for some extensions.
     </para>
    </listitem>

    <listitem>
<!--
Author: Amit Kapila <akapila@postgresql.org>
Branch: master [16b1fe003] 2022-10-20 08:49:48 +0530
Branch: REL_15_STABLE [64ff0fe4e] 2022-10-20 09:43:59 +0530
Branch: REL_14_STABLE [a592ed923] 2022-10-20 09:34:18 +0530
Branch: REL_13_STABLE [25f7be1ca] 2022-10-20 09:25:13 +0530
Branch: REL_12_STABLE [1bf4d9206] 2022-10-20 09:16:28 +0530
Branch: REL_11_STABLE [5f7076cb6] 2022-10-20 09:07:04 +0530
Branch: REL_10_STABLE [10ed7b9e4] 2022-10-20 08:58:11 +0530
Branch: REL_15_STABLE [343afa967] 2022-10-21 10:03:35 +0530
Branch: REL_14_STABLE [4fbe6096b] 2022-10-21 09:52:44 +0530
Branch: REL_13_STABLE [38dbaaf27] 2022-10-21 09:42:24 +0530
Branch: REL_12_STABLE [02600886c] 2022-10-21 09:32:21 +0530
Branch: REL_11_STABLE [216af69ae] 2022-10-21 09:22:20 +0530
-->
     <para>
      Fix bugs in logical decoding when replay starts from a point
      between the beginning of a transaction and the beginning of its
      subtransaction (Masahiko Sawada, Kuroda Hayato)
      <ulink url="&commit_baseurl;a592ed923">&sect;</ulink>
      <ulink url="&commit_baseurl;4fbe6096b">&sect;</ulink>
     </para>

     <para>
      These errors could lead to assertion failures in debug builds, and
      otherwise to memory leaks.
     </para>
    </listitem>

    <listitem>
<!--
Author: Amit Kapila <akapila@postgresql.org>
Branch: REL_15_STABLE Release: REL_15_0 [272248a0c] 2022-08-11 09:56:49 +0530
Branch: REL_14_STABLE [68dcce247] 2022-08-11 09:45:04 +0530
Branch: REL_13_STABLE [547b96368] 2022-08-11 09:30:55 +0530
Branch: REL_12_STABLE [794460783] 2022-08-11 09:09:36 +0530
Branch: REL_11_STABLE [e721123b7] 2022-08-11 08:55:31 +0530
Branch: REL_10_STABLE [bf0718c13] 2022-08-11 08:45:20 +0530
-->
     <para>
      Prevent examining system catalogs with the wrong snapshot during
      logical decoding (Masahiko Sawada)
      <ulink url="&commit_baseurl;68dcce247">&sect;</ulink>
     </para>

     <para>
      If decoding begins partway through a transaction that modifies
      system catalogs, the decoder may not recognize that, causing it to
      fail to treat that transaction as in-progress for catalog lookups.
     </para>
    </listitem>

    <listitem>
<!--
Author: Amit Kapila <akapila@postgresql.org>
Branch: master [ce20f8b9f] 2022-10-21 12:57:18 +0530
Branch: REL_15_STABLE [10eaa9750] 2022-10-21 12:43:28 +0530
Branch: REL_14_STABLE [36fc013fa] 2022-10-21 12:33:47 +0530
Branch: REL_13_STABLE [1eed947f9] 2022-10-21 12:22:47 +0530
Branch: REL_12_STABLE [f7f82cf05] 2022-10-21 12:10:11 +0530
Branch: REL_11_STABLE [5c51afe23] 2022-10-21 12:08:14 +0530
Branch: REL_10_STABLE [61838d2dd] 2022-10-21 11:54:34 +0530
Author: Amit Kapila <akapila@postgresql.org>
Branch: master [f972ec5c2] 2022-08-23 10:20:02 +0530
Branch: REL_15_STABLE Release: REL_15_0 [42681dffa] 2022-08-23 10:08:43 +0530
Branch: REL_14_STABLE [6d05d575b] 2022-08-23 09:24:51 +0530
Branch: REL_13_STABLE [4985a4591] 2022-08-23 09:10:28 +0530
Branch: REL_12_STABLE [9415873ae] 2022-08-23 08:51:20 +0530
Branch: REL_11_STABLE [51e9469a4] 2022-08-23 08:42:51 +0530
Branch: REL_10_STABLE [6b50433e8] 2022-08-23 08:39:31 +0530
-->
     <para>
      Accept interrupts in more places during logical decoding (Amit
      Kapila, Masahiko Sawada)
      <ulink url="&commit_baseurl;36fc013fa">&sect;</ulink>
      <ulink url="&commit_baseurl;6d05d575b">&sect;</ulink>
     </para>

     <para>
      This ameliorates problems with slow shutdown of replication workers.
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [be541efbf] 2022-11-02 12:29:39 -0400
Branch: REL_15_STABLE [414d29a82] 2022-11-02 12:29:39 -0400
Branch: REL_14_STABLE [a5b7821fc] 2022-11-02 12:29:39 -0400
Branch: REL_13_STABLE [4d3f7e75c] 2022-11-02 12:29:39 -0400
-->
     <para>
      Prevent attempts to replicate into a foreign-table partition in
      replication workers (Shi Yu, Tom Lane)
      <ulink url="&commit_baseurl;a5b7821fc">&sect;</ulink>
     </para>

     <para>
      Although partitioned tables can have foreign tables as partitions,
      replicating into such a partition isn't currently supported.
      The logical replication worker process would crash if it was
      attempted.  Now, an error is thrown.
     </para>
    </listitem>

    <listitem>
<!--
Author: Amit Kapila <akapila@postgresql.org>
Branch: master [0d5bd3a6c] 2022-08-16 15:25:41 +0530
Branch: REL_15_STABLE Release: REL_15_0 [76d257925] 2022-08-16 15:14:27 +0530
Branch: REL_14_STABLE [02f8d68af] 2022-08-16 14:51:42 +0530
Branch: REL_13_STABLE [1df86aac5] 2022-08-16 14:30:27 +0530
-->
     <para>
      Remove pointless check on replica identity setting of partitioned
      tables (Hou Zhijie)
      <ulink url="&commit_baseurl;02f8d68af">&sect;</ulink>
     </para>

     <para>
      What matters is the replica identity setting of the leaf partitions,
      so there's no need to throw error if it's not set on the parent.
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [dea834938] 2022-11-03 12:02:14 -0400
Branch: REL_15_STABLE [f2dc7f9e3] 2022-11-03 12:01:57 -0400
Branch: REL_14_STABLE [2489c38cd] 2022-11-03 12:01:57 -0400
Branch: REL_13_STABLE [b00f342ea] 2022-11-03 12:01:57 -0400
Branch: REL_12_STABLE [d9ffccf8d] 2022-11-03 12:01:57 -0400
Branch: REL_11_STABLE [ed019b5ef] 2022-11-03 12:01:57 -0400
Branch: REL_10_STABLE [5f3cec77b] 2022-11-03 12:01:57 -0400
-->
     <para>
      Avoid crash after function syntax error in replication workers
      (Maxim Orlov, Anton Melnikov, Masahiko Sawada, Tom Lane)
      <ulink url="&commit_baseurl;2489c38cd">&sect;</ulink>
     </para>

     <para>
      If a syntax error occurred in a SQL-language or PL/pgSQL-language
      <command>CREATE FUNCTION</command> or <command>DO</command> command
      executed in a logical replication worker, the worker process would
      crash with a null pointer dereference or assertion failure.
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [309857f9c] 2022-08-10 13:37:25 -0400
Branch: REL_15_STABLE Release: REL_15_0 [ad3e07c15] 2022-08-10 13:37:25 -0400
Branch: REL_14_STABLE [95bfadd4e] 2022-08-10 13:37:25 -0400
Branch: REL_13_STABLE [71caf3c4d] 2022-08-10 13:37:25 -0400
Branch: REL_12_STABLE [5b948b5c1] 2022-08-10 13:37:25 -0400
Branch: REL_11_STABLE [442dbd669] 2022-08-10 13:37:25 -0400
Branch: REL_10_STABLE [1446612c5] 2022-08-10 13:37:25 -0400
-->
     <para>
      Fix handling of read-write expanded datums that are passed to SQL
      functions (Tom Lane)
      <ulink url="&commit_baseurl;95bfadd4e">&sect;</ulink>
     </para>

     <para>
      If a non-inlined SQL function uses a parameter in more than one
      place, and one of those functions expects to be able to modify
      read-write datums in place, then later uses of the parameter would
      observe the wrong value.  (Within
      core <productname>PostgreSQL</productname>, the expanded-datum
      mechanism is only used for array and composite-type values; but
      extensions might use it for other structured types.)
     </para>
    </listitem>

    <listitem>
<!--
Author: Daniel Gustafsson <dgustafsson@postgresql.org>
Branch: master [8cb2a22bb] 2022-09-12 12:59:06 +0200
Branch: REL_15_STABLE Release: REL_15_0 [56d238846] 2022-09-12 12:59:06 +0200
Branch: REL_14_STABLE [13b8a1c19] 2022-09-12 12:59:06 +0200
Branch: REL_13_STABLE [eb8b84807] 2022-09-12 12:59:06 +0200
Branch: REL_12_STABLE [9ebfbd23b] 2022-09-12 12:59:06 +0200
-->
     <para>
      Fix type <type>circle</type>'s equality comparator to handle NaNs
      properly (Ranier Vilela)
      <ulink url="&commit_baseurl;13b8a1c19">&sect;</ulink>
     </para>

     <para>
      If the left-hand circle had a floating-point NaN for its radius,
      it would be considered equal to a circle with the same center and
      any radius.
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [1058555a5] 2022-08-31 10:42:05 -0400
Branch: REL_15_STABLE Release: REL_15_0 [61f6e5c23] 2022-08-31 10:42:05 -0400
Branch: REL_14_STABLE [e969f1ae2] 2022-08-31 10:42:05 -0400
Branch: REL_13_STABLE [f204ad3a2] 2022-08-31 10:42:05 -0400
Branch: REL_12_STABLE [a53e0ea78] 2022-08-31 10:42:05 -0400
Branch: REL_11_STABLE [f5aa855cd] 2022-08-31 10:42:05 -0400
Branch: REL_10_STABLE [cba393a10] 2022-08-31 10:42:05 -0400
-->
     <para>
      In Snowball dictionaries, don't try to stem excessively-long words
      (Olly Betts, Tom Lane)
      <ulink url="&commit_baseurl;e969f1ae2">&sect;</ulink>
     </para>

     <para>
      If the input word exceeds 1000 bytes, return it as-is after case
      folding, rather than trying to run it through the Snowball code.
      This restriction protects against a known
      recursion-to-stack-overflow problem in the Turkish stemmer, and it
      seems like good insurance against any other safety or performance
      issues that may exist in the Snowball stemmers.  Such a long string
      is surely not a word in any human language, so it's doubtful that
      the stemmer would have done anything desirable with it anyway.
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [a46621942] 2022-08-14 12:05:27 -0400
Branch: REL_15_STABLE Release: REL_15_0 [9ae484121] 2022-08-14 12:05:27 -0400
Branch: REL_14_STABLE [06602372b] 2022-08-14 12:05:27 -0400
Branch: REL_13_STABLE [9fe285f85] 2022-08-14 12:05:27 -0400
Branch: REL_12_STABLE [ee8a2f9d7] 2022-08-14 12:05:27 -0400
Branch: REL_11_STABLE [84f9691a1] 2022-08-14 12:05:27 -0400
Branch: REL_10_STABLE [d3cf15dfc] 2022-08-14 12:05:27 -0400
-->
     <para>
      Fix use-after-free hazard in string comparisons (Tom Lane)
      <ulink url="&commit_baseurl;06602372b">&sect;</ulink>
     </para>

     <para>
      Improper memory management in the string comparison functions
      could result in scribbling on no-longer-allocated buffers,
      potentially breaking things for whatever is using that memory
      now.  This would only happen with fairly long strings (more than
      1kB), and only if an ICU collation is in use.
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [eec346611] 2022-10-17 11:35:23 -0400
Branch: REL_15_STABLE [2e3326929] 2022-10-17 11:35:23 -0400
Branch: REL_14_STABLE [8c611602b] 2022-10-17 11:35:23 -0400
Branch: REL_13_STABLE [62b263bf7] 2022-10-17 11:35:23 -0400
Branch: REL_12_STABLE [99b6b705d] 2022-10-17 11:35:23 -0400
-->
     <para>
      Add plan-time check for attempted access to a table that has no
      table access method (Tom Lane)
      <ulink url="&commit_baseurl;8c611602b">&sect;</ulink>
     </para>

     <para>
      This prevents a crash in some catalog-corruption scenarios, for
      example use of a view whose <literal>ON SELECT</literal> rule is
      missing.
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [18a4a620e] 2022-10-11 18:54:31 -0400
Branch: REL_15_STABLE [e7b4ff327] 2022-10-11 18:54:31 -0400
Branch: REL_14_STABLE [b10546ecf] 2022-10-11 18:54:31 -0400
Branch: REL_13_STABLE [744270137] 2022-10-11 18:54:31 -0400
Branch: REL_12_STABLE [8f98352b5] 2022-10-11 18:54:31 -0400
Branch: REL_11_STABLE [6c1de98ba] 2022-10-11 18:54:31 -0400
Branch: REL_10_STABLE [ab35b9dd7] 2022-10-11 18:54:31 -0400
-->
     <para>
      Prevent postmaster crash when shared-memory state is corrupted
      (Tom Lane)
      <ulink url="&commit_baseurl;b10546ecf">&sect;</ulink>
     </para>

     <para>
      The postmaster process is supposed to survive and initiate a
      database restart if shared memory becomes corrupted, but one
      bit of code was being insufficiently cautious about that.
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [f25bed380] 2022-08-24 13:02:19 -0400
Branch: REL_15_STABLE Release: REL_15_0 [3d3c05c70] 2022-08-24 13:02:19 -0400
Branch: REL_14_STABLE [444ec169a] 2022-08-24 13:01:40 -0400
Branch: REL_13_STABLE [2d1f1523c] 2022-08-24 13:01:40 -0400
Branch: REL_12_STABLE [599a487b0] 2022-08-24 13:01:40 -0400
Branch: REL_11_STABLE [310d734ef] 2022-08-24 13:01:40 -0400
Branch: REL_10_STABLE [f5157a9ac] 2022-08-24 13:01:40 -0400
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [e07ebd4b6] 2022-08-13 15:21:28 -0400
Branch: REL_15_STABLE Release: REL_15_0 [00ac61695] 2022-08-13 15:21:28 -0400
Branch: REL_14_STABLE [496ab1d6c] 2022-08-13 15:21:28 -0400
Branch: REL_13_STABLE [60f876317] 2022-08-13 15:21:28 -0400
Branch: REL_12_STABLE [ba516fb07] 2022-08-13 15:21:28 -0400
Branch: REL_11_STABLE [b744e13b0] 2022-08-13 15:21:28 -0400
Branch: REL_10_STABLE [362032f17] 2022-08-13 15:21:28 -0400
-->
     <para>
      Add some more defenses against recursion till stack overrun
      (Richard Guo, Tom Lane)
      <ulink url="&commit_baseurl;444ec169a">&sect;</ulink>
      <ulink url="&commit_baseurl;496ab1d6c">&sect;</ulink>
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [55d9cd46f] 2022-08-13 17:00:32 -0400
Branch: REL_15_STABLE Release: REL_15_0 [aee954373] 2022-08-13 16:59:58 -0400
Branch: REL_14_STABLE [1dfc9193a] 2022-08-13 16:59:58 -0400
Branch: REL_13_STABLE [4878ea717] 2022-08-13 16:59:58 -0400
-->
     <para>
      Avoid misbehavior when choosing hash table size with very
      small <varname>work_mem</varname> and large tuples (Zhang Mingli)
      <ulink url="&commit_baseurl;1dfc9193a">&sect;</ulink>
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [1c1294be7] 2022-08-31 16:23:35 -0400
Branch: REL_15_STABLE Release: REL_15_0 [0c599e748] 2022-08-31 16:23:20 -0400
Branch: REL_14_STABLE [feec1b2d5] 2022-08-31 16:23:20 -0400
Branch: REL_13_STABLE [45f7152b9] 2022-08-31 16:23:20 -0400
Branch: REL_12_STABLE [8fc6b9635] 2022-08-31 16:23:20 -0400
Branch: REL_11_STABLE [cb9232d16] 2022-08-31 16:23:20 -0400
Branch: REL_10_STABLE [fd640dbb8] 2022-08-31 16:23:20 -0400
-->
     <para>
      Avoid long-term memory leakage in the autovacuum launcher process
      (Reid Thompson)
      <ulink url="&commit_baseurl;feec1b2d5">&sect;</ulink>
     </para>

     <para>
      The lack of field reports suggests that this problem is only latent
      in pre-v15 branches; but it's not very clear why, so back-patch the
      fix anyway.
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [bfd6b3bc4] 2022-09-16 13:23:01 -0400
Branch: REL_15_STABLE Release: REL_15_0 [b759bb671] 2022-09-16 13:23:01 -0400
Branch: REL_14_STABLE [56d45fdab] 2022-09-16 13:23:01 -0400
Branch: REL_13_STABLE [c18d946e2] 2022-09-16 13:23:01 -0400
Branch: REL_12_STABLE [b3b88d748] 2022-09-16 13:23:01 -0400
Branch: REL_11_STABLE [7391ab28a] 2022-09-16 13:23:01 -0400
-->
     <para>
      Improve <application>PL/pgSQL</application>'s ability to handle
      parameters declared as <type>RECORD</type> (Tom Lane)
      <ulink url="&commit_baseurl;56d45fdab">&sect;</ulink>
     </para>

     <para>
      Build a separate function cache entry for each concrete type passed
      to the <type>RECORD</type> parameter during a session, much as we do
      for polymorphic parameters.  This allows some usages to work that
      previously failed with errors such as <quote>type of parameter does
      not match that when preparing the plan</quote>.
     </para>
    </listitem>

    <listitem>
<!--
Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
Branch: master [db1b931a4] 2022-10-14 19:06:26 +0200
Branch: REL_15_STABLE [27ca0bce5] 2022-10-14 19:06:26 +0200
Branch: REL_14_STABLE [b8af4166f] 2022-10-14 19:06:26 +0200
-->
     <para>
      In <application>libpq</application>, handle single-row mode
      correctly when pipelining (Denis Laxalde)
      <ulink url="&commit_baseurl;b8af4166f">&sect;</ulink>
     </para>

     <para>
      The single-row flag was not reset at the correct time if pipeline
      mode was also active.
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [bb9237a12] 2022-08-15 15:40:07 -0400
Branch: REL_15_STABLE Release: REL_15_0 [ef9f35964] 2022-08-15 15:40:07 -0400
Branch: REL_14_STABLE [d63a69157] 2022-08-15 15:40:07 -0400
Branch: REL_13_STABLE [e37e9a655] 2022-08-15 15:40:07 -0400
Branch: REL_12_STABLE [c19024d74] 2022-08-15 15:40:07 -0400
Branch: REL_11_STABLE [ee4a17e20] 2022-08-15 15:40:07 -0400
Branch: REL_10_STABLE [2a280832e] 2022-08-15 15:40:07 -0400
-->
     <para>
      Add missing guards for <literal>NULL</literal> connection pointer
      in <application>libpq</application> (Daniele Varrazzo, Tom Lane)
      <ulink url="&commit_baseurl;d63a69157">&sect;</ulink>
     </para>

     <para>
      There's a convention that <application>libpq</application> functions
      should check for a NULL PGconn argument, and fail gracefully instead
      of crashing.  <function>PQflush()</function>
      and <function>PQisnonblocking()</function> didn't get that memo, so
      fix them.
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [b7050e258] 2022-09-09 15:34:04 -0400
Branch: REL_15_STABLE Release: REL_15_0 [fbb54d742] 2022-09-09 15:34:04 -0400
Branch: REL_14_STABLE [be0b0528c] 2022-09-09 15:34:04 -0400
Branch: REL_13_STABLE [a6618842f] 2022-09-09 15:34:04 -0400
Branch: REL_12_STABLE [9fbc6d548] 2022-09-09 15:34:04 -0400
Branch: REL_11_STABLE [fe4e151d4] 2022-09-09 15:34:04 -0400
Branch: REL_10_STABLE [8fe26bca1] 2022-09-09 15:34:04 -0400
-->
     <para>
      In <application>ecpg</application>, fix omission of variable storage
      classes when multiple <type>varchar</type> or <type>bytea</type>
      variables are declared in the same declaration (Andrey Sokolov)
      <ulink url="&commit_baseurl;be0b0528c">&sect;</ulink>
     </para>

     <para>
      For example, <application>ecpg</application>
      translated <literal>static varchar str1[10], str2[20],
      str3[30];</literal> in such a way that only <varname>str1</varname>
      was marked <literal>static</literal>.
     </para>
    </listitem>

    <listitem>
<!--
Author: Robert Haas <rhaas@postgresql.org>
Branch: master [1f0c4fa25] 2022-10-21 08:21:55 -0400
Branch: REL_15_STABLE [5c013e620] 2022-10-21 08:31:39 -0400
Branch: REL_14_STABLE [aaad8adb0] 2022-10-21 08:39:48 -0400
Branch: REL_13_STABLE [0bf2cd160] 2022-10-21 08:45:08 -0400
Branch: REL_12_STABLE [475e9daf3] 2022-10-21 08:59:26 -0400
Branch: REL_11_STABLE [38214dabd] 2022-10-21 09:05:57 -0400
Branch: REL_10_STABLE [ba58266eb] 2022-10-21 09:11:47 -0400
-->
     <para>
      Allow cross-platform tablespace relocation
      in <application>pg_basebackup</application> (Robert Haas)
      <ulink url="&commit_baseurl;aaad8adb0">&sect;</ulink>
     </para>

     <para>
      Allow the remote path in <option>--tablespace-mapping</option> to be
      either a Unix-style or Windows-style absolute path, since the source
      server could be on a different OS than the local system.
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [495e73c20] 2022-11-01 12:48:01 -0400
Branch: REL_15_STABLE [8b0a5cf3f] 2022-11-01 12:48:01 -0400
Branch: REL_14_STABLE [0f2f5645a] 2022-11-01 12:48:01 -0400
Branch: REL_13_STABLE [a9fdb48b7] 2022-11-01 12:48:01 -0400
Branch: REL_12_STABLE [ca4c6764b] 2022-11-01 12:48:01 -0400
Branch: REL_11_STABLE [149e00192] 2022-11-01 12:48:01 -0400
Branch: REL_10_STABLE [56083ff30] 2022-11-01 12:48:01 -0400
-->
     <para>
      In <application>pg_stat_statements</application>, fix access to
      already-freed memory (zhaoqigui)
      <ulink url="&commit_baseurl;0f2f5645a">&sect;</ulink>
     </para>

     <para>
      This occurred if <application>pg_stat_statements</application>
      tracked a <command>ROLLBACK</command> command issued via extended
      query protocol.  In debug builds it consistently led to an assertion
      failure.  In production builds there would often be no visible ill
      effect; but if the freed memory had already been reused, the likely
      result would be to store garbage for the query string.
     </para>
    </listitem>

    <listitem>
<!--
Author: Etsuro Fujita <efujita@postgresql.org>
Branch: master [9320cfdd0] 2022-09-14 18:45:00 +0900
Branch: REL_15_STABLE Release: REL_15_0 [64387c540] 2022-09-14 18:45:01 +0900
Branch: REL_14_STABLE [b53d104ae] 2022-09-14 18:45:03 +0900
Branch: REL_13_STABLE [6749d4e8c] 2022-09-14 18:45:04 +0900
Branch: REL_12_STABLE [87fd3c902] 2022-09-14 18:45:06 +0900
Branch: REL_11_STABLE [07d81d1e5] 2022-09-14 18:45:07 +0900
Branch: REL_10_STABLE [d4adff0e9] 2022-09-14 18:45:09 +0900
-->
     <para>
      In <application>postgres_fdw</application>, ensure that target lists
      constructed for EvalPlanQual plans will have all required columns
      (Richard Guo, Etsuro Fujita)
      <ulink url="&commit_baseurl;b53d104ae">&sect;</ulink>
     </para>

     <para>
      This avoids <quote>variable not found in subplan target list</quote>
      errors in rare cases.
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [c4b6d218e] 2022-09-09 12:41:36 -0400
Branch: REL_15_STABLE Release: REL_15_0 [100a8ca2c] 2022-09-09 12:41:36 -0400
Branch: REL_14_STABLE [e55ccb3b1] 2022-09-09 12:41:36 -0400
Branch: REL_13_STABLE [a61095aa7] 2022-09-09 12:41:36 -0400
Branch: REL_12_STABLE [23fe89a61] 2022-09-09 12:41:36 -0400
Branch: REL_11_STABLE [4d3f54bd7] 2022-09-09 12:41:36 -0400
Branch: REL_10_STABLE [95028d9de] 2022-09-09 12:41:36 -0400
-->
     <para>
      Reject unwanted output from the platform's
      <function>uuid_create()</function> function (Nazir Bilal Yavuz)
      <ulink url="&commit_baseurl;e55ccb3b1">&sect;</ulink>
     </para>

     <para>
      The <application>uuid-ossp</application> module expects
      libc's <function>uuid_create()</function> to produce a version-1
      UUID, but recent NetBSD releases produce a version-4 (random) UUID
      instead.  Check for that, and complain if so.  Drop the
      documentation's claim that the NetBSD implementation is usable
      for <application>uuid-ossp</application>.
      (If a version-4 UUID is okay for your purposes, you don't
      need <application>uuid-ossp</application> at all; just
      use <function>gen_random_uuid()</function>.)
     </para>
    </listitem>

    <listitem>
<!--
Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
Branch: REL_14_STABLE [4f6d1cfd6] 2022-10-11 09:56:13 +0200
Branch: REL_13_STABLE [33d979aee] 2022-10-11 09:56:13 +0200
Branch: REL_12_STABLE [fa5c13178] 2022-10-11 09:56:13 +0200
Branch: REL_11_STABLE [dd8263873] 2022-10-11 09:56:13 +0200
Branch: REL_10_STABLE [8bf470527] 2022-10-11 09:56:13 +0200
-->
     <para>
      Include new Perl test modules in standard installations
      (&Aacute;lvaro Herrera)
      <ulink url="&commit_baseurl;4f6d1cfd6">&sect;</ulink>
     </para>

     <para>
      Add <filename>PostgreSQL/Test/Cluster.pm</filename> and
      <filename>PostgreSQL/Test/Utils.pm</filename> to the standard
      installation file set in pre-version-15 branches.  This is for the
      benefit of extensions that want to use newly-written test code in
      older branches.
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [8acd8f869] 2022-08-30 17:28:37 -0400
Branch: REL_15_STABLE Release: REL_15_0 [529d8f373] 2022-08-30 17:28:55 -0400
Branch: REL_14_STABLE [464db4676] 2022-08-30 17:29:03 -0400
Branch: REL_13_STABLE [a94b019d4] 2022-08-30 17:29:08 -0400
Branch: REL_12_STABLE [68bfe36c5] 2022-08-30 17:29:13 -0400
Branch: REL_11_STABLE [6fd58ca77] 2022-08-30 17:29:17 -0400
Branch: REL_10_STABLE [5bed28e69] 2022-08-30 17:29:23 -0400
-->
     <para>
      On NetBSD, force dynamic symbol resolution at postmaster start
      (Andres Freund, Tom Lane)
      <ulink url="&commit_baseurl;464db4676">&sect;</ulink>
     </para>

     <para>
      This avoids a risk of deadlock in the dynamic linker on NetBSD 10.
     </para>
    </listitem>

    <listitem>
<!--
Author: Thomas Munro <tmunro@postgresql.org>
Branch: master [c2ae01f69] 2022-10-19 22:18:26 +1300
Branch: REL_15_STABLE [af64846e1] 2022-10-19 22:18:54 +1300
Branch: REL_14_STABLE [d033f8f8b] 2022-10-19 22:32:14 +1300
Branch: REL_13_STABLE [cf94cb586] 2022-10-19 22:38:58 +1300
Branch: REL_12_STABLE [aa34bc4e2] 2022-10-19 22:44:53 +1300
Branch: REL_11_STABLE [da3a6825e] 2022-10-19 22:49:25 +1300
-->
     <para>
      Fix incompatibilities with LLVM 15 (Thomas Munro, Andres Freund)
      <ulink url="&commit_baseurl;d033f8f8b">&sect;</ulink>
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [1c72d82c2] 2022-11-02 17:37:29 -0400
Branch: REL_15_STABLE [a5737e765] 2022-11-02 17:37:26 -0400
Branch: REL_14_STABLE [058c7b5dd] 2022-11-02 17:37:26 -0400
Branch: REL_13_STABLE [c479492c0] 2022-11-02 17:37:26 -0400
Branch: REL_12_STABLE [5ecf836e9] 2022-11-02 17:37:26 -0400
Branch: REL_11_STABLE [a0f9be1f9] 2022-11-02 17:37:26 -0400
Branch: REL_10_STABLE [19cefebe7] 2022-11-02 17:37:26 -0400
-->
     <para>
      Allow use of <function>__sync_lock_test_and_set()</function> for
      spinlocks on any machine (Tom Lane)
      <ulink url="&commit_baseurl;058c7b5dd">&sect;</ulink>
     </para>

     <para>
      This eases porting to new machine architectures, at least if you're
      using a compiler that supports this GCC builtin function.
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [717ec1aae] 2022-10-16 15:27:04 -0400
Branch: REL_15_STABLE [24c4c2617] 2022-10-16 15:27:04 -0400
Branch: REL_14_STABLE [18e60712d] 2022-10-16 15:27:04 -0400
Branch: REL_13_STABLE [bc7a40b42] 2022-10-16 15:27:04 -0400
Branch: REL_12_STABLE [3d7df87c4] 2022-10-16 15:27:04 -0400
Branch: REL_11_STABLE [6618c276b] 2022-10-16 15:27:04 -0400
Branch: REL_10_STABLE [02d074e3e] 2022-10-16 15:27:04 -0400
Branch: REL9_6_STABLE [9bfa043a1] 2022-10-16 15:27:04 -0400
Branch: REL9_5_STABLE [377b37cf7] 2022-10-16 15:27:04 -0400
Branch: REL9_4_STABLE [57dfb6ce6] 2022-10-16 15:27:04 -0400
Branch: REL9_3_STABLE [ee4c44014] 2022-10-16 15:27:04 -0400
Branch: REL9_2_STABLE [fec443414] 2022-10-16 15:27:04 -0400
-->
     <para>
      Rename symbol <literal>REF</literal> to <literal>REF_P</literal> to
      avoid compile failure on recent macOS (Tom Lane)
      <ulink url="&commit_baseurl;18e60712d">&sect;</ulink>
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [450ee7012] 2022-10-16 11:47:44 -0400
Branch: REL_15_STABLE [bd4b2926e] 2022-10-16 11:47:44 -0400
Branch: REL_14_STABLE [6fa431d84] 2022-10-16 11:47:44 -0400
Branch: REL_13_STABLE [a2acafc7b] 2022-10-16 11:47:44 -0400
Branch: REL_12_STABLE [d33ac1ec2] 2022-10-16 11:47:44 -0400
-->
     <para>
      Avoid using <function>sprintf</function>, to avoid compile-time
      deprecation warnings (Tom Lane)
      <ulink url="&commit_baseurl;6fa431d84">&sect;</ulink>
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: REL_15_STABLE Release: REL_15_0 [f9a56e726] 2022-09-20 18:59:53 -0400
Branch: REL_14_STABLE [dcd7dbed5] 2022-09-20 18:59:53 -0400
Branch: REL_13_STABLE [43f72e0f7] 2022-09-20 18:59:53 -0400
Branch: REL_12_STABLE [52a5fd5b9] 2022-09-20 18:59:53 -0400
Branch: REL_11_STABLE [9afdf3950] 2022-09-20 18:59:53 -0400
Branch: REL_10_STABLE [4c5a29c0e] 2022-09-20 18:59:53 -0400
Branch: REL9_6_STABLE [ca8fd341e] 2022-09-20 18:59:53 -0400
Branch: REL9_5_STABLE [1b6986599] 2022-09-20 18:59:53 -0400
Branch: REL9_4_STABLE [7d5d3f05b] 2022-09-20 18:59:53 -0400
Branch: REL9_3_STABLE [8c8ee5c99] 2022-09-20 18:59:54 -0400
Branch: REL9_2_STABLE [5d3ce0d82] 2022-09-20 18:59:54 -0400
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [152c9f7b8] 2022-09-20 12:04:37 -0400
Branch: REL_15_STABLE Release: REL_15_0 [b7d9b0c26] 2022-09-20 12:04:37 -0400
Branch: REL_14_STABLE [2e124d857] 2022-09-20 12:04:37 -0400
Branch: REL_13_STABLE [ca3b730ba] 2022-09-20 12:04:37 -0400
Branch: REL_12_STABLE [f38a0bde2] 2022-09-20 12:04:37 -0400
Branch: REL_11_STABLE [6ae8aee0b] 2022-09-20 12:04:37 -0400
Branch: REL_10_STABLE [760308704] 2022-09-20 12:04:37 -0400
Branch: REL9_6_STABLE [85c077f9e] 2022-09-20 12:04:37 -0400
Branch: REL9_5_STABLE [612e79661] 2022-09-20 12:04:37 -0400
Branch: REL_14_STABLE [88c947cb5] 2022-09-21 13:52:38 -0400
Branch: REL_13_STABLE [db8e36682] 2022-09-21 13:52:38 -0400
Branch: REL_12_STABLE [9a2267bcf] 2022-09-21 13:52:38 -0400
Branch: REL_11_STABLE [bb8dbc9f2] 2022-09-21 13:52:38 -0400
Branch: REL_10_STABLE [9c69e2640] 2022-09-21 13:52:38 -0400
Branch: REL9_6_STABLE [c705646b7] 2022-09-21 13:52:38 -0400
Branch: REL9_5_STABLE [96e595124] 2022-09-21 13:52:38 -0400
Branch: REL9_4_STABLE [3c5a33a52] 2022-09-21 13:52:38 -0400
Branch: REL9_3_STABLE [bf2161234] 2022-09-21 13:52:38 -0400
Branch: REL9_2_STABLE [850cb88e4] 2022-09-21 13:52:38 -0400
-->
     <para>
      Silence assorted compiler warnings from clang 15 and later (Tom Lane)
      <ulink url="&commit_baseurl;dcd7dbed5">&sect;</ulink>
      <ulink url="&commit_baseurl;2e124d857">&sect;</ulink>
      <ulink url="&commit_baseurl;88c947cb5">&sect;</ulink>
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [e7c7605a7] 2022-11-01 17:08:28 -0400
Branch: REL_15_STABLE [c3d16eb3d] 2022-11-01 17:08:49 -0400
Branch: REL_14_STABLE [97bb80b1b] 2022-11-01 17:08:58 -0400
Branch: REL_13_STABLE [ebf48810b] 2022-11-01 17:09:04 -0400
Branch: REL_12_STABLE [ec9a000d8] 2022-11-01 17:09:09 -0400
Branch: REL_11_STABLE [b1cb77bdf] 2022-11-01 17:09:16 -0400
Branch: REL_10_STABLE [b3326a753] 2022-11-01 17:09:21 -0400
-->
     <para>
      Update time zone data files to <application>tzdata</application>
      release 2022f for DST law changes in Chile, Fiji, Iran, Jordan,
      Mexico, Palestine, and Syria, plus historical corrections for Chile,
      Crimea, Iran, and Mexico. (Tom Lane)
      <ulink url="&commit_baseurl;97bb80b1b">&sect;</ulink>
     </para>

     <para>
      Also, the Europe/Kiev zone has been renamed to Europe/Kyiv.
      Also, the following zones have been merged into nearby,
      more-populous zones whose clocks have agreed with them since 1970:
      Antarctica/Vostok, Asia/Brunei,
      Asia/Kuala_Lumpur, Atlantic/Reykjavik, Europe/Amsterdam,
      Europe/Copenhagen, Europe/Luxembourg, Europe/Monaco, Europe/Oslo,
      Europe/Stockholm, Indian/Christmas, Indian/Cocos, Indian/Kerguelen,
      Indian/Mahe, Indian/Reunion, Pacific/Chuuk, Pacific/Funafuti,
      Pacific/Majuro, Pacific/Pohnpei, Pacific/Wake and Pacific/Wallis.
      (This indirectly affects zones that were already links to one of
      these: Arctic/Longyearbyen, Atlantic/Jan_Mayen, Iceland,
      Pacific/Ponape, Pacific/Truk, and Pacific/Yap.)  America/Nipigon,
      America/Rainy_River, America/Thunder_Bay, Europe/Uzhgorod, and
      Europe/Zaporozhye were also merged into nearby zones after
      discovering that their claimed post-1970 differences from those
      zones seem to have been errors.
      In all these cases, the previous zone name remains as an alias;
      but the actual data is that of the zone that was merged into.
     </para>

     <para>
      These zone mergers result in loss of pre-1970 timezone history for
      the merged zones, which may be troublesome for applications
      expecting consistency of <type>timestamptz</type> display.  As an
      example, the stored value <literal>1944-06-01 12:00 UTC</literal>
      would previously display as <literal>1944-06-01
      13:00:00+01</literal> if the Europe/Stockholm zone is selected, but
      now it will read out as <literal>1944-06-01 14:00:00+02</literal>.
     </para>

     <para>
      It is possible to build the time zone data files with options that
      will restore the older zone data, but that choice also inserts a lot
      of other old (and typically poorly-attested) zone data, resulting in
      more total changes from the previous release than accepting these
      upstream changes does.  <productname>PostgreSQL</productname> has
      chosen to ship the <productname>tzdb</productname> data
      as-recommended, and so far as we are aware most major operating
      system distributions are doing likewise.  However, if these changes
      cause significant problems for your application, a possible solution
      is to install a local build of the time zone data files using
      <productname>tzdb</productname>'s backwards-compatibility options
      (see their <literal>PACKRATDATA</literal>
      and <literal>PACKRATLIST</literal> options).
     </para>
    </listitem>

   </itemizedlist>

  </sect2>
 </sect1>

 <sect1 id="release-14-5">
  <title>Release 14.5</title>

  <formalpara>
  <title>Release date:</title>
  <para>2022-08-11</para>
  </formalpara>

  <para>
   This release contains a variety of fixes from 14.4.
   For information about new features in major release 14, see
   <xref linkend="release-14"/>.
  </para>

  <sect2>
   <title>Migration to Version 14.5</title>

   <para>
    A dump/restore is not required for those running 14.X.
   </para>

   <para>
    However, if you are upgrading from a version earlier than 14.4,
    see <xref linkend="release-14-4"/>.
   </para>
  </sect2>

  <sect2>
   <title>Changes</title>

   <itemizedlist>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [b9b21acc7] 2022-08-08 11:12:31 -0400
Branch: REL_15_STABLE [cc7e0feba] 2022-08-08 11:12:31 -0400
Branch: REL_14_STABLE [5721da7e4] 2022-08-08 11:12:31 -0400
Branch: REL_13_STABLE [7e92f78ab] 2022-08-08 11:12:31 -0400
Branch: REL_12_STABLE [5579726bd] 2022-08-08 11:12:31 -0400
Branch: REL_11_STABLE [f52d2fbd8] 2022-08-08 11:12:31 -0400
Branch: REL_10_STABLE [5919bb5a5] 2022-08-08 11:12:31 -0400
-->
     <para>
      Do not let extension scripts replace objects not already belonging
      to the extension (Tom Lane)
      <ulink url="&commit_baseurl;5721da7e4">&sect;</ulink>
     </para>

     <para>
      This change prevents extension scripts from doing <command>CREATE
      OR REPLACE</command> if there is an existing object that does not
      belong to the extension.  It also prevents <command>CREATE IF NOT
      EXISTS</command> in the same situation.  This prevents a form of
      trojan-horse attack in which a hostile database user could become
      the owner of an extension object and then modify it to compromise
      future uses of the object by other users.  As a side benefit, it
      also reduces the risk of accidentally replacing objects one did
      not mean to.
     </para>

     <para>
      The <productname>PostgreSQL</productname> Project thanks
      Sven Klemm for reporting this problem.
      (CVE-2022-2625)
     </para>
    </listitem>

    <listitem>
<!--
Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
Branch: master [9e4f914b5] 2022-07-28 08:40:06 +0200
Branch: REL_15_STABLE [8348413db] 2022-07-28 08:26:05 +0200
Branch: REL_14_STABLE [a3aacb7cb] 2022-07-28 08:26:05 +0200
Branch: REL_13_STABLE [9a7e26b9c] 2022-07-28 08:26:05 +0200
Branch: REL_12_STABLE [6d20f8c5a] 2022-07-28 08:26:05 +0200
Branch: REL_11_STABLE [5a10c262f] 2022-07-28 08:26:05 +0200
Branch: REL_10_STABLE [084318c33] 2022-07-28 08:26:05 +0200
Branch: master [59be1c942] 2022-07-29 12:50:47 +0200
Branch: REL_15_STABLE [798d64488] 2022-07-29 12:50:47 +0200
Branch: REL_14_STABLE [4d8d85740] 2022-07-29 12:50:47 +0200
Branch: REL_13_STABLE [7cfe688de] 2022-07-29 12:50:47 +0200
Branch: REL_12_STABLE [658e5d534] 2022-07-29 12:50:47 +0200
Branch: REL_11_STABLE [fcd72cf29] 2022-07-29 12:50:47 +0200
Branch: REL_10_STABLE [6ffaf75a8] 2022-07-29 12:50:47 +0200
Author: Andrew Dunstan <andrew@dunslane.net>
Branch: master [b998196bb] 2022-07-29 17:54:19 -0400
Branch: REL_15_STABLE [2eb3f167f] 2022-07-29 18:17:17 -0400
Branch: REL_14_STABLE [e90c4fc88] 2022-07-29 18:17:30 -0400
Branch: REL_13_STABLE [b76e136ce] 2022-07-29 18:17:36 -0400
Branch: REL_12_STABLE [4349a7615] 2022-07-29 18:17:42 -0400
Branch: REL_11_STABLE [3f9c20536] 2022-07-29 18:17:49 -0400
Branch: REL_10_STABLE [c308003d2] 2022-07-29 18:17:55 -0400
Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
Branch: master [6c1c9f88a] 2022-08-06 15:52:10 +0200
Branch: REL_15_STABLE [6390bc740] 2022-08-06 15:52:10 +0200
Branch: REL_14_STABLE [9d5c96d9b] 2022-08-06 15:52:10 +0200
Branch: REL_13_STABLE [8c5d9ccca] 2022-08-06 15:52:10 +0200
Branch: REL_12_STABLE [782e5631e] 2022-08-06 15:52:10 +0200
Branch: REL_11_STABLE [772e6383d] 2022-08-06 15:52:10 +0200
Branch: REL_10_STABLE [ad0e08394] 2022-08-06 15:52:10 +0200
-->
     <para>
      Fix replay of <command>CREATE DATABASE</command> WAL
      records on standby servers
      (Kyotaro Horiguchi, Asim R Praveen, Paul Guo)
      <ulink url="&commit_baseurl;a3aacb7cb">&sect;</ulink>
      <ulink url="&commit_baseurl;4d8d85740">&sect;</ulink>
      <ulink url="&commit_baseurl;e90c4fc88">&sect;</ulink>
      <ulink url="&commit_baseurl;9d5c96d9b">&sect;</ulink>
     </para>

     <para>
      Standby servers may encounter missing tablespace directories
      when replaying database-creation WAL records.  Prior to this
      patch, a standby would fail to recover in such a case;
      however, such directories could be legitimately missing.
      Create the tablespace (as a plain directory), then check that it
      has been dropped again once replay reaches a consistent state.
     </para>
    </listitem>

    <listitem>
<!--
Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
Branch: REL_14_STABLE [961cab0a5] 2022-07-27 07:55:13 +0200
Branch: REL_13_STABLE [16e7a8fd8] 2022-07-27 07:55:13 +0200
Branch: REL_12_STABLE [ca347f543] 2022-07-27 07:55:12 +0200
Branch: REL_11_STABLE [258c89641] 2022-07-27 07:55:12 +0200
Branch: REL_10_STABLE [7bdbbb873] 2022-07-27 07:55:12 +0200
Author: Thomas Munro <tmunro@postgresql.org>
Branch: master [9d3444dcc] 2022-07-22 16:57:12 +1200
Branch: REL_15_STABLE [6d306ab73] 2022-07-22 16:57:36 +1200
Branch: REL_14_STABLE [fee0165fc] 2022-07-22 16:57:57 +1200
Branch: master [4fc6b6eef] 2022-07-28 14:26:12 +1200
Branch: REL_15_STABLE [fc4e5af30] 2022-07-28 14:27:28 +1200
Branch: REL_14_STABLE [5ad478c9d] 2022-07-28 14:27:06 +1200
-->
     <para>
      Support <quote>in place</quote> tablespaces
      (Thomas Munro, Michael Paquier, &Aacute;lvaro Herrera)
      <ulink url="&commit_baseurl;961cab0a5">&sect;</ulink>
      <ulink url="&commit_baseurl;fee0165fc">&sect;</ulink>
      <ulink url="&commit_baseurl;5ad478c9d">&sect;</ulink>
     </para>

     <para>
      Normally a Postgres tablespace is a symbolic link to a directory on
      some other filesystem.  This change allows it to just be a plain
      directory.  While this has no use for separating tables onto
      different filesystems, it is a convenient setup for testing.
      Moreover, it is necessary to support the <command>CREATE
      DATABASE</command> replay fix, which transiently creates a missing
      tablespace as an <quote>in place</quote> tablespace.
     </para>
    </listitem>

    <listitem>
<!--
Author: Noah Misch <noah@leadboat.com>
Branch: master Release: REL_15_BR [00377b9a0] 2022-06-25 09:07:41 -0700
Branch: REL_14_STABLE [ace997386] 2022-06-25 09:07:44 -0700
Branch: REL_13_STABLE [8782ce49e] 2022-06-25 09:07:45 -0700
Branch: REL_12_STABLE [93731d549] 2022-06-25 09:07:45 -0700
Branch: REL_11_STABLE [6d49cc286] 2022-06-25 09:07:46 -0700
Branch: REL_10_STABLE [88b39e614] 2022-06-25 09:07:46 -0700
-->
     <para>
      Fix permissions checks in <command>CREATE INDEX</command> (Nathan
      Bossart, Noah Misch)
      <ulink url="&commit_baseurl;ace997386">&sect;</ulink>
     </para>

     <para>
      The fix for CVE-2022-1552 caused <command>CREATE INDEX</command> to
      apply the table owner's permissions while performing lookups of
      operator classes and other objects, where formerly the calling
      user's permissions were used.  This broke dump/restore scenarios,
      because <application>pg_dump</application> issues <command>CREATE
      INDEX</command> before re-granting permissions.
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [f92944137] 2022-07-26 13:07:03 -0400
Branch: REL_15_STABLE [a0c632c1d] 2022-07-26 13:07:03 -0400
Branch: REL_14_STABLE [3e1297a63] 2022-07-26 13:07:03 -0400
Branch: REL_13_STABLE [6c193c2ac] 2022-07-26 13:07:03 -0400
Branch: REL_12_STABLE [968b89257] 2022-07-26 13:07:03 -0400
Branch: REL_11_STABLE [9e3e1ac45] 2022-07-26 13:07:03 -0400
Branch: REL_10_STABLE [964f42aa2] 2022-07-26 13:07:03 -0400
-->
     <para>
      In extended query protocol, force an immediate commit
      after <command>CREATE DATABASE</command> and other commands that
      can't run in a transaction block (Tom Lane)
      <ulink url="&commit_baseurl;3e1297a63">&sect;</ulink>
     </para>

     <para>
      If the client does not send a Sync message immediately after such a
      command, but instead sends another command, any failure in that
      command would lead to rolling back the preceding command, typically
      leaving inconsistent state on-disk (such as a missing or extra
      database directory).  The mechanisms intended to prevent that
      situation turn out to work for multiple commands in a simple-Query
      message, but not for a series of extended-protocol messages.  To
      prevent inconsistency without breaking use-cases that work today,
      force an implicit commit after such commands.
     </para>
    </listitem>

    <listitem>
<!--
Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
Branch: master Release: REL_15_BR [adf6d5dfb] 2022-06-27 08:21:08 +0300
Branch: REL_14_STABLE [e24615a00] 2022-06-27 08:24:30 +0300
Branch: REL_13_STABLE [7ba325fd7] 2022-06-27 08:24:35 +0300
Branch: REL_12_STABLE [af530898e] 2022-06-27 08:24:36 +0300
Branch: REL_11_STABLE [b49889f3c] 2022-06-27 08:24:37 +0300
Branch: REL_10_STABLE [4822b4627] 2022-06-27 08:24:38 +0300
-->
     <para>
      Fix race condition when checking transaction visibility (Simon Riggs)
      <ulink url="&commit_baseurl;e24615a00">&sect;</ulink>
     </para>

     <para>
      <function>TransactionIdIsInProgress</function> could
      report <literal>false</literal> before the subject transaction is
      considered visible, leading to various misbehaviors.  The race
      condition window is normally very narrow, but use of synchronous
      replication makes it much wider, because the wait for a synchronous
      replica happens in that window.
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [1aa8dad41] 2022-08-03 17:33:42 -0400
Branch: REL_15_STABLE [14168d57b] 2022-08-03 17:33:42 -0400
Branch: REL_14_STABLE [445b9020c] 2022-08-03 17:33:42 -0400
Branch: REL_13_STABLE [da4ed7588] 2022-08-03 17:33:42 -0400
Branch: master [cc1164799] 2022-08-04 11:11:33 -0400
Branch: REL_15_STABLE [11e7d626c] 2022-08-04 11:11:22 -0400
Branch: REL_14_STABLE [1a9ac8492] 2022-08-04 11:11:22 -0400
Branch: REL_13_STABLE [8d38ccafc] 2022-08-04 11:11:22 -0400
-->
     <para>
      Fix incorrect plans when sorting by an expression that contains a
      non-top-level set-returning function (Richard Guo, Tom Lane)
      <ulink url="&commit_baseurl;445b9020c">&sect;</ulink>
      <ulink url="&commit_baseurl;1a9ac8492">&sect;</ulink>
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [e5fc38ac3] 2022-08-05 12:46:44 -0400
Branch: REL_15_STABLE [7394028be] 2022-08-05 12:46:44 -0400
Branch: REL_14_STABLE [7c6ce0475] 2022-08-05 12:46:45 -0400
-->
     <para>
      Fix incorrect permissions-checking code for extended statistics
      (Richard Guo)
      <ulink url="&commit_baseurl;7c6ce0475">&sect;</ulink>
     </para>

     <para>
      If there are extended statistics on a table that the user has only
      partial <literal>SELECT</literal> permissions on, some queries would
      fail with <quote>unrecognized node type</quote> errors.
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [e33ae53dd] 2022-08-05 15:00:03 -0400
Branch: REL_15_STABLE [43f76fb19] 2022-08-05 15:00:03 -0400
Branch: REL_14_STABLE [3fe2fc6bb] 2022-08-05 15:00:03 -0400
-->
     <para>
      Fix extended statistics machinery to handle MCV-type statistics on
      boolean-valued expressions (Tom Lane)
      <ulink url="&commit_baseurl;3fe2fc6bb">&sect;</ulink>
     </para>

     <para>
      Statistics collection worked fine, but a query containing such an
      expression in <literal>WHERE</literal> would fail
      with <quote>unknown clause type</quote>.
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [94da73281] 2022-08-05 13:58:47 -0400
Branch: REL_15_STABLE [b6d147bcb] 2022-08-05 13:58:48 -0400
Branch: REL_14_STABLE [ea6c91696] 2022-08-05 13:58:48 -0400
Branch: REL_13_STABLE [c102d1106] 2022-08-05 13:58:49 -0400
Branch: master [4c81a50e5] 2022-08-05 15:57:46 -0400
Branch: REL_15_STABLE [6303df08f] 2022-08-05 15:57:46 -0400
Branch: REL_14_STABLE [b9243cada] 2022-08-05 15:57:46 -0400
Branch: REL_13_STABLE [476f9d533] 2022-08-05 15:57:46 -0400
-->
     <para>
      Avoid planner core dump with <literal><replaceable>constant</replaceable>
      = ANY(<replaceable>array</replaceable>)</literal> clauses when
      there are MCV-type extended statistics on
      the <replaceable>array</replaceable> variable (Tom Lane)
      <ulink url="&commit_baseurl;ea6c91696">&sect;</ulink>
      <ulink url="&commit_baseurl;b9243cada">&sect;</ulink>
     </para>
    </listitem>

    <listitem>
<!--
Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
Branch: master [ec0925c22] 2022-08-05 09:47:26 +0200
Branch: REL_15_STABLE [e78fd9084] 2022-08-05 09:47:15 +0200
Branch: REL_14_STABLE [731d514ae] 2022-08-05 09:47:11 +0200
Branch: REL_13_STABLE [ab8556630] 2022-08-05 09:47:06 +0200
Branch: REL_12_STABLE [6e7b37264] 2022-08-05 09:47:02 +0200
Branch: REL_11_STABLE [ce8e06652] 2022-08-05 09:46:58 +0200
Branch: master [90a4b6413] 2022-08-05 11:55:52 +0200
Branch: REL_15_STABLE [aa242501a] 2022-08-05 11:55:52 +0200
Branch: REL_14_STABLE [6d9481cd0] 2022-08-05 11:55:52 +0200
Branch: REL_13_STABLE [d2a74621e] 2022-08-05 11:55:52 +0200
Branch: REL_12_STABLE [4ad4c1f41] 2022-08-05 11:55:52 +0200
Branch: REL_11_STABLE [91130dd31] 2022-08-05 11:55:52 +0200
-->
     <para>
      Fix <literal>ALTER TABLE ... ENABLE/DISABLE TRIGGER</literal> to
      handle recursion correctly for triggers on partitioned tables
      (&Aacute;lvaro Herrera, Amit Langote)
      <ulink url="&commit_baseurl;731d514ae">&sect;</ulink>
      <ulink url="&commit_baseurl;6d9481cd0">&sect;</ulink>
     </para>

     <para>
      In certain cases, a <quote>trigger does not exist</quote> failure
      would occur because the command would try to adjust the trigger on a
      child partition that doesn't have it.
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [e64cdab00] 2022-07-12 16:30:36 -0400
Branch: REL_15_STABLE [12c99c884] 2022-07-12 16:30:36 -0400
Branch: REL_14_STABLE [af72b0889] 2022-07-12 16:30:36 -0400
-->
     <para>
      Allow cancellation of <command>ANALYZE</command> while it is
      computing extended statistics (Tom Lane, Justin Pryzby)
      <ulink url="&commit_baseurl;af72b0889">&sect;</ulink>
     </para>

     <para>
      In some scenarios with high statistics targets, it was possible to
      spend many seconds in an un-cancellable sort operation.
     </para>
    </listitem>

    <listitem>
<!--
Author: Andrew Dunstan <andrew@dunslane.net>
Branch: master [89a39d4a4] 2022-07-03 17:08:25 -0400
Branch: REL_15_STABLE [7d9bf589b] 2022-07-03 17:27:03 -0400
Branch: REL_14_STABLE [7fd43684f] 2022-07-03 17:16:11 -0400
Branch: REL_13_STABLE [03cefe814] 2022-07-03 17:16:58 -0400
Branch: REL_12_STABLE [2cf875a4b] 2022-07-03 17:17:08 -0400
-->
     <para>
      Improve syntax error messages for type <type>jsonpath</type>
      (Andrew Dunstan)
      <ulink url="&commit_baseurl;7fd43684f">&sect;</ulink>
     </para>
    </listitem>

    <listitem>
<!--
Author: Fujii Masao <fujii@postgresql.org>
Branch: master [b24b2be11] 2022-07-20 09:57:01 +0900
Branch: REL_15_STABLE [0829cc43e] 2022-07-20 09:57:07 +0900
Branch: REL_14_STABLE [be2e842c8] 2022-07-20 09:53:37 +0900
Branch: REL_13_STABLE [162ade612] 2022-07-20 09:53:53 +0900
Branch: REL_12_STABLE [f0eb83f81] 2022-07-20 09:54:03 +0900
Branch: REL_11_STABLE [80c3ea918] 2022-07-20 09:54:10 +0900
Branch: REL_10_STABLE [2497d2b77] 2022-07-20 09:54:24 +0900
-->
     <para>
      Ensure that <function>pg_stop_backup()</function> cleans up session
      state properly (Fujii Masao)
      <ulink url="&commit_baseurl;be2e842c8">&sect;</ulink>
     </para>

     <para>
      This omission could lead to assertion failures or crashes later in
      the session.
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [4ddfbd2a8] 2022-07-31 13:43:17 -0400
Branch: REL_15_STABLE [d386b75df] 2022-07-31 13:43:17 -0400
Branch: REL_14_STABLE [e71d4254f] 2022-07-31 13:43:17 -0400
-->
     <para>
      Fix <function>trim_array()</function> to handle a zero-dimensional
      array argument sanely (Martin Kalcher)
      <ulink url="&commit_baseurl;e71d4254f">&sect;</ulink>
     </para>
    </listitem>

    <listitem>
<!--
Author: Dean Rasheed <dean.a.rasheed@gmail.com>
Branch: master [8d367a44d] 2022-07-07 13:08:08 +0100
Branch: REL_15_STABLE [ea9e59d70] 2022-07-07 13:08:06 +0100
Branch: REL_14_STABLE [8d8464445] 2022-07-07 13:08:03 +0100
Branch: REL_13_STABLE [f890223bc] 2022-07-07 13:08:00 +0100
Branch: REL_12_STABLE [f9c655d64] 2022-07-07 13:07:57 +0100
Branch: REL_11_STABLE [e88b1f1e2] 2022-07-07 13:07:54 +0100
Branch: REL_10_STABLE [8ace122d4] 2022-07-07 13:07:51 +0100
-->
     <para>
      Fix join alias matching in <literal>FOR [KEY] UPDATE/SHARE</literal>
      clauses (Dean Rasheed)
      <ulink url="&commit_baseurl;8d8464445">&sect;</ulink>
     </para>

     <para>
      In corner cases, a misleading error could be reported.
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [fd96d14d9] 2022-07-29 13:31:10 -0400
Branch: REL_15_STABLE [e6e804aa2] 2022-07-29 13:31:11 -0400
Branch: REL_14_STABLE [8df167baa] 2022-07-29 13:30:50 -0400
Branch: REL_13_STABLE [ba2002d02] 2022-07-29 13:30:50 -0400
Branch: REL_12_STABLE [d79f00e82] 2022-07-29 13:30:50 -0400
Branch: REL_11_STABLE [8dea18372] 2022-07-29 13:30:50 -0400
Branch: REL_10_STABLE [e6a48014d] 2022-07-29 13:30:50 -0400
Branch: master [83f1793d6] 2022-08-01 12:22:35 -0400
Branch: REL_15_STABLE [adc3ae6eb] 2022-08-01 12:22:35 -0400
Branch: REL_14_STABLE [d947a8bd5] 2022-08-01 12:22:35 -0400
Branch: REL_13_STABLE [331f8b851] 2022-08-01 12:22:35 -0400
Branch: REL_12_STABLE [5d280bc89] 2022-08-01 12:22:35 -0400
Branch: REL_11_STABLE [51d8b52fc] 2022-08-01 12:22:35 -0400
Branch: REL_10_STABLE [d54fc7e67] 2022-08-01 12:22:35 -0400
-->
     <para>
      Reject <literal>ROW()</literal> expressions and functions
      in <literal>FROM</literal> that have too many columns (Tom Lane)
      <ulink url="&commit_baseurl;8df167baa">&sect;</ulink>
      <ulink url="&commit_baseurl;d947a8bd5">&sect;</ulink>
     </para>

     <para>
      Cases with more than about 1600 columns are unsupported, and
      have always failed at execution.  However, it emerges that some
      earlier code could be driven to assertion failures or crashes by
      queries with more than 32K columns.  Add a parse-time check to
      prevent that.
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [b9654cece] 2022-07-21 13:56:02 -0400
Branch: REL_15_STABLE [c1d1e8469] 2022-07-21 13:56:05 -0400
Branch: REL_14_STABLE [da9a28fd5] 2022-07-21 13:56:02 -0400
Branch: REL_13_STABLE [5b5d43513] 2022-07-21 13:56:02 -0400
Branch: REL_12_STABLE [b243092a6] 2022-07-21 13:56:02 -0400
Branch: REL_11_STABLE [1078742af] 2022-07-21 13:56:02 -0400
Branch: REL_10_STABLE [6bceacfe8] 2022-07-21 13:56:02 -0400
-->
     <para>
      Fix dumping of a view using a function in <literal>FROM</literal>
      that returns a composite type, when column(s) of the composite type
      have been dropped since the view was made (Tom Lane)
      <ulink url="&commit_baseurl;da9a28fd5">&sect;</ulink>
     </para>

     <para>
      This oversight could lead to dump/reload
      or <application>pg_upgrade</application> failures, as the dumped
      view would have too many column aliases for the function.
     </para>
    </listitem>

    <listitem>
<!--
Author: Fujii Masao <fujii@postgresql.org>
Branch: master [ee7964776] 2022-07-20 09:56:42 +0900
Branch: REL_15_STABLE [286793b98] 2022-07-20 09:56:52 +0900
Branch: REL_14_STABLE [2aedf25eb] 2022-07-20 09:52:11 +0900
Branch: REL_13_STABLE [5630f39b3] 2022-07-20 09:52:23 +0900
Branch: REL_12_STABLE [9fa00e312] 2022-07-20 09:52:29 +0900
Branch: REL_11_STABLE [87e504487] 2022-07-20 09:52:36 +0900
Branch: REL_10_STABLE [dd831afc4] 2022-07-20 09:52:43 +0900
-->
     <para>
      Disallow nested backup operations in logical replication walsenders
      (Fujii Masao)
      <ulink url="&commit_baseurl;2aedf25eb">&sect;</ulink>
     </para>
    </listitem>

    <listitem>
<!--
Author: Amit Kapila <akapila@postgresql.org>
Branch: master Release: REL_15_BR [ac0e2d387] 2022-06-23 09:23:46 +0530
Branch: REL_14_STABLE [3238b5c33] 2022-06-23 09:20:41 +0530
Branch: REL_13_STABLE [3a6ef0cdf] 2022-06-23 09:02:16 +0530
Branch: REL_12_STABLE [9e0d9a24e] 2022-06-23 08:47:15 +0530
Branch: REL_11_STABLE [ed2a7a6bf] 2022-06-23 08:37:40 +0530
Branch: REL_10_STABLE [d873b5a5a] 2022-06-23 08:26:56 +0530
-->
     <para>
      Fix memory leak in logical replication subscribers (Hou Zhijie)
      <ulink url="&commit_baseurl;3238b5c33">&sect;</ulink>
     </para>
    </listitem>

    <listitem>
<!--
Author: Amit Kapila <akapila@postgresql.org>
Branch: master Release: REL_15_BR [26b3455af] 2022-06-21 08:07:43 +0530
Branch: REL_14_STABLE [52d5ea9ad] 2022-06-21 08:03:30 +0530
Branch: REL_13_STABLE [5f113d60e] 2022-06-21 08:05:31 +0530
Branch: master Release: REL_15_BR [75bfe7434] 2022-06-21 15:39:35 +0530
Branch: REL_14_STABLE [f0022a77d] 2022-06-21 15:30:36 +0530
Branch: REL_13_STABLE [419c72715] 2022-06-21 15:12:52 +0530
-->
     <para>
      Fix logical replication's checking of replica identity when the
      target table is partitioned (Shi Yu, Hou Zhijie)
      <ulink url="&commit_baseurl;52d5ea9ad">&sect;</ulink>
      <ulink url="&commit_baseurl;f0022a77d">&sect;</ulink>
     </para>

     <para>
      The replica identity columns have to be re-identified for the child
      partition.
     </para>
    </listitem>

    <listitem>
<!--
Author: Amit Kapila <akapila@postgresql.org>
Branch: master Release: REL_15_BR [b7658c24c] 2022-06-16 08:45:07 +0530
Branch: REL_14_STABLE [0980adfd4] 2022-06-16 08:32:10 +0530
Branch: REL_13_STABLE [1f9a7738e] 2022-06-16 08:24:22 +0530
Branch: master Release: REL_15_BR [5a97b1325] 2022-06-15 09:52:12 +0530
Branch: REL_14_STABLE [d457cb4e8] 2022-06-15 09:59:52 +0530
Branch: REL_13_STABLE [16f5a8da7] 2022-06-15 10:16:35 +0530
-->
     <para>
      Fix failures to update cached schema data in a logical replication
      subscriber after a schema change on the publisher (Shi Yu, Hou
      Zhijie)
      <ulink url="&commit_baseurl;0980adfd4">&sect;</ulink>
      <ulink url="&commit_baseurl;d457cb4e8">&sect;</ulink>
     </para>
    </listitem>

    <listitem>
<!--
Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
Branch: master [e44dae07f] 2022-08-05 18:00:17 +0200
Branch: REL_15_STABLE [2cff30259] 2022-08-05 18:00:17 +0200
Branch: REL_14_STABLE [541f41d4f] 2022-08-05 18:00:17 +0200
Branch: REL_13_STABLE [de31e6f81] 2022-08-05 18:00:17 +0200
Branch: REL_12_STABLE [49b85e481] 2022-08-05 18:00:17 +0200
Branch: REL_11_STABLE [39e45d3ce] 2022-08-05 18:00:17 +0200
Branch: REL_10_STABLE [e797c7a6f] 2022-08-05 18:00:17 +0200
Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
Branch: master [afe58c8b7] 2022-08-07 10:19:40 +0200
Branch: REL_15_STABLE [9c3006000] 2022-08-07 10:19:40 +0200
Branch: REL_14_STABLE [f4beef1c2] 2022-08-07 10:19:40 +0200
Branch: REL_13_STABLE [1626590f2] 2022-08-07 10:19:40 +0200
Branch: REL_12_STABLE [3aafd5da7] 2022-08-07 10:19:40 +0200
Branch: REL_11_STABLE [61904503b] 2022-08-07 10:19:40 +0200
Branch: REL_10_STABLE [8e5874964] 2022-08-07 10:19:40 +0200
-->
     <para>
      Fix WAL consistency checking logic to correctly
      handle <literal>BRIN_EVACUATE_PAGE</literal> flags (Haiyang Wang)
      <ulink url="&commit_baseurl;541f41d4f">&sect;</ulink>
      <ulink url="&commit_baseurl;f4beef1c2">&sect;</ulink>
     </para>
    </listitem>

    <listitem>
<!--
Author: Thomas Munro <tmunro@postgresql.org>
Branch: master [eed959a45] 2022-07-11 16:43:29 +1200
Branch: REL_15_STABLE [53df1e28d] 2022-07-11 16:01:22 +1200
Branch: REL_14_STABLE [5e7608e81] 2022-07-11 15:47:12 +1200
Branch: REL_13_STABLE [7cdd0c2d7] 2022-07-11 15:48:54 +1200
Branch: REL_12_STABLE [4f88dbac2] 2022-07-11 15:51:47 +1200
Branch: REL_11_STABLE [cd26139a3] 2022-07-11 15:54:24 +1200
-->
     <para>
      Fix erroneous assertion checks in shared hashtable management
      (Thomas Munro)
      <ulink url="&commit_baseurl;5e7608e81">&sect;</ulink>
     </para>
    </listitem>

    <listitem>
<!--
Author: Thomas Munro <tmunro@postgresql.org>
Branch: master Release: REL_15_BR [7201cd186] 2022-06-27 11:34:26 +1200
Branch: REL_14_STABLE [99504ff82] 2022-06-27 11:45:03 +1200
-->
     <para>
      Avoid assertion failure
      when <varname>min_dynamic_shared_memory</varname> is set to a
      non-default value (Thomas Munro)
      <ulink url="&commit_baseurl;99504ff82">&sect;</ulink>
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: REL_14_STABLE [604651880] 2022-06-22 12:11:59 -0400
Branch: REL_13_STABLE [cfc86f987] 2022-06-22 12:12:00 -0400
Branch: REL_12_STABLE [293f5c5f4] 2022-06-22 12:12:00 -0400
Branch: REL_11_STABLE [2f6b8c287] 2022-06-22 12:12:00 -0400
Author: Peter Eisentraut <peter@eisentraut.org>
Branch: REL_14_STABLE [8657946d3] 2022-07-18 16:23:48 +0200
Branch: REL_13_STABLE [b2c8d5661] 2022-07-18 19:20:07 +0200
Branch: REL_12_STABLE [9af9e2094] 2022-07-18 19:33:46 +0200
Branch: REL_11_STABLE [6d61aef5d] 2022-07-18 19:38:24 +0200
-->
     <para>
      Arrange to clean up after commit-time errors
      within <function>SPI_commit()</function>, rather than expecting
      callers to do that (Peter Eisentraut, Tom Lane)
      <ulink url="&commit_baseurl;604651880">&sect;</ulink>
      <ulink url="&commit_baseurl;8657946d3">&sect;</ulink>
     </para>

     <para>
      Proper cleanup is complicated and requires use of low-level
      facilities, so it's not surprising that no known caller got it
      right.  This led to misbehaviors when a PL procedure
      issued <command>COMMIT</command> but a failure occurred (such as a
      deferred constraint check).  To improve matters,
      redefine <function>SPI_commit()</function> as starting a new
      transaction, so that it becomes equivalent
      to <function>SPI_commit_and_chain()</function> except that you get
      default transaction characteristics instead of preserving the prior
      transaction's characteristics.  To make this somewhat transparent
      API-wise, redefine <function>SPI_start_transaction()</function> as a
      no-op.  All known callers of <function>SPI_commit()</function>
      immediately call <function>SPI_start_transaction()</function>, so
      they will not notice any change.  Similar remarks apply
      to <function>SPI_rollback()</function>.
     </para>

     <para>
      Also fix PL/Python, which omitted any handling of such errors at all,
      resulting in jumping out of the Python interpreter.  This is
      reported to crash Python 3.11.  Older Python releases leak some
      memory but seem okay with it otherwise.
     </para>
    </listitem>

    <listitem>
<!--
Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
Branch: master [054325c5e] 2022-07-05 14:21:20 +0200
Branch: REL_15_STABLE [93cf9233c] 2022-07-05 14:21:20 +0200
Branch: REL_14_STABLE [7c1f42612] 2022-07-05 14:21:20 +0200
Branch: master [e1df03b80] 2022-07-13 12:58:56 +0200
Branch: REL_15_STABLE [e69093070] 2022-07-13 12:10:03 +0200
Branch: REL_14_STABLE [9e038d690] 2022-07-13 12:10:03 +0200
-->
     <para>
      Improve <application>libpq</application>'s handling of idle states
      in pipeline mode (&Aacute;lvaro Herrera, Kyotaro Horiguchi)
      <ulink url="&commit_baseurl;7c1f42612">&sect;</ulink>
      <ulink url="&commit_baseurl;9e038d690">&sect;</ulink>
     </para>

     <para>
      This fixes <quote>message type 0x33 arrived from server while
      idle</quote> warnings, as well as possible loss of end-of-query NULL
      results from <function>PQgetResult()</function>.
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master Release: REL_15_BR [ba412c905] 2022-06-14 18:16:46 -0400
Branch: REL_14_STABLE [7bc21ed8c] 2022-06-14 18:16:46 -0400
Branch: REL_13_STABLE [12b8fb34a] 2022-06-14 18:16:46 -0400
Branch: REL_12_STABLE [9a3aab0f2] 2022-06-14 18:16:46 -0400
Branch: REL_11_STABLE [f7797747f] 2022-06-14 18:16:46 -0400
Branch: REL_10_STABLE [86258f083] 2022-06-14 18:16:46 -0400
-->
     <para>
      Avoid core dump in <application>ecpglib</application> with
      unexpected orders of operations (Tom Lane)
      <ulink url="&commit_baseurl;7bc21ed8c">&sect;</ulink>
     </para>

     <para>
      Certain operations such as <command>EXEC SQL PREPARE</command> would
      crash (rather than reporting an error as expected) if called before
      establishing any database connection.
     </para>
    </listitem>

    <listitem>
<!--
Author: Noah Misch <noah@leadboat.com>
Branch: master [5633836ef] 2022-07-02 13:00:30 -0700
Branch: REL_15_STABLE [7a28f7cb0] 2022-07-02 13:00:34 -0700
Branch: REL_14_STABLE [5b94e2bd4] 2022-07-02 13:00:34 -0700
Branch: REL_13_STABLE [b4d7e92bd] 2022-07-02 13:00:34 -0700
Branch: REL_12_STABLE [5e0b8f3f4] 2022-07-02 13:00:34 -0700
Branch: REL_11_STABLE [d68b731a1] 2022-07-02 13:00:35 -0700
Branch: REL_10_STABLE [12b2a2369] 2022-07-02 13:00:35 -0700
Branch: master [e2bc24283] 2022-07-02 21:03:19 -0700
Branch: REL_15_STABLE [8533eb181] 2022-07-02 21:03:22 -0700
Branch: REL_14_STABLE [463a841d7] 2022-07-02 21:03:22 -0700
Branch: REL_13_STABLE [97b005f3f] 2022-07-02 21:03:23 -0700
Branch: REL_12_STABLE [a4240139f] 2022-07-02 21:03:23 -0700
Branch: REL_11_STABLE [1cad30e3b] 2022-07-02 21:03:24 -0700
Branch: REL_10_STABLE [f5e4d64bb] 2022-07-02 21:03:24 -0700
-->
     <para>
      In <application>ecpglib</application>, avoid
      redundant <function>newlocale()</function> calls (Noah Misch)
      <ulink url="&commit_baseurl;5b94e2bd4">&sect;</ulink>
      <ulink url="&commit_baseurl;463a841d7">&sect;</ulink>
     </para>

     <para>
      Allocate a C locale object once per process when first connecting,
      rather than creating and freeing locale objects once per query.
      This mitigates a libc memory leak on AIX, and may offer some
      performance benefit everywhere.
     </para>
    </listitem>

    <listitem>
<!--
Author: Thomas Munro <tmunro@postgresql.org>
Branch: master [21267b647] 2022-07-10 16:52:38 +1200
Branch: REL_15_STABLE [31b485f88] 2022-07-10 16:53:05 +1200
Branch: REL_14_STABLE [ab7fef0ac] 2022-07-10 16:53:18 +1200
Branch: REL_13_STABLE [e5b5b4448] 2022-07-10 16:53:39 +1200
Branch: REL_12_STABLE [09224a35c] 2022-07-10 16:54:09 +1200
Branch: REL_11_STABLE [21ed12b14] 2022-07-10 16:55:18 +1200
Branch: REL_10_STABLE [7c5953b7b] 2022-07-10 16:57:04 +1200
-->
     <para>
      In <application>psql</application>'s <command>\watch</command>
      command, echo a newline after cancellation with control-C
      (Pavel Stehule)
      <ulink url="&commit_baseurl;ab7fef0ac">&sect;</ulink>
     </para>

     <para>
      This prevents libedit (and possibly also libreadline) from becoming
      confused about which column the cursor is in.
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [09878cdd4] 2022-07-05 13:06:31 -0400
Branch: REL_15_STABLE [c069f4278] 2022-07-05 13:06:31 -0400
Branch: REL_14_STABLE [175e60a5e] 2022-07-05 13:06:31 -0400
Branch: master [08385ed26] 2022-07-05 18:23:33 -0400
Branch: REL_15_STABLE [c7e21e966] 2022-07-05 18:23:34 -0400
Branch: REL_14_STABLE [9783413cb] 2022-07-05 18:23:19 -0400
-->
     <para>
      Fix <application>pg_upgrade</application> to detect non-upgradable
      usages of functions taking <type>anyarray</type> (Justin Pryzby)
      <ulink url="&commit_baseurl;175e60a5e">&sect;</ulink>
      <ulink url="&commit_baseurl;9783413cb">&sect;</ulink>
     </para>

     <para>
      Version 14 changed some built-in functions to take
      type <type>anycompatiblearray</type> instead
      of <type>anyarray</type>.  While this is mostly transparent,
      user-defined aggregates and operators built atop these functions
      have to be declared with exactly matching types.  The presence of an
      object referencing the old signature will
      cause <application>pg_upgrade</application> to fail, so change it to
      detect and report such cases before beginning the upgrade.
     </para>
    </listitem>

    <listitem>
<!--
Author: Michael Paquier <michael@paquier.xyz>
Branch: master [8b1ec7d29] 2022-08-01 16:38:23 +0900
Branch: REL_15_STABLE [07abcd9ab] 2022-08-01 16:39:16 +0900
Branch: REL_14_STABLE [523926dea] 2022-08-01 16:39:27 +0900
Branch: REL_13_STABLE [aadaaeff4] 2022-08-01 16:39:30 +0900
Branch: REL_12_STABLE [24872bbf9] 2022-08-01 16:39:33 +0900
-->
     <para>
      Fix possible report of wrong error condition
      after <function>clone()</function> failure
      in <application>pg_upgrade</application>
      with <option>--clone</option> option (Justin Pryzby)
      <ulink url="&commit_baseurl;523926dea">&sect;</ulink>
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [c67c2e2a2] 2022-08-02 18:05:38 -0400
Branch: REL_15_STABLE [82ebc70d1] 2022-08-02 18:05:34 -0400
Branch: REL_14_STABLE [17fd203b4] 2022-08-02 18:05:34 -0400
Branch: REL_13_STABLE [6b67db10c] 2022-08-02 18:05:34 -0400
Branch: REL_12_STABLE [6608a4305] 2022-08-02 18:05:34 -0400
Branch: REL_11_STABLE [06f6a07ba] 2022-08-02 18:05:34 -0400
Branch: REL_10_STABLE [dd414bf4e] 2022-08-02 18:05:34 -0400
-->
     <para>
      Fix <filename>contrib/pg_stat_statements</filename> to avoid
      problems with very large query-text files on 32-bit platforms
      (Tom Lane)
      <ulink url="&commit_baseurl;17fd203b4">&sect;</ulink>
     </para>
    </listitem>

    <listitem>
<!--
Author: Etsuro Fujita <efujita@postgresql.org>
Branch: master [82593b9a3] 2022-08-05 17:15:00 +0900
Branch: REL_15_STABLE [1d49db259] 2022-08-05 17:15:01 +0900
Branch: REL_14_STABLE [4a9bc2e0f] 2022-08-05 17:15:03 +0900
-->
     <para>
      In <filename>contrib/postgres_fdw</filename>, prevent batch
      insertion when there are <literal>WITH CHECK OPTION</literal>
      constraints (Etsuro Fujita)
      <ulink url="&commit_baseurl;4a9bc2e0f">&sect;</ulink>
     </para>

     <para>
      Such constraints cannot be checked properly if more than one row is
      inserted at a time.
     </para>
    </listitem>

    <listitem>
<!--
Author: Fujii Masao <fujii@postgresql.org>
Branch: master [44ccdce51] 2022-07-22 11:59:38 +0900
Branch: REL_15_STABLE [63a8c689b] 2022-07-22 12:01:31 +0900
Branch: REL_14_STABLE [169d50ba3] 2022-07-22 12:01:38 +0900
-->
     <para>
      Fix <filename>contrib/postgres_fdw</filename> to detect failure to
      send an asynchronous data fetch query (Fujii Masao)
      <ulink url="&commit_baseurl;169d50ba3">&sect;</ulink>
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [0a7ccee8f] 2022-07-17 17:27:50 -0400
Branch: REL_15_STABLE [b8032f481] 2022-07-17 17:27:50 -0400
Branch: REL_14_STABLE [810bcbd38] 2022-07-17 17:27:50 -0400
Branch: REL_13_STABLE [6230bd7df] 2022-07-17 17:27:50 -0400
Branch: REL_12_STABLE [288e499ba] 2022-07-17 17:27:50 -0400
Branch: REL_11_STABLE [94bcb48ab] 2022-07-17 17:27:50 -0400
Branch: REL_10_STABLE [26c9e1bd8] 2022-07-17 17:27:51 -0400
-->
     <para>
      Ensure that <filename>contrib/postgres_fdw</filename> sends
      constants of <type>regconfig</type> and other <type>reg*</type>
      types with proper schema qualification (Tom Lane)
      <ulink url="&commit_baseurl;810bcbd38">&sect;</ulink>
     </para>
    </listitem>

    <listitem>
<!--
Author: Thomas Munro <tmunro@postgresql.org>
Branch: master [4518c798b] 2022-07-14 18:01:27 +1200
Branch: REL_15_STABLE [c4a617ea1] 2022-07-14 18:00:58 +1200
Branch: REL_14_STABLE [2019e6ecf] 2022-07-14 17:48:32 +1200
Branch: REL_13_STABLE [e73fe6e82] 2022-07-14 14:32:48 +1200
Branch: REL_12_STABLE [ff78bf796] 2022-07-14 14:26:49 +1200
Branch: REL_11_STABLE [39683c69a] 2022-07-14 14:23:03 +1200
Branch: REL_10_STABLE [53cfe403c] 2022-07-14 10:50:13 +1200
Branch: master [80845b7c0] 2022-07-15 02:00:09 +1200
Branch: REL_15_STABLE [a715c2004] 2022-07-15 02:00:35 +1200
Branch: REL_14_STABLE [838364559] 2022-07-15 02:02:28 +1200
Branch: REL_13_STABLE [17aa39da5] 2022-07-15 02:04:53 +1200
Branch: REL_12_STABLE [a05f40ef8] 2022-07-15 02:06:01 +1200
Branch: REL_11_STABLE [74a9ee034] 2022-07-15 02:07:15 +1200
Branch: REL_10_STABLE [e26024bea] 2022-07-15 02:08:27 +1200
Branch: master [3b8d23a3e] 2022-07-16 12:22:42 +1200
Branch: REL_15_STABLE [91377a455] 2022-07-16 12:23:03 +1200
Branch: REL_14_STABLE [c412c60b9] 2022-07-16 12:23:14 +1200
Branch: REL_13_STABLE [c75b6b454] 2022-07-16 12:23:24 +1200
Branch: REL_12_STABLE [1661c40b9] 2022-07-16 12:23:34 +1200
Branch: REL_11_STABLE [3f2344d4a] 2022-07-16 12:23:43 +1200
Branch: REL_10_STABLE [d3b0884c0] 2022-07-16 12:23:52 +1200
-->
     <para>
      Block signals while allocating dynamic shared memory on Linux
      (Thomas Munro)
      <ulink url="&commit_baseurl;2019e6ecf">&sect;</ulink>
      <ulink url="&commit_baseurl;838364559">&sect;</ulink>
      <ulink url="&commit_baseurl;c412c60b9">&sect;</ulink>
     </para>

     <para>
      This avoids problems when a signal
      interrupts <function>posix_fallocate()</function>.
     </para>
    </listitem>

    <listitem>
<!--
Author: Thomas Munro <tmunro@postgresql.org>
Branch: master [389869af5] 2022-07-01 14:17:54 +1200
Branch: REL_15_STABLE [fef8c7a0c] 2022-07-01 13:15:17 +1200
Branch: REL_14_STABLE [fb81a93a6] 2022-07-01 13:16:27 +1200
Branch: REL_13_STABLE [b436047dc] 2022-07-01 14:03:48 +1200
Branch: REL_12_STABLE [f7b69b1e3] 2022-07-01 13:26:50 +1200
Branch: REL_11_STABLE [facfd0467] 2022-07-01 13:21:28 +1200
Branch: REL_10_STABLE [22b9afaf5] 2022-07-01 13:19:06 +1200
-->
     <para>
      Detect unexpected <literal>EEXIST</literal> error
      from <function>shm_open()</function> (Thomas Munro)
      <ulink url="&commit_baseurl;fb81a93a6">&sect;</ulink>
     </para>

     <para>
      This avoids a possible crash on Solaris.
     </para>
    </listitem>

    <listitem>
<!--
Author: Thomas Munro <tmunro@postgresql.org>
Branch: master Release: REL_15_BR [3ab4fc5dc] 2022-06-26 10:55:21 +1200
Branch: REL_14_STABLE [e086b5538] 2022-06-26 11:00:04 +1200
-->
     <para>
      Avoid using <function>signalfd()</function>
      on <productname>illumos</productname> systems (Thomas Munro)
      <ulink url="&commit_baseurl;e086b5538">&sect;</ulink>
     </para>

     <para>
      This appears to trigger hangs and kernel panics, so avoid the
      function until a fix is available.
     </para>
    </listitem>

   </itemizedlist>

  </sect2>
 </sect1>

 <sect1 id="release-14-4">
  <title>Release 14.4</title>

  <formalpara>
  <title>Release date:</title>
  <para>2022-06-16</para>
  </formalpara>

  <para>
   This release contains a variety of fixes from 14.3.
   For information about new features in major release 14, see
   <xref linkend="release-14"/>.
  </para>

  <sect2>
   <title>Migration to Version 14.4</title>

   <para>
    A dump/restore is not required for those running 14.X.
   </para>

   <para>
    However, if you have any indexes that were created using
    the <option>CONCURRENTLY</option> option under 14.X,
    you should re-index them after updating.
    See the first changelog entry below.
   </para>

   <para>
    Also, if you are upgrading from a version earlier than 14.3,
    see <xref linkend="release-14-3"/>.
   </para>
  </sect2>

  <sect2>
   <title>Changes</title>

   <itemizedlist>

    <listitem>
<!--
Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
Branch: master [e28bb8851] 2022-05-31 21:24:59 +0200
Branch: REL_14_STABLE [042b584c7] 2022-05-31 21:24:59 +0200
-->
     <para>
      Prevent possible corruption of indexes created or rebuilt with
      the <literal>CONCURRENTLY</literal> option (&Aacute;lvaro Herrera)
      <ulink url="&commit_baseurl;042b584c7">&sect;</ulink>
     </para>

     <para>
      An optimization added in v14 caused <command>CREATE INDEX ...
      CONCURRENTLY</command> and <command>REINDEX
      ... CONCURRENTLY</command> to sometimes miss indexing rows that were
      updated during the index build.  Revert that optimization.
      It is recommended that any indexes made with
      the <literal>CONCURRENTLY</literal> option be rebuilt after
      installing this update.  (Alternatively, rebuild them
      without <literal>CONCURRENTLY</literal>.)
     </para>
    </listitem>

    <listitem>
<!--
Author: David Rowley <drowley@postgresql.org>
Branch: master [fa5185b26] 2022-06-08 12:39:09 +1200
Branch: REL_14_STABLE [cbcea3b91] 2022-06-08 12:39:44 +1200
-->
     <para>
      Harden Memoize plan node against non-deterministic equality
      functions (David Rowley)
      <ulink url="&commit_baseurl;cbcea3b91">&sect;</ulink>
     </para>

     <para>
      Memoize could crash if a data type's equality or hash functions gave
      inconsistent results across different calls.  Throw a runtime error
      instead.
     </para>
    </listitem>

    <listitem>
<!--
Author: David Rowley <drowley@postgresql.org>
Branch: master [1e731ed12] 2022-05-16 16:07:56 +1200
Branch: REL_14_STABLE [23c2b76a8] 2022-05-16 16:08:37 +1200
-->
     <para>
      Fix incorrect cost estimates for Memoize plans (David Rowley)
      <ulink url="&commit_baseurl;23c2b76a8">&sect;</ulink>
     </para>

     <para>
      This mistake could lead to Memoize being used when it isn't really
      the best plan, or to very long executor startup times due to
      initializing an overly-large hash table for a Memoize node.
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [1218780cc] 2022-06-10 10:35:57 -0400
Branch: REL_14_STABLE [77c1d92cb] 2022-06-10 10:35:57 -0400
Branch: REL_13_STABLE [254cd7f31] 2022-06-10 10:35:57 -0400
Branch: REL_12_STABLE [d3ef5c3ef] 2022-06-10 10:35:57 -0400
Branch: REL_11_STABLE [199aac8b2] 2022-06-10 10:35:57 -0400
-->
     <para>
      Fix queries in which a <quote>whole-row variable</quote> references
      the result of a function that returns a domain over composite type
      (Tom Lane)
      <ulink url="&commit_baseurl;77c1d92cb">&sect;</ulink>
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [79b58c6f6] 2022-05-12 11:31:46 -0400
Branch: REL_14_STABLE [ac51c9fba] 2022-05-12 11:31:46 -0400
Branch: REL_13_STABLE [b7579b25c] 2022-05-12 11:31:46 -0400
Branch: REL_12_STABLE [301b91c56] 2022-05-12 11:31:46 -0400
Branch: REL_11_STABLE [7f7f1750d] 2022-05-12 11:31:46 -0400
Branch: REL_10_STABLE [b53442f6f] 2022-05-12 11:31:46 -0400
-->
     <para>
      Fix <quote>variable not found in subplan target list</quote> planner
      error when pulling up a sub-<literal>SELECT</literal> that's
      referenced in a <literal>GROUPING</literal> function (Richard Guo)
      <ulink url="&commit_baseurl;ac51c9fba">&sect;</ulink>
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [bf4717b09] 2022-06-07 15:34:30 -0400
Branch: REL_14_STABLE [5c3b5f7db] 2022-06-07 15:34:30 -0400
Branch: REL_13_STABLE [a36196972] 2022-06-07 15:34:30 -0400
Branch: REL_12_STABLE [435251b85] 2022-06-07 15:34:30 -0400
Branch: REL_11_STABLE [d628ce048] 2022-06-07 15:34:30 -0400
Branch: REL_10_STABLE [fb646cbd5] 2022-06-07 15:34:30 -0400
-->
     <para>
      Prevent <function>pg_stat_get_subscription()</function> from
      possibly returning an extra row containing garbage values
      (Kuntal Ghosh)
      <ulink url="&commit_baseurl;5c3b5f7db">&sect;</ulink>
     </para>
    </listitem>

    <listitem>
<!--
Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
Branch: master [fc36ac52e] 2022-05-29 23:54:25 +0300
Branch: REL_14_STABLE [f82595ac9] 2022-05-29 23:57:16 +0300
-->
     <para>
      Fix <command>COPY FROM</command>'s error checking in the case where
      the database encoding is <literal>SQL_ASCII</literal> while the
      client's encoding is a multi-byte encoding (Heikki Linnakangas)
      <ulink url="&commit_baseurl;f82595ac9">&sect;</ulink>
     </para>

     <para>
      This mistake could lead to false complaints of invalidly-encoded
      input data.
     </para>
    </listitem>

    <listitem>
<!--
Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
Branch: master [0fbf01120] 2022-05-18 20:28:31 +0200
Branch: REL_14_STABLE [94edb85d2] 2022-05-18 20:28:31 +0200
Branch: REL_13_STABLE [80656f00f] 2022-05-18 20:28:31 +0200
Branch: REL_12_STABLE [ade17703d] 2022-05-18 20:28:31 +0200
Branch: REL_11_STABLE [ba83de8ad] 2022-05-18 20:28:31 +0200
Branch: REL_10_STABLE [16cb7db34] 2022-05-18 20:28:31 +0200
Branch: master [62221ef18] 2022-05-18 23:19:53 +0200
Branch: REL_14_STABLE [e8b93c6e2] 2022-05-18 23:19:53 +0200
Branch: REL_13_STABLE [5139db556] 2022-05-18 23:19:53 +0200
Branch: REL_12_STABLE [0ebd20e20] 2022-05-18 23:19:53 +0200
Branch: REL_11_STABLE [50bf3157a] 2022-05-18 23:19:53 +0200
Branch: REL_10_STABLE [29d111518] 2022-05-18 23:19:53 +0200
-->
     <para>
      Avoid crashing if too many column aliases are attached to
      an <literal>XMLTABLE</literal> or <literal>JSON_TABLE</literal>
      construct (&Aacute;lvaro Herrera)
      <ulink url="&commit_baseurl;94edb85d2">&sect;</ulink>
      <ulink url="&commit_baseurl;e8b93c6e2">&sect;</ulink>
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [c7461fc25] 2022-05-21 14:45:58 -0400
Branch: REL_14_STABLE [6f7eec119] 2022-05-21 14:45:58 -0400
Branch: REL_13_STABLE [fefd54631] 2022-05-21 14:45:58 -0400
Branch: REL_12_STABLE [bb2c04676] 2022-05-21 14:45:58 -0400
Branch: REL_11_STABLE [f3b8d7244] 2022-05-21 14:45:58 -0400
Branch: REL_10_STABLE [7686403b4] 2022-05-21 14:45:58 -0400
-->
     <para>
      When decompiling a view or rule, show a <command>SELECT</command>
      output column's <literal>AS "?column?"</literal> alias clause
      if it could be referenced elsewhere (Tom Lane)
      <ulink url="&commit_baseurl;6f7eec119">&sect;</ulink>
     </para>

     <para>
      Previously, this auto-generated alias was always hidden; but there
      are corner cases where doing so results in a non-restorable view or
      rule definition.
     </para>
    </listitem>

    <listitem>
<!--
Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
Branch: master [602986191] 2022-05-20 18:52:55 +0200
Branch: REL_14_STABLE [58b088a9b] 2022-05-20 18:52:55 +0200
Branch: REL_13_STABLE [3753a169e] 2022-05-20 18:52:55 +0200
Branch: REL_12_STABLE [4492e73a6] 2022-05-20 18:52:55 +0200
Branch: REL_11_STABLE [6c6ea6ea8] 2022-05-20 18:52:55 +0200
Branch: REL_10_STABLE [70f70d7d3] 2022-05-20 18:52:55 +0200
Branch: REL_10_STABLE [8c47622bb] 2022-05-20 19:05:55 +0200
-->
     <para>
      Report implicitly-created operator families to event triggers
      (Masahiko Sawada)
      <ulink url="&commit_baseurl;58b088a9b">&sect;</ulink>
     </para>

     <para>
      If <command>CREATE OPERATOR CLASS</command> results in the implicit
      creation of an operator family, that object was not reported to
      event triggers that should capture such events.
     </para>
    </listitem>

    <listitem>
<!--
Author: Michael Paquier <michael@paquier.xyz>
Branch: REL_14_STABLE [6dced63b4] 2022-05-16 11:26:22 +0900
Branch: REL_13_STABLE [2e9559b30] 2022-05-16 11:26:26 +0900
Branch: REL_12_STABLE [7e59b1219] 2022-05-16 11:26:30 +0900
Branch: REL_11_STABLE [4525151d4] 2022-05-16 11:26:36 +0900
Branch: REL_10_STABLE [60e956eb8] 2022-05-16 11:26:41 +0900
-->
     <para>
      Fix control file updates made when a restartpoint is running during
      promotion of a standby server (Kyotaro Horiguchi)
      <ulink url="&commit_baseurl;6dced63b4">&sect;</ulink>
     </para>

     <para>
      Previously, when the restartpoint completed it could incorrectly
      update the last-checkpoint fields of the control file, potentially
      leading to PANIC and failure to restart if the server crashes before
      the next normal checkpoint completes.
     </para>
    </listitem>

    <listitem>
<!--
Author: Amit Kapila <akapila@postgresql.org>
Branch: master [f95d53ede] 2022-05-11 11:11:44 +0530
Branch: REL_14_STABLE [d6da71fa8] 2022-05-11 10:51:04 +0530
Branch: REL_13_STABLE [55558df23] 2022-05-11 10:41:24 +0530
Branch: REL_12_STABLE [f832b5007] 2022-05-11 10:25:56 +0530
Branch: REL_11_STABLE [87c1dd246] 2022-05-11 10:12:23 +0530
Branch: REL_10_STABLE [a4015ec03] 2022-05-11 10:01:35 +0530
-->
     <para>
      Prevent triggering of
      standby's <varname>wal_receiver_timeout</varname> during logical
      replication of large transactions (Wang Wei, Amit Kapila)
      <ulink url="&commit_baseurl;d6da71fa8">&sect;</ulink>
     </para>

     <para>
      If a large transaction on the primary server sends no data to the
      standby (perhaps because no table it changes is published), it was
      possible for the standby to timeout.  Fix that by ensuring we send
      keepalive messages periodically in such situations.
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [16c80e7d0] 2022-05-31 14:47:44 -0400
Branch: REL_14_STABLE [c47a55852] 2022-05-31 14:47:44 -0400
Branch: REL_13_STABLE [c73748b68] 2022-05-31 14:47:44 -0400
Branch: REL_12_STABLE [a3faebd6a] 2022-05-31 14:47:44 -0400
Branch: REL_11_STABLE [ae758e603] 2022-05-31 14:47:44 -0400
Branch: REL_10_STABLE [2114910ca] 2022-05-31 14:47:44 -0400
-->
     <para>
      Prevent open-file leak when reading an invalid timezone abbreviation
      file (Kyotaro Horiguchi)
      <ulink url="&commit_baseurl;c47a55852">&sect;</ulink>
     </para>

     <para>
      Such cases could result in harmless warning messages.
     </para>
    </listitem>

    <listitem>
<!--
Author: Michael Paquier <michael@paquier.xyz>
Branch: master [f1431f3bf] 2022-05-28 12:12:40 +0900
Branch: REL_14_STABLE [fe441a031] 2022-05-28 12:12:46 +0900
Branch: REL_13_STABLE [1e6802990] 2022-05-28 12:12:51 +0900
Branch: REL_12_STABLE [ae236bf66] 2022-05-28 12:12:55 +0900
Branch: REL_11_STABLE [c3db8a2e2] 2022-05-28 12:12:58 +0900
Branch: REL_10_STABLE [1b40ceea2] 2022-05-28 12:13:02 +0900
-->
     <para>
      Allow custom server parameters to have short descriptions that are
      NULL (Steve Chavez)
      <ulink url="&commit_baseurl;fe441a031">&sect;</ulink>
     </para>

     <para>
      Previously, although extensions could choose to create such
      settings, some code paths would crash while processing them.
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [2b65de7fc] 2022-05-26 14:14:05 -0400
Branch: REL_14_STABLE [b4be4a082] 2022-05-26 14:14:05 -0400
Branch: REL_13_STABLE [9e3dbc6fd] 2022-05-26 14:14:05 -0400
Branch: REL_12_STABLE [01ab9fb7d] 2022-05-26 14:14:05 -0400
Branch: REL_11_STABLE [a44bc8b8f] 2022-05-26 14:14:05 -0400
Branch: REL_10_STABLE [ef54a6576] 2022-05-26 14:14:05 -0400
-->
     <para>
      Remove misguided SSL key file ownership check
      in <application>libpq</application> (Tom Lane)
      <ulink url="&commit_baseurl;b4be4a082">&sect;</ulink>
     </para>

     <para>
      In the previous minor releases, we copied the server's permission
      checking rules for SSL private key files into libpq.  But we should
      not have also copied the server's file-ownership check.  While that
      works in normal use-cases, it can result in an unexpected failure
      for clients running as root, and perhaps in other cases.
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [6d157e7cb] 2022-06-06 11:20:21 -0400
Branch: REL_14_STABLE [a5dbca460] 2022-06-06 11:20:31 -0400
Branch: REL_13_STABLE [16d68007c] 2022-06-06 11:20:36 -0400
Branch: REL_12_STABLE [02026cadb] 2022-06-06 11:20:41 -0400
Branch: REL_11_STABLE [d82ed5b2f] 2022-06-06 11:20:46 -0400
Branch: REL_10_STABLE [89254606b] 2022-06-06 11:20:52 -0400
-->
     <para>
      Ensure <application>ecpg</application> reports server connection loss
      sanely (Tom Lane)
      <ulink url="&commit_baseurl;a5dbca460">&sect;</ulink>
     </para>

     <para>
      Misprocessing of a libpq-generated error result, such as a report of
      lost connection, would lead to printing <quote>(null)</quote>
      instead of a useful error message; or in older releases it would
      lead to a crash.
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [51da23159] 2022-06-06 11:26:57 -0400
Branch: REL_14_STABLE [32a85ee46] 2022-06-06 11:26:57 -0400
-->
     <para>
      Prevent crash after server connection loss
      in <application>pg_amcheck</application> (Tom Lane)
      <ulink url="&commit_baseurl;32a85ee46">&sect;</ulink>
     </para>

     <para>
      Misprocessing of a libpq-generated error result, such as a report of
      lost connection, would lead to a crash.
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [eb39610f8] 2022-06-01 16:15:47 -0400
Branch: REL_14_STABLE [1072e4c45] 2022-06-01 16:15:47 -0400
Branch: REL_13_STABLE [eeac7dd9f] 2022-06-01 16:15:47 -0400
Branch: REL_12_STABLE [c08538734] 2022-06-01 16:15:47 -0400
Branch: REL_11_STABLE [b5265196e] 2022-06-01 16:15:47 -0400
Branch: REL_10_STABLE [d5e1d5ed9] 2022-06-01 16:15:47 -0400
Branch: REL9_6_STABLE [d4c161842] 2022-06-01 16:15:47 -0400
Branch: REL9_5_STABLE [9fdeae848] 2022-06-01 16:15:47 -0400
Branch: REL9_4_STABLE [b53780e1b] 2022-06-01 16:15:47 -0400
Branch: REL9_3_STABLE [a3b685fdd] 2022-06-01 16:15:47 -0400
Branch: REL9_2_STABLE [6f9ea6cf3] 2022-06-01 16:15:47 -0400
-->
     <para>
      Adjust PL/Perl test case so it will work under Perl 5.36
      (Dagfinn Ilmari Mannsåker)
      <ulink url="&commit_baseurl;1072e4c45">&sect;</ulink>
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [aff45c879] 2022-05-10 18:42:02 -0400
Branch: REL_14_STABLE [12736e7dc] 2022-05-10 18:42:02 -0400
Branch: REL_13_STABLE [af9b96767] 2022-05-10 18:42:02 -0400
Branch: REL_12_STABLE [8ed13fb93] 2022-05-10 18:42:02 -0400
Branch: REL_11_STABLE [36d76da81] 2022-05-10 18:42:02 -0400
Branch: REL_10_STABLE [c61f36d99] 2022-05-10 18:42:02 -0400
-->
     <para>
      Avoid incorrectly using an
      out-of-date <application>libldap_r</application> library when
      multiple <productname>OpenLDAP</productname> installations are
      present while building <productname>PostgreSQL</productname>
      (Tom Lane)
      <ulink url="&commit_baseurl;12736e7dc">&sect;</ulink>
     </para>
    </listitem>

   </itemizedlist>

  </sect2>
 </sect1>

 <sect1 id="release-14-3">
  <title>Release 14.3</title>

  <formalpara>
  <title>Release date:</title>
  <para>2022-05-12</para>
  </formalpara>

  <para>
   This release contains a variety of fixes from 14.2.
   For information about new features in major release 14, see
   <xref linkend="release-14"/>.
  </para>

  <sect2>
   <title>Migration to Version 14.3</title>

   <para>
    A dump/restore is not required for those running 14.X.
   </para>

   <para>
    However, if you have any GiST indexes on columns of type
    <type>ltree</type> (supplied by the <filename>contrib/ltree</filename>
    extension), you should re-index them after updating.
    See the second changelog entry below.
   </para>

   <para>
    Also, if you are upgrading from a version earlier than 14.2,
    see <xref linkend="release-14-2"/>.
   </para>
  </sect2>

  <sect2>
   <title>Changes</title>

   <itemizedlist>

    <listitem>
<!--
Author: Noah Misch <noah@leadboat.com>
Branch: master [a117cebd6] 2022-05-09 08:35:08 -0700
Branch: REL_14_STABLE [ab49ce7c3] 2022-05-09 08:35:12 -0700
Branch: REL_13_STABLE [35edcc0ce] 2022-05-09 08:35:12 -0700
Branch: REL_12_STABLE [7f098f7b5] 2022-05-09 08:35:12 -0700
Branch: REL_11_STABLE [48ca2904c] 2022-05-09 08:35:13 -0700
Branch: REL_10_STABLE [ef792f785] 2022-05-09 08:35:13 -0700
Author: Noah Misch <noah@leadboat.com>
Branch: master [0abc1a059] 2022-05-09 08:35:08 -0700
Branch: REL_14_STABLE [677a49478] 2022-05-09 08:35:12 -0700
Branch: REL_13_STABLE [88743d581] 2022-05-09 08:35:12 -0700
Branch: REL_12_STABLE [880511cb0] 2022-05-09 08:35:12 -0700
Branch: REL_11_STABLE [34ff15660] 2022-05-09 08:35:13 -0700
Branch: REL_10_STABLE [f26d57028] 2022-05-09 08:35:13 -0700
-->
     <para>
      Confine additional operations within <quote>security restricted
      operation</quote> sandboxes (Sergey Shinderuk, Noah Misch)
      <ulink url="&commit_baseurl;ab49ce7c3">&sect;</ulink>
      <ulink url="&commit_baseurl;677a49478">&sect;</ulink>
     </para>

     <para>
      Autovacuum, <command>CLUSTER</command>, <command>CREATE
      INDEX</command>, <command>REINDEX</command>, <command>REFRESH
      MATERIALIZED VIEW</command>,
      and <application>pg_amcheck</application> activated
      the <quote>security restricted operation</quote> protection
      mechanism too late, or even not at all in some code paths.
      A user having permission to create non-temporary objects within a
      database could define an object that would execute arbitrary SQL
      code with superuser permissions the next time that autovacuum
      processed the object, or that some superuser ran one of the affected
      commands against it.
     </para>

     <para>
      The <productname>PostgreSQL</productname> Project thanks
      Alexander Lakhin for reporting this problem.
      (CVE-2022-1552)
     </para>
    </listitem>

    <listitem>
<!--
Author: Alexander Korotkov <akorotkov@postgresql.org>
Branch: master [7e74aafc4] 2022-03-16 11:41:18 +0300
Branch: REL_14_STABLE [7d30f59da] 2022-03-16 11:41:30 +0300
Branch: REL_13_STABLE [bad202c61] 2022-03-16 11:41:34 +0300
-->
     <para>
      Fix default signature length for <literal>gist_ltree_ops</literal>
      indexes (Tomas Vondra, Alexander Korotkov)
      <ulink url="&commit_baseurl;7d30f59da">&sect;</ulink>
     </para>

     <para>
      The default signature length (hash size) for GiST indexes
      on <type>ltree</type> columns was accidentally changed while
      upgrading that operator class to support operator class parameters.
      If any operations had been done on such an index without first
      upgrading the <literal>ltree</literal> extension to version 1.2,
      they were done assuming that the signature length was 28 bytes
      rather than the intended 8.  This means it is very likely that such
      indexes are now corrupt.  For safety we recommend re-indexing all
      GiST indexes on <type>ltree</type> columns after installing this
      update.  (Note that GiST indexes on <type>ltree[]</type>
      columns, that is arrays of <type>ltree</type>, are not affected.)
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [ec62cb0aa] 2022-03-17 18:18:05 -0400
Branch: REL_14_STABLE [1d072bd20] 2022-03-17 18:18:05 -0400
Branch: REL_13_STABLE [5e144cc89] 2022-03-17 18:18:05 -0400
Branch: REL_12_STABLE [1f5ef5ae0] 2022-03-17 18:18:05 -0400
Branch: REL_11_STABLE [13b54d1e0] 2022-03-17 18:18:05 -0400
Branch: REL_10_STABLE [205214c8b] 2022-03-17 18:18:05 -0400
-->
     <para>
      Stop using query-provided column aliases for the columns of
      whole-row variables that refer to plain tables (Tom Lane)
      <ulink url="&commit_baseurl;1d072bd20">&sect;</ulink>
     </para>

     <para>
      The column names in tuples produced by a whole-row variable (such
      as <literal>tbl.*</literal> in contexts other than the top level of
      a <literal>SELECT</literal> list) are now always those of the
      associated named composite type, if there is one.  We'd previously
      attempted to make them track any column aliases that had been
      applied to the <literal>FROM</literal> entry the variable refers to.
      But that's semantically dubious, because really then the output of
      the variable is not at all of the composite type it claims to be.
      Previous attempts to deal with that inconsistency had bad results up
      to and including storing unreadable data on disk, so just give up on
      the whole idea.
     </para>

     <para>
      In cases where it's important to be able to relabel such columns,
      a workaround is to introduce an extra level of
      sub-<literal>SELECT</literal>, so that the whole-row variable is
      referring to the sub-<literal>SELECT</literal>'s output and not to a
      plain table.  Then the variable is of type <type>record</type>
      to begin with and there's no issue.
     </para>
    </listitem>

    <listitem>
<!--
Author: Peter Eisentraut <peter@eisentraut.org>
Branch: master [f2a2bf66c] 2022-04-19 21:04:52 +0200
Branch: REL_14_STABLE [7a8d8219c] 2022-04-19 21:03:27 +0200
-->
     <para>
      Fix incorrect roundoff when extracting epoch values from intervals
      (Peter Eisentraut)
      <ulink url="&commit_baseurl;7a8d8219c">&sect;</ulink>
     </para>

     <para>
      The new <type>numeric</type>-based code
      for <function>EXTRACT()</function> failed to yield results
      equivalent to the old <type>float</type>-based code, as a result of
      accidentally truncating the <literal>DAYS_PER_YEAR</literal> value
      to an integer.
     </para>
    </listitem>

    <listitem>
<!--
Author: Andres Freund <andres@anarazel.de>
Branch: master [43a7dc96e] 2022-03-27 21:46:23 -0700
Branch: REL_14_STABLE [c1a0d7d1c] 2022-03-27 21:44:39 -0700
-->
     <para>
      Defend against <literal>pg_stat_get_replication_slot(NULL)</literal>
      (Andres Freund)
      <ulink url="&commit_baseurl;c1a0d7d1c">&sect;</ulink>
     </para>

     <para>
      This function should be marked strict in the catalog data, but it
      was not in v14, so add a run-time check instead.
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [068739fb4] 2022-03-18 16:01:42 -0400
Branch: REL_14_STABLE [ae8ec7feb] 2022-03-18 16:01:42 -0400
Branch: REL_13_STABLE [88ae77588] 2022-03-18 16:01:42 -0400
Branch: REL_12_STABLE [840729fd1] 2022-03-18 16:01:42 -0400
Branch: REL_11_STABLE [84f3ecdaa] 2022-03-18 16:01:42 -0400
Branch: REL_10_STABLE [e6fd4a3da] 2022-03-18 16:01:42 -0400
-->
     <para>
      Fix incorrect output for types <type>timestamptz</type>
      and <type>timetz</type> in <function>table_to_xmlschema()</function>
      and allied functions (Renan Soares Lopes)
      <ulink url="&commit_baseurl;ae8ec7feb">&sect;</ulink>
     </para>

     <para>
      The xmlschema output for these types included a malformed regular
      expression.
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [fe20afaee] 2022-05-09 14:15:37 -0400
Branch: REL_14_STABLE [ab2f78392] 2022-05-09 14:15:37 -0400
Branch: REL_13_STABLE [91a3a74c6] 2022-05-09 14:15:37 -0400
Branch: REL_12_STABLE [90e52884e] 2022-05-09 14:15:37 -0400
Branch: REL_11_STABLE [539f8c563] 2022-05-09 14:15:37 -0400
Branch: REL_10_STABLE [4eabaffca] 2022-05-09 14:15:37 -0400
-->
     <para>
      Avoid core dump in parser for a <literal>VALUES</literal> clause with
      zero columns (Tom Lane)
      <ulink url="&commit_baseurl;ab2f78392">&sect;</ulink>
     </para>
    </listitem>

    <listitem>
<!--
Author: Etsuro Fujita <efujita@postgresql.org>
Branch: master [5c854e7a2] 2022-04-28 15:15:00 +0900
Branch: REL_14_STABLE [ebb790241] 2022-04-28 15:15:02 +0900
-->
     <para>
      Fix planner failure when a Result plan node appears immediately
      underneath an Append node (Etsuro Fujita)
      <ulink url="&commit_baseurl;ebb790241">&sect;</ulink>
     </para>

     <para>
      Recently-added code to support asynchronous remote queries failed to
      handle this case, leading to crashes or errors about unrecognized
      node types.
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [f819020d4] 2022-04-23 12:16:12 -0400
Branch: REL_14_STABLE [dff6c77fa] 2022-04-23 12:16:12 -0400
-->
     <para>
      Fix planner failure if a query using <literal>SEARCH</literal>
      or <literal>CYCLE</literal> features contains a duplicate CTE name
      (Tom Lane, Kyotaro Horiguchi)
      <ulink url="&commit_baseurl;dff6c77fa">&sect;</ulink>
     </para>

     <para>
      When the name of the recursive <literal>WITH</literal> query is
      re-used within itself, the planner could crash or report odd errors
      such as <quote>could not find attribute 2 in subquery
      targetlist</quote>.
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [2591ee8ec] 2022-03-21 17:44:29 -0400
Branch: REL_14_STABLE [48b6035f0] 2022-03-21 17:44:29 -0400
Branch: REL_13_STABLE [dfefe38fb] 2022-03-21 17:44:29 -0400
Branch: REL_12_STABLE [69c88e2fb] 2022-03-21 17:44:29 -0400
Branch: REL_11_STABLE [5de244196] 2022-03-21 17:44:29 -0400
Branch: REL_10_STABLE [2afa031ac] 2022-03-21 17:44:29 -0400
-->
     <para>
      Fix planner errors for <function>GROUPING()</function> constructs
      that reference outer query levels (Richard Guo, Tom Lane)
      <ulink url="&commit_baseurl;48b6035f0">&sect;</ulink>
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [e5691cc91] 2022-02-11 15:24:02 -0500
Branch: REL_14_STABLE [277e744ae] 2022-02-11 15:23:52 -0500
Branch: REL_13_STABLE [0778b24ce] 2022-02-11 15:23:52 -0500
Branch: REL_12_STABLE [32e801676] 2022-02-11 15:23:52 -0500
Branch: REL_11_STABLE [14ee565f3] 2022-02-11 15:23:52 -0500
Branch: REL_10_STABLE [b6f869bee] 2022-02-11 15:23:52 -0500
-->
     <para>
      Fix plan generation for index-only scans on indexes with
      both returnable and non-returnable columns (Tom Lane)
      <ulink url="&commit_baseurl;277e744ae">&sect;</ulink>
     </para>

     <para>
      The previous coding could try to read non-returnable columns
      in addition to the returnable ones.  This was fairly harmless
      because it didn't actually do anything with the bogus values,
      but it fell foul of a recently-added error check that rejected
      such a plan.
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [7b7ed046c] 2022-04-13 13:35:07 -0400
Branch: REL_14_STABLE [c590e514a] 2022-04-13 13:35:02 -0400
Branch: REL_13_STABLE [44096c31e] 2022-04-13 13:35:02 -0400
Branch: REL_12_STABLE [e0ed20d0b] 2022-04-13 13:35:02 -0400
-->
     <para>
      Avoid accessing a no-longer-pinned shared buffer while attempting
      to lock an outdated tuple during EvalPlanQual (Tom Lane)
      <ulink url="&commit_baseurl;c590e514a">&sect;</ulink>
     </para>

     <para>
      The code would touch the buffer a couple more times after releasing
      its pin.  In theory another process could recycle the buffer (or
      more likely, try to defragment its free space) as soon as the pin is
      gone, probably leading to failure to find the newer version of the
      tuple.
     </para>
    </listitem>

    <listitem>
<!--
Author: Alexander Korotkov <akorotkov@postgresql.org>
Branch: master [3f74daa8d] 2022-02-14 04:17:04 +0300
Branch: REL_14_STABLE [c76665edc] 2022-02-14 03:32:31 +0300
Branch: REL_13_STABLE [ac2303aa0] 2022-02-14 03:32:34 +0300
Branch: REL_12_STABLE [7a12a9e3c] 2022-02-14 03:32:39 +0300
Branch: REL_11_STABLE [0d554775b] 2022-02-14 04:04:19 +0300
Branch: REL_10_STABLE [2e9033a54] 2022-02-14 04:04:28 +0300
-->
     <para>
      Fix query-lifespan memory leak in an IndexScan node that is
      performing reordering (Aliaksandr Kalenik)
      <ulink url="&commit_baseurl;c76665edc">&sect;</ulink>
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [344a225cb] 2022-04-19 23:03:59 -0400
Branch: REL_14_STABLE [08a9e7a8c] 2022-04-19 23:03:59 -0400
Branch: REL_13_STABLE [f583633bc] 2022-04-19 23:03:59 -0400
Branch: REL_12_STABLE [481a99811] 2022-04-19 23:03:59 -0400
Branch: REL_11_STABLE [9130f8cbb] 2022-04-19 23:03:59 -0400
Branch: REL_10_STABLE [409bcfda6] 2022-04-19 23:03:59 -0400
-->
     <para>
      Fix <command>ALTER FUNCTION</command> to support changing a
      function's parallelism property and
      its <literal>SET</literal>-variable list in the same command (Tom
      Lane)
      <ulink url="&commit_baseurl;08a9e7a8c">&sect;</ulink>
     </para>

     <para>
      The parallelism property change was lost if the same command also
      updated the function's <literal>SET</literal> clause.
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [641f3dffc] 2022-03-11 13:47:29 -0500
Branch: REL_14_STABLE [8dcd1c356] 2022-03-11 13:47:26 -0500
-->
     <para>
      Tighten lookup of the index <quote>owned by</quote> a constraint
      (Tom Lane, Japin Li)
      <ulink url="&commit_baseurl;8dcd1c356">&sect;</ulink>
     </para>

     <para>
      Some code paths mistook the index depended on by a foreign key
      constraint for one owned by a unique or primary key constraint,
      resulting in odd errors during certain <command>ALTER
      TABLE</command> operations on tables having foreign key constraints.
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [36d4efe77] 2022-04-18 12:16:45 -0400
Branch: REL_14_STABLE [e805735a8] 2022-04-18 12:16:45 -0400
Branch: REL_13_STABLE [69cefb3fb] 2022-04-18 12:16:45 -0400
Branch: REL_12_STABLE [0795da869] 2022-04-18 12:16:45 -0400
-->
     <para>
      Fix bogus errors from attempts to alter system columns of tables
      (Tom Lane)
      <ulink url="&commit_baseurl;e805735a8">&sect;</ulink>
     </para>

     <para>
      The system should just tell you that you can't do it, but sometimes
      it would report <quote>no owned sequence found</quote> instead.
     </para>
    </listitem>

    <listitem>
<!--
Author: Peter Geoghegan <pg@bowt.ie>
Branch: master [8ab0ebb9a] 2022-04-20 17:17:43 -0700
Branch: REL_14_STABLE [e4521841a] 2022-04-20 17:17:41 -0700
Branch: REL_13_STABLE [1272630a2] 2022-04-20 17:17:39 -0700
Branch: REL_12_STABLE [5487585e3] 2022-04-20 17:17:37 -0700
Branch: REL_11_STABLE [adb2d84fc] 2022-04-20 17:17:35 -0700
Branch: REL_10_STABLE [a903895b3] 2022-04-20 17:17:33 -0700
-->
     <para>
      Fix mis-sorting of table rows when <command>CLUSTER</command>ing
      using an index whose leading key is an expression (Peter Geoghegan,
      Thomas Munro)
      <ulink url="&commit_baseurl;e4521841a">&sect;</ulink>
     </para>

     <para>
      The table would be rebuilt with the correct data, but in an order
      having little to do with the index order.
     </para>
    </listitem>

    <listitem>
<!--
Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
Branch: master [6c46e8a5d] 2022-02-24 16:15:12 +0200
Branch: REL_14_STABLE [7d80e93fb] 2022-02-24 14:34:09 +0200
-->
     <para>
      Prevent data loss if a system crash occurs shortly after a sorted
      GiST index build (Heikki Linnakangas)
      <ulink url="&commit_baseurl;7d80e93fb">&sect;</ulink>
     </para>

     <para>
      The code path for building GiST indexes using sorting neglected
      to <function>fsync</function> the file upon completion.  This could
      result in a corrupted index if the operating system crashed shortly
      later.
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [7b6ec8653] 2022-03-21 12:22:13 -0400
Branch: REL_14_STABLE [05ccf974c] 2022-03-21 12:22:13 -0400
Branch: REL_13_STABLE [2241e5ced] 2022-03-21 12:22:13 -0400
Branch: REL_12_STABLE [d8d378d51] 2022-03-21 12:22:13 -0400
Branch: REL_11_STABLE [b8ae17fd9] 2022-03-21 12:22:13 -0400
-->
     <para>
      Fix risk of deadlock failures while dropping a partitioned index
      (Jimmy Yih, Gaurab Dey, Tom Lane)
      <ulink url="&commit_baseurl;05ccf974c">&sect;</ulink>
     </para>

     <para>
      Ensure that the required table and index locks are taken in the
      standard order (parents before children, tables before indexes).
      The previous coding for <command>DROP INDEX</command> did it
      differently, and so could deadlock against concurrent queries taking
      these locks in the standard order.
     </para>
    </listitem>

    <listitem>
<!--
Author: Thomas Munro <tmunro@postgresql.org>
Branch: master [46d9bfb0a] 2022-03-16 17:20:24 +1300
Branch: REL_14_STABLE [26e007939] 2022-03-16 17:20:50 +1300
Branch: REL_13_STABLE [51e760e5a] 2022-03-16 17:21:19 +1300
Branch: REL_12_STABLE [c918f07dd] 2022-03-16 17:21:46 +1300
Branch: REL_11_STABLE [ca522c60a] 2022-03-16 17:38:55 +1300
Branch: REL_10_STABLE [fe197872c] 2022-03-16 17:41:31 +1300
-->
     <para>
      Fix race condition between <command>DROP TABLESPACE</command> and
      checkpointing (Nathan Bossart)
      <ulink url="&commit_baseurl;26e007939">&sect;</ulink>
     </para>

     <para>
      The checkpoint forced by <command>DROP TABLESPACE</command> could
      sometimes fail to remove all dead files from the tablespace's
      directory, leading to a bogus <quote>tablespace is not empty</quote>
      error.
     </para>
    </listitem>

    <listitem>
<!--
Author: Robert Haas <rhaas@postgresql.org>
Branch: master [412ad7a55] 2022-03-24 14:52:28 -0400
Branch: REL_14_STABLE [bbace5697] 2022-03-24 14:32:48 -0400
Branch: REL_13_STABLE [1ce14b6b2] 2022-03-24 14:36:06 -0400
Branch: REL_12_STABLE [3821d66a7] 2022-03-24 14:38:51 -0400
Branch: REL_11_STABLE [118f1a332] 2022-03-24 14:49:08 -0400
Branch: REL_10_STABLE [57f618310] 2022-03-24 14:50:06 -0400
Author: Robert Haas <rhaas@postgresql.org>
Branch: REL_14_STABLE [10520f434] 2022-04-14 11:10:07 -0400
Branch: REL_13_STABLE [d18c913b7] 2022-04-14 11:10:11 -0400
Branch: REL_12_STABLE [68e605b9e] 2022-04-14 11:10:13 -0400
Branch: REL_11_STABLE [6270ee445] 2022-04-14 11:10:16 -0400
Branch: REL_10_STABLE [48b398943] 2022-04-14 11:10:18 -0400
-->
     <para>
      Fix possible trouble in crash recovery after
      a <command>TRUNCATE</command> command that overlaps a checkpoint
      (Kyotaro Horiguchi, Heikki Linnakangas, Robert Haas)
      <ulink url="&commit_baseurl;bbace5697">&sect;</ulink>
      <ulink url="&commit_baseurl;10520f434">&sect;</ulink>
     </para>

     <para>
      <command>TRUNCATE</command> must ensure that the table's disk file
      is truncated before the checkpoint is allowed to complete.
      Otherwise, replay starting from that checkpoint might find
      unexpected data in the supposedly-removed pages, possibly causing
      replay failure.
     </para>
    </listitem>

    <listitem>
<!--
Author: Andres Freund <andres@anarazel.de>
Branch: master [7c38ef2a5] 2022-02-21 08:57:34 -0800
Branch: REL_14_STABLE [7bbfe5994] 2022-02-21 09:57:05 -0800
Branch: REL_13_STABLE [c2551483e] 2022-02-21 08:59:30 -0800
Branch: REL_12_STABLE [0033fc63f] 2022-02-21 08:59:32 -0800
Branch: REL_11_STABLE [3faa21bb7] 2022-02-21 08:59:34 -0800
Branch: REL_10_STABLE [cebc54b90] 2022-02-21 08:59:36 -0800
-->
     <para>
      Fix unsafe toast-data accesses during temporary object cleanup
      (Andres Freund)
      <ulink url="&commit_baseurl;7bbfe5994">&sect;</ulink>
     </para>

     <para>
      Temporary-object deletion during server process exit could fail
      with <quote>FATAL: cannot fetch toast data without an active
      snapshot</quote>.  This was usually harmless since the next use of
      that temporary schema would clean up successfully.
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [bd74c4037] 2022-02-23 11:10:46 -0500
Branch: REL_14_STABLE [dd7c05979] 2022-02-23 11:10:46 -0500
-->
     <para>
      Re-allow underscore as the first character in a custom parameter
      name (Japin Li)
      <ulink url="&commit_baseurl;dd7c05979">&sect;</ulink>
     </para>

     <para>
      Such names were unintentionally disallowed in v14.
     </para>
    </listitem>

    <listitem>
<!--
Author: Michael Paquier <michael@paquier.xyz>
Branch: master [ebf6c5249] 2022-02-22 10:22:15 +0900
Branch: REL_14_STABLE [627c79a1e] 2022-02-22 10:23:49 +0900
-->
     <para>
      Add <literal>regress</literal> option for
      the <varname>compute_query_id</varname> parameter (Michael Paquier)
      <ulink url="&commit_baseurl;627c79a1e">&sect;</ulink>
     </para>

     <para>
      This is intended to facilitate testing, by allowing query IDs to be
      computed but not shown in <command>EXPLAIN</command> output.
     </para>
    </listitem>

    <listitem>
<!--
Author: Thomas Munro <tmunro@postgresql.org>
Branch: master [3390ef1b7] 2022-03-16 15:35:16 +1300
Branch: REL_14_STABLE [1396b5c6e] 2022-03-16 15:35:42 +1300
Branch: REL_13_STABLE [cfdb303be] 2022-03-16 15:37:15 +1300
Branch: REL_12_STABLE [368ffdeee] 2022-03-16 15:38:13 +1300
-->
     <para>
      Improve wait logic in RegisterSyncRequest (Thomas Munro)
      <ulink url="&commit_baseurl;1396b5c6e">&sect;</ulink>
     </para>

     <para>
      If we run out of space in the checkpointer sync request queue (which
      is hopefully rare on real systems, but is common when testing with a
      very small buffer pool), we wait for it to drain.  While waiting, we
      should report that as a wait event so that users know what is going
      on, and also watch for postmaster death, since otherwise the loop might
      never terminate if the checkpointer has already exited.
     </para>
    </listitem>

    <listitem>
<!--
Author: Thomas Munro <tmunro@postgresql.org>
Branch: master [5e6368b42] 2022-03-16 13:57:59 +1300
Branch: REL_14_STABLE [78c0f85e4] 2022-03-16 13:57:07 +1300
Branch: master [501c66c81] 2022-03-16 15:55:15 +1300
Branch: REL_14_STABLE [ea70f6945] 2022-03-16 15:56:41 +1300
-->
     <para>
      Wake up for latch events when the checkpointer is waiting between
      writes (Thomas Munro)
      <ulink url="&commit_baseurl;78c0f85e4">&sect;</ulink>
      <ulink url="&commit_baseurl;ea70f6945">&sect;</ulink>
     </para>

     <para>
      This improves responsiveness to backends sending sync requests.
      The change also creates a proper wait event class for these waits.
     </para>
    </listitem>

    <listitem>
<!--
Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
Branch: master [9d92582ab] 2022-03-23 18:22:10 +0100
Branch: REL_14_STABLE [caaeb88ff] 2022-03-23 18:22:10 +0100
Branch: REL_13_STABLE [98eb3e06c] 2022-03-23 18:22:10 +0100
Branch: REL_12_STABLE [c714ebd0e] 2022-03-23 18:22:10 +0100
Branch: REL_11_STABLE [199cd7b59] 2022-03-23 18:22:10 +0100
Branch: REL_10_STABLE [9ade3c09a] 2022-03-23 18:22:10 +0100
-->
     <para>
      Fix <quote>PANIC: xlog flush request is not satisfied</quote>
      failure during standby promotion when there is a missing WAL
      continuation record (Sami Imseih)
      <ulink url="&commit_baseurl;caaeb88ff">&sect;</ulink>
     </para>
    </listitem>

    <listitem>
<!--
Author: Andres Freund <andres@anarazel.de>
Branch: master [8f1537d10] 2022-05-02 18:25:00 -0700
Branch: REL_14_STABLE [9ab3b2bdb] 2022-05-02 18:25:59 -0700
Branch: REL_13_STABLE [57c5ad168] 2022-05-02 18:28:10 -0700
Branch: REL_12_STABLE [edfc03ec9] 2022-05-02 18:29:52 -0700
Branch: REL_11_STABLE [9cda785b4] 2022-05-02 18:30:15 -0700
Branch: REL_10_STABLE [cbc47ad7e] 2022-05-02 18:30:38 -0700
Author: Andres Freund <andres@anarazel.de>
Branch: REL_14_STABLE [f74496dd6] 2022-05-02 18:26:09 -0700
Branch: REL_13_STABLE [0446d3bf3] 2022-05-02 18:29:35 -0700
Branch: REL_12_STABLE [a5ede1391] 2022-05-02 18:29:52 -0700
Branch: REL_11_STABLE [25d5494e2] 2022-05-02 18:30:15 -0700
Branch: REL_10_STABLE [b1f35a36e] 2022-05-02 18:30:38 -0700
Author: Andres Freund <andres@anarazel.de>
Branch: REL_14_STABLE [5ab8e8014] 2022-05-02 18:09:42 -0700
Branch: REL_13_STABLE [90abe1e17] 2022-05-02 18:09:43 -0700
Branch: REL_12_STABLE [5c8b14a71] 2022-05-02 18:09:43 -0700
Branch: REL_11_STABLE [2adb8debe] 2022-05-02 18:09:44 -0700
Branch: REL_10_STABLE [e8a0cf9b2] 2022-05-02 18:09:44 -0700
-->
     <para>
      Fix possibility of self-deadlock in hot standby conflict handling
      (Andres Freund)
      <ulink url="&commit_baseurl;9ab3b2bdb">&sect;</ulink>
      <ulink url="&commit_baseurl;f74496dd6">&sect;</ulink>
      <ulink url="&commit_baseurl;5ab8e8014">&sect;</ulink>
     </para>

     <para>
      With unlucky timing, the WAL-applying process could get stuck
      while waiting for some other process to release a buffer lock.
     </para>
    </listitem>

    <listitem>
<!--
Author: Tomas Vondra <tomas.vondra@postgresql.org>
Branch: master [c91f71b9d] 2022-03-16 18:05:58 +0100
Branch: REL_14_STABLE [677a1dc0c] 2022-03-16 18:06:27 +0100
Branch: REL_13_STABLE [27fafee72] 2022-03-16 18:14:33 +0100
-->
     <para>
      Fix possible mis-identification of the correct ancestor relation
      to publish logical replication changes through (Tomas Vondra, Hou
      zj, Amit Kapila)
      <ulink url="&commit_baseurl;677a1dc0c">&sect;</ulink>
     </para>

     <para>
      If <varname>publish_via_partition_root</varname> is enabled, and
      there are multiple publications naming different ancestors of the
      currently-modified relation, the wrong ancestor might be chosen for
      reporting the change.
     </para>
    </listitem>

    <listitem>
<!--
Author: Amit Kapila <akapila@postgresql.org>
Branch: master [dd4ab6fd6] 2022-04-19 08:49:49 +0530
Branch: REL_14_STABLE [c9dea58e2] 2022-04-19 08:54:37 +0530
Branch: REL_13_STABLE [82d4a17a1] 2022-04-19 09:08:05 +0530
Branch: REL_12_STABLE [59348fbde] 2022-04-19 09:18:44 +0530
Branch: REL_11_STABLE [a90de822e] 2022-04-19 09:29:34 +0530
Branch: REL_10_STABLE [be46985be] 2022-04-19 09:38:25 +0530
-->
     <para>
      Ensure that logical replication apply workers can be restarted even
      when we're up against
      the <varname>max_sync_workers_per_subscription</varname> limit
      (Amit Kapila)
      <ulink url="&commit_baseurl;c9dea58e2">&sect;</ulink>
     </para>

     <para>
      Faulty coding of the limit check caused a restarted worker to exit
      immediately, leaving fewer workers than there should be.
     </para>
    </listitem>

    <listitem>
<!--
Author: Amit Kapila <akapila@postgresql.org>
Branch: master [5e01001ff] 2022-02-14 08:55:58 +0530
Branch: REL_14_STABLE [04645bbca] 2022-02-14 08:07:46 +0530
Branch: REL_13_STABLE [caa231be9] 2022-02-14 08:24:44 +0530
Branch: REL_12_STABLE [ce349cf17] 2022-02-14 08:27:56 +0530
Branch: REL_11_STABLE [1cd5802ac] 2022-02-14 08:37:23 +0530
Branch: REL_10_STABLE [b5e060473] 2022-02-14 08:45:54 +0530
-->
     <para>
      Include unchanged replica identity key columns in the WAL log for an
      update, if they are stored out-of-line (Dilip Kumar, Amit Kapila)
      <ulink url="&commit_baseurl;04645bbca">&sect;</ulink>
     </para>

     <para>
      Otherwise subscribers cannot see the values and will fail to
      replicate the update.
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [0fb6954aa] 2022-03-27 12:57:46 -0400
Branch: REL_14_STABLE [3f7a59c59] 2022-03-27 12:57:52 -0400
Branch: REL_13_STABLE [9016a2a3d] 2022-03-27 12:57:57 -0400
-->
     <para>
      Cope correctly with platforms that have no support for altering the
      server process's display in <application>ps(1)</application> (Andrew
      Dunstan)
      <ulink url="&commit_baseurl;3f7a59c59">&sect;</ulink>
     </para>

     <para>
      Few platforms are like this (the only supported one is Cygwin), so
      we'd managed not to notice that refactoring introduced a potential
      memory clobber.
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [d37776e45] 2022-02-10 11:52:28 -0500
Branch: REL_14_STABLE [2e211c166] 2022-02-10 11:52:20 -0500
-->
     <para>
      Make the server more robust against missed timer interrupts (Michael
      Harris, Tom Lane)
      <ulink url="&commit_baseurl;2e211c166">&sect;</ulink>
     </para>

     <para>
      An optimization added in v14 meant that if a server process somehow
      missed a timer interrupt, it would never again ask the kernel for
      another one, thus breaking timeout detection for the remainder of the
      session.  This seems unduly fragile, so add a recovery path.
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [638300fef] 2022-02-25 17:40:43 -0500
Branch: REL_14_STABLE [ac910bb23] 2022-02-25 17:40:43 -0500
Branch: REL_13_STABLE [9b2d762a2] 2022-02-25 17:40:44 -0500
Branch: REL_12_STABLE [0f7b62f29] 2022-02-25 17:40:45 -0500
Branch: REL_11_STABLE [31befa6be] 2022-02-25 17:40:45 -0500
Branch: REL_10_STABLE [4936747c4] 2022-02-25 17:40:21 -0500
-->
     <para>
      Disallow execution of SPI functions during PL/Perl function
      compilation (Tom Lane)
      <ulink url="&commit_baseurl;ac910bb23">&sect;</ulink>
     </para>

     <para>
      Perl can be convinced to execute user-defined code during compilation
      of a PL/Perl function.  However, it's not okay for such code to try
      to invoke SQL operations via SPI.  That results in a crash, and if
      it didn't crash it would be a security hazard, because we really
      don't want code execution during function validation.  Put in a
      check to give a friendlier error message instead.
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [a59c79564] 2022-02-28 14:12:52 -0500
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [50f03473e] 2022-03-02 11:29:11 -0500
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: REL_14_STABLE [2a1f84636] 2022-03-02 11:57:02 -0500
Branch: REL_13_STABLE [6599d8f12] 2022-03-02 11:57:02 -0500
Branch: REL_12_STABLE [72918ea86] 2022-03-02 11:57:02 -0500
Branch: REL_11_STABLE [5bb3d91ea] 2022-03-02 11:57:02 -0500
Branch: REL_10_STABLE [9050999ef] 2022-03-02 11:57:02 -0500
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [878e64d0f] 2022-03-31 11:24:26 -0400
Branch: REL_14_STABLE [402279afe] 2022-03-31 11:24:26 -0400
Branch: REL_13_STABLE [fb1d7f451] 2022-03-31 11:24:26 -0400
Branch: REL_12_STABLE [fcaf7d725] 2022-03-31 11:24:26 -0400
Branch: REL_11_STABLE [143043191] 2022-03-31 11:24:26 -0400
Branch: REL_10_STABLE [a6bd1f0ee] 2022-03-31 11:24:26 -0400
-->
     <para>
      Make <application>libpq</application> accept root-owned SSL private
      key files (David Steele)
      <ulink url="&commit_baseurl;2a1f84636">&sect;</ulink>
      <ulink url="&commit_baseurl;402279afe">&sect;</ulink>
     </para>

     <para>
      This change synchronizes <application>libpq</application>'s rules
      for safe ownership and permissions of SSL key files with the rules
      the server has used since release 9.6.  Namely, in addition to the
      current rules, allow the case where the key file is owned by root
      and has permissions <literal>rw-r-----</literal> or less.  This is
      helpful for system-wide management of key files.
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [335fa5a26] 2022-02-12 13:23:20 -0500
Branch: REL_14_STABLE [ae27b1acc] 2022-02-12 13:23:20 -0500
Branch: REL_13_STABLE [51ee561f5] 2022-02-12 13:23:20 -0500
Branch: REL_12_STABLE [c9d35dc7f] 2022-02-12 13:23:20 -0500
-->
     <para>
      Fix behavior of <application>libpq</application>'s
      <function>PQisBusy()</function> function after a connection failure
      (Tom Lane)
      <ulink url="&commit_baseurl;ae27b1acc">&sect;</ulink>
     </para>

     <para>
      If we'd detected a write failure, <function>PQisBusy()</function>
      would always return true, which is the wrong thing: we want input
      processing to carry on normally until we've read whatever is
      available from the server.  The practical effect of this error is
      that applications using <application>libpq</application>'s
      async-query API would typically detect connection loss only
      when <function>PQconsumeInput()</function> returns a hard failure.
      With this fix, a connection loss will normally be reported via an
      error <structname>PGresult</structname> object, which is a much
      cleaner behavior for most applications.
     </para>
    </listitem>

    <listitem>
<!--
Author: Robert Haas <rhaas@postgresql.org>
Branch: master [d2d354797] 2022-04-20 11:37:29 -0400
Branch: REL_14_STABLE [4a66300ac] 2022-04-20 11:39:44 -0400
Author: Robert Haas <rhaas@postgresql.org>
Branch: master [a66e722cc] 2022-04-22 16:19:39 -0400
Branch: REL_14_STABLE [75a006bee] 2022-04-25 09:14:19 -0400
-->
     <para>
      Re-allow <replaceable>database</replaceable>.<replaceable>schema</replaceable>.<replaceable>table</replaceable>
      patterns
      in <application>psql</application>, <application>pg_dump</application>,
      and <application>pg_amcheck</application> (Mark Dilger)
      <ulink url="&commit_baseurl;4a66300ac">&sect;</ulink>
      <ulink url="&commit_baseurl;75a006bee">&sect;</ulink>
     </para>

     <para>
      Versions before v14 silently ignored all but
      the <replaceable>schema</replaceable>
      and <replaceable>table</replaceable> fragments of a pattern
      containing more than one dot.  Refactoring in v14 accidentally broke
      that use-case.  Reinstate it, but now complain if the first fragment
      is not the name of the current database.
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [a745b9365] 2022-02-10 16:49:39 -0500
Branch: REL_14_STABLE [1e8c5cf7c] 2022-02-10 16:49:39 -0500
Branch: REL_13_STABLE [d0e1fd958] 2022-02-10 16:49:39 -0500
Branch: REL_12_STABLE [61c20a5ea] 2022-02-10 16:49:39 -0500
Branch: REL_11_STABLE [69cc15c31] 2022-02-10 16:49:39 -0500
Branch: REL_10_STABLE [34523933b] 2022-02-10 16:49:39 -0500
-->
     <para>
      Make <application>pg_ctl</application> recheck postmaster aliveness
      while waiting for stop/restart/promote actions (Tom Lane)
      <ulink url="&commit_baseurl;1e8c5cf7c">&sect;</ulink>
     </para>

     <para>
      <application>pg_ctl</application> would verify that the postmaster
      is alive as a side-effect of sending the stop or promote signal, but
      then it just naively waited to see the on-disk state change.  If the
      postmaster died uncleanly without having removed its PID file or
      updated the control file, <application>pg_ctl</application> would
      wait until timeout.  Instead make it recheck every so often that the
      postmaster process is still there.
     </para>
    </listitem>

    <listitem>
<!--
Author: Andres Freund <andres@anarazel.de>
Branch: master [cd83cb953] 2022-02-25 10:30:05 -0800
Branch: REL_14_STABLE [9ff7fd906] 2022-02-25 10:31:16 -0800
Branch: REL_13_STABLE [0b1020a96] 2022-02-25 10:32:38 -0800
Branch: REL_12_STABLE [5407241a8] 2022-02-25 10:34:38 -0800
Branch: REL_11_STABLE [51c341656] 2022-02-25 10:40:32 -0800
Author: Andres Freund <andres@anarazel.de>
Branch: master [264d28492] 2022-03-27 18:13:50 -0700
Branch: REL_14_STABLE [6839aa7a6] 2022-03-27 18:15:10 -0700
Branch: REL_13_STABLE [344d89abf] 2022-03-27 18:15:14 -0700
Branch: REL_12_STABLE [5ebd262dc] 2022-03-27 18:15:15 -0700
Branch: REL_11_STABLE [7d935bdf7] 2022-03-27 18:15:17 -0700
-->
     <para>
      Fix error handling in <application>pg_waldump</application> (Kyotaro
      Horiguchi, Andres Freund)
      <ulink url="&commit_baseurl;9ff7fd906">&sect;</ulink>
      <ulink url="&commit_baseurl;6839aa7a6">&sect;</ulink>
     </para>

     <para>
      While trying to read a WAL file to determine the WAL segment size,
      <application>pg_waldump</application> would report an incorrect
      error for the case of a too-short file.  In addition, the file name
      reported in this and related error messages could be garbage.
     </para>
    </listitem>

    <listitem>
<!--
Author: Michael Paquier <michael@paquier.xyz>
Branch: master [cd4868a57] 2022-04-14 15:08:03 +0900
Branch: REL_14_STABLE [df6bbe73b] 2022-04-14 15:09:26 +0900
Branch: REL_13_STABLE [2275d044d] 2022-04-14 15:09:36 +0900
Branch: REL_12_STABLE [5378d55cb] 2022-04-14 15:09:39 +0900
Branch: REL_11_STABLE [79fed072b] 2022-04-14 15:09:42 +0900
Branch: REL_10_STABLE [12d32b7bc] 2022-04-14 15:09:46 +0900
-->
     <para>
      Ensure that <filename>contrib/pageinspect</filename> functions cope
      with all-zero pages (Michael Paquier)
      <ulink url="&commit_baseurl;df6bbe73b">&sect;</ulink>
     </para>

     <para>
      This is a legitimate edge case, but the module was mostly unprepared
      for it.  Arrange to return nulls, or no rows, as appropriate; that
      seems more useful than raising an error.
     </para>
    </listitem>

    <listitem>
<!--
Author: Michael Paquier <michael@paquier.xyz>
Branch: master [291e517a4] 2022-03-27 17:53:40 +0900
Branch: REL_14_STABLE [27d384441] 2022-03-27 17:53:51 +0900
Branch: REL_13_STABLE [3d4d6dee0] 2022-03-27 17:53:55 +0900
Branch: REL_12_STABLE [5ca2aa2f2] 2022-03-27 17:53:59 +0900
Branch: REL_11_STABLE [1a2fdf86a] 2022-03-27 17:54:03 +0900
Branch: REL_10_STABLE [ab80b0fbb] 2022-03-27 17:54:08 +0900
Author: Michael Paquier <michael@paquier.xyz>
Branch: master [076f4d953] 2022-03-16 11:19:39 +0900
Branch: REL_14_STABLE [b61e6214c] 2022-03-16 11:20:47 +0900
Branch: REL_13_STABLE [d3a9b83c3] 2022-03-16 11:20:51 +0900
Branch: REL_12_STABLE [af8a8eb54] 2022-03-16 11:20:54 +0900
Branch: REL_11_STABLE [2389ee8dd] 2022-03-16 11:20:57 +0900
Branch: REL_10_STABLE [c42b88932] 2022-03-16 11:21:00 +0900
Author: Michael Paquier <michael@paquier.xyz>
Branch: master [4477dcb20] 2022-03-16 12:29:39 +0900
Branch: REL_14_STABLE [dc5b3bdae] 2022-03-16 12:29:47 +0900
Branch: REL_13_STABLE [028a3c6b1] 2022-03-16 12:29:55 +0900
Branch: REL_12_STABLE [5cb770210] 2022-03-16 12:29:59 +0900
Branch: REL_11_STABLE [09c97746d] 2022-03-16 12:30:02 +0900
Branch: REL_10_STABLE [07e343513] 2022-03-16 12:30:07 +0900
-->
     <para>
      In <filename>contrib/pageinspect</filename>, add defenses against
      incorrect page <quote>special space</quote> contents, tighten checks
      for correct page size, and add some missing checks that an index is
      of the expected type (Michael Paquier, Justin Pryzby, Julien
      Rouhaud)
      <ulink url="&commit_baseurl;27d384441">&sect;</ulink>
      <ulink url="&commit_baseurl;b61e6214c">&sect;</ulink>
      <ulink url="&commit_baseurl;dc5b3bdae">&sect;</ulink>
     </para>

     <para>
      These changes make it less likely that the module will crash on bad
      data.
     </para>
    </listitem>

    <listitem>
<!--
Author: Etsuro Fujita <efujita@postgresql.org>
Branch: master [4eea2202b] 2022-04-21 15:30:00 +0900
Branch: REL_14_STABLE [89d349b0a] 2022-04-21 15:30:02 +0900
-->
     <para>
      In <filename>contrib/postgres_fdw</filename>, disable batch
      insertion when <literal>BEFORE INSERT ... FOR EACH ROW</literal>
      triggers exist on the foreign table (Etsuro Fujita)
      <ulink url="&commit_baseurl;89d349b0a">&sect;</ulink>
     </para>

     <para>
      Such a trigger might query the table it's on and expect to see
      previously-inserted rows.  With batch insertion, those rows might
      not be visible yet, so disable the feature to avoid unexpected
      behavior.
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [f3dd9fe1d] 2022-03-31 14:29:48 -0400
Branch: REL_14_STABLE [9f9489aa2] 2022-03-31 14:29:24 -0400
Branch: REL_13_STABLE [79df1d20c] 2022-03-31 14:29:24 -0400
Branch: REL_12_STABLE [989d3e4a2] 2022-03-31 14:29:24 -0400
Branch: REL_11_STABLE [b9eb0412f] 2022-03-31 14:29:24 -0400
Branch: REL_10_STABLE [728fc0f9a] 2022-03-31 14:29:24 -0400
-->
     <para>
      In <filename>contrib/postgres_fdw</filename>, verify
      that <literal>ORDER BY</literal> clauses are safe to ship before
      requesting a remotely-ordered query, and include
      a <literal>USING</literal> clause if necessary (Ronan Dunklau)
      <ulink url="&commit_baseurl;9f9489aa2">&sect;</ulink>
     </para>

     <para>
      This fix prevents situations where the remote server might sort in a
      different order than we intend.  While sometimes that would be only
      cosmetic, it could produce thoroughly wrong results if the remote
      data is used as input for a locally-performed merge join.
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [c5f5b4dd4] 2022-02-09 14:24:54 -0500
Branch: REL_14_STABLE [c23461a22] 2022-02-09 14:24:55 -0500
-->
     <para>
      Fix <application>configure</application> to handle platforms that
      have <filename>sys/epoll.h</filename> but
      not <filename>sys/signalfd.h</filename> (Tom Lane)
      <ulink url="&commit_baseurl;c23461a22">&sect;</ulink>
     </para>
    </listitem>

    <listitem>
<!--
Author: Thomas Munro <tmunro@postgresql.org>
Branch: master [e6a760020] 2021-09-27 10:53:20 +1300
Author: Thomas Munro <tmunro@postgresql.org>
Branch: master [807fee1a3] 2022-02-04 16:16:10 +1300
Author: Thomas Munro <tmunro@postgresql.org>
Branch: master [a56e7b660] 2022-03-16 10:30:55 +1300
Author: Thomas Munro <tmunro@postgresql.org>
Branch: REL_14_STABLE [d9f7ad54e] 2022-03-16 11:42:00 +1300
Branch: REL_13_STABLE [5610411ac] 2022-03-16 11:41:13 +1300
Branch: REL_12_STABLE [45a469eb2] 2022-03-16 11:40:43 +1300
Branch: REL_11_STABLE [986d24042] 2022-03-16 11:35:00 +1300
-->
     <para>
      Update <acronym>JIT</acronym> code to work with LLVM 14
      (Thomas Munro)
      <ulink url="&commit_baseurl;d9f7ad54e">&sect;</ulink>
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [46ab07ffd] 2022-03-03 18:13:24 -0500
Branch: REL_14_STABLE [b0bc196e5] 2022-03-03 18:13:24 -0500
Branch: REL_13_STABLE [1a027e6b7] 2022-03-03 18:13:24 -0500
Branch: REL_12_STABLE [f727b6ea8] 2022-03-03 18:13:24 -0500
Branch: REL_11_STABLE [f2087e26e] 2022-03-03 18:13:24 -0500
Branch: REL_10_STABLE [cfbe87bd6] 2022-03-03 18:13:24 -0500
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [0fbdfaf79] 2022-03-03 19:03:17 -0500
Branch: REL_14_STABLE [5c9d17e94] 2022-03-03 19:03:35 -0500
Branch: REL_13_STABLE [97031f440] 2022-03-03 19:03:42 -0500
Branch: REL_12_STABLE [4b0696b36] 2022-03-03 19:03:46 -0500
Branch: REL_11_STABLE [566e1c04d] 2022-03-03 19:03:50 -0500
Branch: REL_10_STABLE [18c04d157] 2022-03-03 19:03:55 -0500
Author: Andres Freund <andres@anarazel.de>
Branch: master [3ac7d0241] 2022-03-23 13:05:59 -0700
Branch: REL_14_STABLE [81045e1e1] 2022-03-23 13:18:02 -0700
Branch: REL_13_STABLE [c0f99bb52] 2022-03-23 13:18:00 -0700
Branch: REL_12_STABLE [61a007fee] 2022-03-23 13:17:59 -0700
Author: Andres Freund <andres@anarazel.de>
Branch: master [1c6bb380e] 2022-03-23 13:05:25 -0700
Branch: REL_14_STABLE [89a94c24a] 2022-03-23 13:13:18 -0700
Branch: REL_13_STABLE [8014c61eb] 2022-03-23 13:13:20 -0700
Branch: REL_12_STABLE [c5b60a68c] 2022-03-23 13:13:33 -0700
Branch: REL_11_STABLE [2121d5809] 2022-03-23 13:13:40 -0700
Branch: REL_10_STABLE [5f4615b9d] 2022-03-23 13:13:49 -0700
Author: Andres Freund <andres@anarazel.de>
Branch: master [e71c76fca] 2022-03-23 12:43:14 -0700
Branch: REL_14_STABLE [e52e9bd57] 2022-03-23 12:43:41 -0700
Branch: REL_13_STABLE [7c163aa93] 2022-03-23 12:43:40 -0700
Branch: REL_12_STABLE [6a767bc2e] 2022-03-23 12:43:38 -0700
Branch: REL_11_STABLE [a77dddb42] 2022-03-23 12:43:36 -0700
Branch: REL_10_STABLE [2a9193726] 2022-03-23 12:43:33 -0700
-->
     <para>
      Clean up assorted failures under <productname>clang</productname>'s
      <literal>-fsanitize=undefined</literal> checks (Tom Lane, Andres
      Freund, Zhihong Yu)
      <ulink url="&commit_baseurl;b0bc196e5">&sect;</ulink>
      <ulink url="&commit_baseurl;5c9d17e94">&sect;</ulink>
      <ulink url="&commit_baseurl;81045e1e1">&sect;</ulink>
      <ulink url="&commit_baseurl;89a94c24a">&sect;</ulink>
      <ulink url="&commit_baseurl;e52e9bd57">&sect;</ulink>
     </para>

     <para>
      Most of these changes are just for pro-forma compliance with the
      letter of the C and POSIX standards, and are unlikely to have any
      effect on production builds.
     </para>
    </listitem>

    <listitem>
<!--
Author: Peter Eisentraut <peter@eisentraut.org>
Branch: master [465ab2429] 2022-04-01 17:15:24 +0200
Branch: REL_14_STABLE [7a2789275] 2022-04-01 17:12:56 +0200
-->
     <para>
      Do not add OpenSSL dependencies to <application>libpq</application>'s
      <filename>pkg-config</filename> file when building without OpenSSL
      (Fabrice Fontaine)
      <ulink url="&commit_baseurl;7a2789275">&sect;</ulink>
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [d5c2a91e5] 2022-02-08 19:25:56 -0500
Branch: REL_14_STABLE [e327291e4] 2022-02-08 19:26:09 -0500
Branch: REL_13_STABLE [5ea3b99de] 2022-02-08 19:26:17 -0500
Branch: REL_12_STABLE [eba0f095c] 2022-02-08 19:26:22 -0500
Branch: REL_11_STABLE [3a6e3a890] 2022-02-08 19:26:26 -0500
Branch: REL_10_STABLE [1a8b6f055] 2022-02-08 19:26:30 -0500
-->
     <para>
      Fix PL/Perl so it builds on C compilers that don't support statements
      nested within expressions (Tom Lane)
      <ulink url="&commit_baseurl;e327291e4">&sect;</ulink>
     </para>

     <para>
     </para>
    </listitem>

    <listitem>
<!--
Author: Andres Freund <andres@anarazel.de>
Branch: master [097786fbb] 2022-03-22 08:22:02 -0700
Branch: REL_14_STABLE [2d608c960] 2022-03-22 08:28:51 -0700
Branch: REL_13_STABLE [f183e23cc] 2022-03-22 08:28:52 -0700
Branch: REL_12_STABLE [4553b960f] 2022-03-22 08:28:53 -0700
Branch: REL_11_STABLE [cd1951ba0] 2022-03-22 08:28:54 -0700
Branch: REL_10_STABLE [083031aa9] 2022-03-22 08:28:55 -0700
-->
     <para>
      Fix possible build failure of <application>pg_dumpall</application>
      on Windows, when not using MSVC to build (Andres Freund)
      <ulink url="&commit_baseurl;2d608c960">&sect;</ulink>
     </para>
    </listitem>

    <listitem>
<!--
Author: Andrew Dunstan <andrew@dunslane.net>
Branch: master [ea09a75e1] 2022-02-10 13:44:05 -0500
Branch: REL_14_STABLE [92f60f536] 2022-02-10 13:51:19 -0500
Branch: REL_13_STABLE [eec7c640f] 2022-02-10 13:51:40 -0500
Branch: REL_12_STABLE [64dd64807] 2022-02-10 13:51:49 -0500
Branch: REL_11_STABLE [e2d104e19] 2022-02-10 13:51:59 -0500
Branch: REL_10_STABLE [a5eef80c2] 2022-02-10 13:52:05 -0500
Branch: REL9_6_STABLE [622ab6a34] 2022-02-10 13:52:37 -0500
Branch: REL9_5_STABLE [3a5034b5e] 2022-02-10 13:53:56 -0500
Branch: REL9_4_STABLE [c76164ea0] 2022-02-10 13:56:55 -0500
-->
     <para>
      In Windows builds, use <application>gendef</application> instead
      of <application>pexports</application> to build DEF files (Andrew
      Dunstan)
      <ulink url="&commit_baseurl;92f60f536">&sect;</ulink>
     </para>

     <para>
      This adapts the build process to work on recent MSys tool chains.
     </para>
    </listitem>

    <listitem>
<!--
Author: Andrew Dunstan <andrew@dunslane.net>
Branch: master [b787c554c] 2022-04-25 15:47:55 -0400
Branch: REL_14_STABLE [71f394667] 2022-04-25 15:49:35 -0400
Branch: REL_13_STABLE [d9cede2c3] 2022-04-25 15:50:01 -0400
Branch: REL_12_STABLE [01f2bc5af] 2022-04-25 15:50:07 -0400
Branch: REL_11_STABLE [b90ce0dd7] 2022-04-25 15:51:27 -0400
Branch: REL_10_STABLE [58887d58c] 2022-04-25 15:51:58 -0400
-->
     <para>
      Prevent extra expansion of shell wildcard patterns in programs built
      under MinGW (Andrew Dunstan)
      <ulink url="&commit_baseurl;71f394667">&sect;</ulink>
     </para>

     <para>
      For some reason the C library provided by MinGW will expand shell
      wildcard characters in a program's command-line arguments by
      default.  This is confusing, not least because it doesn't happen
      under MSVC, so turn it off.
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [ab3479bf5] 2022-05-05 14:54:53 -0400
Branch: REL_14_STABLE [77ee14ed9] 2022-05-05 14:55:03 -0400
Branch: REL_13_STABLE [e9735d1af] 2022-05-05 14:55:10 -0400
Branch: REL_12_STABLE [2bb9f7501] 2022-05-05 14:55:17 -0400
Branch: REL_11_STABLE [da72ff09b] 2022-05-05 14:55:22 -0400
Branch: REL_10_STABLE [bc334ec9f] 2022-05-05 14:55:30 -0400
-->
     <para>
      Update time zone data files to <application>tzdata</application>
      release 2022a for DST law changes in Palestine, plus historical
      corrections for Chile and Ukraine. (Tom Lane)
      <ulink url="&commit_baseurl;77ee14ed9">&sect;</ulink>
     </para>
    </listitem>

   </itemizedlist>

  </sect2>
 </sect1>

 <sect1 id="release-14-2">
  <title>Release 14.2</title>

  <formalpara>
  <title>Release date:</title>
  <para>2022-02-10</para>
  </formalpara>

  <para>
   This release contains a variety of fixes from 14.1.
   For information about new features in major release 14, see
   <xref linkend="release-14"/>.
  </para>

  <sect2>
   <title>Migration to Version 14.2</title>

   <para>
    A dump/restore is not required for those running 14.X.
   </para>

   <para>
    However, some bugs have been found that may have resulted in
    corrupted indexes, as explained in the first two changelog entries.
    If any of those cases apply to you, it's recommended to reindex
    possibly-affected indexes after updating.
   </para>

   <para>
    Also, if you are upgrading from a version earlier than 14.1,
    see <xref linkend="release-14-1"/>.
   </para>
  </sect2>

  <sect2>
   <title>Changes</title>

   <itemizedlist>

    <listitem>
<!--
Author: Michael Paquier <michael@paquier.xyz>
Branch: master [f99870dd8] 2021-12-08 11:01:08 +0900
Branch: REL_14_STABLE [64ab21f0e] 2021-12-08 11:01:14 +0900
Branch: REL_13_STABLE [9acea52ea] 2021-12-08 11:01:19 +0900
Branch: REL_12_STABLE [5ed74d874] 2021-12-08 11:01:23 +0900
-->
     <para>
      Enforce standard locking protocol for TOAST table updates, to prevent
      problems with <command>REINDEX CONCURRENTLY</command> (Michael Paquier)
      <ulink url="&commit_baseurl;64ab21f0e">&sect;</ulink>
     </para>

     <para>
      If applied to a TOAST table or TOAST table's index, <command>REINDEX
      CONCURRENTLY</command> tended to produce a corrupted index.  This
      happened because sessions updating TOAST entries released
      their <literal>ROW EXCLUSIVE</literal> locks immediately, rather
      than holding them until transaction commit as all other updates do.
      The fix is to make TOAST updates hold the table lock according to the
      normal rule.  Any existing corrupted indexes can be repaired by
      reindexing again.
     </para>
    </listitem>

    <listitem>
<!--
Author: Andres Freund <andres@anarazel.de>
Branch: master [18b87b201] 2022-01-13 18:13:41 -0800
Branch: REL_14_STABLE [dad1539ae] 2022-01-14 10:56:12 -0800
-->
     <para>
      Fix corruption of HOT chains when a RECENTLY_DEAD tuple changes
      state to fully DEAD during page pruning (Andres Freund)
      <ulink url="&commit_baseurl;dad1539ae">&sect;</ulink>
     </para>

     <para>
      It was possible for <command>VACUUM</command> to remove a
      recently-dead tuple while leaving behind a redirect item that
      pointed to it.  When the tuple's item slot is later re-used by
      some new tuple, that tuple would be seen as part of the
      pre-existing HOT chain, creating a form of index corruption.
      If this has happened, reindexing the table should repair the
      damage.  However, this is an extremely low-probability scenario,
      so we do not recommend reindexing just on the chance that it might
      have happened.
     </para>
    </listitem>

    <listitem>
<!--
Author: Etsuro Fujita <efujita@postgresql.org>
Branch: master [f862d5705] 2022-02-03 15:15:00 +0900
Branch: REL_14_STABLE [7b0cec2fa] 2022-02-03 15:15:01 +0900
Author: Andres Freund <andres@anarazel.de>
Branch: master [7c1aead6c] 2022-02-03 10:44:26 -0800
Branch: REL_14_STABLE [2a3958e4d] 2022-02-03 10:44:38 -0800
-->
     <para>
      Fix crash in EvalPlanQual rechecks for tables with a mix of local
      and foreign partitions (Etsuro Fujita)
      <ulink url="&commit_baseurl;7b0cec2fa">&sect;</ulink>
      <ulink url="&commit_baseurl;2a3958e4d">&sect;</ulink>
     </para>
    </listitem>

    <listitem>
<!--
Author: Michael Paquier <michael@paquier.xyz>
Branch: master [dc084d7c7] 2022-01-29 10:22:42 +0900
Branch: REL_14_STABLE [b30282fcc] 2022-01-29 10:23:17 +0900
-->
     <para>
      Fix dangling pointer in <command>COPY TO</command>
      (Bharath Rupireddy)
      <ulink url="&commit_baseurl;b30282fcc">&sect;</ulink>
     </para>

     <para>
      This oversight could cause an incorrect error message or a crash
      after an error in <command>COPY</command>.
     </para>
    </listitem>

    <listitem>
<!--
Author: Tomas Vondra <tomas.vondra@postgresql.org>
Branch: master [6d554e3fc] 2022-01-23 03:16:31 +0100
Branch: REL_14_STABLE [a192243c7] 2022-01-23 03:18:02 +0100
Branch: REL_13_STABLE [267ccc38b] 2022-01-23 03:20:32 +0100
-->
     <para>
      Avoid null-pointer crash in <command>ALTER STATISTICS</command>
      when the statistics object is dropped concurrently (Tomas Vondra)
      <ulink url="&commit_baseurl;a192243c7">&sect;</ulink>
     </para>
    </listitem>

    <listitem>
<!--
Author: Alexander Korotkov <akorotkov@postgresql.org>
Branch: master [5cc9c8374] 2021-12-13 17:17:33 +0300
Branch: REL_14_STABLE [7615edd1d] 2021-12-13 17:20:07 +0300
-->
     <para>
      Correctly handle alignment padding when extracting a range from a
      multirange (Alexander Korotkov)
      <ulink url="&commit_baseurl;7615edd1d">&sect;</ulink>
     </para>

     <para>
      This error could cause crashes when handling multiranges over
      variable-length data types.
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [647889667] 2022-01-16 16:39:26 -0500
Branch: REL_14_STABLE [17da9d4c2] 2022-01-16 16:39:26 -0500
-->
     <para>
      Fix over-optimistic use of hashing for
      anonymous <type>RECORD</type> data types (Tom Lane)
      <ulink url="&commit_baseurl;17da9d4c2">&sect;</ulink>
     </para>

     <para>
      This prevents some cases of <quote>could not identify a hash
      function for type record</quote> errors.
     </para>
    </listitem>

    <listitem>
<!--
Author: David Rowley <drowley@postgresql.org>
Branch: master [f9a74c149] 2022-01-25 21:10:03 +1300
Branch: REL_14_STABLE [357ff6615] 2022-01-25 21:14:27 +1300
Branch: REL_13_STABLE [f8807e774] 2022-01-25 21:15:00 +1300
Branch: REL_12_STABLE [2ccd8fb29] 2022-01-25 21:15:40 +1300
-->
     <para>
      Fix incorrect plan creation for parallel single-child Append nodes
      (David Rowley)
      <ulink url="&commit_baseurl;357ff6615">&sect;</ulink>
     </para>

     <para>
      In some cases the Append would be simplified away when it should not
      be, leading to wrong query results (duplicated rows).
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [4ace45677] 2022-01-01 16:12:03 -0500
Branch: REL_14_STABLE [cabea571d] 2022-01-01 16:12:03 -0500
Branch: REL_13_STABLE [45ae42714] 2022-01-01 16:12:03 -0500
Branch: REL_12_STABLE [f789b7732] 2022-01-01 16:12:03 -0500
Branch: REL_11_STABLE [e3a4c7981] 2022-01-01 16:12:03 -0500
Branch: REL_10_STABLE [70a31a0e3] 2022-01-01 16:12:03 -0500
Branch: master [9a3ddeb51] 2022-01-03 15:42:27 -0500
Branch: REL_14_STABLE [d228af79d] 2022-01-03 15:42:27 -0500
Branch: REL_13_STABLE [20d08b2c6] 2022-01-03 15:42:27 -0500
Branch: REL_12_STABLE [9c4f38908] 2022-01-03 15:42:27 -0500
Branch: REL_11_STABLE [ec3674521] 2022-01-03 15:42:27 -0500
Branch: REL_10_STABLE [7d344f004] 2022-01-03 15:42:27 -0500
-->
     <para>
      Fix index-only scan plans for cases where not all index columns can
      be returned (Tom Lane)
      <ulink url="&commit_baseurl;cabea571d">&sect;</ulink>
      <ulink url="&commit_baseurl;d228af79d">&sect;</ulink>
     </para>

     <para>
      If an index has both returnable and non-returnable columns, and one
      of the non-returnable columns is an expression using a table column
      that appears in a returnable index column, then a query using that
      expression could result in an index-only scan plan that attempts to
      read the non-returnable column, instead of recomputing the
      expression from the returnable column as intended.  The
      non-returnable column would read as NULL, resulting in wrong query
      results.
     </para>
    </listitem>

    <listitem>
<!--
Author: David Rowley <drowley@postgresql.org>
Branch: master [411137a42] 2021-11-24 23:29:14 +1300
Branch: REL_14_STABLE [c2dc7b9e1] 2021-11-24 23:29:56 +1300
-->
     <para>
      Fix Memoize plan nodes to handle subplans that use parameters
      coming from above the Memoize (David Rowley)
      <ulink url="&commit_baseurl;c2dc7b9e1">&sect;</ulink>
     </para>
    </listitem>

    <listitem>
<!--
Author: David Rowley <drowley@postgresql.org>
Branch: master [e502150f7] 2021-11-24 10:06:59 +1300
Branch: REL_14_STABLE [6c32c0977] 2021-11-24 10:07:38 +1300
-->
     <para>
      Fix Memoize plan nodes to work correctly with non-hashable join
      operators (David Rowley)
      <ulink url="&commit_baseurl;6c32c0977">&sect;</ulink>
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [9c356f4b2] 2021-12-16 15:36:02 -0500
Branch: REL_14_STABLE [f9a8bc9f2] 2021-12-16 15:36:02 -0500
Branch: REL_13_STABLE [da0d8a454] 2021-12-16 15:36:02 -0500
Branch: REL_12_STABLE [e1fd61c8c] 2021-12-16 15:36:02 -0500
Branch: REL_11_STABLE [c43d72b24] 2021-12-16 15:36:02 -0500
Branch: REL_10_STABLE [1acf34586] 2021-12-16 15:36:02 -0500
-->
     <para>
      Ensure that casting to an unspecified typmod generates a RelabelType
      node rather than a length-coercion function call (Tom Lane)
      <ulink url="&commit_baseurl;f9a8bc9f2">&sect;</ulink>
     </para>

     <para>
      While the coercion function should do the right thing (nothing),
      this translation is undesirably inefficient.
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [8e2e0f758] 2022-01-29 11:41:18 -0500
Branch: REL_14_STABLE [c025067f6] 2022-01-29 11:41:18 -0500
Branch: REL_13_STABLE [5ad70564f] 2022-01-29 11:41:12 -0500
-->
     <para>
      Fix checking of <type>anycompatible</type>-family data type matches
      (Tom Lane)
      <ulink url="&commit_baseurl;c025067f6">&sect;</ulink>
     </para>

     <para>
      In some cases the parser would think that a function or operator
      with <type>anycompatible</type>-family polymorphic parameters
      matches a set of arguments that it really shouldn't match.  In
      reported cases, that led to matching more than one operator to a
      call, leading to ambiguous-operator errors; but a failure later on
      is also possible.
     </para>
    </listitem>

    <listitem>
<!--
Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
Branch: master [44bd3ed33] 2021-11-26 11:14:27 -0300
Branch: REL_14_STABLE [d24dac954] 2021-11-26 11:14:27 -0300
Branch: REL_13_STABLE [ef41c3fd6] 2021-11-26 11:14:27 -0300
Branch: REL_12_STABLE [9c6ab1ef3] 2021-11-26 11:14:27 -0300
Branch: REL_11_STABLE [2c3fddcbb] 2021-11-26 11:14:27 -0300
Branch: REL_10_STABLE [72cf39d51] 2021-11-26 11:14:27 -0300
-->
     <para>
      Fix WAL replay failure when database consistency is reached exactly
      at a WAL page boundary (&Aacute;lvaro Herrera)
      <ulink url="&commit_baseurl;d24dac954">&sect;</ulink>
     </para>
    </listitem>

    <listitem>
<!--
Author: Tomas Vondra <tomas.vondra@postgresql.org>
Branch: master [f192e1bdf] 2022-01-27 20:13:55 +0100
Branch: REL_14_STABLE [fb2f8e534] 2022-01-27 20:15:37 +0100
Branch: REL_13_STABLE [e90f258ac] 2022-01-27 20:16:39 +0100
Branch: REL_12_STABLE [4b8af2bf8] 2022-01-27 20:17:36 +0100
Branch: REL_11_STABLE [5cb88648e] 2022-01-27 20:18:22 +0100
Branch: REL_10_STABLE [4ef38fbe8] 2022-01-27 20:19:39 +0100
-->
     <para>
      Fix startup of a physical replica to tolerate transaction ID
      wraparound (Abhijit Menon-Sen, Tomas Vondra)
      <ulink url="&commit_baseurl;fb2f8e534">&sect;</ulink>
     </para>

     <para>
      If a replica server is started while the set of active transactions
      on the primary crosses a wraparound boundary (so that there are some
      newer transactions with smaller XIDs than older ones), the replica
      would fail with <quote>out-of-order XID insertion in
      KnownAssignedXids</quote>.  The replica would retry, but could never
      get past that error.
     </para>
    </listitem>

    <listitem>
<!--
Author: Amit Kapila <akapila@postgresql.org>
Branch: master [5e97905a2] 2021-12-09 08:36:59 +0530
Branch: REL_14_STABLE [614b77d65] 2021-12-09 08:49:50 +0530
Branch: REL_13_STABLE [3f06c00cf] 2021-12-09 09:00:35 +0530
-->
     <para>
      In logical replication, avoid double transmission of a child table's
      data (Hou Zhijie)
      <ulink url="&commit_baseurl;614b77d65">&sect;</ulink>
     </para>

     <para>
      If a publication includes both child and parent tables, and has
      the <literal>publish_via_partition_root</literal> option set,
      subscribers uselessly initiated synchronization on both child and
      parent tables.  Ensure that only the parent table is synchronized in
      such cases.
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [6aa518614] 2022-01-24 15:33:38 -0500
Branch: REL_14_STABLE [1efcc5946] 2022-01-24 15:33:34 -0500
Branch: REL_13_STABLE [d67354d87] 2022-01-24 15:33:34 -0500
Branch: REL_12_STABLE [689f75d6e] 2022-01-24 15:33:34 -0500
Branch: REL_11_STABLE [4ec54498c] 2022-01-24 15:33:34 -0500
Branch: REL_10_STABLE [9af6d4b5a] 2022-01-24 15:33:34 -0500
Branch: master [3c06ec6d1] 2022-01-24 12:09:46 -0500
Branch: REL_14_STABLE [ef9706bbc] 2022-01-24 12:09:46 -0500
Branch: REL_13_STABLE [c94c6612d] 2022-01-24 12:09:46 -0500
Branch: REL_12_STABLE [a8ce5c8d7] 2022-01-24 12:09:46 -0500
Branch: REL_11_STABLE [449a69623] 2022-01-24 12:09:46 -0500
Branch: REL_10_STABLE [daf658982] 2022-01-24 12:09:46 -0500
-->
     <para>
      Remove lexical limitations for SQL commands issued on a logical
      replication connection (Tom Lane)
      <ulink url="&commit_baseurl;1efcc5946">&sect;</ulink>
      <ulink url="&commit_baseurl;ef9706bbc">&sect;</ulink>
     </para>

     <para>
      The walsender process would fail for a SQL command containing an
      unquoted semicolon, or with dollar-quoted literals containing odd
      numbers of single or double quote marks, or when the SQL command
      starts with a comment.  Moreover, faulty error recovery could lead
      to unexpected errors in later commands too.
     </para>
    </listitem>

    <listitem>
<!--
Author: Amit Kapila <akapila@postgresql.org>
Branch: master [e464cb7af] 2021-12-08 15:18:56 +0530
Branch: REL_14_STABLE [f2e1730ee] 2021-12-08 15:21:12 +0530
-->
     <para>
      Ensure that replication origin timestamp is set while replicating
      a <command>ROLLBACK PREPARED</command> operation (Masahiko Sawada)
      <ulink url="&commit_baseurl;f2e1730ee">&sect;</ulink>
     </para>
    </listitem>

    <listitem>
<!--
Author: Michael Paquier <michael@paquier.xyz>
Branch: master [237d1f317] 2022-01-21 14:54:04 +0900
Branch: REL_14_STABLE [84db5169d] 2022-01-21 14:54:47 +0900
Branch: REL_13_STABLE [b5f634116] 2022-01-21 14:54:51 +0900
Branch: REL_12_STABLE [1c0452c48] 2022-01-21 14:54:55 +0900
Branch: REL_11_STABLE [0ffe2975c] 2022-01-21 14:54:59 +0900
Branch: REL_10_STABLE [919be95c6] 2022-01-21 14:55:04 +0900
-->
     <para>
      Fix possible loss of the commit timestamp for the last
      subtransaction of a transaction (Alex Kingsborough, Kyotaro Horiguchi)
      <ulink url="&commit_baseurl;84db5169d">&sect;</ulink>
     </para>
    </listitem>

    <listitem>
<!--
Author: Andres Freund <andres@anarazel.de>
Branch: master [1fabec7d7] 2022-01-21 11:22:55 -0800
Branch: REL_14_STABLE [2b7dbe4bd] 2022-01-21 11:24:12 -0800
Branch: REL_13_STABLE [fd48e5f5d] 2022-01-21 11:24:12 -0800
Branch: REL_12_STABLE [1c6d055ba] 2022-01-21 11:24:12 -0800
Branch: REL_11_STABLE [2c15b29f7] 2022-01-21 11:24:12 -0800
Branch: REL_10_STABLE [f862cc09f] 2022-01-21 11:24:12 -0800
-->
     <para>
      Be sure to <function>fsync</function>
      the <filename>pg_logical/mappings</filename> subdirectory during
      checkpoints (Nathan Bossart)
      <ulink url="&commit_baseurl;2b7dbe4bd">&sect;</ulink>
     </para>

     <para>
      On some filesystems this oversight could lead to losing logical
      rewrite status files after a system crash.
     </para>
    </listitem>

    <listitem>
<!--
Author: Tomas Vondra <tomas.vondra@postgresql.org>
Branch: master [20b9fa308] 2022-01-15 19:06:48 +0100
Branch: REL_14_STABLE [ea212bd95] 2022-01-15 19:05:22 +0100
Branch: REL_13_STABLE [d6817032d] 2022-01-15 19:14:00 +0100
Branch: REL_12_STABLE [9d1bcf5dc] 2022-01-15 19:02:58 +0100
Branch: REL_11_STABLE [491182e52] 2022-01-15 18:32:20 +0100
Branch: REL_10_STABLE [9211c2e38] 2022-01-15 18:30:45 +0100
-->
     <para>
      Build extended statistics for partitioned tables (Justin Pryzby)
      <ulink url="&commit_baseurl;ea212bd95">&sect;</ulink>
     </para>

     <para>
      A previous bug fix disabled building of extended statistics for
      old-style inheritance trees, but it also prevented building them for
      partitioned tables, which was an unnecessary restriction.
      This change allows <command>ANALYZE</command> to compute values for
      statistics objects for partitioned tables.  (But note that
      autovacuum does not process partitioned tables as such, so you must
      periodically issue manual <command>ANALYZE</command> on the
      partitioned table if you want to maintain such statistics.)
     </para>
    </listitem>

    <listitem>
<!--
Author: Tomas Vondra <tomas.vondra@postgresql.org>
Branch: master [36c4bc6e7] 2022-01-15 02:20:54 +0100
Branch: REL_14_STABLE [2cc007fd0] 2022-01-15 02:26:26 +0100
Branch: REL_13_STABLE [acfde7c58] 2022-01-15 02:30:06 +0100
Branch: REL_12_STABLE [76569ad6f] 2022-01-15 03:14:55 +0100
Branch: REL_11_STABLE [b3cac25f4] 2022-01-15 02:40:40 +0100
Branch: REL_10_STABLE [ff0e7c7e8] 2022-01-15 03:05:06 +0100
-->
     <para>
      Ignore extended statistics for inheritance trees (Justin Pryzby)
      <ulink url="&commit_baseurl;2cc007fd0">&sect;</ulink>
     </para>

     <para>
      Currently, extended statistics values are only computed locally for
      each table, not for entire inheritance trees.  However the values
      were mistakenly consulted when planning queries across inheritance
      trees, possibly resulting in worse-than-default estimates.
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [7ead9925f] 2022-01-06 16:46:46 -0500
Branch: REL_14_STABLE [f285d9583] 2022-01-06 16:46:46 -0500
Branch: REL_13_STABLE [86d4bbb56] 2022-01-06 16:46:46 -0500
Branch: REL_12_STABLE [ccc7c3ad8] 2022-01-06 16:46:46 -0500
Branch: REL_11_STABLE [2ce113a4f] 2022-01-06 16:46:46 -0500
Branch: REL_10_STABLE [e5b044c84] 2022-01-06 16:46:46 -0500
-->
     <para>
      Disallow altering data type of a partitioned table's columns when
      the partitioned table's row type is used as a composite type
      elsewhere (Tom Lane)
      <ulink url="&commit_baseurl;f285d9583">&sect;</ulink>
     </para>

     <para>
      This restriction has long existed for regular tables, but through an
      oversight it was not checked for partitioned tables.
     </para>
    </listitem>

    <listitem>
<!--
Author: Michael Paquier <michael@paquier.xyz>
Branch: master [f0d43947a] 2021-11-25 15:04:56 +0900
Branch: REL_14_STABLE [e415916e2] 2021-11-25 15:05:24 +0900
Branch: REL_13_STABLE [37827de43] 2021-11-25 15:05:28 +0900
Branch: REL_12_STABLE [216156fec] 2021-11-25 15:05:31 +0900
Branch: REL_11_STABLE [dffe80e55] 2021-11-25 15:05:34 +0900
Branch: REL_10_STABLE [817c469c2] 2021-11-25 15:05:37 +0900
-->
     <para>
      Disallow <literal>ALTER TABLE ... DROP NOT NULL</literal> for a
      column that is part of a replica identity index (Haiying Tang, Hou
      Zhijie)
      <ulink url="&commit_baseurl;e415916e2">&sect;</ulink>
     </para>

     <para>
      The same prohibition already existed for primary key indexes.
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [d8fbbb925] 2022-01-22 13:32:40 -0500
Branch: REL_14_STABLE [3839e29c5] 2022-01-22 13:32:40 -0500
Branch: REL_13_STABLE [31b7b4d26] 2022-01-22 13:32:40 -0500
Branch: REL_12_STABLE [e2d53c876] 2022-01-22 13:32:40 -0500
Branch: REL_11_STABLE [26c841ed1] 2022-01-22 13:32:40 -0500
-->
     <para>
      Correctly update cached table state during <command>ALTER TABLE ADD
      PRIMARY KEY USING INDEX</command> (Hou Zhijie)
      <ulink url="&commit_baseurl;3839e29c5">&sect;</ulink>
     </para>

     <para>
      Concurrent sessions failed to update their opinion of whether the
      table has a primary key, possibly causing incorrect logical
      replication behavior.
     </para>
    </listitem>

    <listitem>
<!--
Author: Amit Kapila <akapila@postgresql.org>
Branch: master [354a1f8d2] 2021-11-16 08:10:13 +0530
Branch: REL_14_STABLE [232fd72a5] 2021-11-16 08:34:24 +0530
Branch: REL_13_STABLE [63c3eeddc] 2021-11-16 08:46:12 +0530
Branch: REL_12_STABLE [9816e2d31] 2021-11-16 09:05:51 +0530
Branch: REL_11_STABLE [40fb634b1] 2021-11-16 09:25:04 +0530
Branch: REL_10_STABLE [2c0443c59] 2021-11-16 09:44:00 +0530
-->
     <para>
      Correctly update cached table state when switching <literal>REPLICA
      IDENTITY</literal> index (Tang Haiying, Hou Zhijie)
      <ulink url="&commit_baseurl;232fd72a5">&sect;</ulink>
     </para>

     <para>
      Concurrent sessions failed to update their opinion of which index is
      the replica identity one, possibly causing incorrect logical
      replication behavior.
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [f4e7ae2b8] 2021-11-20 14:29:56 -0500
Branch: REL_14_STABLE [6d07cbc50] 2021-11-20 14:29:56 -0500
-->
     <para>
      Fix failure of SP-GiST indexes when the indexed column's data type
      is binary-compatible with the declared input type of the operator
      class (Tom Lane)
      <ulink url="&commit_baseurl;6d07cbc50">&sect;</ulink>
     </para>

     <para>
      Such cases should work, but failed with <quote>compress method must
      be defined when leaf type is different from input type</quote>.
     </para>
    </listitem>

    <listitem>
<!--
Author: Amit Kapila <akapila@postgresql.org>
Branch: master [0f0cfb494] 2021-11-19 09:04:40 +0530
Branch: REL_14_STABLE [ead49ebc0] 2021-11-19 09:14:09 +0530
Branch: REL_13_STABLE [33b6dd83e] 2021-11-19 09:24:00 +0530
-->
     <para>
      Allow parallel vacuuming and concurrent index building to be ignored
      while computing oldest xmin (Masahiko Sawada)
      <ulink url="&commit_baseurl;ead49ebc0">&sect;</ulink>
     </para>

     <para>
      Non-parallelized instances of these operations were already ignored,
      but the logic did not work for parallelized cases.  Holding back the
      xmin horizon has undesirable effects such as delaying vacuum
      cleanup.
     </para>
    </listitem>

    <listitem>
<!--
Author: Peter Geoghegan <pg@bowt.ie>
Branch: master [db6736c93] 2022-01-12 15:41:04 -0800
Branch: REL_14_STABLE [41ee68a91] 2022-01-12 15:41:02 -0800
-->
     <para>
      Fix memory leak when updating expression indexes (Peter Geoghegan)
      <ulink url="&commit_baseurl;41ee68a91">&sect;</ulink>
     </para>

     <para>
      An <command>UPDATE</command> affecting many rows could consume
      significant amounts of memory.
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [babe545ca] 2021-12-01 13:44:46 -0500
Branch: REL_14_STABLE [8f4b0200e] 2021-12-01 13:44:47 -0500
Branch: REL_13_STABLE [7413caabe] 2021-12-01 13:44:47 -0500
Branch: REL_12_STABLE [5cf08b4db] 2021-12-01 13:44:47 -0500
Branch: REL_11_STABLE [82d354411] 2021-12-01 13:44:47 -0500
Branch: REL_10_STABLE [fec187dc3] 2021-12-01 13:44:47 -0500
-->
     <para>
      Avoid leaking memory during <command>REASSIGN OWNED BY</command>
      operations that reassign ownership of many objects (Justin Pryzby)
      <ulink url="&commit_baseurl;8f4b0200e">&sect;</ulink>
     </para>
    </listitem>

    <listitem>
<!--
Author: Michael Paquier <michael@paquier.xyz>
Branch: master [6ce16088b] 2022-01-05 10:27:07 +0900
Branch: REL_14_STABLE [5ddfebded] 2022-01-05 10:27:47 +0900
Branch: REL_13_STABLE [3f8062bcf] 2022-01-05 10:27:53 +0900
-->
     <para>
      Improve performance of walsenders sending logical changes by
      avoiding unnecessary cache accesses (Hou Zhijie)
      <ulink url="&commit_baseurl;5ddfebded">&sect;</ulink>
     </para>
    </listitem>

    <listitem>
<!--
Author: Magnus Hagander <magnus@hagander.net>
Branch: master [2dbb7b9b2] 2022-01-26 09:58:59 +0100
Branch: REL_14_STABLE [4afae689e] 2022-01-26 09:59:14 +0100
Branch: REL_13_STABLE [81596645c] 2022-01-26 09:59:19 +0100
Branch: REL_12_STABLE [aa58f5c53] 2022-01-26 09:59:23 +0100
-->
     <para>
      Fix display of <literal>cert</literal> authentication method's
      options in <structname>pg_hba_file_rules</structname> view (Magnus
      Hagander)
      <ulink url="&commit_baseurl;4afae689e">&sect;</ulink>
     </para>

     <para>
      The <literal>cert</literal> authentication method implies
      <literal>clientcert=verify-full</literal>, but the
      <structname>pg_hba_file_rules</structname> view incorrectly reported
      <literal>clientcert=verify-ca</literal>.
     </para>
    </listitem>

    <listitem>
<!--
Author: Fujii Masao <fujii@postgresql.org>
Branch: master [108505d76] 2022-01-28 11:24:42 +0900
Branch: REL_14_STABLE [6e7ee55e7] 2022-01-28 11:25:45 +0900
-->
     <para>
      Ensure that the session targeted
      by <function>pg_log_backend_memory_contexts()</function> sends its
      results only to the server's log (Fujii Masao)
      <ulink url="&commit_baseurl;6e7ee55e7">&sect;</ulink>
     </para>

     <para>
      Previously, a sufficiently high setting
      of <varname>client_min_messages</varname> could result in the log
      message also being sent to the connected client.  Since that client
      hadn't requested it, that would be surprising (and possibly a wire
      protocol violation).
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [43c217512] 2022-01-13 17:49:46 -0500
Branch: REL_14_STABLE [4aee39ddb] 2022-01-13 17:49:26 -0500
Branch: REL_13_STABLE [ca14c4184] 2022-01-13 17:49:26 -0500
Branch: REL_12_STABLE [45a3cefad] 2022-01-13 17:49:26 -0500
Branch: REL_11_STABLE [3a1bfe256] 2022-01-13 17:49:26 -0500
Branch: REL_10_STABLE [3433a1fc7] 2022-01-13 17:49:26 -0500
-->
     <para>
      Fix display of whole-row variables appearing
      in <literal>INSERT ... VALUES</literal> rules (Tom Lane)
      <ulink url="&commit_baseurl;4aee39ddb">&sect;</ulink>
     </para>

     <para>
      A whole-row variable would be printed as <quote>var.*</quote>,
      but that allows it to be expanded to individual columns when
      the rule is reloaded, resulting in different semantics.
      Attach an explicit cast to prevent that, as we do elsewhere.
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [a8d8445a7] 2021-11-17 11:31:31 -0500
Branch: REL_14_STABLE [5d5779aea] 2021-11-17 11:31:31 -0500
-->
     <para>
      When reverse-listing a SQL-standard function body, display function
      parameters appropriately within <command>INSERT ... SELECT</command>
      (Tom Lane)
      <ulink url="&commit_baseurl;5d5779aea">&sect;</ulink>
     </para>

     <para>
      Previously, they'd come out
      as <literal>$<replaceable>N</replaceable></literal> even when the
      parameter had a name.
     </para>
    </listitem>

    <listitem>
<!--
Author: Michael Paquier <michael@paquier.xyz>
Branch: master [098c13455] 2021-11-11 15:00:59 +0900
Branch: REL_14_STABLE [b609db715] 2021-11-11 15:01:45 +0900
Branch: REL_13_STABLE [13c8adf90] 2021-11-11 15:01:54 +0900
-->
     <para>
      Fix one-byte buffer overrun when applying Unicode string
      normalization to an empty string (Michael Paquier)
      <ulink url="&commit_baseurl;b609db715">&sect;</ulink>
     </para>

     <para>
      The practical impact of this is limited thanks to alignment
      considerations; but in debug builds, a warning was raised.
     </para>
    </listitem>

    <listitem>
<!--
Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
Branch: master [f66885bec] 2022-01-04 13:01:05 -0300
Branch: REL_14_STABLE [f185f35a8] 2022-01-04 13:01:05 -0300
Branch: REL_13_STABLE [29f9fb8fe] 2022-01-04 13:01:05 -0300
Branch: REL_12_STABLE [6b681cd05] 2022-01-04 13:01:05 -0300
Branch: REL_11_STABLE [28cd57416] 2022-01-04 13:01:05 -0300
Branch: REL_10_STABLE [026a93727] 2022-01-04 13:01:05 -0300
Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
Branch: master [67a8cb5cb] 2022-01-04 13:21:23 -0300
Branch: REL_14_STABLE [f9db153c2] 2022-01-04 13:21:23 -0300
Branch: REL_13_STABLE [33fdd9f85] 2022-01-04 13:21:23 -0300
Branch: REL_12_STABLE [397b43948] 2022-01-04 13:21:23 -0300
Branch: REL_11_STABLE [b63851a45] 2022-01-04 13:21:23 -0300
Branch: REL_10_STABLE [4a8282425] 2022-01-04 13:21:23 -0300
Author: Michael Paquier <michael@paquier.xyz>
Branch: master [2e577c944] 2021-12-22 15:38:00 +0900
Branch: REL_14_STABLE [8a22a40b2] 2021-12-22 15:38:05 +0900
Author: Michael Paquier <michael@paquier.xyz>
Branch: master [ece8c7619] 2021-12-14 10:58:15 +0900
Branch: REL_14_STABLE [4be3e005e] 2021-12-14 10:58:25 +0900
Branch: REL_13_STABLE [3f710fc2b] 2021-12-14 10:58:29 +0900
Branch: REL_12_STABLE [65af1e842] 2021-12-14 10:58:33 +0900
Branch: REL_11_STABLE [8abb6c27e] 2021-12-14 10:58:37 +0900
-->
     <para>
      Fix or remove some incorrect assertions (Simon Riggs, Michael
      Paquier, Alexander Lakhin)
      <ulink url="&commit_baseurl;f185f35a8">&sect;</ulink>
      <ulink url="&commit_baseurl;f9db153c2">&sect;</ulink>
      <ulink url="&commit_baseurl;8a22a40b2">&sect;</ulink>
      <ulink url="&commit_baseurl;4be3e005e">&sect;</ulink>
     </para>

     <para>
      These errors should affect only debug builds, not production.
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [1f655fdc3] 2022-01-21 15:36:27 -0500
Branch: REL_14_STABLE [f4ebf0dbe] 2022-01-21 15:36:28 -0500
Branch: REL_13_STABLE [64ebb43df] 2022-01-21 15:36:28 -0500
Branch: REL_12_STABLE [5521d8139] 2022-01-21 15:36:29 -0500
Branch: REL_11_STABLE [37f5dc8b8] 2022-01-21 15:36:29 -0500
Branch: REL_10_STABLE [0c7c94f90] 2022-01-21 15:36:30 -0500
-->
     <para>
      Fix race condition that could lead to failure to localize error
      messages that are reported early in multi-threaded use
      of <application>libpq</application>
      or <application>ecpglib</application> (Tom Lane)
      <ulink url="&commit_baseurl;f4ebf0dbe">&sect;</ulink>
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [f3f467b8f] 2022-01-17 12:52:44 -0500
Branch: REL_14_STABLE [050949877] 2022-01-17 12:52:44 -0500
Branch: REL_13_STABLE [f27af7b88] 2022-01-17 12:52:44 -0500
Branch: REL_12_STABLE [38f099ef9] 2022-01-17 12:52:44 -0500
Branch: REL_11_STABLE [8b107467c] 2022-01-17 12:52:44 -0500
Branch: REL_10_STABLE [9d66c43eb] 2022-01-17 12:52:45 -0500
-->
     <para>
      Avoid calling <function>strerror</function>
      from <application>libpq</application>'s <function>PQcancel</function>
      function (Tom Lane)
      <ulink url="&commit_baseurl;050949877">&sect;</ulink>
     </para>

     <para>
      <function>PQcancel</function> is supposed to be safe to call from a
      signal handler, but <function>strerror</function> is not safe.  The
      faulty usage only occurred in the unlikely event of failure to
      send the cancel message to the server, perhaps explaining the lack
      of reports.
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [d6eb5a0c2] 2021-11-12 14:55:32 -0500
Branch: REL_14_STABLE [99389cb66] 2021-11-12 14:55:32 -0500
Branch: REL_13_STABLE [843925fad] 2021-11-12 14:55:32 -0500
Branch: REL_12_STABLE [523adcc12] 2021-11-12 14:55:32 -0500
Branch: REL_11_STABLE [b062ca508] 2021-11-12 14:55:32 -0500
Branch: REL_10_STABLE [3bc46e4e9] 2021-11-12 14:55:32 -0500
-->
     <para>
      Make <application>psql</application>'s <command>\password</command>
      command default to setting the password
      for <literal>CURRENT_USER</literal>, not the connection's original
      user name (Tom Lane)
      <ulink url="&commit_baseurl;99389cb66">&sect;</ulink>
     </para>

     <para>
      This agrees with the documented behavior, and avoids probable
      permissions failure if <command>SET ROLE</command> or <command>SET
      SESSION AUTHORIZATION</command> has been done since the session began.
      To prevent confusion, the role name to be acted on is now
      included in the password prompt.
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [9007d4ea7] 2022-01-17 21:19:02 -0500
Branch: REL_14_STABLE [3886785b4] 2022-01-17 21:18:49 -0500
Branch: REL_13_STABLE [90e0f9fd8] 2022-01-17 21:18:49 -0500
-->
     <para>
      Fix <application>psql</application> <literal>\d</literal> command's
      query for identifying parent triggers (Justin Pryzby)
      <ulink url="&commit_baseurl;3886785b4">&sect;</ulink>
     </para>

     <para>
      The previous coding failed with <quote>more than one row returned by
      a subquery used as an expression</quote> if a partition had triggers
      and there were unrelated statement-level triggers of the same name
      on some parent partitioned table.
     </para>
    </listitem>

    <listitem>
<!--
Author: Michael Paquier <michael@paquier.xyz>
Branch: master [fe594abf7] 2022-01-08 16:44:45 +0900
Branch: REL_14_STABLE [f5bea8360] 2022-01-08 16:45:14 +0900
-->
     <para>
      Make <application>psql</application>'s <literal>\d</literal> command
      sort a table's extended statistics objects by name not OID (Justin
      Pryzby)
      <ulink url="&commit_baseurl;f5bea8360">&sect;</ulink>
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [fe7551744] 2022-01-16 14:59:20 -0500
Branch: REL_14_STABLE [d91d4338e] 2022-01-16 14:59:20 -0500
Branch: REL_13_STABLE [90a847e6d] 2022-01-16 14:59:20 -0500
-->
     <para>
      Fix <application>psql</application>'s tab-completion of label values
      for enum types (Tom Lane)
      <ulink url="&commit_baseurl;d91d4338e">&sect;</ulink>
     </para>
    </listitem>

    <listitem>
<!--
Author: Michael Paquier <michael@paquier.xyz>
Branch: master [10260c794] 2021-11-25 12:16:21 +0900
Branch: REL_14_STABLE [d2198b459] 2021-11-25 12:17:05 +0900
Branch: master [58651d8dd] 2021-11-30 09:55:50 +0900
Branch: REL_14_STABLE [5550a9c38] 2021-11-30 09:55:56 +0900
-->
     <para>
      Fix failures on Windows when using the terminal as data source
      or destination (Dmitry Koval, Juan José Santamaría Flecha, Michael
      Paquier)
      <ulink url="&commit_baseurl;d2198b459">&sect;</ulink>
      <ulink url="&commit_baseurl;5550a9c38">&sect;</ulink>
     </para>

     <para>
      This affects <application>psql</application>'s
      <command>\copy</command> command, as well
      as <application>pg_recvlogical</application> with
      <option>-f -</option>.
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [2131c049d] 2022-01-17 13:30:04 -0500
Branch: REL_14_STABLE [4e8726566] 2022-01-17 13:30:04 -0500
Branch: REL_13_STABLE [d18ec312f] 2022-01-17 13:30:04 -0500
Branch: REL_12_STABLE [6d1a854c1] 2022-01-17 13:30:04 -0500
Branch: REL_11_STABLE [92e6c1c9b] 2022-01-17 13:30:04 -0500
Branch: REL_10_STABLE [62bfa554b] 2022-01-17 13:30:04 -0500
-->
     <para>
      In <application>psql</application> and some other client programs,
      avoid trying to invoke <function>gettext()</function> from a
      control-C signal handler (Tom Lane)
      <ulink url="&commit_baseurl;4e8726566">&sect;</ulink>
     </para>

     <para>
      While no reported failures have been traced to this mistake, it seems
      highly unlikely to be a safe thing to do.
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [282b6d00a] 2021-11-21 14:13:35 -0500
Branch: REL_14_STABLE [3bd7556bb] 2021-11-21 14:13:35 -0500
Branch: REL_13_STABLE [33edf4a3c] 2021-11-21 14:13:35 -0500
Branch: REL_12_STABLE [93295932d] 2021-11-21 14:13:35 -0500
Branch: REL_11_STABLE [c2242d364] 2021-11-21 14:13:35 -0500
Branch: REL_10_STABLE [3ce5d0884] 2021-11-21 14:13:35 -0500
-->
     <para>
      Allow canceling the initial password prompt
      in <application>pg_receivewal</application>
      and <application>pg_recvlogical</application> (Tom Lane, Nathan
      Bossart)
      <ulink url="&commit_baseurl;3bd7556bb">&sect;</ulink>
     </para>

     <para>
      Previously it was impossible to terminate these programs via control-C
      while they were prompting for a password.
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [b55f2b692] 2021-11-22 17:16:29 -0500
Branch: REL_14_STABLE [0fdf67476] 2021-11-22 17:16:29 -0500
Branch: REL_13_STABLE [d4f6a36d8] 2021-11-22 17:16:29 -0500
Branch: REL_12_STABLE [69949ea68] 2021-11-22 17:16:29 -0500
Branch: REL_11_STABLE [54619a25d] 2021-11-22 17:16:29 -0500
Branch: REL_10_STABLE [2b36973d9] 2021-11-22 17:16:29 -0500
-->
     <para>
      Fix <application>pg_dump</application>'s dump ordering for
      user-defined casts (Tom Lane)
      <ulink url="&commit_baseurl;0fdf67476">&sect;</ulink>
     </para>

     <para>
      In rare cases, the output script might refer to a user-defined cast
      before it had been created.
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [0b126c6a4] 2021-11-22 15:25:48 -0500
Branch: REL_14_STABLE [aedc4600d] 2021-11-22 15:25:48 -0500
Branch: REL_13_STABLE [6fc8b145e] 2021-11-22 15:25:48 -0500
Branch: REL_12_STABLE [1e7f588ad] 2021-11-22 15:25:48 -0500
Branch: master [db3a660c6] 2021-11-22 15:57:31 -0500
Branch: REL_14_STABLE [72842a575] 2021-11-22 15:57:43 -0500
Branch: REL_13_STABLE [b542e4596] 2021-11-22 15:57:52 -0500
Branch: REL_12_STABLE [72582531b] 2021-11-22 15:57:59 -0500
Branch: REL_11_STABLE [22d2b6611] 2021-11-22 15:58:05 -0500
Branch: REL_10_STABLE [b599b8f39] 2021-11-22 15:58:12 -0500
-->
     <para>
      Fix <application>pg_dump</application>'s <option>--inserts</option>
      and  <option>--column-inserts</option> modes to handle tables
      containing both generated columns and dropped columns (Tom Lane)
      <ulink url="&commit_baseurl;aedc4600d">&sect;</ulink>
      <ulink url="&commit_baseurl;72842a575">&sect;</ulink>
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [248c3a937] 2021-11-17 14:16:34 -0500
Branch: REL_14_STABLE [53c4a580e] 2021-11-17 14:16:34 -0500
Branch: REL_13_STABLE [c8b5221b5] 2021-11-17 14:16:34 -0500
Branch: REL_12_STABLE [8378dad4c] 2021-11-17 14:16:34 -0500
Branch: REL_11_STABLE [a414eb850] 2021-11-17 14:16:34 -0500
Branch: REL_10_STABLE [13799bb93] 2021-11-17 14:16:34 -0500
Branch: master [3cac2c8ca] 2021-11-17 13:08:25 -0500
Branch: REL_14_STABLE [6b413b41b] 2021-11-17 13:08:25 -0500
Branch: REL_13_STABLE [bbda88c33] 2021-11-17 13:08:25 -0500
Branch: REL_12_STABLE [12bf11889] 2021-11-17 13:08:25 -0500
-->
     <para>
      Fix possible mis-reporting of errors
      in <application>pg_dump</application>
      and <application>pg_basebackup</application> (Tom Lane)
      <ulink url="&commit_baseurl;53c4a580e">&sect;</ulink>
      <ulink url="&commit_baseurl;6b413b41b">&sect;</ulink>
     </para>

     <para>
      The previous code failed to check for errors from some kernel calls,
      and could report the wrong errno values in other cases.
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [54b1cb7eb] 2022-01-08 14:54:39 -0500
Branch: REL_14_STABLE [043c1e1a7] 2022-01-08 14:54:39 -0500
Branch: REL_13_STABLE [823d4c7e2] 2022-01-08 14:54:39 -0500
Branch: REL_12_STABLE [3a69d45af] 2022-01-08 14:54:39 -0500
Branch: REL_11_STABLE [38cbdd22d] 2022-01-08 14:54:39 -0500
Branch: REL_10_STABLE [b21986908] 2022-01-08 14:54:39 -0500
-->
     <para>
      Fix results of index-only scans
      on <filename>contrib/btree_gist</filename> indexes
      on <type>char(<replaceable>N</replaceable>)</type> columns (Tom Lane)
      <ulink url="&commit_baseurl;043c1e1a7">&sect;</ulink>
     </para>

     <para>
      Index-only scans returned column values with trailing spaces
      removed, which is not the expected behavior.  That happened because
      that's how the data was stored in the index.  This fix changes the
      code to store <type>char(<replaceable>N</replaceable>)</type> values
      with the expected amount of space padding.
      The behavior of such an index will not change immediately unless
      you <command>REINDEX</command> it; otherwise space-stripped values
      will be gradually replaced over time during updates.  Queries that
      do not use index-only scan plans will be unaffected in any case.
     </para>
    </listitem>

    <listitem>
<!--
Author: Etsuro Fujita <efujita@postgresql.org>
Branch: master [9e283fc85] 2022-01-27 16:15:00 +0900
Branch: REL_14_STABLE [d1cca9441] 2022-01-27 16:15:02 +0900
Author: Etsuro Fujita <efujita@postgresql.org>
Branch: master [6c07f9ebc] 2022-01-21 17:45:00 +0900
Branch: REL_14_STABLE [700e8fe6d] 2022-01-21 17:45:02 +0900
-->
     <para>
      Fix edge cases in <filename>postgres_fdw</filename>'s handling of
      asynchronous queries (Etsuro Fujita)
      <ulink url="&commit_baseurl;d1cca9441">&sect;</ulink>
      <ulink url="&commit_baseurl;700e8fe6d">&sect;</ulink>
     </para>

     <para>
      These errors could lead to crashes or incorrect results when
      attempting to parallelize scans of foreign tables.
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [bd233bdd8] 2022-01-25 18:52:44 -0500
Branch: REL_14_STABLE [803f0b173] 2022-02-01 19:03:41 -0500
Branch: REL_13_STABLE [4d7d196ff] 2022-02-01 19:03:41 -0500
Branch: REL_12_STABLE [aa2215d6b] 2022-02-01 19:03:41 -0500
Branch: REL_11_STABLE [e41176bd6] 2022-02-01 19:03:41 -0500
Branch: REL_10_STABLE [a72c43012] 2022-02-01 19:03:41 -0500
-->
     <para>
      Change <application>configure</application> to use
      Python's <application>sysconfig</application> module, rather than
      the deprecated <application>distutils</application> module, to
      determine how to build PL/Python (Peter Eisentraut, Tom Lane, Andres
      Freund)
      <ulink url="&commit_baseurl;803f0b173">&sect;</ulink>
     </para>

     <para>
      With Python 3.10, this
      avoids <application>configure</application>-time warnings
      about <application>distutils</application> being deprecated and
      scheduled for removal in Python 3.12.  Presumably, once 3.12 is
      out, <literal>configure --with-python</literal> would fail
      altogether.  This future-proofing does come at a
      cost: <application>sysconfig</application> did not exist before
      Python 2.7, nor before 3.2 in the Python 3 branch, so it is no
      longer possible to build PL/Python against long-dead Python
      versions.
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [b63710164] 2021-11-30 17:18:04 -0500
Branch: REL_14_STABLE [175edafd1] 2021-11-30 17:18:04 -0500
-->
     <para>
      Re-allow cross-compilation
      without <application>OpenSSL</application> (Tom Lane)
      <ulink url="&commit_baseurl;175edafd1">&sect;</ulink>
     </para>

     <para>
      <application>configure</application> should assume
      that <filename>/dev/urandom</filename> will be available on the
      target system, but it failed instead.
     </para>
    </listitem>

    <listitem>
<!--
Author: Andres Freund <andres@anarazel.de>
Branch: master [c89f40974] 2022-01-30 16:42:14 -0800
Branch: REL_14_STABLE [8484e3812] 2022-01-30 16:42:42 -0800
Branch: REL_13_STABLE [0dc0fe7b6] 2022-01-30 16:42:45 -0800
Branch: REL_12_STABLE [f173738d5] 2022-01-30 16:42:47 -0800
Branch: REL_11_STABLE [ad95a639a] 2022-01-30 16:42:49 -0800
Branch: REL_10_STABLE [2557a03f8] 2022-01-30 16:43:07 -0800
-->
     <para>
      Fix PL/Perl compile failure on Windows with Perl 5.28 and later
      (Victor Wagner)
      <ulink url="&commit_baseurl;8484e3812">&sect;</ulink>
     </para>
    </listitem>

    <listitem>
<!--
Author: Peter Eisentraut <peter@eisentraut.org>
Branch: master [99e4d24a9] 2021-11-25 14:19:22 +0100
Branch: REL_14_STABLE [1cc13b83e] 2021-11-25 14:30:12 +0100
Branch: REL_13_STABLE [04875ae92] 2021-11-25 14:30:46 +0100
Branch: REL_12_STABLE [0d335cbd5] 2021-11-25 14:31:01 +0100
Branch: REL_11_STABLE [a83b1bab0] 2021-11-25 14:32:26 +0100
Branch: REL_10_STABLE [4339e10f0] 2021-11-25 14:32:43 +0100
-->
     <para>
      Fix PL/Python compile failure with Python 3.11 and later (Peter
      Eisentraut)
      <ulink url="&commit_baseurl;1cc13b83e">&sect;</ulink>
     </para>
    </listitem>

    <listitem>
<!--
Author: Michael Paquier <michael@paquier.xyz>
Branch: master [b2265d305] 2021-11-24 13:03:23 +0900
Branch: REL_14_STABLE [0e681fa45] 2021-11-24 13:03:55 +0900
Branch: REL_13_STABLE [baef657d3] 2021-11-24 13:03:59 +0900
Branch: REL_12_STABLE [420d5e40b] 2021-11-24 13:04:03 +0900
Branch: REL_11_STABLE [1061e41ff] 2021-11-24 13:04:07 +0900
Branch: REL_10_STABLE [82881a9b9] 2021-11-24 13:04:12 +0900
-->
     <para>
      Add support for building with Visual Studio 2022 (Hans Buschmann)
      <ulink url="&commit_baseurl;0e681fa45">&sect;</ulink>
     </para>
    </listitem>

    <listitem>
<!--
Author: Andrew Dunstan <andrew@dunslane.net>
Branch: master [c3879a7b4] 2022-01-07 16:07:45 -0500
Branch: REL_14_STABLE [a7772e874] 2022-01-07 16:14:04 -0500
Branch: REL_13_STABLE [f3ded9c46] 2022-01-07 16:14:16 -0500
Branch: REL_12_STABLE [a4cde9153] 2022-01-07 16:14:23 -0500
Branch: REL_11_STABLE [c7fa0f55d] 2022-01-07 16:14:32 -0500
Branch: REL_10_STABLE [d897361c7] 2022-01-07 16:14:40 -0500
Branch: master [f80900be0] 2022-01-20 10:13:18 -0500
Branch: REL_14_STABLE [156a846d9] 2022-01-20 10:20:40 -0500
Branch: REL_13_STABLE [31680730e] 2022-01-20 10:20:51 -0500
Branch: REL_12_STABLE [22d8c2570] 2022-01-20 10:21:02 -0500
Branch: REL_11_STABLE [0a79feeca] 2022-01-20 10:21:12 -0500
Branch: REL_10_STABLE [a5bd14d93] 2022-01-20 10:21:28 -0500
-->
     <para>
      Allow the <filename>.bat</filename> wrapper scripts in our MSVC
      build system to be called without first changing into their
      directory (Anton Voloshin, Andrew Dunstan)
      <ulink url="&commit_baseurl;a7772e874">&sect;</ulink>
      <ulink url="&commit_baseurl;156a846d9">&sect;</ulink>
     </para>
    </listitem>

   </itemizedlist>

  </sect2>
 </sect1>

 <sect1 id="release-14-1">
  <title>Release 14.1</title>

  <formalpara>
  <title>Release date:</title>
  <para>2021-11-11</para>
  </formalpara>

  <para>
   This release contains a variety of fixes from 14.0.
   For information about new features in major release 14, see
   <xref linkend="release-14"/>.
  </para>

  <sect2>
   <title>Migration to Version 14.1</title>

   <para>
    A dump/restore is not required for those running 14.X.
   </para>

   <para>
    However, note that installations using physical replication should
    update standby servers before the primary server, as explained in
    the third changelog entry below.
   </para>

   <para>
    Also, several bugs have been found that may have resulted in corrupted
    indexes, as explained in the next several changelog entries.  If any
    of those cases apply to you, it's recommended to reindex
    possibly-affected indexes after updating.
   </para>
  </sect2>

  <sect2>
   <title>Changes</title>

   <itemizedlist>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [28e241255] 2021-11-08 11:01:43 -0500
Branch: REL_14_STABLE [9d5a76b8d] 2021-11-08 11:01:43 -0500
Branch: REL_13_STABLE [e92ed93e8] 2021-11-08 11:01:43 -0500
Branch: REL_12_STABLE [d1bd26740] 2021-11-08 11:01:43 -0500
Branch: REL_11_STABLE [9394fb828] 2021-11-08 11:01:43 -0500
Branch: REL_10_STABLE [9ae0f1112] 2021-11-08 11:01:43 -0500
Branch: REL9_6_STABLE [046c2c846] 2021-11-08 11:01:43 -0500
-->
     <para>
      Make the server reject extraneous data after an SSL or GSS
      encryption handshake (Tom Lane)
      <ulink url="&commit_baseurl;9d5a76b8d">&sect;</ulink>
     </para>

     <para>
      A man-in-the-middle with the ability to inject data into the TCP
      connection could stuff some cleartext data into the start of a
      supposedly encryption-protected database session.
      This could be abused to send faked SQL commands to the server,
      although that would only work if the server did not demand any
      authentication data.  (However, a server relying on SSL certificate
      authentication might well not do so.)
     </para>

     <para>
      The <productname>PostgreSQL</productname> Project thanks
      Jacob Champion for reporting this problem.
      (CVE-2021-23214)
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [160c02588] 2021-11-08 11:14:56 -0500
Branch: REL_14_STABLE [30547d791] 2021-11-08 11:14:56 -0500
Branch: REL_13_STABLE [844b31692] 2021-11-08 11:14:56 -0500
Branch: REL_12_STABLE [36bb95ef2] 2021-11-08 11:14:56 -0500
Branch: REL_11_STABLE [a021a1d2a] 2021-11-08 11:14:56 -0500
Branch: REL_10_STABLE [e65d9c8cd] 2021-11-08 11:14:56 -0500
Branch: REL9_6_STABLE [d83cdfdca] 2021-11-08 11:14:57 -0500
-->
     <para>
      Make <application>libpq</application> reject extraneous data after
      an SSL or GSS encryption handshake (Tom Lane)
      <ulink url="&commit_baseurl;30547d791">&sect;</ulink>
     </para>

     <para>
      A man-in-the-middle with the ability to inject data into the TCP
      connection could stuff some cleartext data into the start of a
      supposedly encryption-protected database session.
      This could probably be abused to inject faked responses to the
      client's first few queries, although other details of libpq's
      behavior make that harder than it sounds.  A different line of
      attack is to exfiltrate the client's password, or other sensitive
      data that might be sent early in the session.  That has been shown
      to be possible with a server vulnerable to CVE-2021-23214.
     </para>

     <para>
      The <productname>PostgreSQL</productname> Project thanks
      Jacob Champion for reporting this problem.
      (CVE-2021-23222)
     </para>
    </listitem>

    <listitem>
<!--
Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
Branch: master [ff9f111bc] 2021-09-29 11:21:51 -0300
Branch: REL_14_STABLE [64a8687a6] 2021-09-29 11:41:01 -0300
Branch: REL_13_STABLE [1d97d3d08] 2021-09-29 11:21:51 -0300
Branch: REL_12_STABLE [1df0a914d] 2021-09-29 11:21:51 -0300
Branch: REL_11_STABLE [cfedb279a] 2021-09-29 11:21:51 -0300
Branch: REL_10_STABLE [d9fe2cc7d] 2021-09-29 11:21:51 -0300
Branch: REL9_6_STABLE [148c6ee3b] 2021-09-29 11:21:51 -0300
Branch: master [d03bca4d7] 2021-09-30 10:01:03 -0300
Branch: REL_14_STABLE [e3731bac5] 2021-09-30 10:01:03 -0300
Branch: master [d186d233d] 2021-10-01 18:03:11 -0300
Branch: REL_14_STABLE [0ce67bce0] 2021-10-01 18:03:11 -0300
Branch: master [010e52337] 2021-10-13 18:49:27 -0300
Branch: REL_14_STABLE [79c7fe1af] 2021-10-13 18:49:27 -0300
Branch: REL_13_STABLE [2cdf97fd1] 2021-10-13 18:49:27 -0300
Branch: REL_12_STABLE [4b7abbe48] 2021-10-13 18:49:27 -0300
Branch: REL_11_STABLE [6287b8e19] 2021-10-13 18:49:27 -0300
Branch: REL_10_STABLE [41cce2326] 2021-10-13 18:49:27 -0300
Branch: REL9_6_STABLE [5ec87619b] 2021-10-13 18:49:27 -0300
Branch: REL_14_STABLE [494ec0037] 2021-11-01 13:07:23 -0300
Branch: REL_13_STABLE [17227825c] 2021-11-01 13:07:23 -0300
Branch: REL_12_STABLE [da782bc93] 2021-11-01 13:07:23 -0300
Branch: REL_11_STABLE [5ef210047] 2021-11-01 13:07:23 -0300
Branch: REL_10_STABLE [656312c2a] 2021-11-01 13:07:23 -0300
Branch: REL9_6_STABLE [99197701e] 2021-11-01 13:07:23 -0300
-->
     <para>
      Fix physical replication for cases where the primary crashes
      after shipping a WAL segment that ends with a partial WAL record
      (&Aacute;lvaro Herrera)
      <ulink url="&commit_baseurl;64a8687a6">&sect;</ulink>
      <ulink url="&commit_baseurl;e3731bac5">&sect;</ulink>
      <ulink url="&commit_baseurl;0ce67bce0">&sect;</ulink>
      <ulink url="&commit_baseurl;79c7fe1af">&sect;</ulink>
      <ulink url="&commit_baseurl;494ec0037">&sect;</ulink>
     </para>

     <para>
      If the primary did not survive long enough to finish writing the
      rest of the incomplete WAL record, then the previous crash-recovery
      logic had it back up and overwrite WAL starting from the beginning
      of the incomplete WAL record.  This is problematic since standby
      servers may already have copies of that WAL segment.  They will then
      see an inconsistent next segment, and will not be able to recover
      without manual intervention.  To fix, do not back up over a WAL
      segment boundary when restarting after a crash.  Instead write a new
      type of WAL record at the start of the next WAL segment, informing
      readers that the incomplete WAL record will never be finished and
      must be disregarded.
     </para>

     <para>
      When applying this update, it's best to update standby servers
      before the primary, so that they will be ready to handle this new
      WAL record type if the primary happens to crash.
     </para>
    </listitem>

    <listitem>
<!--
Author: Peter Geoghegan <pg@bowt.ie>
Branch: master [9bacec15b] 2021-11-02 12:06:17 -0700
Branch: REL_14_STABLE [61a86ed55] 2021-11-02 12:06:16 -0700
-->
     <para>
      Ensure that parallel <command>VACUUM</command> doesn't miss any
      indexes (Peter Geoghegan, Masahiko Sawada)
      <ulink url="&commit_baseurl;61a86ed55">&sect;</ulink>
     </para>

     <para>
      A parallel <command>VACUUM</command> would fail to process indexes
      that are below the <varname>min_parallel_index_scan_size</varname>
      cutoff, if the table also has at least two indexes that are above
      that size.  This could result in those indexes becoming corrupt,
      since they'd still contain references to any heap entries removed by
      the <command>VACUUM</command>; subsequent queries using such indexes
      would be likely to return rows they shouldn't.
      This problem does not affect autovacuum, since it doesn't use
      parallel vacuuming.  However, it is advisable to reindex any
      manually-vacuumed tables that have the right mix of index sizes.
     </para>
    </listitem>

    <listitem>
<!--
Author: Noah Misch <noah@leadboat.com>
Branch: master [3cd9c3b92] 2021-10-23 18:36:38 -0700
Branch: REL_14_STABLE [a5b9a0000] 2021-10-23 18:36:42 -0700
Branch: REL_13_STABLE [a9d0a5409] 2021-10-23 18:36:42 -0700
Branch: REL_12_STABLE [fe5d44a1d] 2021-10-23 18:36:42 -0700
Branch: REL_11_STABLE [df6158139] 2021-10-23 18:36:43 -0700
Branch: REL_10_STABLE [560124a37] 2021-10-23 18:36:43 -0700
Branch: REL9_6_STABLE [518493243] 2021-10-23 18:36:43 -0700
-->
     <para>
      Fix <command>CREATE INDEX CONCURRENTLY</command> to wait for
      the latest prepared transactions (Andrey Borodin)
      <ulink url="&commit_baseurl;a5b9a0000">&sect;</ulink>
     </para>

     <para>
      Rows inserted by just-prepared transactions might be omitted from
      the new index, causing queries relying on the index to miss such
      rows.  The previous fix for this type of problem failed to account
      for <command>PREPARE TRANSACTION</command> commands that were still
      in progress when <command>CREATE INDEX CONCURRENTLY</command>
      checked for them.  As before, in installations that have enabled
      prepared transactions (<varname>max_prepared_transactions</varname>
      &gt; 0), it's recommended to reindex any concurrently-built indexes
      in case this problem occurred when they were built.
     </para>
    </listitem>

    <listitem>
<!--
Author: Noah Misch <noah@leadboat.com>
Branch: master [fdd965d07] 2021-10-23 18:36:38 -0700
Branch: REL_14_STABLE [dde966efb] 2021-10-23 18:36:42 -0700
Branch: REL_13_STABLE [2e33b4359] 2021-10-23 18:36:42 -0700
Branch: REL_12_STABLE [0869e53d3] 2021-10-23 18:36:42 -0700
Branch: REL_11_STABLE [5141e471b] 2021-10-23 18:36:43 -0700
Branch: REL_10_STABLE [db86746fd] 2021-10-23 18:36:43 -0700
Branch: REL9_6_STABLE [e428699cb] 2021-10-23 18:36:43 -0700
-->
     <para>
      Avoid race condition that can cause backends to fail to add entries
      for new rows to an index being built concurrently (Noah Misch,
      Andrey Borodin)
      <ulink url="&commit_baseurl;dde966efb">&sect;</ulink>
     </para>

     <para>
      While it's apparently rare in the field, this case could potentially
      affect any index built or reindexed with
      the <literal>CONCURRENTLY</literal> option.  It is recommended to
      reindex any such indexes to make sure they are correct.
     </para>
    </listitem>

    <listitem>
<!--
Author: Michael Paquier <michael@paquier.xyz>
Branch: master [add5cf28d] 2021-11-01 11:38:23 +0900
Branch: REL_14_STABLE [f255de9a4] 2021-11-01 11:40:22 +0900
Branch: REL_13_STABLE [77f7909a4] 2021-11-01 11:40:29 +0900
-->
     <para>
      Fix <command>REINDEX CONCURRENTLY</command> to preserve operator
      class parameters that were attached to the target index
      (Michael Paquier)
      <ulink url="&commit_baseurl;f255de9a4">&sect;</ulink>
     </para>
    </listitem>

    <listitem>
<!--
Author: Michael Paquier <michael@paquier.xyz>
Branch: master [98ec35b0b] 2021-10-21 10:39:01 +0900
Branch: REL_14_STABLE [5040c9641] 2021-10-21 10:39:07 +0900
-->
     <para>
      Fix incorrect creation of shared dependencies when cloning a
      database that contains non-builtin objects (Aleksander Alekseev)
      <ulink url="&commit_baseurl;5040c9641">&sect;</ulink>
     </para>

     <para>
      The effects of this error are probably limited in practice.  In
      principle, it could allow a role to be dropped while it still owns
      objects; but most installations would never want to drop a role
      that had been used for objects they'd added
      to <literal>template1</literal>.
     </para>
    </listitem>

    <listitem>
<!--
Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
Branch: master [d6f1e16c8] 2021-10-18 19:08:25 -0300
Branch: REL_14_STABLE [72d064217] 2021-10-18 19:08:25 -0300
Branch: REL_13_STABLE [fe35528a5] 2021-10-18 19:08:25 -0300
Branch: REL_12_STABLE [8b26be8a3] 2021-10-18 19:08:25 -0300
Branch: REL_11_STABLE [b703b7d31] 2021-10-18 19:08:25 -0300
Branch: REL_10_STABLE [d36bdc4e9] 2021-10-18 19:08:25 -0300
-->
     <para>
      Ensure that the relation cache is invalidated for a table being
      attached to or detached from a partitioned table (Amit Langote,
      &Aacute;lvaro Herrera)
      <ulink url="&commit_baseurl;72d064217">&sect;</ulink>
     </para>

     <para>
      This oversight could allow misbehavior of subsequent inserts/updates
      addressed directly to the partition, but only in currently-existing
      sessions.
     </para>
    </listitem>

    <listitem>
<!--
Author: Michael Paquier <michael@paquier.xyz>
Branch: master [5b0e7fe1d] 2021-10-13 16:38:07 +0900
Branch: REL_14_STABLE [922e15c47] 2021-10-13 16:38:15 +0900
-->
     <para>
      Fix corruption of parse tree while creating a range type (Alex
      Kozhemyakin, Sergey Shinderuk)
      <ulink url="&commit_baseurl;922e15c47">&sect;</ulink>
     </para>

     <para>
      <command>CREATE TYPE</command> incorrectly freed an element of the
      parse tree, which could cause problems for a later event trigger, or
      if the <command>CREATE TYPE</command> command was stored in the plan
      cache and used again later.
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [3e310d837] 2021-10-19 13:54:45 -0400
Branch: REL_14_STABLE [04dae19f4] 2021-10-19 13:54:45 -0400
Branch: REL_13_STABLE [30e61a8cd] 2021-10-19 13:54:46 -0400
Branch: REL_12_STABLE [ae7b1dd59] 2021-10-19 13:54:46 -0400
Branch: REL_11_STABLE [0d08c279b] 2021-10-19 13:54:46 -0400
-->
     <para>
      Fix updates of element fields in arrays of domain over composite
      (Tom Lane)
      <ulink url="&commit_baseurl;04dae19f4">&sect;</ulink>
     </para>

     <para>
      A command such as <literal>UPDATE tab SET fld[1].subfld =
      val</literal> failed if the array's elements were domains rather
      than plain composites.
     </para>
    </listitem>

    <listitem>
<!--
Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
Branch: master [c6bc655ee] 2021-10-01 18:29:18 -0300
Branch: REL_14_STABLE [20047609d] 2021-10-01 18:29:18 -0300
Branch: REL_13_STABLE [170206e45] 2021-10-01 18:29:18 -0300
-->
     <para>
      Disallow the combination of <literal>FETCH FIRST WITH TIES</literal>
      and <literal>FOR UPDATE SKIP LOCKED</literal> (David Christensen)
      <ulink url="&commit_baseurl;20047609d">&sect;</ulink>
     </para>

     <para>
      <literal>FETCH FIRST WITH TIES</literal> necessarily fetches one
      more row than requested, since it cannot stop until it finds a row
      that is not a tie.  In our current implementation,
      if <literal>FOR UPDATE</literal> is used then that row will also get
      locked even though it is not returned.  That results in undesirable
      behavior if the <literal>SKIP LOCKED</literal> option is specified.
      It's difficult to change this without introducing a different set of
      undesirable behaviors, so for now, forbid the combination.
     </para>
    </listitem>

    <listitem>
<!--
Author: Michael Paquier <michael@paquier.xyz>
Branch: master [fdd885714] 2021-10-19 11:03:52 +0900
Branch: REL_14_STABLE [b1b797ec7] 2021-10-19 11:04:00 +0900
Branch: REL_13_STABLE [85dc4292a] 2021-10-19 11:04:04 +0900
-->
     <para>
      Disallow <literal>ALTER INDEX index ALTER COLUMN col SET
      (options)</literal> (Nathan Bossart, Michael Paquier)
      <ulink url="&commit_baseurl;b1b797ec7">&sect;</ulink>
     </para>

     <para>
      While the parser accepted this, it's undocumented and doesn't
      actually work.
     </para>
    </listitem>

    <listitem>
<!--
Author: Dean Rasheed <dean.a.rasheed@gmail.com>
Branch: master [e54a758d2] 2021-10-06 13:16:51 +0100
Branch: REL_14_STABLE [8e26b868d] 2021-10-06 13:19:25 +0100
Branch: REL_13_STABLE [9ab94ccb1] 2021-10-06 13:20:23 +0100
Branch: REL_12_STABLE [676218034] 2021-10-06 13:21:27 +0100
Branch: REL_11_STABLE [b2a0f1673] 2021-10-06 13:22:33 +0100
Branch: REL_10_STABLE [4853baaac] 2021-10-06 13:23:13 +0100
Branch: REL9_6_STABLE [0de8f9bc8] 2021-10-06 13:24:22 +0100
-->
     <para>
      Fix corner-case loss of precision in
      numeric <function>power()</function> (Dean Rasheed)
      <ulink url="&commit_baseurl;8e26b868d">&sect;</ulink>
     </para>

     <para>
      The result could be inaccurate when the first argument is very close
      to 1.
     </para>
    </listitem>

    <listitem>
<!--
Author: David Rowley <drowley@postgresql.org>
Branch: master [39a310567] 2021-11-08 14:40:33 +1300
Branch: REL_14_STABLE [1f194ed6c] 2021-11-08 14:41:13 +1300
-->
     <para>
      Avoid choosing the wrong hash equality operator for Memoize plans
      (David Rowley)
      <ulink url="&commit_baseurl;1f194ed6c">&sect;</ulink>
     </para>

     <para>
      This error could result in crashes or incorrect query results.
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [4d5f651f1] 2021-10-14 12:43:55 -0400
Branch: REL_14_STABLE [fd059ac2e] 2021-10-14 12:43:43 -0400
Branch: REL_13_STABLE [fdd6a4d8d] 2021-10-14 12:43:43 -0400
-->
     <para>
      Fix planner error with pulling up subquery expressions into function
      rangetable entries (Tom Lane)
      <ulink url="&commit_baseurl;fd059ac2e">&sect;</ulink>
     </para>

     <para>
      If a function in <literal>FROM</literal> laterally references the
      output of some sub-<literal>SELECT</literal> earlier in
      the <literal>FROM</literal> clause, and we are able to flatten that
      sub-<literal>SELECT</literal> into the outer query, the
      expression(s) copied into the function expression were not fully
      processed.  This could lead to crashes at execution.
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [8c1144ba7] 2021-10-01 14:59:35 -0400
Branch: REL_14_STABLE [a54509bfd] 2021-10-01 14:59:35 -0400
Branch: REL_13_STABLE [7adbe186f] 2021-10-01 14:59:35 -0400
Branch: REL_12_STABLE [334fb8c3d] 2021-10-01 14:59:35 -0400
Branch: REL_11_STABLE [5863d348a] 2021-10-01 14:59:35 -0400
Branch: REL_10_STABLE [f951ea3a2] 2021-10-01 14:59:35 -0400
-->
     <para>
      Avoid using MCV-only statistics to estimate the range of a column
      (Tom Lane)
      <ulink url="&commit_baseurl;a54509bfd">&sect;</ulink>
     </para>

     <para>
      There are corner cases in which <command>ANALYZE</command> will
      build a most-common-values (MCV) list but not a histogram, even
      though the MCV list does not account for all the observed values.
      In such cases, keep the planner from using the MCV list alone to
      estimate the range of column values.
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [7b5d4c29e] 2021-10-01 11:10:12 -0400
Branch: REL_14_STABLE [e6adaa179] 2021-10-01 11:10:12 -0400
Branch: REL_13_STABLE [04ef2021e] 2021-10-01 11:10:12 -0400
Branch: REL_12_STABLE [cded2c460] 2021-10-01 11:10:12 -0400
Branch: REL_11_STABLE [5abbda985] 2021-10-01 11:10:12 -0400
-->
     <para>
      Fix restoration of a Portal's snapshot inside a subtransaction
      (Bertrand Drouvot)
      <ulink url="&commit_baseurl;e6adaa179">&sect;</ulink>
     </para>

     <para>
      If a procedure commits or rolls back a transaction, and then its
      next significant action is inside a new subtransaction, snapshot
      management went wrong, leading to a dangling pointer and probable
      crash.  A typical example in PL/pgSQL is a <literal>COMMIT</literal>
      immediately followed by a <literal>BEGIN ... EXCEPTION</literal>
      block that performs a query.
     </para>
    </listitem>

    <listitem>
<!--
Author: Michael Paquier <michael@paquier.xyz>
Branch: master [409f9ca44] 2021-10-18 11:55:42 +0900
Branch: REL_14_STABLE [5b353aaff] 2021-10-18 11:56:48 +0900
Branch: REL_13_STABLE [8f4fe8d7f] 2021-10-18 11:56:52 +0900
Branch: REL_12_STABLE [a207b8521] 2021-10-18 11:56:54 +0900
Branch: REL_11_STABLE [506aa1f71] 2021-10-18 11:56:57 +0900
Branch: REL_10_STABLE [d1a6a08df] 2021-10-18 11:57:02 +0900
Branch: REL9_6_STABLE [f49bf8263] 2021-10-18 11:57:07 +0900
-->
     <para>
      Clean up correctly if a transaction fails after exporting its
      snapshot (Dilip Kumar)
      <ulink url="&commit_baseurl;5b353aaff">&sect;</ulink>
     </para>

     <para>
      This oversight would only cause a problem if the same session
      attempted to export a snapshot again.  The most likely scenario for
      that is creation of a replication slot (followed by rollback)
      and then creation of another replication slot.
     </para>
    </listitem>

    <listitem>
<!--
Author: Alexander Korotkov <akorotkov@postgresql.org>
Branch: master [05e6e78c1] 2021-11-06 19:13:58 +0300
Branch: REL_14_STABLE [b0f6bd48f] 2021-11-06 19:13:53 +0300
Branch: REL_13_STABLE [e1fee28a0] 2021-11-06 18:34:19 +0300
Branch: REL_12_STABLE [8f779a1a3] 2021-11-06 18:34:21 +0300
Branch: REL_11_STABLE [691c0df73] 2021-11-06 18:34:23 +0300
Branch: REL_10_STABLE [774d00573] 2021-11-06 18:34:26 +0300
Branch: REL9_6_STABLE [7381b79ad] 2021-11-06 18:34:31 +0300
-->
     <para>
      Prevent wraparound of overflowed-subtransaction tracking on standby
      servers (Kyotaro Horiguchi, Alexander Korotkov)
      <ulink url="&commit_baseurl;b0f6bd48f">&sect;</ulink>
     </para>

     <para>
      This oversight could cause significant performance degradation
      (manifesting as excessive SubtransSLRU traffic) on standby servers.
     </para>
    </listitem>

    <listitem>
<!--
Author: Michael Paquier <michael@paquier.xyz>
Branch: master [8a4237908] 2021-10-04 14:05:20 +0900
Branch: REL_14_STABLE [828f7f000] 2021-10-04 14:05:48 +0900
Branch: REL_13_STABLE [194e535a0] 2021-10-04 14:05:52 +0900
Branch: REL_12_STABLE [3c3f118d5] 2021-10-04 14:05:55 +0900
Branch: REL_11_STABLE [0a561d4d0] 2021-10-04 14:05:59 +0900
Branch: REL_10_STABLE [8a6a1fe07] 2021-10-04 14:06:03 +0900
Branch: REL9_6_STABLE [e2b2a9e1c] 2021-10-04 14:06:09 +0900
-->
     <para>
      Ensure that prepared transactions are properly accounted for during
      promotion of a standby server (Michael Paquier, Andres Freund)
      <ulink url="&commit_baseurl;828f7f000">&sect;</ulink>
     </para>

     <para>
      There was a narrow window where a prepared transaction could be
      omitted from a snapshot taken by a concurrently-running session.
      If that session then used the snapshot to perform data updates,
      erroneous results or data corruption could occur.
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [39ae0ef85] 2021-10-11 11:56:52 -0400
Branch: REL_14_STABLE [2c25db32e] 2021-10-11 11:56:52 -0400
-->
     <para>
      Fix <quote>could not find RecursiveUnion</quote> error
      when <command>EXPLAIN</command> tries to print a filter condition
      attached to a WorkTableScan node (Tom Lane)
      <ulink url="&commit_baseurl;2c25db32e">&sect;</ulink>
     </para>
    </listitem>

    <listitem>
<!--
Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
Branch: master [c2c618ff1] 2021-10-19 19:08:45 -0300
Branch: REL_14_STABLE [3ce3fb2f7] 2021-10-19 19:08:45 -0300
Branch: REL_13_STABLE [842fe6123] 2021-10-19 19:08:45 -0300
Branch: REL_12_STABLE [6c8d1c197] 2021-10-19 19:08:45 -0300
Branch: master [cd124d205] 2021-10-20 13:05:42 -0300
Branch: REL_14_STABLE [718278855] 2021-10-20 13:05:42 -0300
Branch: REL_13_STABLE [a73a3671d] 2021-10-20 13:05:42 -0300
Branch: REL_12_STABLE [3c8c49945] 2021-10-20 13:05:42 -0300
-->
     <para>
      Ensure that the correct lock level is used when renaming a table
      (Nathan Bossart, &Aacute;lvaro Herrera)
      <ulink url="&commit_baseurl;3ce3fb2f7">&sect;</ulink>
      <ulink url="&commit_baseurl;718278855">&sect;</ulink>
     </para>

     <para>
      For historical reasons, <command>ALTER INDEX ... RENAME</command>
      can be applied to any sort of relation.  The lock level required to
      rename an index is lower than that required to rename a table or
      other kind of relation, but the code got this wrong and would use
      the weaker lock level whenever the command is spelled <command>ALTER
      INDEX</command>.
     </para>
    </listitem>

    <listitem>
<!--
Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
Branch: master [d74b54b3d] 2021-11-05 12:29:35 -0300
Branch: REL_14_STABLE [02e20bb2d] 2021-11-05 12:29:35 -0300
Branch: REL_13_STABLE [bf5cdcfd5] 2021-11-05 12:29:34 -0300
Branch: REL_12_STABLE [3eff168a2] 2021-11-05 12:29:34 -0300
Branch: REL_11_STABLE [92224e470] 2021-11-05 12:29:34 -0300
Branch: REL_10_STABLE [58b600f64] 2021-11-05 12:29:34 -0300
Branch: REL9_6_STABLE [e0eaeafd6] 2021-11-05 12:29:35 -0300
-->
     <para>
      Avoid null-pointer-dereference crash when dropping a role that owns
      objects being dropped concurrently (&Aacute;lvaro Herrera)
      <ulink url="&commit_baseurl;02e20bb2d">&sect;</ulink>
     </para>
    </listitem>

    <listitem>
<!--
Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
Branch: master [6b1b405eb] 2021-11-03 10:52:38 +0200
Branch: REL_14_STABLE [4ebd740cd] 2021-11-03 10:54:33 +0200
Branch: REL_13_STABLE [07070c008] 2021-11-03 10:54:36 +0200
Branch: REL_12_STABLE [11a399f9c] 2021-11-03 10:54:39 +0200
Branch: REL_11_STABLE [6bf00da11] 2021-11-03 10:54:42 +0200
Branch: REL_10_STABLE [7b55bb892] 2021-11-03 11:09:08 +0200
Branch: REL9_6_STABLE [8f32afee0] 2021-11-03 11:15:02 +0200
Branch: master [d5ab0681b] 2021-11-03 19:38:17 +0200
Branch: REL_14_STABLE [f4e3b6271] 2021-11-03 19:41:35 +0200
Branch: REL_13_STABLE [b7299b664] 2021-11-03 19:41:38 +0200
Branch: REL_12_STABLE [7dc9a310e] 2021-11-03 19:41:41 +0200
Branch: REL_11_STABLE [b110af5f7] 2021-11-03 19:41:44 +0200
Branch: REL_10_STABLE [245799d39] 2021-11-03 19:41:46 +0200
Branch: REL9_6_STABLE [71aeaf245] 2021-11-03 19:41:49 +0200
-->
     <para>
      Prevent <quote>snapshot reference leak</quote> warning
      when <function>lo_export()</function> or a related function fails
      (Heikki Linnakangas)
      <ulink url="&commit_baseurl;4ebd740cd">&sect;</ulink>
      <ulink url="&commit_baseurl;f4e3b6271">&sect;</ulink>
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [01fc65270] 2021-11-02 13:36:47 -0400
Branch: REL_14_STABLE [16a56774f] 2021-11-02 13:36:53 -0400
Branch: REL_13_STABLE [ada667b45] 2021-11-02 13:36:57 -0400
-->
     <para>
      Fix inefficient code generation for CoerceToDomain expression nodes
      (Ranier Vilela)
      <ulink url="&commit_baseurl;16a56774f">&sect;</ulink>
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [6301c3ada] 2021-10-31 15:31:29 -0400
Branch: REL_14_STABLE [8424dfced] 2021-10-31 15:31:38 -0400
Branch: REL_13_STABLE [df238aed1] 2021-10-31 15:31:44 -0400
Branch: master [e9d9ba2a4] 2021-11-01 16:24:39 -0400
Branch: REL_14_STABLE [ad87bf355] 2021-11-01 16:24:40 -0400
Branch: REL_13_STABLE [e477642a1] 2021-11-01 16:24:40 -0400
Branch: master [65c6cab13] 2021-11-02 11:31:54 -0400
Branch: REL_14_STABLE [08cfa5981] 2021-11-02 11:31:54 -0400
Branch: REL_13_STABLE [0151af40c] 2021-11-02 11:31:54 -0400
-->
     <para>
      Avoid O(N^2) behavior in some list-manipulation operations
      (Nathan Bossart, Tom Lane)
      <ulink url="&commit_baseurl;8424dfced">&sect;</ulink>
      <ulink url="&commit_baseurl;ad87bf355">&sect;</ulink>
      <ulink url="&commit_baseurl;08cfa5981">&sect;</ulink>
     </para>

     <para>
      These changes fix slow processing in several scenarios, including:
      when a standby replays a transaction that held many exclusive locks
      on the primary; when many files are due to be unlinked after a
      checkpoint; when hash aggregation involves many batches; and when
      <filename>pg_trgm</filename> extracts indexable conditions from a
      complex regular expression.  Only the first of these scenarios has
      actually been reported from the field, but they all seem like
      plausible consequences of inefficient list deletions.
     </para>
    </listitem>

    <listitem>
<!--
Author: Peter Geoghegan <pg@bowt.ie>
Branch: master [a5213adf3] 2021-10-27 12:10:47 -0700
Branch: REL_14_STABLE [d078fe83d] 2021-10-27 12:10:45 -0700
Branch: REL_13_STABLE [f8cce4a3d] 2021-10-27 12:10:43 -0700
Branch: master [c2381b510] 2021-10-27 13:09:24 -0700
Branch: REL_14_STABLE [6cac34339] 2021-10-27 13:09:01 -0700
Branch: REL_13_STABLE [d5a2ffbce] 2021-10-27 13:09:00 -0700
-->
     <para>
      Add more defensive checks around B-tree posting list splits
      (Peter Geoghegan)
      <ulink url="&commit_baseurl;d078fe83d">&sect;</ulink>
      <ulink url="&commit_baseurl;6cac34339">&sect;</ulink>
     </para>

     <para>
      This change should help detect index corruption involving duplicate
      table TIDs.
     </para>
    </listitem>

    <listitem>
<!--
Author: Tomas Vondra <tomas.vondra@postgresql.org>
Branch: master [d91353f4b] 2021-11-06 01:50:44 +0100
Branch: REL_14_STABLE [f7829feb7] 2021-11-06 01:53:36 +0100
-->
     <para>
      Avoid assertion failure when inserting NaN into a BRIN
      float8 or float4 minmax_multi_ops index (Tomas Vondra)
      <ulink url="&commit_baseurl;f7829feb7">&sect;</ulink>
     </para>

     <para>
      In production builds, such cases would result in a somewhat
      inefficient, but not actually incorrect, index.
     </para>
    </listitem>

    <listitem>
<!--
Author: Fujii Masao <fujii@postgresql.org>
Branch: master [e3e29cec1] 2021-10-12 09:50:17 +0900
Branch: REL_14_STABLE [62e821ad2] 2021-10-12 09:51:17 +0900
-->
     <para>
      Allow the autovacuum launcher process to respond
      to <function>pg_log_backend_memory_contexts()</function> requests
      more quickly (Koyu Tanigawa)
      <ulink url="&commit_baseurl;62e821ad2">&sect;</ulink>
     </para>
    </listitem>

    <listitem>
<!--
Author: Daniel Gustafsson <dgustafsson@postgresql.org>
Branch: master [0ded7039f] 2021-10-01 22:47:05 +0200
Branch: REL_14_STABLE [a5e83ad79] 2021-10-01 22:47:05 +0200
-->
     <para>
      Fix memory leak in HMAC hash calculations (Sergey Shinderuk)
      <ulink url="&commit_baseurl;a5e83ad79">&sect;</ulink>
     </para>
    </listitem>

    <listitem>
<!--
Author: Thomas Munro <tmunro@postgresql.org>
Branch: master [8781b0ce2] 2021-10-26 12:54:55 +1300
Branch: REL_14_STABLE [181361a0c] 2021-10-26 13:09:00 +1300
Branch: REL_13_STABLE [24b7cf8a5] 2021-10-26 13:04:40 +1300
Branch: REL_12_STABLE [8fef901e3] 2021-10-26 13:01:52 +1300
-->
     <para>
      Disallow setting <varname>huge_pages</varname>
      to <literal>on</literal> when <varname>shared_memory_type</varname>
      is <literal>sysv</literal> (Thomas Munro)
      <ulink url="&commit_baseurl;181361a0c">&sect;</ulink>
     </para>

     <para>
      Previously, this setting was accepted, but it did nothing for lack
      of any implementation.
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [a0558cfa3] 2021-10-03 13:21:20 -0400
Branch: REL_14_STABLE [e0eba586b] 2021-10-03 13:21:20 -0400
-->
     <para>
      Fix checking of query type in PL/pgSQL's <command>RETURN
      QUERY</command> statement (Tom Lane)
      <ulink url="&commit_baseurl;e0eba586b">&sect;</ulink>
     </para>

     <para>
      <command>RETURN QUERY</command> should accept any query that can
      return tuples, e.g. <command>UPDATE RETURNING</command>.  v14
      accidentally disallowed anything but <command>SELECT</command>;
      moreover, the <command>RETURN QUERY EXECUTE</command> variant
      failed to apply any query-type check at all.
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [2acc84c6f] 2021-10-22 15:22:25 -0400
Branch: REL_14_STABLE [3ad2c2455] 2021-10-22 15:22:25 -0400
Branch: REL_13_STABLE [476006023] 2021-10-22 15:22:26 -0400
Branch: REL_12_STABLE [52b927a73] 2021-10-22 15:22:26 -0400
Branch: REL_11_STABLE [871dfe4b7] 2021-10-22 15:22:26 -0400
Branch: REL_10_STABLE [10f9faf6d] 2021-10-22 15:22:26 -0400
Branch: REL9_6_STABLE [b1df061f7] 2021-10-22 15:22:26 -0400
-->
     <para>
      Fix <application>pg_dump</application> to dump non-global default
      privileges correctly (Neil Chen, Masahiko Sawada)
      <ulink url="&commit_baseurl;3ad2c2455">&sect;</ulink>
     </para>

     <para>
      If a global (unrestricted) <command>ALTER DEFAULT
      PRIVILEGES</command> command revoked some present-by-default
      privilege, for example <literal>EXECUTE</literal> for functions, and
      then a restricted <command>ALTER DEFAULT PRIVILEGES</command>
      command granted that privilege again for a selected role or
      schema, <application>pg_dump</application> failed to dump the
      restricted privilege grant correctly.
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [e2ff7d9a8] 2021-10-16 12:23:57 -0400
Branch: REL_14_STABLE [b5152e3ba] 2021-10-16 12:24:11 -0400
Branch: REL_13_STABLE [6a262ba8c] 2021-10-16 12:24:17 -0400
Branch: REL_12_STABLE [fd182a92a] 2021-10-16 12:24:24 -0400
Branch: REL_11_STABLE [ca7a4ce58] 2021-10-16 12:24:33 -0400
Branch: REL_10_STABLE [2e2a23283] 2021-10-16 12:24:40 -0400
-->
     <para>
      Make <application>pg_dump</application> acquire shared lock on
      partitioned tables that are to be dumped (Tom Lane)
      <ulink url="&commit_baseurl;b5152e3ba">&sect;</ulink>
     </para>

     <para>
      This oversight was usually pretty harmless, since
      once <application>pg_dump</application> has locked any of the leaf
      partitions, that would suffice to prevent significant DDL on the
      partitioned table itself.  However problems could ensue when dumping
      a childless partitioned table, since no relevant lock would be held.
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [40dfac4fc] 2021-10-16 15:02:55 -0400
Branch: REL_14_STABLE [3e4c8db93] 2021-10-16 15:03:05 -0400
Branch: REL_13_STABLE [0b5f557b7] 2021-10-16 15:03:10 -0400
Branch: REL_12_STABLE [5b0b2983a] 2021-10-16 15:03:15 -0400
Branch: REL_11_STABLE [58955c84f] 2021-10-16 15:03:21 -0400
-->
     <para>
      Fix crash in <application>pg_dump</application> when attempting to
      dump trigger definitions from a pre-8.3 server (Tom Lane)
      <ulink url="&commit_baseurl;3e4c8db93">&sect;</ulink>
     </para>
    </listitem>

    <listitem>
<!--
Author: Daniel Gustafsson <dgustafsson@postgresql.org>
Branch: master [998d060f3] 2021-10-19 12:59:54 +0200
Branch: REL_14_STABLE [3e2f32b01] 2021-10-19 12:59:54 +0200
Branch: REL_13_STABLE [687fe8a9d] 2021-10-19 12:59:54 +0200
Branch: REL_12_STABLE [e788883de] 2021-10-19 12:59:54 +0200
Branch: REL_11_STABLE [038892c81] 2021-10-19 12:59:54 +0200
Branch: REL_10_STABLE [4fda03b67] 2021-10-19 12:59:54 +0200
Branch: REL9_6_STABLE [ef1f15819] 2021-10-19 12:59:54 +0200
-->
     <para>
      Fix incorrect filename in <application>pg_restore</application>'s
      error message about an invalid large object TOC file (Daniel
      Gustafsson)
      <ulink url="&commit_baseurl;3e2f32b01">&sect;</ulink>
     </para>
    </listitem>

    <listitem>
<!--
Author: Fujii Masao <fujii@postgresql.org>
Branch: master [d33674708] 2021-09-29 21:46:56 +0900
Branch: REL_14_STABLE [8021334d3] 2021-09-29 21:47:25 +0900
Branch: REL_13_STABLE [3cc85d7d5] 2021-09-29 21:47:31 +0900
Branch: master [2acb7cc6b] 2021-09-29 21:48:52 +0900
Branch: REL_14_STABLE [8231c500e] 2021-09-29 21:49:29 +0900
Branch: REL_13_STABLE [8cf4f7118] 2021-09-29 21:49:36 +0900
Branch: REL_12_STABLE [c5f7e702d] 2021-09-29 21:49:40 +0900
-->
     <para>
      Ensure that <application>pgbench</application> exits with non-zero
      status after a socket-level failure (Yugo Nagata, Fabien Coelho)
      <ulink url="&commit_baseurl;8021334d3">&sect;</ulink>
      <ulink url="&commit_baseurl;8231c500e">&sect;</ulink>
     </para>

     <para>
      The desired behavior is to finish out the run but then exit with
      status 2.  Also, fix the reporting of such errors.
     </para>
    </listitem>

    <listitem>
<!--
Author: Peter Geoghegan <pg@bowt.ie>
Branch: master [d2bf06db3] 2021-10-13 14:08:12 -0700
Branch: REL_14_STABLE [dd58194cf] 2021-10-13 14:08:11 -0700
Branch: master [cd3f429d9] 2021-10-14 14:50:26 -0700
Branch: REL_14_STABLE [5863115e4] 2021-10-14 14:50:25 -0700
-->
     <para>
      Prevent <application>pg_amcheck</application> from checking
      temporary relations, as well as indexes that are invalid or not
      ready (Mark Dilger)
      <ulink url="&commit_baseurl;dd58194cf">&sect;</ulink>
      <ulink url="&commit_baseurl;5863115e4">&sect;</ulink>
     </para>

     <para>
      This avoids unhelpful checks of relations that will almost certainly
      appear inconsistent.
     </para>
    </listitem>

    <listitem>
<!--
Author: Peter Geoghegan <pg@bowt.ie>
Branch: master [292698f15] 2021-10-11 17:21:48 -0700
Branch: REL_14_STABLE [e7712155e] 2021-10-11 17:21:46 -0700
-->
     <para>
      Make <filename>contrib/amcheck</filename> skip unlogged tables
      when running on a standby server (Mark Dilger)
      <ulink url="&commit_baseurl;e7712155e">&sect;</ulink>
     </para>

     <para>
      It's appropriate to do this since such tables will be empty,
      and unlogged indexes were already handled similarly.
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [a667b0668] 2021-10-31 19:13:48 -0400
Branch: REL_14_STABLE [7104e0b24] 2021-10-31 19:13:48 -0400
Branch: REL_13_STABLE [3a5b313ce] 2021-10-31 19:13:48 -0400
Branch: REL_12_STABLE [16d0da5c8] 2021-10-31 19:13:48 -0400
Branch: REL_11_STABLE [5dd067430] 2021-10-31 19:13:48 -0400
Branch: REL_10_STABLE [d87d5f8d8] 2021-10-31 19:13:48 -0400
Branch: REL9_6_STABLE [fdb60ca83] 2021-10-31 19:13:48 -0400
-->
     <para>
      Change <filename>contrib/pg_stat_statements</filename> to read
      its <quote>query texts</quote> file in units of at most 1GB
      (Tom Lane)
      <ulink url="&commit_baseurl;7104e0b24">&sect;</ulink>
     </para>

     <para>
      Such large query text files are very unusual, but if they do occur,
      the previous coding would fail on Windows 64 (which rejects
      individual read requests of more than 2GB).
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [3071bbfe4] 2021-10-06 15:50:24 -0400
Branch: REL_14_STABLE [12ff678e1] 2021-10-06 15:50:24 -0400
Branch: REL_13_STABLE [aee83f39a] 2021-10-06 15:50:24 -0400
Branch: REL_12_STABLE [228897374] 2021-10-06 15:50:24 -0400
Branch: REL_11_STABLE [88807757d] 2021-10-06 15:50:24 -0400
Branch: REL_10_STABLE [2e33fbda1] 2021-10-06 15:50:24 -0400
Branch: REL9_6_STABLE [36c9f7d96] 2021-10-06 15:50:24 -0400
-->
     <para>
      Fix null-pointer crash
      when <filename>contrib/postgres_fdw</filename> tries to report a
      data conversion error (Tom Lane)
      <ulink url="&commit_baseurl;12ff678e1">&sect;</ulink>
     </para>
    </listitem>

    <listitem>
<!--
Author: Jeff Davis <jdavis@postgresql.org>
Branch: master [7821a0bf2] 2021-10-14 12:24:00 -0700
Branch: REL_14_STABLE [0b90f1c4c] 2021-10-14 12:24:22 -0700
Branch: REL_13_STABLE [20f785732] 2021-10-14 12:24:47 -0700
Branch: REL_12_STABLE [ab11f6e46] 2021-10-14 12:25:07 -0700
Branch: REL_11_STABLE [3f5d481ef] 2021-10-14 12:25:30 -0700
Branch: REL_10_STABLE [9364f64a2] 2021-10-14 12:25:48 -0700
Branch: REL9_6_STABLE [ae6abeb88] 2021-10-14 12:26:26 -0700
-->
     <para>
      Ensure that <function>GetSharedSecurityLabel()</function> can be
      used in a newly-started session that has not yet built its critical
      relation cache entries (Jeff Davis)
      <ulink url="&commit_baseurl;0b90f1c4c">&sect;</ulink>
     </para>
    </listitem>

    <listitem>
<!--
Author: Andrew Dunstan <andrew@dunslane.net>
Branch: master [f4ce6c4d3] 2021-10-22 09:49:07 -0400
Branch: REL_14_STABLE [52c0c1136] 2021-10-22 09:50:16 -0400
-->
     <para>
      When running a TAP test, include the module's own directory
      in <envar>PATH</envar> (Andrew Dunstan)
      <ulink url="&commit_baseurl;52c0c1136">&sect;</ulink>
     </para>

     <para>
      This allows tests to find built programs that are not installed,
      such as custom test drivers.
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [9b8d68cc6] 2021-10-02 16:05:42 -0400
Branch: REL_14_STABLE [fa8db4879] 2021-10-02 16:06:09 -0400
Branch: REL_13_STABLE [9c76689de] 2021-10-02 16:06:23 -0400
Branch: REL_12_STABLE [e5b25f19b] 2021-10-02 16:06:45 -0400
Branch: REL_11_STABLE [9cc919b51] 2021-10-02 16:06:55 -0400
Branch: REL_10_STABLE [e323630cd] 2021-10-02 16:07:16 -0400
Branch: REL9_6_STABLE [dbec5a2fe] 2021-10-02 16:07:37 -0400
Branch: master [ad740067a] 2021-10-02 16:05:10 -0400
Branch: REL_14_STABLE [81464999b] 2021-10-02 16:06:09 -0400
Branch: REL_13_STABLE [7ba8eb81f] 2021-10-02 16:06:23 -0400
Branch: REL_12_STABLE [4721e8aa6] 2021-10-02 16:06:45 -0400
Branch: REL_11_STABLE [bb6d42669] 2021-10-02 16:06:55 -0400
Branch: REL_10_STABLE [cb0799db0] 2021-10-02 16:07:16 -0400
Branch: REL9_6_STABLE [37cbe0f79] 2021-10-02 16:07:36 -0400
Branch: master [c1aa3b3c0] 2021-10-04 14:52:39 -0400
Branch: REL_14_STABLE [919c08d90] 2021-10-04 14:52:17 -0400
Branch: REL_13_STABLE [c53ff69e1] 2021-10-04 14:52:17 -0400
Branch: REL_12_STABLE [07873a5dc] 2021-10-04 14:52:17 -0400
Branch: REL_11_STABLE [d0b0b70dc] 2021-10-04 14:52:17 -0400
Branch: REL_10_STABLE [cd2479142] 2021-10-04 14:52:17 -0400
Branch: REL9_6_STABLE [b5f34ae08] 2021-10-04 14:52:17 -0400
-->
     <para>
      Use the CLDR project's data to map Windows time zone names to IANA
      time zones (Tom Lane)
      <ulink url="&commit_baseurl;fa8db4879">&sect;</ulink>
      <ulink url="&commit_baseurl;81464999b">&sect;</ulink>
      <ulink url="&commit_baseurl;919c08d90">&sect;</ulink>
     </para>

     <para>
      When running on Windows, <application>initdb</application> attempts
      to set the new cluster's <varname>timezone</varname> parameter to
      the IANA time zone matching the system's prevailing time zone.
      We were using a mapping table that we'd generated years ago and
      updated only fitfully; unsurprisingly, it contained a number of
      errors as well as omissions of recently-added zones.  It turns out
      that CLDR has been tracking the most appropriate mappings, so start
      using their data.  This change will not affect any existing
      installation, only newly-initialized clusters.
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [937aafd6d] 2021-10-29 11:38:18 -0400
Branch: REL_14_STABLE [0c8a40b39] 2021-10-29 11:38:32 -0400
Branch: REL_13_STABLE [4cd72add0] 2021-10-29 11:38:38 -0400
Branch: REL_12_STABLE [14b8d25d6] 2021-10-29 11:38:47 -0400
Branch: REL_11_STABLE [91455f7c6] 2021-10-29 11:38:53 -0400
Branch: REL_10_STABLE [d0fe211ce] 2021-10-29 11:38:58 -0400
Branch: REL9_6_STABLE [22a498b9b] 2021-10-29 11:39:05 -0400
-->
     <para>
      Update time zone data files to <application>tzdata</application>
      release 2021e for DST law changes in Fiji, Jordan, Palestine, and
      Samoa, plus historical corrections for Barbados, Cook Islands,
      Guyana, Niue, Portugal, and Tonga. (Tom Lane)
      <ulink url="&commit_baseurl;0c8a40b39">&sect;</ulink>
     </para>

     <para>
      Also, the Pacific/Enderbury zone has been renamed to Pacific/Kanton.
      Also, the following zones have been merged into nearby, more-populous
      zones whose clocks have agreed with them since 1970: Africa/Accra,
      America/Atikokan, America/Blanc-Sablon, America/Creston,
      America/Curacao, America/Nassau, America/Port_of_Spain,
      Antarctica/DumontDUrville, and Antarctica/Syowa.
      In all these cases, the previous zone name remains as an alias.
     </para>
    </listitem>

   </itemizedlist>

  </sect2>
 </sect1>

 <sect1 id="release-14">
  <title>Release 14</title>

  <formalpara>
   <title>Release date:</title>
   <para>2021-09-30</para>
  </formalpara>

  <sect2>
   <title>Overview</title>

   <para>
    <productname>PostgreSQL</productname> 14 contains many new features and
    enhancements, including:
   </para>

   <itemizedlist>
    <listitem>
     <para>
      Stored procedures can now return data via <literal>OUT</literal>
      parameters.
     </para>
    </listitem>

    <listitem>
     <para>
      The SQL-standard <literal>SEARCH</literal>
      and <literal>CYCLE</literal> options for common table expressions
      have been implemented.
     </para>
    </listitem>

    <listitem>
     <para>
      Subscripting can now be applied to any data type for which
      it is a useful notation, not only arrays.  In this release,
      the <type>jsonb</type> and <type>hstore</type> types have gained
      subscripting operators.
     </para>
    </listitem>

    <listitem>
     <para>
      Range types have been extended by adding multiranges, allowing
      representation of noncontiguous data ranges.
     </para>
    </listitem>

    <listitem>
     <para>
      Numerous performance improvements have been made for parallel
      queries, heavily-concurrent workloads, partitioned tables, logical
      replication, and vacuuming.
     </para>
    </listitem>

    <listitem>
     <para>
      B-tree index updates are managed more efficiently, reducing index
      bloat.
     </para>
    </listitem>

    <listitem>
     <para>
      <command>VACUUM</command> automatically becomes more aggressive, and
      skips inessential cleanup, if the database starts to approach a
      transaction ID wraparound condition.
     </para>
    </listitem>

    <listitem>
     <para>
      Extended statistics can now be collected on expressions, allowing
      better planning results for complex queries.
     </para>
    </listitem>

    <listitem>
     <para>
      <application>libpq</application> now has the ability to pipeline
      multiple queries, which can boost throughput over high-latency
      connections.
     </para>
    </listitem>
   </itemizedlist>

   <para>
    The above items and other new features
    of <productname>PostgreSQL</productname> 14 are explained in more
    detail in the sections below.
   </para>

  </sect2>

  <sect2>

  <title>Migration to Version 14</title>

    <para>
     A dump/restore using <xref linkend="app-pg-dumpall"/> or use of <xref
     linkend="pgupgrade"/> or logical replication is required for those
     wishing to migrate data from any previous release.  See <xref
     linkend="upgrading"/> for general information on migrating to new major
     releases.
    </para>

    <para>
     Version 14 contains a number of changes that may affect compatibility
     with previous releases.  Observe the following incompatibilities:
    </para>

   <itemizedlist>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
2020-11-04 [9e38c2bb5] Declare assorted array functions using anycompatible not
-->

     <para>
      User-defined objects that reference certain built-in array functions
      along with their argument types must be recreated (Tom Lane)
      <ulink url="&commit_baseurl;9e38c2bb5">&sect;</ulink>
     </para>

     <para>
      Specifically, <link
      linkend="functions-array"><function>array_append()</function></link>,
      <function>array_prepend()</function>,
      <function>array_cat()</function>,
      <function>array_position()</function>,
      <function>array_positions()</function>,
      <function>array_remove()</function>,
      <function>array_replace()</function>, and <link
      linkend="functions-math"><function>width_bucket()</function></link>
      used to take <type>anyarray</type> arguments but now take
      <type>anycompatiblearray</type>.  Therefore, user-defined objects
      like aggregates and operators that reference those array function
      signatures must be dropped before upgrading, and recreated once the
      upgrade completes.
     </para>
    </listitem>

    <listitem>
<!--
Author: Peter Eisentraut <peter@eisentraut.org>
2020-11-03 [2f70fdb06] Remove deprecated containment operators for built-in typ
Author: Tom Lane <tgl@sss.pgh.pa.us>
2021-03-05 [112d411fb] Remove deprecated containment operators for contrib type
-->

     <para>
      Remove deprecated containment operators <literal>@</literal>
      and <literal>~</literal> for built-in <link
      linkend="functions-geometry">geometric data types</link> and
      contrib modules <xref linkend="cube"/>, <xref linkend="hstore"/>,
      <xref linkend="intarray"/>, and <xref linkend="seg"/> (Justin Pryzby)
      <ulink url="&commit_baseurl;2f70fdb06">&sect;</ulink>
      <ulink url="&commit_baseurl;112d411fb">&sect;</ulink>
     </para>

     <para>
      The more consistently named <literal>&lt;@</literal>
      and <literal>@&gt;</literal> have been recommended for many years.
     </para>
    </listitem>

    <listitem>
<!--
Author: Alexander Korotkov <akorotkov@postgresql.org>
2021-01-31 [0c4f355c6] Fix parsing of complex morphs to tsquery
-->

     <para>
      Fix <link
      linkend="functions-textsearch"><function>to_tsquery()</function></link>
      and <function>websearch_to_tsquery()</function> to properly parse
      query text containing discarded tokens (Alexander Korotkov)
      <ulink url="&commit_baseurl;0c4f355c6">&sect;</ulink>
     </para>

     <para>
      Certain discarded tokens, like underscore, caused the output of
      these functions to produce incorrect tsquery output, e.g., both
      <literal>websearch_to_tsquery('"pg_class pg"')</literal> and <literal>to_tsquery('pg_class
      &lt;-&gt; pg')</literal> used to output <literal>( 'pg' &amp; 'class' ) &lt;-&gt; 'pg'</literal>,
      but now both output <literal>'pg' &lt;-&gt; 'class' &lt;-&gt; 'pg'</literal>.
     </para>
    </listitem>

    <listitem>
<!--
Author: Alexander Korotkov <akorotkov@postgresql.org>
2021-05-03 [eb086056f] Make websearch_to_tsquery() parse text in quotes as a si
-->

     <para>
      Fix <link
      linkend="functions-textsearch"><function>websearch_to_tsquery()</function></link>
      to properly parse multiple adjacent discarded tokens in quotes
      (Alexander Korotkov)
      <ulink url="&commit_baseurl;eb086056f">&sect;</ulink>
     </para>

     <para>
      Previously, quoted text that contained multiple adjacent discarded
      tokens was treated as multiple tokens, causing incorrect tsquery
      output, e.g., <literal>websearch_to_tsquery('"aaa: bbb"')</literal> used to output
      <literal>'aaa' &lt;2&gt; 'bbb'</literal>, but now outputs <literal>'aaa' &lt;-&gt; 'bbb'</literal>.
     </para>
    </listitem>

    <listitem>
<!--
Author: Peter Eisentraut <peter@eisentraut.org>
2021-04-06 [a2da77cdb] Change return type of EXTRACT to numeric
-->

     <para>
      Change <link
      linkend="functions-datetime"><function>EXTRACT()</function></link>
      to return type <type>numeric</type> instead of <type>float8</type>
      (Peter Eisentraut)
      <ulink url="&commit_baseurl;a2da77cdb">&sect;</ulink>
     </para>

     <para>
      This avoids loss-of-precision issues in some usages.  The old
      behavior can still be obtained by using the old underlying function
      <function>date_part()</function>.
     </para>

     <para>
      Also, <function>EXTRACT(date)</function> now throws an error for units
      that are not part of the <type>date</type> data type.
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
2020-06-13 [23cbeda50] Sync behavior of var_samp and stddev_samp for single NaN
-->

     <para>
      Change <link
      linkend="functions-aggregate"><function>var_samp()</function></link>
      and <function>stddev_samp()</function> with numeric parameters to
      return NULL when the input is a single NaN value (Tom Lane)
      <ulink url="&commit_baseurl;23cbeda50">&sect;</ulink>
     </para>

     <para>
      Previously <literal>NaN</literal> was returned.
     </para>
    </listitem>

    <listitem>
<!--
Author: Joe Conway <mail@joeconway.com>
2021-03-31 [b12bd4869] Fix has_column_privilege function corner case
-->

     <para>
      Return false for <link
      linkend="functions-info"><function>has_column_privilege()</function></link>
      checks on non-existent or dropped columns when using attribute
      numbers (Joe Conway)
      <ulink url="&commit_baseurl;b12bd4869">&sect;</ulink>
     </para>

     <para>
      Previously such attribute numbers returned an invalid-column error.
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
2020-07-20 [a4faef8f8] Fix some corner cases for window ranges with infinite of
-->

     <para>
      Fix handling of infinite <link
      linkend="syntax-window-functions">window function</link> ranges
      (Tom Lane)
      <ulink url="&commit_baseurl;a4faef8f8">&sect;</ulink>
     </para>

     <para>
      Previously window frame clauses like <literal>'inf' PRECEDING AND
      'inf' FOLLOWING</literal> returned incorrect results.
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
2020-09-17 [76f412ab3] Remove factorial operators, leaving only the factorial()
-->

     <para>
      Remove factorial operators <literal>!</literal> and
      <literal>!!</literal>, as well as function
      <function>numeric_fac()</function> (Mark Dilger)
      <ulink url="&commit_baseurl;76f412ab3">&sect;</ulink>
     </para>

     <para>
      The <link
      linkend="functions-math"><function>factorial()</function></link>
      function is still supported.
     </para>
    </listitem>

    <listitem>
<!--
Author: Peter Eisentraut <peter@eisentraut.org>
2020-06-18 [0a40563ea] Disallow factorial of negative numbers
-->

     <para>
      Disallow <function>factorial()</function> of negative numbers
      (Peter Eisentraut)
      <ulink url="&commit_baseurl;0a40563ea">&sect;</ulink>
     </para>

     <para>
      Previously such cases returned 1.
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
2020-09-17 [1ed6b8956] Remove support for postfix (right-unary) operators.
-->

     <para>
      Remove support for <link linkend="sql-createoperator">postfix</link>
      (right-unary) operators (Mark Dilger)
      <ulink url="&commit_baseurl;1ed6b8956">&sect;</ulink>
     </para>

     <para>
      <application>pg_dump</application> and
      <application>pg_upgrade</application> will warn if postfix operators
      are being dumped.
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
2021-02-25 [7dc13a0f0] Change regex \D and \W shorthands to always match newlin
-->

     <para>
      Allow <literal>\D</literal> and <literal>\W</literal> shorthands to
      match newlines in <link linkend="functions-posix-regexp">regular
      expression</link> newline-sensitive mode (Tom Lane)
      <ulink url="&commit_baseurl;7dc13a0f0">&sect;</ulink>
     </para>

     <para>
      Previously they did not match newlines in this
      mode, but that disagrees with the behavior of other common regular
      expression engines.  <literal>[^[:digit:]]</literal> or
      <literal>[^[:word:]]</literal> can be used to get the old behavior.
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
2021-03-02 [4aea704a5] Fix semantics of regular expression back-references.
-->

     <para>
      Disregard constraints when matching regular expression <link
      linkend="posix-escape-sequences">back-references</link> (Tom Lane)
      <ulink url="&commit_baseurl;4aea704a5">&sect;</ulink>
     </para>

     <para>
      For example, in <literal>(^\d+).*\1</literal>,
      the <literal>^</literal> constraint should be applied at the start
      of the string, but not when matching <literal>\1</literal>.
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
2021-02-25 [2a0af7fe4] Allow complemented character class escapes within regex
-->

     <para>
      Disallow <literal>\w</literal> as a range start or end in regular
      expression character classes (Tom Lane)
      <ulink url="&commit_baseurl;2a0af7fe4">&sect;</ulink>
     </para>

     <para>
      This previously was allowed but produced unexpected results.
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
2021-04-07 [3db826bd5] Tighten up allowed names for custom GUC parameters.
Author: Tom Lane <tgl@sss.pgh.pa.us>
2021-04-07 [3db826bd5] Tighten up allowed names for custom GUC parameters.
-->

     <para>
      Require <link linkend="runtime-config-custom">custom server
      parameter</link> names to use only characters that are valid in
      unquoted <acronym>SQL</acronym> identifiers (Tom Lane)
      <ulink url="&commit_baseurl;3db826bd5">&sect;</ulink>
      <ulink url="&commit_baseurl;3db826bd5">&sect;</ulink>
     </para>
    </listitem>

    <listitem>
<!--
Author: Peter Eisentraut <peter@eisentraut.org>
2020-06-10 [c7eab0e97] Change default of password_encryption to scram-sha-256
-->

     <para>
      Change the default of the <xref linkend="guc-password-encryption"/>
      server parameter to <literal>scram-sha-256</literal> (Peter
      Eisentraut)
      <ulink url="&commit_baseurl;c7eab0e97">&sect;</ulink>
     </para>

     <para>
      Previously it was <literal>md5</literal>.  All new passwords will
      be stored as SHA256 unless this server setting is changed or
      the password is specified in MD5 format.  Also, the legacy (and
      undocumented) Boolean-like values which were previously synonyms
      for <literal>md5</literal> are no longer accepted.
     </para>
    </listitem>

    <listitem>
<!--
Author: Peter Geoghegan <pg@bowt.ie>
2021-03-10 [9f3665fbf] Don't consider newly inserted tuples in nbtree VACUUM.
Author: Peter Geoghegan <pg@bowt.ie>
2021-03-11 [effdd3f3b] Add back vacuum_cleanup_index_scale_factor parameter.
-->

     <para>
      Remove server parameter
      <varname>vacuum_cleanup_index_scale_factor</varname> (Peter Geoghegan)
      <ulink url="&commit_baseurl;9f3665fbf">&sect;</ulink>
      <ulink url="&commit_baseurl;effdd3f3b">&sect;</ulink>
     </para>

     <para>
      This setting was ignored starting in
      <productname>PostgreSQL</productname> version 13.3.
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
2020-12-08 [a676386b5] Remove operator_precedence_warning.
-->

     <para>
      Remove server parameter <varname>operator_precedence_warning</varname>
      (Tom Lane)
      <ulink url="&commit_baseurl;a676386b5">&sect;</ulink>
     </para>

     <para>
      This setting was used for warning applications about
      <productname>PostgreSQL</productname> 9.5 changes.
     </para>
    </listitem>

    <listitem>
<!--
Author: Bruce Momjian <bruce@momjian.us>
2020-10-05 [253f1025d] Overhaul pg_hba.conf clientcert's API
-->

     <para>
      Overhaul the specification of <literal>clientcert</literal> in <link
      linkend="auth-pg-hba-conf"><filename>pg_hba.conf</filename></link>
      (Kyotaro Horiguchi)
      <ulink url="&commit_baseurl;253f1025d">&sect;</ulink>
     </para>

     <para>
      Values
      <literal>1</literal>/<literal>0</literal>/<literal>no-verify</literal>
      are no longer supported;  only the strings
      <literal>verify-ca</literal> and <literal>verify-full</literal>
      can be used.  Also, disallow <literal>verify-ca</literal> if cert
      authentication is enabled since cert requires
      <literal>verify-full</literal> checking.
     </para>
    </listitem>

    <listitem>
<!--
Author: Michael Paquier <michael@paquier.xyz>
2021-03-09 [f9264d152] Remove support for SSL compression
Author: Michael Paquier <michael@paquier.xyz>
2021-03-10 [0ba71107e] Revert changes for SSL compression in libpq
-->

     <para>
      Remove support for <link
      linkend="runtime-config-connection-ssl"><acronym>SSL</acronym></link>
      compression (Daniel Gustafsson, Michael Paquier)
      <ulink url="&commit_baseurl;f9264d152">&sect;</ulink>
      <ulink url="&commit_baseurl;0ba71107e">&sect;</ulink>
     </para>

     <para>
      This was already disabled by default in previous
      <productname>PostgreSQL</productname> releases, and most modern
      OpenSSL and <acronym>TLS</acronym> versions no longer support it.
     </para>
    </listitem>

    <listitem>
<!--
Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
2021-03-04 [3174d69fb] Remove server and libpq support for old FE/BE protocol v
-->

     <para>
      Remove server and <link linkend="libpq">libpq</link> support
      for the version 2 <link linkend="protocol">wire protocol</link>
      (Heikki Linnakangas)
      <ulink url="&commit_baseurl;3174d69fb">&sect;</ulink>
     </para>

     <para>
      This was last used as the default in
      <productname>PostgreSQL</productname> 7.3 (released in 2002).
     </para>
    </listitem>

    <listitem>
<!--
Author: Peter Eisentraut <peter@eisentraut.org>
2020-06-11 [5333e014a] Remove deprecated syntax from CREATE/DROP LANGUAGE
-->

     <para>
      Disallow single-quoting of the language name in the
      <link linkend="sql-createlanguage"><command>CREATE/DROP
      LANGUAGE</command></link> command (Peter Eisentraut)
      <ulink url="&commit_baseurl;5333e014a">&sect;</ulink>
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
2020-07-07 [f3faf35f3] Don't create pg_type entries for sequences or toast tabl
-->

     <para>
      Remove the <link linkend="xfunc-sql-composite-functions">composite
      types</link> that were formerly created for sequences and toast
      tables (Tom Lane)
      <ulink url="&commit_baseurl;f3faf35f3">&sect;</ulink>
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
2020-10-22 [3dfb1942d] Avoid premature de-doubling of quote marks in ECPG strin
Author: Tom Lane <tgl@sss.pgh.pa.us>
2020-10-22 [c16a1bbcf] Add documentation and tests for quote marks in ECPG lite
-->

     <para>
      Process doubled quote marks in <link linkend="ecpg">ecpg</link>
      <acronym>SQL</acronym> command strings correctly (Tom Lane)
      <ulink url="&commit_baseurl;3dfb1942d">&sect;</ulink>
      <ulink url="&commit_baseurl;c16a1bbcf">&sect;</ulink>
     </para>

     <para>
      Previously <literal>'abc''def'</literal> was passed to the server
      as <literal>'abc'def'</literal>, and <literal>"abc""def"</literal>
      was passed as <literal>"abc"def"</literal>, causing syntax errors.
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
2020-08-08 [20e7e1fe3] Remove &lt;@ from contrib/intarray's GiST operator classes.
-->

     <para>
      Prevent the containment operators (<literal>&lt;@</literal> and
      <literal>@&gt;</literal>) for <xref linkend="intarray"/> from using
      GiST indexes (Tom Lane)
      <ulink url="&commit_baseurl;20e7e1fe3">&sect;</ulink>
     </para>

     <para>
      Previously a full GiST index scan was required, so just avoid
      that and scan the heap, which is faster.  Indexes created for this
      purpose should be removed.
     </para>
    </listitem>

    <listitem>
<!--
Author: Thomas Munro <tmunro@postgresql.org>
2021-01-29 [514b411a2] Retire pg_standby.
-->

     <para>
      Remove contrib program <application>pg_standby</application>
      (Justin Pryzby)
      <ulink url="&commit_baseurl;514b411a2">&sect;</ulink>
     </para>
    </listitem>

    <listitem>
<!--
Author: Peter Eisentraut <peter@eisentraut.org>
2020-11-25 [f73999262] tablefunc: Reject negative number of tuples passed to no
-->

     <para>
      Prevent <xref linkend="tablefunc"/>'s function
      <function>normal_rand()</function> from accepting negative values
      (Ashutosh Bapat)
      <ulink url="&commit_baseurl;f73999262">&sect;</ulink>
     </para>

     <para>
      Negative values produced undesirable results.
     </para>
    </listitem>

   </itemizedlist>

  </sect2>

  <sect2>
   <title>Changes</title>

     <para>
      Below you will find a detailed account of the changes between
      <productname>PostgreSQL</productname> 14 and the previous major
      release.
     </para>

   <sect3>
    <title>Server</title>

    <itemizedlist>

     <listitem>
<!--
Author: Stephen Frost <sfrost@snowman.net>
2021-04-05 [6c3ffd697] Add pg_read_all_data and pg_write_all_data roles
-->

      <para>
       Add predefined roles <link
       linkend="predefined-roles"><literal>pg_read_all_data</literal></link>
       and <literal>pg_write_all_data</literal> (Stephen Frost)
       <ulink url="&commit_baseurl;6c3ffd697">&sect;</ulink>
      </para>

      <para>
       These non-login roles can be used to give read or write permission
       to all tables, views, and sequences.
      </para>
     </listitem>

     <listitem>
<!--
Author: Noah Misch <noah@leadboat.com>
2021-03-26 [a14a0118a] Add "pg_database_owner" default role.
-->

      <para>
       Add predefined role <link
       linkend="predefined-roles"><literal>pg_database_owner</literal></link>
       that contains only the current database's owner (Noah Misch)
       <ulink url="&commit_baseurl;a14a0118a">&sect;</ulink>
      </para>

      <para>
       This is especially useful in template databases.
      </para>
     </listitem>

     <listitem>
<!--
Author: Tomas Vondra <tomas.vondra@postgresql.org>
2021-03-18 [cd91de0d1] Remove temporary files after backend crash
-->

      <para>
       Remove temporary files after backend crashes (Euler Taveira)
       <ulink url="&commit_baseurl;cd91de0d1">&sect;</ulink>
      </para>

      <para>
       Previously, such files were retained for debugging purposes.  If
       necessary, deletion can be disabled with the new server parameter
       <xref linkend="guc-remove-temp-files-after-crash"/>.
      </para>
     </listitem>

     <listitem>
<!--
Author: Thomas Munro <tmunro@postgresql.org>
2021-04-03 [c30f54ad7] Detect POLLHUP/POLLRDHUP while running queries.
-->

      <para>
       Allow long-running queries to be canceled if the client disconnects
       (Sergey Cherkashin, Thomas Munro)
       <ulink url="&commit_baseurl;c30f54ad7">&sect;</ulink>
      </para>

      <para>
       The server parameter <xref
       linkend="guc-client-connection-check-interval"/> allows control
       over whether loss of connection is checked for intra-query.
       (This is supported on Linux and a few other operating systems.)
      </para>
     </listitem>

     <listitem>
<!--
Author: Magnus Hagander <magnus@hagander.net>
2021-04-08 [aaf043257] Add functions to wait for backend termination
-->

      <para>
       Add an optional timeout parameter to <link
       linkend="functions-admin-signal"><function>pg_terminate_backend()</function></link>
       (Magnus Hagander)
       <ulink url="&commit_baseurl;aaf043257">&sect;</ulink>
      </para>
     </listitem>

     <listitem>
<!--
Author: Noah Misch <noah@leadboat.com>
2021-03-30 [0ff8bbdee] Accept slightly-filled pages for tuples larger than fill
-->

      <para>
       Allow wide tuples to be always added to almost-empty heap pages
       (John Naylor, Floris van Nee)
       <ulink url="&commit_baseurl;0ff8bbdee">&sect;</ulink>
      </para>

      <para>
       Previously tuples whose insertion would have exceeded the page's
       <link linkend="sql-createtable">fill factor</link> were instead
       added to new pages.
      </para>
     </listitem>

     <listitem>
<!--
Author: Peter Eisentraut <peter@eisentraut.org>
2021-04-07 [5c55dc8b4] libpq: Set Server Name Indication (SNI) for SSL connecti
-->

      <para>
       Add Server Name Indication (<acronym>SNI</acronym>) in
       <acronym>SSL</acronym> connection packets (Peter Eisentraut)
       <ulink url="&commit_baseurl;5c55dc8b4">&sect;</ulink>
      </para>

      <para>
       This can be disabled by turning off client connection option <link
       linkend="libpq-paramkeywords"><literal>sslsni</literal></link>.
      </para>
     </listitem>

    </itemizedlist>

    <sect4>
     <title><link linkend="routine-vacuuming">Vacuuming</link></title>

     <itemizedlist>

      <listitem>
<!--
Author: Peter Geoghegan <pg@bowt.ie>
2021-04-07 [5100010ee] Teach VACUUM to bypass unnecessary index vacuuming.
Author: Peter Geoghegan <pg@bowt.ie>
2021-06-18 [3499df0de] Support disabling index bypassing by VACUUM.
-->

       <para>
        Allow vacuum to skip index vacuuming when the number of removable
        index entries is insignificant (Masahiko Sawada, Peter Geoghegan)
        <ulink url="&commit_baseurl;5100010ee">&sect;</ulink>
        <ulink url="&commit_baseurl;3499df0de">&sect;</ulink>
       </para>

       <para>
        The vacuum parameter <link
        linkend="sql-vacuum"><literal>INDEX_CLEANUP</literal></link> has a
        new default of <literal>auto</literal> that enables this optimization.
       </para>
      </listitem>

      <listitem>
<!--
Author: Peter Geoghegan <pg@bowt.ie>
2021-03-21 [9dd963ae2] Recycle nbtree pages deleted during same VACUUM.
-->

       <para>
        Allow vacuum to more eagerly add deleted btree pages to the free
        space map (Peter Geoghegan)
        <ulink url="&commit_baseurl;9dd963ae2">&sect;</ulink>
       </para>

       <para>
        Previously vacuum could only add pages to the free space map
        that were marked as deleted by previous vacuums.
       </para>
      </listitem>

      <listitem>
<!--
Author: Peter Geoghegan <pg@bowt.ie>
2021-04-07 [3c3b8a4b2] Truncate line pointer array during VACUUM.
-->

       <para>
        Allow vacuum to reclaim space used by unused trailing heap
        line pointers (Matthias van de Meent, Peter Geoghegan)
        <ulink url="&commit_baseurl;3c3b8a4b2">&sect;</ulink>
       </para>
      </listitem>

      <listitem>
<!--
Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
2020-11-25 [c98763bf5] Avoid spurious waits in concurrent indexing
Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
2021-01-15 [f9900df5f] Avoid spurious wait in concurrent reindex
Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
2021-02-23 [d9d076222] VACUUM: ignore indexing operations with CONCURRENTLY
-->

       <para>
        Allow vacuum to be more aggressive in removing dead rows during
        minimal-locking index operations (Álvaro Herrera)
        <ulink url="&commit_baseurl;c98763bf5">&sect;</ulink>
        <ulink url="&commit_baseurl;f9900df5f">&sect;</ulink>
        <ulink url="&commit_baseurl;d9d076222">&sect;</ulink>
       </para>

       <para>
        Specifically, <command>CREATE INDEX CONCURRENTLY</command> and
        <command>REINDEX CONCURRENTLY</command> no longer limit the dead
        row removal of other relations.
       </para>
      </listitem>

      <listitem>
<!--
Author: Fujii Masao <fujii@postgresql.org>
2020-12-08 [e2ac3fed3] Speed up rechecking if relation needs to be vacuumed or
-->

       <para>
        Speed up vacuuming of databases with many relations (Tatsuhito
        Kasahara)
        <ulink url="&commit_baseurl;e2ac3fed3">&sect;</ulink>
       </para>
      </listitem>

      <listitem>
<!--
Author: Peter Geoghegan <pg@bowt.ie>
2021-01-27 [e19594c5c] Reduce the default value of vacuum_cost_page_miss.
-->

       <para>
        Reduce the default value of <xref
        linkend="guc-vacuum-cost-page-miss"/> to better reflect current
        hardware capabilities (Peter Geoghegan)
        <ulink url="&commit_baseurl;e19594c5c">&sect;</ulink>
       </para>
      </listitem>

      <listitem>
<!--
Author: Michael Paquier <michael@paquier.xyz>
2021-02-09 [7cb3048f3] Add option PROCESS_TOAST to VACUUM
-->

       <para>
        Add ability to skip vacuuming of <acronym>TOAST</acronym> tables
        (Nathan Bossart)
        <ulink url="&commit_baseurl;7cb3048f3">&sect;</ulink>
       </para>

       <para>
        <link linkend="sql-vacuum"><command>VACUUM</command></link> now
        has a <literal>PROCESS_TOAST</literal> option which can be set to
        false to disable <acronym>TOAST</acronym> processing, and <link
        linkend="app-vacuumdb"><application>vacuumdb</application></link>
        has a <option>--no-process-toast</option> option.
       </para>
      </listitem>

      <listitem>
<!--
Author: Tomas Vondra <tomas.vondra@postgresql.org>
2021-01-17 [7db0cd214] Set PD_ALL_VISIBLE and visibility map bits in COPY FREEZ
-->

       <para>
        Have <link linkend="sql-copy"><command>COPY FREEZE</command></link>
        appropriately update page visibility bits (Anastasia Lubennikova,
        Pavan Deolasee, Jeff Janes)
        <ulink url="&commit_baseurl;7db0cd214">&sect;</ulink>
       </para>
      </listitem>

      <listitem>
<!--
Author: Peter Geoghegan <pg@bowt.ie>
2021-04-07 [1e55e7d17] Add wraparound failsafe to VACUUM.
-->

       <para>
        Cause vacuum operations to be more aggressive if the table is near
        xid or multixact wraparound (Masahiko Sawada, Peter Geoghegan)
        <ulink url="&commit_baseurl;1e55e7d17">&sect;</ulink>
       </para>

       <para>
        This is controlled by <xref linkend="guc-vacuum-failsafe-age"/>
        and <xref linkend="guc-vacuum-multixact-failsafe-age"/>.
       </para>
      </listitem>

      <listitem>
<!--
Author: Noah Misch <noah@leadboat.com>
2020-08-01 [cd5e82256] Change XID and mxact limits to warn at 40M and stop at 3
-->

       <para>
        Increase warning time and hard limit before transaction id and
        multi-transaction wraparound (Noah Misch)
        <ulink url="&commit_baseurl;cd5e82256">&sect;</ulink>
       </para>

       <para>
        This should reduce the possibility of failures that occur without
        having issued warnings about wraparound.
       </para>
      </listitem>

      <listitem>
<!--
Author: Michael Paquier <michael@paquier.xyz>
2021-03-23 [5aed6a1fc] Add per-index stats information in verbose logs of autov
-->

       <para>
        Add per-index information to <link
        linkend="guc-log-autovacuum-min-duration">autovacuum logging
        output</link> (Masahiko Sawada)
        <ulink url="&commit_baseurl;5aed6a1fc">&sect;</ulink>
       </para>
      </listitem>

     </itemizedlist>
    </sect4>

    <sect4>
     <title><link linkend="ddl-partitioning">Partitioning</link></title>

     <itemizedlist>

      <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
2021-03-31 [86dc90056] Rework planning and execution of UPDATE and DELETE.
Author: Tom Lane <tgl@sss.pgh.pa.us>
2021-04-06 [a1115fa07] Postpone some more stuff out of ExecInitModifyTable.
Author: Tom Lane <tgl@sss.pgh.pa.us>
2021-04-06 [c5b7ba4e6] Postpone some stuff out of ExecInitModifyTable.
-->

       <para>
        Improve the performance of updates and deletes on partitioned tables
        with many partitions (Amit Langote, Tom Lane)
        <ulink url="&commit_baseurl;86dc90056">&sect;</ulink>
        <ulink url="&commit_baseurl;a1115fa07">&sect;</ulink>
        <ulink url="&commit_baseurl;c5b7ba4e6">&sect;</ulink>
       </para>

       <para>
        This change greatly reduces the planner's overhead for such cases,
        and also allows updates/deletes on partitioned tables to use
        execution-time partition pruning.
       </para>
      </listitem>

      <listitem>
<!--
Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
2021-03-25 [71f4c8c6f] ALTER TABLE ... DETACH PARTITION ... CONCURRENTLY
-->

       <para>
        Allow partitions to be <link
        linkend="sql-altertable">detached</link> in a non-blocking manner
        (Álvaro Herrera)
        <ulink url="&commit_baseurl;71f4c8c6f">&sect;</ulink>
       </para>

       <para>
        The syntax is <command>ALTER TABLE ... DETACH PARTITION
        ... CONCURRENTLY</command>, and <command>FINALIZE</command>.
       </para>
      </listitem>

      <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
2020-09-28 [2dfa3fea8] Remove complaints about COLLATE clauses in partition bou
-->

       <para>
        Ignore <literal>COLLATE</literal> clauses in partition boundary
        values (Tom Lane)
        <ulink url="&commit_baseurl;2dfa3fea8">&sect;</ulink>
       </para>

       <para>
        Previously any such clause had to match the collation of the
        partition key; but it's more consistent to consider that it's
        automatically coerced to the collation of the partition key.
       </para>
      </listitem>

     </itemizedlist>

    </sect4>

    <sect4>
     <title>Indexes</title>

     <itemizedlist>

      <listitem>
<!--
Author: Peter Geoghegan <pg@bowt.ie>
2021-01-13 [9dc718bdf] Pass down "logically unchanged index" hint.
Author: Peter Geoghegan <pg@bowt.ie>
2021-01-13 [d168b6668] Enhance nbtree index tuple deletion.
-->

       <para>
        Allow btree index additions to <link
        linkend="btree-deletion">remove expired index entries</link>
        to prevent page splits (Peter Geoghegan)
        <ulink url="&commit_baseurl;9dc718bdf">&sect;</ulink>
        <ulink url="&commit_baseurl;d168b6668">&sect;</ulink>
       </para>

       <para>
        This is particularly helpful for reducing index bloat on tables
        whose indexed columns are frequently updated.
       </para>
      </listitem>

      <listitem>
<!--
Author: Tomas Vondra <tomas.vondra@postgresql.org>
2021-03-26 [ab596105b] BRIN minmax-multi indexes
-->

       <para>
        Allow <link linkend="brin"><acronym>BRIN</acronym></link> indexes
        to record multiple min/max values per range (Tomas Vondra)
        <ulink url="&commit_baseurl;ab596105b">&sect;</ulink>
       </para>

       <para>
        This is useful if there are groups of values in each page range.
       </para>
      </listitem>

      <listitem>
<!--
Author: Tomas Vondra <tomas.vondra@postgresql.org>
2021-03-26 [77b88cd1b] BRIN bloom indexes
-->

       <para>
        Allow <acronym>BRIN</acronym> indexes to use bloom filters
        (Tomas Vondra)
        <ulink url="&commit_baseurl;77b88cd1b">&sect;</ulink>
       </para>

       <para>
        This allows <acronym>BRIN</acronym> indexes to be used effectively
        with data that is not well-localized in the heap.
       </para>
      </listitem>

      <listitem>
<!--
Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
2020-09-17 [16fa9b2b3] Add support for building GiST index by sorting.
-->

       <para>
        Allow some <link linkend="gist">GiST</link> indexes to be built
        by presorting the data (Andrey Borodin)
        <ulink url="&commit_baseurl;16fa9b2b3">&sect;</ulink>
       </para>

       <para>
        Presorting happens automatically and allows for faster index
        creation and smaller indexes.
       </para>
      </listitem>

      <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
2021-04-05 [09c1c6ab4] Support INCLUDE'd columns in SP-GiST.
-->

       <para>
        Allow <link linkend="spgist">SP-GiST</link> indexes to contain
        <literal>INCLUDE</literal>'d columns (Pavel Borisov)
        <ulink url="&commit_baseurl;09c1c6ab4">&sect;</ulink>
       </para>
      </listitem>

     </itemizedlist>

    </sect4>

    <sect4>
     <title>Optimizer</title>

     <itemizedlist>

      <listitem>
<!--
Author: David Rowley <drowley@postgresql.org>
2021-04-08 [50e17ad28] Speedup ScalarArrayOpExpr evaluation
-->

       <para>
        Allow hash lookup for <literal>IN</literal> clauses with many
        constants (James Coleman, David Rowley)
        <ulink url="&commit_baseurl;50e17ad28">&sect;</ulink>
       </para>

       <para>
        Previously the code always sequentially scanned the list
        of values.
       </para>
      </listitem>

      <listitem>
<!--
Author: Dean Rasheed <dean.a.rasheed@gmail.com>
2020-12-03 [25a9e54d2] Improve estimation of OR clauses using extended statisti
Author: Dean Rasheed <dean.a.rasheed@gmail.com>
2020-12-08 [88b0898fe] Improve estimation of OR clauses using multiple extended
Author: Dean Rasheed <dean.a.rasheed@gmail.com>
2020-12-08 [4f5760d4a] Improve estimation of ANDs under ORs using extended stat
-->

       <para>
        Increase the number of places <link
        linkend="planner-stats-extended">extended statistics</link> can
        be used for <literal>OR</literal> clause estimation (Tomas Vondra,
        Dean Rasheed)
        <ulink url="&commit_baseurl;25a9e54d2">&sect;</ulink>
        <ulink url="&commit_baseurl;88b0898fe">&sect;</ulink>
        <ulink url="&commit_baseurl;4f5760d4a">&sect;</ulink>
       </para>
      </listitem>

      <listitem>
<!--
Author: Tomas Vondra <tomas.vondra@postgresql.org>
2021-03-27 [a4d75c86b] Extended statistics on expressions
-->

       <para>
        Allow extended statistics on expressions (Tomas Vondra)
        <ulink url="&commit_baseurl;a4d75c86b">&sect;</ulink>
       </para>

       <para>
        This allows statistics on a group of expressions and columns,
        rather than only columns like previously.  System view <link
        linkend="view-pg-stats-ext-exprs"><structname>pg_stats_ext_exprs</structname></link>
        reports such statistics.
       </para>
      </listitem>

      <listitem>
<!--
Author: David Rowley <drowley@postgresql.org>
2021-02-27 [bb437f995] Add TID Range Scans to support efficient scanning ranges
-->

       <para>
        Allow efficient heap scanning of a range of <link
        linkend="datatype-oid-table"><type>TIDs</type></link> (Edmund
        Horner, David Rowley)
        <ulink url="&commit_baseurl;bb437f995">&sect;</ulink>
       </para>

       <para>
        Previously a sequential scan was required for non-equality
        <type>TID</type> specifications.
       </para>
      </listitem>

      <listitem>
<!--
Author: Michael Paquier <michael@paquier.xyz>
2020-12-30 [e665769e6] Sanitize IF NOT EXISTS in EXPLAIN for CTAS and matviews
-->

       <para>
        Fix <link linkend="sql-explain"><command>EXPLAIN CREATE TABLE
        AS</command></link> and <command>EXPLAIN CREATE MATERIALIZED
        VIEW</command> to honor <literal>IF NOT EXISTS</literal>
        (Bharath Rupireddy)
        <ulink url="&commit_baseurl;e665769e6">&sect;</ulink>
       </para>

       <para>
        Previously, if the object already existed,
        <command>EXPLAIN</command> would fail.
       </para>
      </listitem>

     </itemizedlist>

    </sect4>

    <sect4>
     <title>General Performance</title>

     <itemizedlist>

      <listitem>
<!--
Author: Andres Freund <andres@anarazel.de>
2020-08-12 [dc7420c2c] snapshot scalability: Don't compute global horizons whil
Author: Andres Freund <andres@anarazel.de>
2020-08-13 [1f51c17c6] snapshot scalability: Move PGXACT->xmin back to PGPROC.
Author: Andres Freund <andres@anarazel.de>
2020-08-14 [941697c3c] snapshot scalability: Introduce dense array of in-progre
Author: Andres Freund <andres@anarazel.de>
2020-08-14 [5788e258b] snapshot scalability: Move PGXACT->vacuumFlags to ProcGl
Author: Andres Freund <andres@anarazel.de>
2020-08-14 [73487a60f] snapshot scalability: Move subxact info to ProcGlobal, r
Author: Andres Freund <andres@anarazel.de>
2020-08-17 [623a9ba79] snapshot scalability: cache snapshots using a xact compl
-->

       <para>
        Improve the speed of computing <acronym>MVCC</acronym> <link
        linkend="mvcc">visibility snapshots</link> on systems with many
        CPUs and high session counts (Andres Freund)
        <ulink url="&commit_baseurl;dc7420c2c">&sect;</ulink>
        <ulink url="&commit_baseurl;1f51c17c6">&sect;</ulink>
        <ulink url="&commit_baseurl;941697c3c">&sect;</ulink>
        <ulink url="&commit_baseurl;5788e258b">&sect;</ulink>
        <ulink url="&commit_baseurl;73487a60f">&sect;</ulink>
        <ulink url="&commit_baseurl;623a9ba79">&sect;</ulink>
       </para>

       <para>
        This also improves performance when there are many idle sessions.
       </para>
      </listitem>

      <listitem>
<!--
Author: David Rowley <drowley@postgresql.org>
2021-04-02 [9eacee2e6] Add Result Cache executor node (take 2)
-->

       <para>
        Add executor method to memoize results from the inner side of a
        nested-loop join (David Rowley)
        <ulink url="&commit_baseurl;9eacee2e6">&sect;</ulink>
       </para>

       <para>
        This is useful if only a small percentage of rows is checked on
        the inner side.  It can be disabled via server parameter <xref
        linkend="guc-enable-memoize"/>.
       </para>
      </listitem>

      <listitem>
<!--
Author: David Rowley <drowley@postgresql.org>
2020-09-15 [62e221e1c] Allow incremental sorts for windowing functions
-->

       <para>
        Allow <link linkend="functions-window">window functions</link>
        to perform incremental sorts (David Rowley)
        <ulink url="&commit_baseurl;62e221e1c">&sect;</ulink>
       </para>
      </listitem>

      <listitem>
<!--
Author: David Rowley <drowley@postgresql.org>
2020-07-26 [56788d215] Allocate consecutive blocks during parallel seqscans
-->

       <para>
        Improve the I/O performance of parallel sequential scans (Thomas
        Munro, David Rowley)
        <ulink url="&commit_baseurl;56788d215">&sect;</ulink>
       </para>

       <para>
        This was done by allocating blocks in groups to <link
        linkend="guc-max-parallel-workers">parallel workers</link>.
       </para>
      </listitem>

      <listitem>
<!--
Author: Etsuro Fujita <efujita@postgresql.org>
2021-03-31 [27e1f1456] Add support for asynchronous execution.
-->

       <para>
        Allow a query referencing multiple <link
        linkend="sql-createforeigntable">foreign tables</link> to perform
        foreign table scans in parallel (Robert Haas, Kyotaro Horiguchi,
        Thomas Munro, Etsuro Fujita)
        <ulink url="&commit_baseurl;27e1f1456">&sect;</ulink>
       </para>

       <para>
        <link
        linkend="postgres-fdw"><application>postgres_fdw</application></link>
        supports this type of scan if <literal>async_capable</literal>
        is set.
       </para>
      </listitem>

      <listitem>
<!--
Author: Stephen Frost <sfrost@snowman.net>
2021-03-16 [c6fc50cb4] Use pre-fetching for ANALYZE
-->

       <para>
        Allow <link linkend="vacuum-for-statistics">analyze</link> to do
        page prefetching (Stephen Frost)
        <ulink url="&commit_baseurl;c6fc50cb4">&sect;</ulink>
       </para>

       <para>
        This is controlled by <xref
        linkend="guc-maintenance-io-concurrency"/>.
       </para>
      </listitem>

      <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
2021-02-20 [08c0d6ad6] Invent "rainbow" arcs within the regex engine.
Author: Tom Lane <tgl@sss.pgh.pa.us>
2021-02-20 [824bf7190] Recognize "match-all" NFAs within the regex engine.
Author: Tom Lane <tgl@sss.pgh.pa.us>
2021-02-20 [cebc1d34e] Fix regex engine to suppress useless concatenation sub-R
Author: Tom Lane <tgl@sss.pgh.pa.us>
2021-02-20 [581043089] Convert regex engine's subre tree from binary to N-ary s
Author: Tom Lane <tgl@sss.pgh.pa.us>
2021-02-20 [ea1268f63] Avoid generating extra subre tree nodes for capturing pa
Author: Tom Lane <tgl@sss.pgh.pa.us>
2021-02-21 [190c79884] Simplify memory management for regex DFAs a little.
Author: Tom Lane <tgl@sss.pgh.pa.us>
2021-02-26 [0fc1af174] Improve memory management in regex compiler.
Author: Tom Lane <tgl@sss.pgh.pa.us>
2021-03-02 [0c3405cf1] Improve performance of regular expression back-reference
Author: Tom Lane <tgl@sss.pgh.pa.us>
2021-03-02 [4604f83fd] Suppress unnecessary regex subre nodes in a couple more
Author: Tom Lane <tgl@sss.pgh.pa.us>
2021-03-08 [6c20bdb2a] Further tweak memory management for regex DFAs.
Author: Tom Lane <tgl@sss.pgh.pa.us>
2021-05-03 [f68970e33] Fix performance issue in new regex match-all detection c
-->

       <para>
        Improve performance of <link
        linkend="functions-posix-regexp">regular expression</link>
        searches (Tom Lane)
        <ulink url="&commit_baseurl;08c0d6ad6">&sect;</ulink>
        <ulink url="&commit_baseurl;824bf7190">&sect;</ulink>
        <ulink url="&commit_baseurl;cebc1d34e">&sect;</ulink>
        <ulink url="&commit_baseurl;581043089">&sect;</ulink>
        <ulink url="&commit_baseurl;ea1268f63">&sect;</ulink>
        <ulink url="&commit_baseurl;190c79884">&sect;</ulink>
        <ulink url="&commit_baseurl;0fc1af174">&sect;</ulink>
        <ulink url="&commit_baseurl;0c3405cf1">&sect;</ulink>
        <ulink url="&commit_baseurl;4604f83fd">&sect;</ulink>
        <ulink url="&commit_baseurl;6c20bdb2a">&sect;</ulink>
        <ulink url="&commit_baseurl;f68970e33">&sect;</ulink>
       </para>
      </listitem>

      <listitem>
<!--
Author: Michael Paquier <michael@paquier.xyz>
2020-10-11 [80f8eb79e] Use perfect hash for NFC and NFKC Unicode Normalization
Author: Michael Paquier <michael@paquier.xyz>
2020-10-23 [783f0cc64] Improve performance of Unicode {de,re}composition in the
-->

       <para>
        Dramatically improve Unicode normalization performance (John Naylor)
        <ulink url="&commit_baseurl;80f8eb79e">&sect;</ulink>
        <ulink url="&commit_baseurl;783f0cc64">&sect;</ulink>
       </para>

       <para>
        This speeds <link
        linkend="functions-string"><function>normalize()</function></link>
        and <literal>IS NORMALIZED</literal>.
       </para>
      </listitem>

      <listitem>
<!--
Author: Robert Haas <rhaas@postgresql.org>
2021-03-19 [bbe0a81db] Allow configurable LZ4 TOAST compression.
-->

       <para>
        Add ability to use <link linkend="sql-createtable">LZ4
        compression</link> on <acronym>TOAST</acronym> data (Dilip Kumar)
        <ulink url="&commit_baseurl;bbe0a81db">&sect;</ulink>
       </para>

       <para>
        This can be set at the column level, or set as a default via server
        parameter <xref linkend="guc-default-toast-compression"/>.
        The server must be compiled with <link
        linkend="configure-options-features"><option>--with-lz4</option></link>
        to support this feature.  The default setting is still pglz.
       </para>
      </listitem>

     </itemizedlist>

    </sect4>

    <sect4>
     <title>Monitoring</title>

     <itemizedlist>

      <listitem>
<!--
Author: Bruce Momjian <bruce@momjian.us>
2021-04-07 [4f0b0966c] Make use of in-core query id added by commit 5fd9dfa5f5
Author: Bruce Momjian <bruce@momjian.us>
2021-04-07 [f57a2f5e0] Add csvlog output for the new query_id value
Author: Bruce Momjian <bruce@momjian.us>
2021-04-20 [9660834dd] adjust query id feature to use pg_stat_activity.query_id
Author: Bruce Momjian <bruce@momjian.us>
2021-05-03 [f7a97b6ec] Update query_id computation
Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
2021-05-15 [cafde58b3] Allow compute_query_id to be set to 'auto' and make it d
-->

       <para>
        If server parameter <xref linkend="guc-compute-query-id"/>
        is enabled, display the query id in <link
        linkend="monitoring-pg-stat-activity-view"><structname>pg_stat_activity</structname></link>,
        <link linkend="sql-explain"><command>EXPLAIN
        VERBOSE</command></link>, <link
        linkend="runtime-config-logging">csvlog</link>, and optionally in
        <xref linkend="guc-log-line-prefix"/> (Julien Rouhaud)
        <ulink url="&commit_baseurl;4f0b0966c">&sect;</ulink>
        <ulink url="&commit_baseurl;f57a2f5e0">&sect;</ulink>
        <ulink url="&commit_baseurl;9660834dd">&sect;</ulink>
        <ulink url="&commit_baseurl;f7a97b6ec">&sect;</ulink>
        <ulink url="&commit_baseurl;cafde58b3">&sect;</ulink>
       </para>

       <para>
        A query id computed by an extension will also be displayed.
       </para>
      </listitem>

      <listitem>
<!--
Author: Stephen Frost <sfrost@snowman.net>
2021-03-16 [94d13d474] Improve logging of auto-vacuum and auto-analyze
-->

       <para>
        Improve logging of <link linkend="autovacuum">auto-vacuum</link>
        and auto-analyze (Stephen Frost, Jakub Wartak)
        <ulink url="&commit_baseurl;94d13d474">&sect;</ulink>
       </para>

       <para>
        This reports I/O timings for auto-vacuum and auto-analyze if <xref
        linkend="guc-track-io-timing"/> is enabled.  Also, report buffer
        read and dirty rates for auto-analyze.
       </para>
      </listitem>

      <listitem>
<!--
Author: Michael Paquier <michael@paquier.xyz>
2021-04-07 [9afffcb83] Add some information about authenticated identity via lo
-->

       <para>
        Add information about the original user name supplied by the
        client to the output of <xref linkend="guc-log-connections"/>
        (Jacob Champion)
        <ulink url="&commit_baseurl;9afffcb83">&sect;</ulink>
       </para>
      </listitem>

     </itemizedlist>

    </sect4>

    <sect4>
     <title>System Views</title>

     <itemizedlist>

      <listitem>
<!--
Author: Tomas Vondra <tomas.vondra@postgresql.org>
2021-01-06 [8a4f618e7] Report progress of COPY commands
Author: Michael Paquier <michael@paquier.xyz>
2021-03-09 [9d2d45700] Add support for more progress reporting in COPY
-->

       <para>
        Add system view <link
        linkend="copy-progress-reporting"><structname>pg_stat_progress_copy</structname></link>
        to report <command>COPY</command> progress (Josef Šimánek,
        Matthias van de Meent)
        <ulink url="&commit_baseurl;8a4f618e7">&sect;</ulink>
        <ulink url="&commit_baseurl;9d2d45700">&sect;</ulink>
       </para>
      </listitem>

      <listitem>
<!--
Author: Fujii Masao <fujii@postgresql.org>
2020-10-02 [8d9a93596] Add pg_stat_wal statistics view.
Author: Fujii Masao <fujii@postgresql.org>
2020-12-02 [01469241b] Track total number of WAL records, FPIs and bytes genera
Author: Fujii Masao <fujii@postgresql.org>
2021-03-09 [ff99918c6] Track total amounts of times spent writing and syncing W
-->

       <para>
        Add system view <link
        linkend="monitoring-pg-stat-wal-view"><structname>pg_stat_wal</structname></link>
        to report <acronym>WAL</acronym> activity (Masahiro Ikeda)
        <ulink url="&commit_baseurl;8d9a93596">&sect;</ulink>
        <ulink url="&commit_baseurl;01469241b">&sect;</ulink>
        <ulink url="&commit_baseurl;ff99918c6">&sect;</ulink>
       </para>
      </listitem>

      <listitem>
<!--
Author: Amit Kapila <akapila@postgresql.org>
2020-10-08 [986816750] Track statistics for spilling of changes from ReorderBuf
Author: Amit Kapila <akapila@postgresql.org>
2020-10-20 [03d51b776] Change the attribute name in pg_stat_replication_slots v
Author: Amit Kapila <akapila@postgresql.org>
2020-10-29 [8e90ec558] Track statistics for streaming of changes from ReorderBu
Author: Amit Kapila <akapila@postgresql.org>
2021-04-16 [f5fc2f5b2] Add information of total data processed to replication s
-->

       <para>
        Add system view <link
        linkend="monitoring-pg-stat-replication-slots-view"><structname>pg_stat_replication_slots</structname></link>
        to report replication slot activity (Masahiko Sawada, Amit Kapila,
        Vignesh C)
        <ulink url="&commit_baseurl;986816750">&sect;</ulink>
        <ulink url="&commit_baseurl;03d51b776">&sect;</ulink>
        <ulink url="&commit_baseurl;8e90ec558">&sect;</ulink>
        <ulink url="&commit_baseurl;f5fc2f5b2">&sect;</ulink>
       </para>

       <para>
        The function <link
        linkend="monitoring-stats-functions"><function>pg_stat_reset_replication_slot()</function></link>
        resets slot statistics.
       </para>
      </listitem>

      <listitem>
<!--
Author: Fujii Masao <fujii@postgresql.org>
2020-08-19 [3e98c0baf] Add pg_backend_memory_contexts system view.
Author: Fujii Masao <fujii@postgresql.org>
2020-08-26 [29dd6d8bc] Prevent non-superusers from reading pg_backend_memory_co
-->

       <para>
        Add system view <link
        linkend="view-pg-backend-memory-contexts"><structname>pg_backend_memory_contexts</structname></link>
        to report session memory usage (Atsushi Torikoshi, Fujii Masao)
        <ulink url="&commit_baseurl;3e98c0baf">&sect;</ulink>
        <ulink url="&commit_baseurl;29dd6d8bc">&sect;</ulink>
       </para>
      </listitem>

      <listitem>
<!--
Author: Fujii Masao <fujii@postgresql.org>
2021-04-06 [43620e328] Add function to log the memory contexts of specified bac
-->

       <para>
        Add function <link
        linkend="functions-admin-signal"><function>pg_log_backend_memory_contexts()</function></link>
        to output the memory contexts of arbitrary backends (Atsushi
        Torikoshi)
        <ulink url="&commit_baseurl;43620e328">&sect;</ulink>
       </para>
      </listitem>

      <listitem>
<!--
Author: Magnus Hagander <magnus@hagander.net>
2021-01-17 [960869da0] Add pg_stat_database counters for sessions and session t
-->

       <para>
        Add session statistics to the <link
        linkend="monitoring-pg-stat-database-view"><structname>pg_stat_database</structname></link>
        system view (Laurenz Albe)
        <ulink url="&commit_baseurl;960869da0">&sect;</ulink>
       </para>
      </listitem>

      <listitem>
<!--
Author: Fujii Masao <fujii@postgresql.org>
2020-07-20 [d05b172a7] Add generic_plans and custom_plans fields into pg_prepar
-->

       <para>
        Add columns to <link
        linkend="view-pg-prepared-statements"><structname>pg_prepared_statements</structname></link>
        to report generic and custom plan counts (Atsushi Torikoshi,
        Kyotaro Horiguchi)
        <ulink url="&commit_baseurl;d05b172a7">&sect;</ulink>
       </para>
      </listitem>

      <listitem>
<!--
Author: Fujii Masao <fujii@postgresql.org>
2021-02-15 [46d6e5f56] Display the time when the process started waiting for th
-->

       <para>
        Add lock wait start time to <link
        linkend="view-pg-locks"><structname>pg_locks</structname></link>
        (Atsushi Torikoshi)
        <ulink url="&commit_baseurl;46d6e5f56">&sect;</ulink>
       </para>
      </listitem>

      <listitem>
<!--
Author: Fujii Masao <fujii@postgresql.org>
2021-03-15 [d75288fb2] Make archiver process an auxiliary process.
-->

       <para>
        Make the archiver process visible in
        <structname>pg_stat_activity</structname> (Kyotaro Horiguchi)
        <ulink url="&commit_baseurl;d75288fb2">&sect;</ulink>
       </para>
      </listitem>

      <listitem>
<!--
Author: Fujii Masao <fujii@postgresql.org>
2021-03-24 [84007043f] Rename wait event WalrcvExit to WalReceiverExit.
-->

       <para>
        Add wait event <link
        linkend="monitoring-pg-stat-activity-view"><literal>WalReceiverExit</literal></link>
        to report <acronym>WAL</acronym> receiver exit wait time (Fujii
        Masao)
        <ulink url="&commit_baseurl;84007043f">&sect;</ulink>
       </para>
      </listitem>

      <listitem>
<!--
Author: Peter Eisentraut <peter@eisentraut.org>
2021-02-17 [f40c6969d] Routine usage information schema tables
-->

       <para>
        Implement information schema view <link
        linkend="infoschema-routine-column-usage"><structname>routine_column_usage</structname></link>
        to track columns referenced by function and procedure default
        expressions (Peter Eisentraut)
        <ulink url="&commit_baseurl;f40c6969d">&sect;</ulink>
       </para>
      </listitem>

     </itemizedlist>

    </sect4>

    <sect4>
     <title>Authentication</title>

     <itemizedlist>

      <listitem>
<!--
Author: Andrew Dunstan <andrew@dunslane.net>
2021-03-29 [6d7a6feac] Allow matching the DN of a client certificate for authen
-->

       <para>
        Allow an SSL certificate's distinguished name (<acronym>DN</acronym>)
        to be matched for client certificate authentication (Andrew
        Dunstan)
        <ulink url="&commit_baseurl;6d7a6feac">&sect;</ulink>
       </para>

       <para>
        The new <link
        linkend="auth-pg-hba-conf"><filename>pg_hba.conf</filename></link>
        option <literal>clientname=DN</literal> allows comparison with
        certificate attributes beyond the <literal>CN</literal> and can
        be combined with ident maps.
       </para>
      </listitem>

      <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
2020-09-03 [8f8154a50] Allow records to span multiple lines in pg_hba.conf and
-->

       <para>
        Allow <filename>pg_hba.conf</filename> and <link
        linkend="auth-username-maps"><filename>pg_ident.conf</filename></link>
        records to span multiple lines (Fabien Coelho)
        <ulink url="&commit_baseurl;8f8154a50">&sect;</ulink>
       </para>

       <para>
        A backslash at the end of a line allows record contents to be
        continued on the next line.
       </para>
      </listitem>

      <listitem>
<!--
Author: Peter Eisentraut <peter@eisentraut.org>
2021-02-18 [f5465fade] Allow specifying CRL directory
-->

       <para>
        Allow the specification of a certificate revocation list
        (<acronym>CRL</acronym>) directory (Kyotaro Horiguchi)
        <ulink url="&commit_baseurl;f5465fade">&sect;</ulink>
       </para>

       <para>
        This is controlled by server parameter <xref
        linkend="guc-ssl-crl-dir"/> and libpq connection option
        <xref linkend='libpq-connect-sslcrldir'/>.  Previously only
        single <acronym>CRL</acronym> files could be specified.
       </para>
      </listitem>

      <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
2020-09-03 [67a472d71] Remove arbitrary restrictions on password length.
-->

       <para>
        Allow passwords of an arbitrary length (Tom Lane, Nathan Bossart)
        <ulink url="&commit_baseurl;67a472d71">&sect;</ulink>
       </para>
      </listitem>

     </itemizedlist>

    </sect4>

    <sect4>
     <title>Server Configuration</title>

     <itemizedlist>

      <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
2021-01-06 [9877374be] Add idle_session_timeout.
-->

       <para>
        Add server parameter <xref linkend="guc-idle-session-timeout"/>
        to close idle sessions (Li Japin)
        <ulink url="&commit_baseurl;9877374be">&sect;</ulink>
       </para>

       <para>
        This is similar to <xref
        linkend="guc-idle-in-transaction-session-timeout"/>.
       </para>
      </listitem>

      <listitem>
<!--
Author: Stephen Frost <sfrost@snowman.net>
2021-03-24 [bbcc4eb2e] Change checkpoint_completion_target default to 0.9
-->

       <para>
        Change <xref linkend="guc-checkpoint-completion-target"/> default
        to 0.9 (Stephen Frost)
        <ulink url="&commit_baseurl;bbcc4eb2e">&sect;</ulink>
       </para>

       <para>
        The previous default was 0.5.
       </para>
      </listitem>

      <listitem>
<!--
Author: Michael Paquier <michael@paquier.xyz>
2020-08-03 [b8fdee7d0] Add %P to log_line_prefix for parallel group leader
-->

       <para>
        Allow <literal>%P</literal>
        in <xref linkend="guc-log-line-prefix"/> to report the
        parallel group leader's PID for a parallel worker (Justin Pryzby)
        <ulink url="&commit_baseurl;b8fdee7d0">&sect;</ulink>
       </para>
      </listitem>

      <listitem>
<!--
Author: Michael Paquier <michael@paquier.xyz>
2020-11-07 [a05dbf477] Add GUC_LIST_INPUT and GUC_LIST_QUOTE to unix_socket_dir
-->

       <para>
        Allow <xref linkend="guc-unix-socket-directories"/> to specify
        paths as individual, comma-separated quoted strings (Ian Lawrence
        Barwick)
        <ulink url="&commit_baseurl;a05dbf477">&sect;</ulink>
       </para>

       <para>
        Previously all the paths had to be in a single quoted string.
       </para>
      </listitem>

      <listitem>
<!--
Author: Thomas Munro <tmunro@postgresql.org>
2020-07-31 [84b1c63ad] Preallocate some DSM space at startup.
-->

       <para>
        Allow startup allocation of dynamic shared memory (Thomas Munro)
        <ulink url="&commit_baseurl;84b1c63ad">&sect;</ulink>
       </para>

       <para>
        This is controlled by <xref
        linkend="guc-min-dynamic-shared-memory"/>.   This allows more
        use of huge pages.
       </para>
      </listitem>

      <listitem>
<!--
Author: Thomas Munro <tmunro@postgresql.org>
2020-07-17 [d2bddc250] Add huge_page_size setting for use on Linux.
-->

       <para>
        Add server parameter <xref linkend="guc-huge-page-size"/> to
        control the size of huge pages used on Linux (Odin Ugedal)
        <ulink url="&commit_baseurl;d2bddc250">&sect;</ulink>
       </para>
      </listitem>

     </itemizedlist>

    </sect4>

   </sect3>

   <sect3>
    <title>Streaming Replication and Recovery</title>

    <itemizedlist>

     <listitem>
<!--
Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
2020-11-12 [9c4f5192f] Allow pg_rewind to use a standby server as the source sy
-->

      <para>
       Allow standby servers to be rewound via <link
       linkend="app-pgrewind"><application>pg_rewind</application></link>
       (Heikki Linnakangas)
       <ulink url="&commit_baseurl;9c4f5192f">&sect;</ulink>
      </para>
     </listitem>

     <listitem>
<!--
Author: Fujii Masao <fujii@postgresql.org>
2020-12-02 [942305a36] Allow restore_command parameter to be changed with reloa
-->

      <para>
       Allow the <xref linkend="guc-restore-command"/> setting to be changed
       during a server reload (Sergei Kornilov)
       <ulink url="&commit_baseurl;942305a36">&sect;</ulink>
      </para>

      <para>
       You can also set <varname>restore_command</varname> to an empty
       string and reload to force recovery to only read from the <link
       linkend="storage-file-layout"><filename>pg_wal</filename></link>
       directory.
      </para>
     </listitem>

     <listitem>
<!--
Author: Fujii Masao <fujii@postgresql.org>
2021-01-08 [0650ff230] Add GUC to log long wait times on recovery conflicts.
Author: Fujii Masao <fujii@postgresql.org>
2021-01-13 [39b03690b] Log long wait time on recovery conflict when it's resolv
-->

      <para>
       Add server parameter <xref
       linkend="guc-log-recovery-conflict-waits"/> to report long recovery
       conflict wait times (Bertrand Drouvot, Masahiko Sawada)
       <ulink url="&commit_baseurl;0650ff230">&sect;</ulink>
       <ulink url="&commit_baseurl;39b03690b">&sect;</ulink>
      </para>
     </listitem>

     <listitem>
<!--
Author: Peter Eisentraut <peter@eisentraut.org>
2021-01-18 [15251c0a6] Pause recovery for insufficient parameter settings
-->

      <para>
       Pause recovery on a hot standby server if the primary changes its
       parameters in a way that prevents replay on the standby (Peter
       Eisentraut)
       <ulink url="&commit_baseurl;15251c0a6">&sect;</ulink>
      </para>

      <para>
       Previously the standby would shut down immediately.
      </para>
     </listitem>

     <listitem>
<!--
Author: Robert Haas <rhaas@postgresql.org>
2021-03-11 [32fd2b57d] Be clear about whether a recovery pause has taken effect
-->

      <para>
       Add function <link
       linkend="functions-recovery-control"><function>pg_get_wal_replay_pause_state()</function></link>
       to report the recovery state (Dilip Kumar)
       <ulink url="&commit_baseurl;32fd2b57d">&sect;</ulink>
      </para>

      <para>
       It gives more detailed information than <link
       linkend="functions-recovery-control"><function>pg_is_wal_replay_paused()</function></link>,
       which still exists.
      </para>
     </listitem>

     <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
2021-01-05 [bf8a662c9] Introduce a new GUC_REPORT setting "in_hot_standby".
-->

      <para>
       Add new read-only server parameter <xref linkend="guc-in-hot-standby"/>
       (Haribabu Kommi, Greg Nancarrow, Tom Lane)
       <ulink url="&commit_baseurl;bf8a662c9">&sect;</ulink>
      </para>

      <para>
       This allows clients to easily detect whether they are connected to
       a hot standby server.
      </para>
     </listitem>

     <listitem>
<!--
Author: Amit Kapila <akapila@postgresql.org>
2021-01-12 [d6ad34f34] Optimize DropRelFileNodeBuffers() for recovery.
-->

      <para>
       Speed truncation of small tables during recovery on clusters with
       a large number of shared buffers (Kirk Jamison)
       <ulink url="&commit_baseurl;d6ad34f34">&sect;</ulink>
      </para>
     </listitem>

     <listitem>
<!--
Author: Thomas Munro <tmunro@postgresql.org>
2021-03-20 [61752afb2] Provide recovery_init_sync_method=syncfs.
-->

      <para>
       Allow file system sync at the start of crash recovery on Linux
       (Thomas Munro)
       <ulink url="&commit_baseurl;61752afb2">&sect;</ulink>
      </para>

      <para>
       By default, <productname>PostgreSQL</productname>
       opens and fsyncs each data file in the database cluster at the
       start of crash recovery.  A new setting, <xref
       linkend="guc-recovery-init-sync-method"/><literal>=syncfs</literal>,
       instead syncs each filesystem used by the cluster.
       This allows for faster recovery on systems with many database files.
      </para>
     </listitem>

     <listitem>
<!--
Author: Michael Paquier <michael@paquier.xyz>
2020-07-12 [b1e48bbe6] Include replication origins in SQL functions for commit
-->

      <para>
       Add function <link
       linkend="functions-info"><function>pg_xact_commit_timestamp_origin()</function></link>
       to return the commit timestamp and replication origin of the
       specified transaction (Movead Li)
       <ulink url="&commit_baseurl;b1e48bbe6">&sect;</ulink>
      </para>
     </listitem>

     <listitem>
<!--
Author: Michael Paquier <michael@paquier.xyz>
2020-07-12 [b1e48bbe6] Include replication origins in SQL functions for commit
-->

      <para>
       Add the replication origin to the record returned by <link
       linkend="functions-info"><function>pg_last_committed_xact()</function></link>
       (Movead Li)
       <ulink url="&commit_baseurl;b1e48bbe6">&sect;</ulink>
      </para>
     </listitem>

     <listitem>
<!--
Author: Michael Paquier <michael@paquier.xyz>
2020-06-14 [cc072641d] Replace superuser check by ACLs for replication origin f
-->

      <para>
       Allow replication <link linkend="functions-replication">origin
       functions</link> to be controlled using standard function permission
       controls (Martín Marqués)
       <ulink url="&commit_baseurl;cc072641d">&sect;</ulink>
      </para>

      <para>
       Previously these functions could only be executed by superusers,
       and this is still the default.
      </para>
     </listitem>

    </itemizedlist>

    <sect4>
     <title><link linkend="logical-replication">Logical Replication</link></title>

     <itemizedlist>

      <listitem>
<!--
Author: Amit Kapila <akapila@postgresql.org>
2020-09-03 [464824323] Add support for streaming to built-in logical replicatio
Author: Amit Kapila <akapila@postgresql.org>
2020-12-30 [0aa8a01d0] Extend the output plugin API to allow decoding of prepar
Author: Amit Kapila <akapila@postgresql.org>
2021-01-04 [a271a1b50] Allow decoding at prepare time in ReorderBuffer.
Author: Amit Kapila <akapila@postgresql.org>
2020-08-08 [7259736a6] Implement streaming mode in ReorderBuffer.
-->

       <para>
        Allow logical replication to stream long in-progress transactions
        to subscribers (Dilip Kumar, Amit Kapila, Ajin
        Cherian, Tomas Vondra, Nikhil Sontakke, Stas Kelvich)
        <ulink url="&commit_baseurl;464824323">&sect;</ulink>
        <ulink url="&commit_baseurl;0aa8a01d0">&sect;</ulink>
        <ulink url="&commit_baseurl;a271a1b50">&sect;</ulink>
        <ulink url="&commit_baseurl;7259736a6">&sect;</ulink>
       </para>

       <para>
        Previously transactions that exceeded <xref
        linkend="guc-logical-decoding-work-mem"/> were written to disk
        until the transaction completed.
       </para>
      </listitem>

      <listitem>
<!--
Author: Amit Kapila <akapila@postgresql.org>
2020-07-28 [45fdc9738] Extend the logical decoding output plugin API with strea
-->

       <para>
        Enhance the logical replication <acronym>API</acronym> to allow
        streaming large in-progress transactions (Tomas Vondra, Dilip
        Kumar, Amit Kapila)
        <ulink url="&commit_baseurl;45fdc9738">&sect;</ulink>
       </para>

       <para>
        The output functions begin with <link
        linkend="logicaldecoding-output-plugin-stream-start"><literal>stream</literal></link>.
        <application>test_decoding</application> also supports these.
       </para>
      </listitem>

      <listitem>
<!--
Author: Amit Kapila <akapila@postgresql.org>
2021-02-12 [ce0fdbfe9] Allow multiple xacts during table sync in logical replic
-->

       <para>
        Allow multiple transactions during table sync in logical
        replication (Peter Smith, Amit Kapila, Takamichi Osumi)
        <ulink url="&commit_baseurl;ce0fdbfe9">&sect;</ulink>
       </para>
      </listitem>

      <listitem>
<!--
Author: Amit Kapila <akapila@postgresql.org>
2020-07-20 [0bead9af4] Immediately WAL-log subtransaction and top-level XID ass
-->

       <para>
        Immediately <acronym>WAL</acronym>-log subtransaction and top-level
        <type>XID</type> association (Tomas Vondra, Dilip Kumar, Amit
        Kapila)
        <ulink url="&commit_baseurl;0bead9af4">&sect;</ulink>
       </para>

       <para>
        This is useful for logical decoding.
       </para>
      </listitem>

      <listitem>
<!--
Author: Amit Kapila <akapila@postgresql.org>
2020-12-30 [0aa8a01d0] Extend the output plugin API to allow decoding of prepar
Author: Amit Kapila <akapila@postgresql.org>
2021-01-04 [a271a1b50] Allow decoding at prepare time in ReorderBuffer.
Author: Amit Kapila <akapila@postgresql.org>
2021-03-03 [19890a064] Add option to enable two_phase commits via pg_create_log
-->

       <para>
        Enhance logical decoding APIs to handle two-phase commits (Ajin
        Cherian, Amit Kapila, Nikhil Sontakke, Stas Kelvich)
        <ulink url="&commit_baseurl;0aa8a01d0">&sect;</ulink>
        <ulink url="&commit_baseurl;a271a1b50">&sect;</ulink>
        <ulink url="&commit_baseurl;19890a064">&sect;</ulink>
       </para>

       <para>
        This is controlled via <link
        linkend="functions-replication"><function>pg_create_logical_replication_slot()</function></link>.
       </para>
      </listitem>

      <listitem>
<!--
Author: Amit Kapila <akapila@postgresql.org>
2020-07-23 [c55040ccd] WAL Log invalidations at command end with wal_level=logi
-->

       <para>
        Add cache invalidation messages to the <acronym>WAL</acronym>
        during command completion when using logical replication (Dilip
        Kumar, Tomas Vondra, Amit Kapila)
        <ulink url="&commit_baseurl;c55040ccd">&sect;</ulink>
       </para>

       <para>
        This allows logical streaming of in-progress transactions.
        When logical replication is disabled, invalidation messages are
        generated only at transaction completion.
       </para>
      </listitem>

      <listitem>
<!--
Author: Amit Kapila <akapila@postgresql.org>
2020-10-15 [d7eb52d71] Execute invalidation messages for each XLOG_XACT_INVALID
-->

       <para>
        Allow logical decoding to more efficiently process cache
        invalidation messages (Dilip Kumar)
        <ulink url="&commit_baseurl;d7eb52d71">&sect;</ulink>
       </para>

       <para>
        This allows <link linkend="logicaldecoding">logical decoding</link>
        to work efficiently in presence of a large amount of
        <acronym>DDL</acronym>.
       </para>
      </listitem>

      <listitem>
<!--
Author: Amit Kapila <akapila@postgresql.org>
2021-04-06 [ac4645c01] Allow pgoutput to send logical decoding messages.
-->

       <para>
        Allow control over whether logical decoding messages are sent to
        the replication stream (David Pirotte, Euler Taveira)
        <ulink url="&commit_baseurl;ac4645c01">&sect;</ulink>
       </para>
      </listitem>

      <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
2020-07-18 [9de77b545] Allow logical replication to transfer data in binary for
-->

       <para>
        Allow logical replication subscriptions to use binary transfer mode
        (Dave Cramer)
        <ulink url="&commit_baseurl;9de77b545">&sect;</ulink>
       </para>

       <para>
        This is faster than text mode, but slightly less robust.
       </para>
      </listitem>

      <listitem>
<!--
Author: Amit Kapila <akapila@postgresql.org>
2021-03-30 [f64ea6dc5] Add a xid argument to the filter_prepare callback for ou
-->

       <para>
        Allow logical decoding to be filtered by xid (Markus Wanner)
        <ulink url="&commit_baseurl;f64ea6dc5">&sect;</ulink>
       </para>
      </listitem>

     </itemizedlist>
    </sect4>

   </sect3>

   <sect3>
    <title><link linkend="sql-select"><command>SELECT</command></link>, <link linkend="sql-insert"><command>INSERT</command></link></title>

    <itemizedlist>

     <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
2020-09-18 [06a7c3154] Allow most keywords to be used as column labels without
-->

      <para>
       Reduce the number of keywords that can't be used as column labels
       without <literal>AS</literal> (Mark Dilger)
       <ulink url="&commit_baseurl;06a7c3154">&sect;</ulink>
      </para>

      <para>
       There are now 90% fewer restricted keywords.
      </para>
     </listitem>

     <listitem>
<!--
Author: Peter Eisentraut <peter@eisentraut.org>
2021-03-31 [055fee7eb] Allow an alias to be attached to a <literal>JOIN ... USING</literal>
-->

      <para>
       Allow an alias to be specified for <literal>JOIN</literal>'s
       <literal>USING</literal> clause (Peter Eisentraut)
       <ulink url="&commit_baseurl;055fee7eb">&sect;</ulink>
      </para>

      <para>
       The alias is created by writing <literal>AS</literal> after the
       <literal>USING</literal> clause.  It can be used as a table
       qualification for the merged <literal>USING</literal> columns.
      </para>
     </listitem>

     <listitem>
<!--
Author: Tomas Vondra <tomas.vondra@postgresql.org>
2021-03-18 [be45be9c3] Implement GROUP BY DISTINCT
-->

      <para>
       Allow <literal>DISTINCT</literal> to be added to <literal>GROUP
       BY</literal> to remove duplicate <literal>GROUPING SET</literal>
       combinations (Vik Fearing)
       <ulink url="&commit_baseurl;be45be9c3">&sect;</ulink>
      </para>

      <para>
       For example, <literal>GROUP BY CUBE (a,b), CUBE (b,c)</literal>
       will generate duplicate grouping combinations without
       <literal>DISTINCT</literal>.
      </para>
     </listitem>

     <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
2020-11-22 [17958972f] Allow a multi-row <command>INSERT</command> to specify DEFAULTs for a gener
-->

      <para>
       Properly handle <literal>DEFAULT</literal> entries in multi-row
       <literal>VALUES</literal> lists in <command>INSERT</command>
       (Dean Rasheed)
       <ulink url="&commit_baseurl;17958972f">&sect;</ulink>
      </para>

      <para>
       Such cases used to throw an error.
      </para>
     </listitem>

     <listitem>
<!--
Author: Peter Eisentraut <peter@eisentraut.org>
2021-02-01 [3696a600e] SEARCH and CYCLE clauses
Author: Peter Eisentraut <peter@eisentraut.org>
2021-02-27 [f4adc41c4] Enhanced cycle mark values
-->

      <para>
       Add <acronym>SQL</acronym>-standard <literal>SEARCH</literal>
       and <literal>CYCLE</literal> clauses for <link
       linkend="queries-with">common table expressions</link> (Peter
       Eisentraut)
       <ulink url="&commit_baseurl;3696a600e">&sect;</ulink>
       <ulink url="&commit_baseurl;f4adc41c4">&sect;</ulink>
      </para>

      <para>
       The same results could be accomplished using existing syntax, but
       much less conveniently.
      </para>
     </listitem>

     <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
2021-04-13 [6c0373ab7] Allow table-qualified variable names in ON CONFLICT ...
-->

      <para>
       Allow column names in the <literal>WHERE</literal> clause
       of <literal>ON CONFLICT</literal> to be table-qualified (Tom Lane)
       <ulink url="&commit_baseurl;6c0373ab7">&sect;</ulink>
      </para>

      <para>
       Only the target table can be referenced, however.
      </para>
     </listitem>

    </itemizedlist>

   </sect3>

   <sect3>
    <title>Utility Commands</title>

    <itemizedlist>

     <listitem>
<!--
Author: Thomas Munro <tmunro@postgresql.org>
2021-03-17 [9e7ccd9ef] Enable parallelism in REFRESH MATERIALIZED VIEW.
-->

      <para>
       Allow <link linkend="sql-refreshmaterializedview"><command>REFRESH
       MATERIALIZED VIEW</command></link> to use parallelism (Bharath
       Rupireddy)
       <ulink url="&commit_baseurl;9e7ccd9ef">&sect;</ulink>
      </para>
     </listitem>

     <listitem>
<!--
Author: Michael Paquier <michael@paquier.xyz>
2021-02-04 [c5b286047] Add TABLESPACE option to REINDEX
Author: Michael Paquier <michael@paquier.xyz>
2021-03-03 [57e6db706] Add - -tablespace option to reindexdb
-->

      <para>
       Allow <link linkend="sql-reindex"><command>REINDEX</command></link>
       to change the tablespace of the new index (Alexey Kondratov,
       Michael Paquier, Justin Pryzby)
       <ulink url="&commit_baseurl;c5b286047">&sect;</ulink>
       <ulink url="&commit_baseurl;57e6db706">&sect;</ulink>
      </para>

      <para>
       This is done by specifying a <literal>TABLESPACE</literal> clause.
       A <option>--tablespace</option> option was also added to <link
       linkend="app-reindexdb"><application>reindexdb</application></link>
       to control this.
      </para>
     </listitem>

     <listitem>
<!--
Author: Michael Paquier <michael@paquier.xyz>
2020-09-08 [a6642b3ae] Add support for partitioned tables and indexes in REINDE
-->

      <para>
       Allow <command>REINDEX</command> to process all child tables or
       indexes of a partitioned relation (Justin Pryzby, Michael Paquier)
       <ulink url="&commit_baseurl;a6642b3ae">&sect;</ulink>
      </para>
     </listitem>

      <listitem>
<!--
Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
2020-11-25 [c98763bf5] Avoid spurious waits in concurrent indexing
Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
2021-01-15 [f9900df5f] Avoid spurious wait in concurrent reindex
Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
2021-02-23 [d9d076222] VACUUM: ignore indexing operations with CONCURRENTLY
-->

       <para>
        Allow index commands using <command>CONCURRENTLY</command> to
        avoid waiting for the completion of other operations using
        <command>CONCURRENTLY</command> (Álvaro Herrera)
        <ulink url="&commit_baseurl;c98763bf5">&sect;</ulink>
        <ulink url="&commit_baseurl;f9900df5f">&sect;</ulink>
        <ulink url="&commit_baseurl;d9d076222">&sect;</ulink>
       </para>
      </listitem>

     <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
2020-07-25 [0a0727ccf] Improve performance of binary COPY FROM through better b
-->

      <para>
       Improve the performance of <link linkend="sql-copy"><command>COPY
       FROM</command></link> in binary mode (Bharath Rupireddy, Amit
       Langote)
       <ulink url="&commit_baseurl;0a0727ccf">&sect;</ulink>
      </para>
     </listitem>

     <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
2020-11-04 [40c24bfef] Improve our ability to regurgitate SQL-syntax function c
-->

      <para>
       Preserve <acronym>SQL</acronym> standard syntax for SQL-defined
       functions in <link linkend="sql-createview">view definitions</link>
       (Tom Lane)
       <ulink url="&commit_baseurl;40c24bfef">&sect;</ulink>
      </para>

      <para>
       Previously, calls to SQL-standard functions such as <link
       linkend="functions-datetime-extract"><function>EXTRACT()</function></link>
       were shown in plain function-call syntax.  The original syntax
       is now preserved when displaying a view or rule.
      </para>
     </listitem>

     <listitem>
<!--
Author: Peter Eisentraut <peter@eisentraut.org>
2021-01-30 [6aaaa76bb] Allow GRANTED BY clause in normal GRANT and REVOKE state
-->

      <para>
       Add the <acronym>SQL</acronym>-standard
       clause <literal>GRANTED BY</literal> to <link
       linkend="sql-grant"><command>GRANT</command></link> and <link
       linkend="sql-revoke"><command>REVOKE</command></link> (Peter
       Eisentraut)
       <ulink url="&commit_baseurl;6aaaa76bb">&sect;</ulink>
      </para>
     </listitem>

     <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
2020-11-14 [92bf7e2d0] Provide the OR REPLACE option for CREATE TRIGGER.
-->

      <para>
       Add <literal>OR REPLACE</literal> option for <link
       linkend="sql-createtrigger"><command>CREATE TRIGGER</command></link>
       (Takamichi Osumi)
       <ulink url="&commit_baseurl;92bf7e2d0">&sect;</ulink>
      </para>

      <para>
       This allows pre-existing triggers to be conditionally replaced.
      </para>
     </listitem>

     <listitem>
<!--
Author: Fujii Masao <fujii@postgresql.org>
2021-04-08 [8ff1c9464] Allow TRUNCATE command to truncate foreign tables.
-->

      <para>
       Allow <link
       linkend="sql-truncate"><command>TRUNCATE</command></link> to
       operate on foreign tables (Kazutaka Onishi, Kohei KaiGai)
       <ulink url="&commit_baseurl;8ff1c9464">&sect;</ulink>
      </para>

      <para>
       The <link
       linkend="postgres-fdw"><application>postgres_fdw</application></link>
       module also now supports this.
      </para>
     </listitem>

     <listitem>
<!--
Author: Peter Eisentraut <peter@eisentraut.org>
2021-04-06 [82ed7748b] ALTER SUBSCRIPTION ... ADD/DROP PUBLICATION
-->

      <para>
       Allow publications to be more easily added to and removed from a
       subscription (Japin Li)
       <ulink url="&commit_baseurl;82ed7748b">&sect;</ulink>
      </para>

      <para>
       The new syntax is <link
       linkend="sql-altersubscription"><command>ALTER SUBSCRIPTION
       ... ADD/DROP PUBLICATION</command></link>.  This avoids having to
       specify all publications to add/remove entries.
      </para>
     </listitem>

     <listitem>
<!--
Author: Peter Eisentraut <peter@eisentraut.org>
2021-01-30 [dfb75e478] Add primary keys and unique constraints to system catalo
Author: Tom Lane <tgl@sss.pgh.pa.us>
2021-02-02 [62f34097c] Build in some knowledge about foreign-key relationships
-->

      <para>
       Add primary keys, unique constraints, and foreign keys to <link
       linkend="catalogs">system catalogs</link> (Peter Eisentraut)
       <ulink url="&commit_baseurl;dfb75e478">&sect;</ulink>
       <ulink url="&commit_baseurl;62f34097c">&sect;</ulink>
      </para>

      <para>
       These changes help <acronym>GUI</acronym> tools analyze the system
       catalogs.  The existing unique indexes of catalogs now have
       associated <literal>UNIQUE</literal> or <literal>PRIMARY
       KEY</literal> constraints.  Foreign key relationships are not
       actually stored or implemented as constraints, but can be obtained
       for display from the
       function <link linkend="functions-info-catalog-table">pg_get_catalog_foreign_keys()</link>.
      </para>
     </listitem>

     <listitem>
<!--
Author: Peter Eisentraut <peter@eisentraut.org>
2020-09-17 [45b980570] Allow CURRENT_ROLE where CURRENT_USER is accepted
-->

      <para>
       Allow <link
       linkend="functions-info"><literal>CURRENT_ROLE</literal></link>
       every place <literal>CURRENT_USER</literal> is accepted (Peter
       Eisentraut)
       <ulink url="&commit_baseurl;45b980570">&sect;</ulink>
      </para>
     </listitem>

    </itemizedlist>

   </sect3>

   <sect3>
    <title>Data Types</title>

    <itemizedlist>

     <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
2020-12-09 [c7aba7c14] Support subscripting of arbitrary types, not only arrays
-->

      <para>
       Allow extensions and built-in data types to implement <link
       linkend="sql-altertype">subscripting</link> (Dmitry Dolgov)
       <ulink url="&commit_baseurl;c7aba7c14">&sect;</ulink>
      </para>

      <para>
       Previously subscript handling was hard-coded into the server, so
       that subscripting could only be applied to array types.  This change
       allows subscript notation to be used to extract or assign portions
       of a value of any type for which the concept makes sense.
      </para>
     </listitem>

     <listitem>
<!--
Author: Alexander Korotkov <akorotkov@postgresql.org>
2021-01-31 [676887a3b] Implementation of subscripting for jsonb
Author: Alexander Korotkov <akorotkov@postgresql.org>
2021-01-31 [81fcc72e6] Filling array gaps during jsonb subscripting
Author: Alexander Korotkov <akorotkov@postgresql.org>
2021-01-31 [aa6e46daf] Throw error when assigning jsonb scalar instead of a com
-->

      <para>
       Allow subscripting of <link
       linkend="datatype-json"><type>JSONB</type></link> (Dmitry Dolgov)
       <ulink url="&commit_baseurl;676887a3b">&sect;</ulink>
       <ulink url="&commit_baseurl;81fcc72e6">&sect;</ulink>
       <ulink url="&commit_baseurl;aa6e46daf">&sect;</ulink>
      </para>

      <para>
       <type>JSONB</type> subscripting can be used to extract and assign
       to portions of <type>JSONB</type> documents.
      </para>
     </listitem>

     <listitem>
<!--
Author: Author: Alexander Korotkov <akorotkov@postgresql.org>
2020-12-20 [6df7a9698] Multirange datatypes
Author: Alexander Korotkov <akorotkov@postgresql.org>
2020-12-29 [db6335b5b] Add support of multirange matching to the existing range
Author: Alexander Korotkov <akorotkov@postgresql.org>
2020-12-30 [62097a4cc] Fix selectivity estimation @&gt; (anymultirange, anyrange)
Author: Alexander Korotkov <akorotkov@postgresql.org>
2021-07-18 [244ad5415] Support for unnest(multirange)
-->

      <para>
       Add support for <link linkend="rangetypes">multirange data
       types</link> (Paul Jungwirth, Alexander Korotkov)
       <ulink url="&commit_baseurl;6df7a9698">&sect;</ulink>
       <ulink url="&commit_baseurl;db6335b5b">&sect;</ulink>
       <ulink url="&commit_baseurl;62097a4cc">&sect;</ulink>
       <ulink url="&commit_baseurl;244ad5415">&sect;</ulink>
      </para>

      <para>
       These are like range data types, but they allow the specification
       of multiple, ordered, non-overlapping ranges.  An associated
       multirange type is automatically created for every range type.
      </para>
     </listitem>

     <listitem>
<!--
Author: Peter Eisentraut <peter@eisentraut.org>
2020-06-08 [cbcc8726b] Update snowball
Author: Peter Eisentraut <peter@eisentraut.org>
2020-06-08 [c2e71cb35] Update documentation for snowball update
Author: Peter Eisentraut <peter@eisentraut.org>
2021-02-19 [678d0e239] Update snowball
-->

      <para>
       Add support for the <link
       linkend="textsearch-snowball-dictionary">stemming</link> of
       languages Armenian, Basque, Catalan, Hindi, Serbian, and Yiddish
       (Peter Eisentraut)
       <ulink url="&commit_baseurl;cbcc8726b">&sect;</ulink>
       <ulink url="&commit_baseurl;c2e71cb35">&sect;</ulink>
       <ulink url="&commit_baseurl;678d0e239">&sect;</ulink>
      </para>
     </listitem>

     <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
2020-09-23 [83b61319a] Improve behavior of tsearch_readline(), and remove t_rea
-->

      <para>
       Allow <link linkend="textsearch-intro-configurations">tsearch data
       files</link> to have unlimited line lengths (Tom Lane)
       <ulink url="&commit_baseurl;83b61319a">&sect;</ulink>
      </para>

      <para>
       The previous limit was 4K bytes.  Also remove function
       <function>t_readline()</function>.
      </para>
     </listitem>

     <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
2020-07-22 [a57d312a7] Support infinity and -infinity in the numeric data type.
-->

      <para>
       Add support for <literal>Infinity</literal> and
       <literal>-Infinity</literal> values in the <link
       linkend="datatype-numeric">numeric data type</link> (Tom Lane)
       <ulink url="&commit_baseurl;a57d312a7">&sect;</ulink>
      </para>

      <para>
       Floating-point data types already supported these.
      </para>
     </listitem>

     <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
2020-11-23 [0cc993278] Rename the "point is strictly above/below point" compari
-->

      <para>
       Add <link linkend="functions-geometry">point operators</link>
       <literal>&lt;&lt;|</literal> and <literal>|&gt;&gt;</literal>
       representing strictly above/below tests (Emre Hasegeli)
       <ulink url="&commit_baseurl;0cc993278">&sect;</ulink>
      </para>

      <para>
       Previously these were called <literal>&gt;^</literal>
       and <literal>&lt;^</literal>, but that naming is inconsistent with
       other geometric data types.  The old names remain available,
       but may someday be removed.
      </para>
     </listitem>

     <listitem>
<!--
Author: Fujii Masao <fujii@postgresql.org>
2020-06-30 [9bae7e4cd] Add +(pg_lsn,numeric) and -(pg_lsn,numeric) operators.
-->

      <para>
       Add operators to add and subtract <link
       linkend="datatype-pg-lsn"><type>LSN</type></link> and numeric
       (byte) values (Fujii Masao)
       <ulink url="&commit_baseurl;9bae7e4cd">&sect;</ulink>
      </para>
     </listitem>

     <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
2020-07-21 [670c0a1d4] Weaken type-OID-matching checks in array_recv and record
-->

      <para>
       Allow <link linkend="protocol-format-codes">binary data
       transfer</link> to be more forgiving of array and record
       <type>OID</type> mismatches (Tom Lane)
       <ulink url="&commit_baseurl;670c0a1d4">&sect;</ulink>
      </para>
     </listitem>

     <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
2020-07-06 [f7f70d5e2] Create composite array types for initdb-created relation
-->

      <para>
       Create composite array types for system catalogs (Wenjing Zeng)
       <ulink url="&commit_baseurl;f7f70d5e2">&sect;</ulink>
      </para>

      <para>
       User-defined relations have long had composite types associated
       with them, and also array types over those composite types.
       System catalogs now do as well.  This change also fixes an
       inconsistency that creating a user-defined table in single-user
       mode would fail to create a composite array type.
      </para>
     </listitem>

    </itemizedlist>

   </sect3>

   <sect3>
    <title>Functions</title>

    <itemizedlist>

     <listitem>
<!--
Author: Peter Eisentraut <peter@eisentraut.org>
2021-04-07 [e717a9a18] SQL-standard function body
-->

      <para>
       Allow <acronym>SQL</acronym>-language <link
       linkend="sql-createfunction">functions</link> and <link
       linkend="sql-createprocedure">procedures</link> to use
       <acronym>SQL</acronym>-standard function bodies (Peter Eisentraut)
       <ulink url="&commit_baseurl;e717a9a18">&sect;</ulink>
      </para>

      <para>
       Previously only string-literal function bodies were supported.
       When writing a function or procedure in SQL-standard syntax,
       the body is parsed immediately and stored as a parse tree.
       This allows better tracking of function dependencies, and can have
       security benefits.
      </para>
     </listitem>

     <listitem>
<!--
Author: Peter Eisentraut <peter@eisentraut.org>
2020-10-05 [2453ea142] Support for OUT parameters in procedures
Author: Peter Eisentraut <peter@eisentraut.org>
2020-10-27 [9213462c5] Make procedure OUT parameters work with JDBC
-->

      <para>
       Allow <link linkend="sql-createprocedure">procedures</link> to have
       <literal>OUT</literal> parameters (Peter Eisentraut)
       <ulink url="&commit_baseurl;2453ea142">&sect;</ulink>
       <ulink url="&commit_baseurl;9213462c5">&sect;</ulink>
      </para>
     </listitem>

     <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
2020-11-04 [9e38c2bb5] Declare assorted array functions using anycompatible not
-->

      <para>
       Allow some array functions to operate on a mix of compatible data
       types (Tom Lane)
       <ulink url="&commit_baseurl;9e38c2bb5">&sect;</ulink>
      </para>

      <para>
       The functions <link
       linkend="functions-array"><function>array_append()</function></link>,
       <function>array_prepend()</function>,
       <function>array_cat()</function>,
       <function>array_position()</function>,
       <function>array_positions()</function>,
       <function>array_remove()</function>,
       <function>array_replace()</function>, and <link
       linkend="functions-math"><function>width_bucket()</function></link>
       now take <type>anycompatiblearray</type> instead
       of <type>anyarray</type> arguments.  This makes them less fussy
       about exact matches of argument types.
      </para>
     </listitem>

     <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
2021-03-03 [0a687c8f1] Add trim_array() function.
-->

      <para>
       Add <acronym>SQL</acronym>-standard <link
       linkend="functions-array"><function>trim_array()</function></link>
       function (Vik Fearing)
       <ulink url="&commit_baseurl;0a687c8f1">&sect;</ulink>
      </para>

      <para>
       This could already be done with array slices, but less easily.
      </para>
     </listitem>

     <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
2021-01-18 [a6cf3df4e] Add bytea equivalents of ltrim() and rtrim().
-->

      <para>
       Add <type>bytea</type> equivalents of <link
       linkend="functions-binarystring"><function>ltrim()</function></link>
       and <function>rtrim()</function> (Joel Jacobson)
       <ulink url="&commit_baseurl;a6cf3df4e">&sect;</ulink>
      </para>
     </listitem>

     <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
2020-11-13 [ec0294fb2] Support negative indexes in split_part().
-->

      <para>
       Support negative indexes in <link
       linkend="functions-string"><function>split_part()</function></link>
       (Nikhil Benesch)
       <ulink url="&commit_baseurl;ec0294fb2">&sect;</ulink>
      </para>

      <para>
       Negative values start from the last field and count backward.
      </para>
     </listitem>

     <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
2020-09-02 [66f163068] Add string_to_table() function.
-->

      <para>
       Add <link
       linkend="functions-string"><function>string_to_table()</function></link>
       function to split a string on delimiters (Pavel Stehule)
       <ulink url="&commit_baseurl;66f163068">&sect;</ulink>
      </para>

      <para>
       This is similar to the <link
       linkend="functions-string"><function>regexp_split_to_table()</function></link>
       function.
      </para>
     </listitem>

     <listitem>
<!--
Author: Peter Eisentraut <peter@eisentraut.org>
2021-03-29 [f37fec837] Add unistr function
-->

      <para>
       Add <link
       linkend="functions-string"><function>unistr()</function></link>
       function to allow Unicode characters to be specified as
       backslash-hex escapes in strings (Pavel Stehule)
       <ulink url="&commit_baseurl;f37fec837">&sect;</ulink>
      </para>

      <para>
       This is similar to how Unicode can be specified in literal strings.
      </para>
     </listitem>

     <listitem>
<!--
Author: Peter Eisentraut <peter@eisentraut.org>
2021-03-06 [f9a0392e1] Add bit_xor aggregate function
-->

      <para>
       Add <link
       linkend="functions-aggregate"><function>bit_xor()</function></link>
       XOR aggregate function (Alexey Bashtanov)
       <ulink url="&commit_baseurl;f9a0392e1">&sect;</ulink>
      </para>
     </listitem>

     <listitem>
<!--
Author: Peter Eisentraut <peter@eisentraut.org>
2021-03-23 [a6715af1e] Add bit_count SQL function
-->

      <para>
       Add function <link
       linkend="functions-binarystring"><function>bit_count()</function></link>
       to return the number of bits set in a bit or byte string (David
       Fetter)
       <ulink url="&commit_baseurl;a6715af1e">&sect;</ulink>
      </para>
     </listitem>

     <listitem>
<!--
Author: Peter Eisentraut <peter@eisentraut.org>
2021-03-24 [49ab61f0b] Add date_bin function
Author: Peter Eisentraut <peter@eisentraut.org>
2021-04-10 [496e58bb0] Improve behavior of date_bin with origin in the future
-->

      <para>
       Add <link
       linkend="functions-datetime-bin"><function>date_bin()</function></link>
       function (John Naylor)
       <ulink url="&commit_baseurl;49ab61f0b">&sect;</ulink>
       <ulink url="&commit_baseurl;496e58bb0">&sect;</ulink>
      </para>

      <para>
       This function <quote>bins</quote> input timestamps, grouping them
       into intervals of a uniform length aligned with a specified origin.
      </para>
     </listitem>

     <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
2020-09-29 [a094c8ff5] Fix make_timestamp[tz] to accept negative years as meani
-->

      <para>
       Allow <link
       linkend="functions-datetime"><function>make_timestamp()</function></link>/<function>make_timestamptz()</function>
       to accept negative years (Peter Eisentraut)
       <ulink url="&commit_baseurl;a094c8ff5">&sect;</ulink>
      </para>

      <para>
       Negative values are interpreted as <literal>BC</literal> years.
      </para>
     </listitem>

     <listitem>
<!--
Author: Peter Eisentraut <peter@eisentraut.org>
2020-06-29 [78c887679] Add current substring regular expression syntax
-->

      <para>
       Add newer regular expression <link
       linkend="functions-string"><function>substring()</function></link>
       syntax (Peter Eisentraut)
       <ulink url="&commit_baseurl;78c887679">&sect;</ulink>
      </para>

      <para>
       The new SQL-standard syntax is <literal>SUBSTRING(text SIMILAR
       pattern ESCAPE escapechar)</literal>.  The previous standard syntax was
       <literal>SUBSTRING(text FROM pattern FOR escapechar)</literal>,
       which is still accepted by <productname>PostgreSQL</productname>.
      </para>
     </listitem>

     <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
2021-02-25 [2a0af7fe4] Allow complemented character class escapes within regex
-->

      <para>
       Allow complemented character class escapes <link
       linkend="posix-escape-sequences">\D</link>, <literal>\S</literal>,
       and <literal>\W</literal> within regular expression brackets (Tom Lane)
       <ulink url="&commit_baseurl;2a0af7fe4">&sect;</ulink>
      </para>
     </listitem>

     <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
2021-02-25 [2a0af7fe4] Allow complemented character class escapes within regex
-->

      <para>
       Add <link
       linkend="posix-bracket-expressions"><literal>[[:word:]]</literal></link>
       as a regular expression character class, equivalent
       to <literal>\w</literal> (Tom Lane)
       <ulink url="&commit_baseurl;2a0af7fe4">&sect;</ulink>
      </para>
     </listitem>

     <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
2020-11-04 [5c292e6b9] Declare lead() and lag() using anycompatible not anyelem
-->

      <para>
       Allow more flexible data types for default values of <link
       linkend="functions-window"><function>lead()</function></link>
       and <function>lag()</function> window functions (Vik Fearing)
       <ulink url="&commit_baseurl;5c292e6b9">&sect;</ulink>
      </para>
     </listitem>

     <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
2020-11-04 [fac83dbd6] Remove underflow error in float division with infinite d
-->

      <para>
       Make non-zero <link linkend="datatype-float">floating-point values</link>
       divided by infinity return zero (Kyotaro Horiguchi)
       <ulink url="&commit_baseurl;fac83dbd6">&sect;</ulink>
      </para>

      <para>
       Previously such operations produced underflow errors.
      </para>
     </listitem>

     <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
2020-07-20 [4fb6aeb4f] Make floating-point "NaN / 0" return NaN instead of rais
-->

      <para>
       Make floating-point division of NaN by zero return NaN
       (Tom Lane)
       <ulink url="&commit_baseurl;4fb6aeb4f">&sect;</ulink>
      </para>

      <para>
       Previously this returned an error.
      </para>
     </listitem>

     <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
2020-06-14 [decbe2bfb] Fix behavior of exp() and power() for infinity inputs.
Author: Tom Lane <tgl@sss.pgh.pa.us>
2020-06-15 [e532b1d57] Fix power() for infinity inputs some more.
Author: Tom Lane <tgl@sss.pgh.pa.us>
2020-06-15 [5674eb987] Fix power() for large inputs yet more.
-->

      <para>
       Cause <link
       linkend="functions-math"><function>exp()</function></link> and
       <function>power()</function> for negative-infinity exponents to
       return zero (Tom Lane)
       <ulink url="&commit_baseurl;decbe2bfb">&sect;</ulink>
       <ulink url="&commit_baseurl;e532b1d57">&sect;</ulink>
       <ulink url="&commit_baseurl;5674eb987">&sect;</ulink>
      </para>

      <para>
       Previously they often returned underflow errors.
      </para>
     </listitem>

     <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
2020-11-21 [8597a48d0] Fix FPeq() and friends to get the right answers for infi
-->

      <para>
       Improve the accuracy of geometric computations involving
       infinity (Tom Lane)
       <ulink url="&commit_baseurl;8597a48d0">&sect;</ulink>
      </para>
     </listitem>

     <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
2020-07-25 [8a37951ee] Mark built-in coercion functions as leakproof where poss
-->

      <para>
       Mark built-in type coercion functions as leakproof where possible
       (Tom Lane)
       <ulink url="&commit_baseurl;8a37951ee">&sect;</ulink>
      </para>

      <para>
       This allows more use of functions that require type conversion in
       security-sensitive situations.
      </para>
     </listitem>

     <listitem>
<!--
Author: Michael Paquier <michael@paquier.xyz>
2020-07-15 [2a10fdc43] Eliminate cache lookup errors in SQL functions for objec
-->

      <para>
       Change <link
       linkend="functions-info"><function>pg_describe_object()</function></link>,
       <function>pg_identify_object()</function>, and
       <function>pg_identify_object_as_address()</function> to always report
       helpful error messages for non-existent objects (Michael Paquier)
       <ulink url="&commit_baseurl;2a10fdc43">&sect;</ulink>
      </para>
     </listitem>

    </itemizedlist>

   </sect3>

   <sect3>
    <title><link linkend="plpgsql">PL/pgSQL</link></title>

    <itemizedlist>

     <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
2021-01-04 [c9d529848] Re-implement pl/pgsql's expression and assignment parsin
-->

      <para>
       Improve PL/pgSQL's <link
       linkend="plpgsql-expressions">expression</link> and <link
       linkend="plpgsql-statements-assignment">assignment</link> parsing
       (Tom Lane)
       <ulink url="&commit_baseurl;c9d529848">&sect;</ulink>
      </para>

      <para>
       This change allows assignment to array slices and nested record
       fields.
      </para>
     </listitem>

     <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
2020-06-12 [2f48ede08] Avoid using a cursor in plpgsql's RETURN QUERY statement
-->

      <para>
       Allow plpgsql's <link
       linkend="plpgsql-control-structures"><literal>RETURN
       QUERY</literal></link> to execute its query using parallelism
       (Tom Lane)
       <ulink url="&commit_baseurl;2f48ede08">&sect;</ulink>
      </para>
     </listitem>

     <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
2021-01-25 [ee895a655] Improve performance of repeated CALLs within plpgsql pro
-->

      <para>
       Improve performance of repeated <link
       linkend="plpgsql-transactions">CALL</link>s within plpgsql
       procedures (Pavel Stehule, Tom Lane)
       <ulink url="&commit_baseurl;ee895a655">&sect;</ulink>
      </para>
     </listitem>

    </itemizedlist>

   </sect3>

   <sect3>
    <title>Client Interfaces</title>

    <itemizedlist>

     <listitem>
<!--
Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
2021-03-15 [acb7e4eb6] Implement pipeline mode in libpq
-->

      <para>
       Add <link linkend="libpq-pipeline-sending">pipeline</link> mode
       to libpq (Craig Ringer, Matthieu Garrigues, Álvaro Herrera)
       <ulink url="&commit_baseurl;acb7e4eb6">&sect;</ulink>
      </para>

      <para>
       This allows multiple queries to be sent, only waiting for completion
       when a specific synchronization message is sent.
      </para>
     </listitem>

     <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
2021-03-02 [d16f8c8e4] Mark default_transaction_read_only as GUC_REPORT.
Author: Tom Lane <tgl@sss.pgh.pa.us>
2021-03-02 [ee28cacf6] Extend the abilities of libpq's target_session_attrs par
-->

      <para>
       Enhance libpq's <link
       linkend="libpq-paramkeywords"><option>target_session_attrs</option></link>
       parameter options (Haribabu Kommi, Greg Nancarrow, Vignesh C,
       Tom Lane)
       <ulink url="&commit_baseurl;d16f8c8e4">&sect;</ulink>
       <ulink url="&commit_baseurl;ee28cacf6">&sect;</ulink>
      </para>

      <para>
       The new options are <literal>read-only</literal>,
       <literal>primary</literal>, <literal>standby</literal>, and
       <literal>prefer-standby</literal>.
      </para>
     </listitem>

     <listitem>
<!--
Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
2021-03-30 [198b3716d] Improve PQtrace() output format
-->

      <para>
       Improve the output format of libpq's <link
       linkend="libpq-control"><function>PQtrace()</function></link>
       (Aya Iwata, Álvaro Herrera)
       <ulink url="&commit_baseurl;198b3716d">&sect;</ulink>
      </para>
     </listitem>

     <listitem>
<!--
Author: Michael Meskes <meskes@postgresql.org>
2021-03-24 [ad8305a43] Add DECLARE STATEMENT command to ECPG
-->

      <para>
       Allow an ECPG SQL identifier to be linked to
       a specific connection (Hayato Kuroda)
       <ulink url="&commit_baseurl;ad8305a43">&sect;</ulink>
      </para>

      <para>
       This is done via <link
       linkend="ecpg-sql-declare-statement"><literal>DECLARE
       ... STATEMENT</literal></link>.
      </para>
     </listitem>

    </itemizedlist>

   </sect3>

   <sect3>
    <title>Client Applications</title>

    <itemizedlist>

     <listitem>
<!--
Author: Michael Paquier <michael@paquier.xyz>
2020-06-22 [9550ea302] Add - -no-index-cleanup and - -no-truncate to vacuumdb.
-->

      <para>
       Allow <link
       linkend="app-vacuumdb"><application>vacuumdb</application></link>
       to skip index cleanup and truncation (Nathan Bossart)
       <ulink url="&commit_baseurl;9550ea302">&sect;</ulink>
      </para>

      <para>
       The options are <option>--no-index-cleanup</option> and
       <option>--no-truncate</option>.
      </para>
     </listitem>

     <listitem>
<!--
Author: Michael Paquier <michael@paquier.xyz>
2021-03-31 [6568cef26] Add support for - -extension in pg_dump
-->

      <para>
       Allow <link
       linkend="app-pgdump"><application>pg_dump</application></link>
       to dump only certain extensions (Guillaume Lelarge)
       <ulink url="&commit_baseurl;6568cef26">&sect;</ulink>
      </para>

      <para>
       This is controlled by option <option>--extension</option>.
      </para>
     </listitem>

     <listitem>
<!--
Author: Dean Rasheed <dean.a.rasheed@gmail.com>
2021-04-06 [6b258e3d6] pgbench: Function to generate random permutations.
-->

      <para>
       Add <link
       linkend="pgbench"><application>pgbench</application></link>
       <function>permute()</function> function to randomly shuffle values
       (Fabien Coelho, Hironobu Suzuki, Dean Rasheed)
       <ulink url="&commit_baseurl;6b258e3d6">&sect;</ulink>
      </para>
     </listitem>

     <listitem>
<!--
Author: Fujii Masao <fujii@postgresql.org>
2021-09-01 [d760d942c] pgbench: Fix bug in measurement of disconnection delays.
-->

      <para>
       Include disconnection times in the reconnection overhead measured
       by <application>pgbench</application> with <option>-C</option>
       (Yugo Nagata)
       <ulink url="&commit_baseurl;d760d942c">&sect;</ulink>
      </para>
     </listitem>

     <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
2020-09-17 [99175141c] Improve common/logging.c's support for multiple verbosit
-->

      <para>
       Allow multiple verbose option specifications (<option>-v</option>)
       to increase the logging verbosity (Tom Lane)
       <ulink url="&commit_baseurl;99175141c">&sect;</ulink>
      </para>

      <para>
       This behavior is supported by <link
       linkend="app-pgdump"><application>pg_dump</application></link>,
       <link
       linkend="app-pg-dumpall"><application>pg_dumpall</application></link>,
       and <link
       linkend="app-pgrestore"><application>pg_restore</application></link>.
      </para>
     </listitem>

    </itemizedlist>

    <sect4>
    <title><xref linkend="app-psql"/></title>

     <itemizedlist>

      <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
2021-04-07 [a3027e1e7] Allow psql's \df and \do commands to specify argument ty
-->

       <para>
        Allow <application>psql</application>'s <literal>\df</literal>
        and <literal>\do</literal> commands to specify function and
        operator argument types (Greg Sabino Mullane, Tom Lane)
        <ulink url="&commit_baseurl;a3027e1e7">&sect;</ulink>
       </para>

       <para>
        This helps reduce the number of matches printed for overloaded names.
       </para>
      </listitem>

      <listitem>
<!--
Author: Michael Paquier <michael@paquier.xyz>
2020-09-02 [07f386ede] Add access method names to \d[i|m|t]+ in psql
-->

       <para>
        Add an access method column to <application>psql</application>'s
        <literal>\d[i|m|t]+</literal> output (Georgios Kokolatos)
        <ulink url="&commit_baseurl;07f386ede">&sect;</ulink>
       </para>
      </listitem>

      <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
2021-01-05 [7d80441d2] Allow psql's \dt and \di to show TOAST tables and their
-->

       <para>
        Allow <application>psql</application>'s <literal>\dt</literal>
        and <literal>\di</literal> to show <acronym>TOAST</acronym>
        tables and their indexes (Justin Pryzby)
        <ulink url="&commit_baseurl;7d80441d2">&sect;</ulink>
       </para>
      </listitem>

      <listitem>
<!--
Author: Tomas Vondra <tomas.vondra@postgresql.org>
2021-01-20 [ad600bba0] psql \dX: list extended statistics objects
-->

       <para>
        Add <application>psql</application> command <literal>\dX</literal>
        to list extended statistics objects (Tatsuro Yamada)
        <ulink url="&commit_baseurl;ad600bba0">&sect;</ulink>
       </para>
      </listitem>

      <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
2021-04-07 [a3027e1e7] Allow psql's \df and \do commands to specify argument ty
-->

       <para>
        Fix <application>psql</application>'s <literal>\dT</literal> to
        understand array syntax and backend grammar aliases,
        like <literal>int</literal> for <literal>integer</literal>
        (Greg Sabino Mullane, Tom Lane)
        <ulink url="&commit_baseurl;a3027e1e7">&sect;</ulink>
       </para>
      </listitem>

      <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
2021-04-03 [55873a00e] Improve psql's behavior when the editor is exited withou
-->

       <para>
        When editing the previous query or a file with
        <application>psql</application>'s <literal>\e</literal>, or using
        <literal>\ef</literal> and <literal>\ev</literal>, ignore the
        results if the editor exits without saving (Laurenz Albe)
        <ulink url="&commit_baseurl;55873a00e">&sect;</ulink>
       </para>

       <para>
        Previously, such edits would load the previous query into
        the query buffer, and typically execute it immediately.  This was
        deemed to be probably not what the user wants.
       </para>
      </listitem>

      <listitem>
<!--
Author: Michael Paquier <michael@paquier.xyz>
2020-07-21 [c273d9d8c] Rework tab completion of COPY and \copy in psql
Author: Michael Paquier <michael@paquier.xyz>
2020-07-30 [f1af75c5f] Include partitioned tables for tab completion of VACUUM
Author: Michael Paquier <michael@paquier.xyz>
2020-08-11 [1f75b4541] Improve tab completion of REINDEX in psql
Author: Michael Paquier <michael@paquier.xyz>
2020-09-17 [7307df16a] Improve tab completion of IMPORT FOREIGN SCHEMA in psql
Author: Fujii Masao <fujii@postgresql.org>
2020-09-28 [0baf82fa0] Improve tab-completion for DEALLOCATE.
Author: Michael Paquier <michael@paquier.xyz>
2020-10-24 [0b46e82c0] Add tab completion for ALTER TABLE .. FORCE ROW LEVEL SE
Author: Michael Paquier <michael@paquier.xyz>
2020-11-18 [bf0aa7c4b] Add tab completion for CREATE [OR REPLACE] TRIGGER in ps
Author: Fujii Masao <fujii@postgresql.org>
2021-01-14 [3f238b882] Improve tab-completion for CLOSE, DECLARE, FETCH and MOV
Author: Thomas Munro <tmunro@postgresql.org>
2021-02-05 [e1c02d92a] Tab-complete CREATE DATABASE ... LOCALE.
Author: Michael Paquier <michael@paquier.xyz>
2021-02-17 [e6b8e83b9] Add psql completion for [ NO ] DEPENDS ON EXTENSION
Author: Thomas Munro <tmunro@postgresql.org>
2021-02-23 [5bc09a747] Tab-complete CREATE COLLATION.
Author: Fujii Masao <fujii@postgresql.org>
2021-02-25 [6b40d9bdb] Improve tab-completion for TRUNCATE.
Author: Michael Paquier <michael@paquier.xyz>
2021-03-19 [5b2266e33] Improve tab completion of IMPORT FOREIGN SCHEMA with \h
Author: Tom Lane <tgl@sss.pgh.pa.us>
2021-04-08 [d1fcbde57] Add support for tab-completion of type arguments in \df,
Author: Fujii Masao <fujii@postgresql.org>
2021-04-12 [81e094bdf] Support tab-complete for TRUNCATE on foreign tables.
Author: Michael Paquier <michael@paquier.xyz>
2021-04-21 [22b2dec31] Add CURRENT_ROLE to list of roles for tab completion of
Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
2021-04-26 [6dd1042ed] psql: tab-complete ALTER ... DETACH CONCURRENTLY / FINAL
Author: Michael Paquier <michael@paquier.xyz>
2021-05-13 [1906cc07d] Make saner the tab completion of INSERT and DELETE in ps
-->

       <para>
        Improve tab completion (Vignesh C, Michael Paquier, Justin Pryzby,
        Georgios Kokolatos, Julien Rouhaud)
        <ulink url="&commit_baseurl;c273d9d8c">&sect;</ulink>
        <ulink url="&commit_baseurl;f1af75c5f">&sect;</ulink>
        <ulink url="&commit_baseurl;1f75b4541">&sect;</ulink>
        <ulink url="&commit_baseurl;7307df16a">&sect;</ulink>
        <ulink url="&commit_baseurl;0baf82fa0">&sect;</ulink>
        <ulink url="&commit_baseurl;0b46e82c0">&sect;</ulink>
        <ulink url="&commit_baseurl;bf0aa7c4b">&sect;</ulink>
        <ulink url="&commit_baseurl;3f238b882">&sect;</ulink>
        <ulink url="&commit_baseurl;e1c02d92a">&sect;</ulink>
        <ulink url="&commit_baseurl;e6b8e83b9">&sect;</ulink>
        <ulink url="&commit_baseurl;5bc09a747">&sect;</ulink>
        <ulink url="&commit_baseurl;6b40d9bdb">&sect;</ulink>
        <ulink url="&commit_baseurl;5b2266e33">&sect;</ulink>
        <ulink url="&commit_baseurl;d1fcbde57">&sect;</ulink>
        <ulink url="&commit_baseurl;81e094bdf">&sect;</ulink>
        <ulink url="&commit_baseurl;22b2dec31">&sect;</ulink>
        <ulink url="&commit_baseurl;6dd1042ed">&sect;</ulink>
        <ulink url="&commit_baseurl;1906cc07d">&sect;</ulink>
       </para>
      </listitem>

     </itemizedlist>

    </sect4>

   </sect3>

   <sect3>
    <title>Server Applications</title>

    <itemizedlist>

     <listitem>
<!--
Author: Robert Haas <rhaas@postgresql.org>
2021-03-12 [970609283] Add pg_amcheck, a CLI for contrib/amcheck.
-->

      <para>
       Add command-line utility <link
       linkend="app-pgamcheck"><application>pg_amcheck</application></link>
       to simplify running <filename>contrib/amcheck</filename>
       tests on many relations
       (Mark Dilger)
       <ulink url="&commit_baseurl;970609283">&sect;</ulink>
      </para>
     </listitem>

     <listitem>
<!--
Author: Magnus Hagander <magnus@hagander.net>
2021-01-17 [e09155bd6] Add - -no-instructions parameter to initdb
-->

      <para>
       Add <option>--no-instructions</option> option to <link
       linkend="app-initdb"><application>initdb</application></link>
       (Magnus Hagander)
       <ulink url="&commit_baseurl;e09155bd6">&sect;</ulink>
      </para>

      <para>
       This suppresses the server startup instructions that are normally
       printed.
      </para>
     </listitem>

     <listitem>
<!--
Author: Magnus Hagander <magnus@hagander.net>
2020-11-09 [8f113698b] Remove analyze_new_cluster script from pg_upgrade
-->

      <para>
       Stop <link
       linkend="pgupgrade"><application>pg_upgrade</application></link>
       from creating <filename>analyze_new_cluster</filename> script
       (Magnus Hagander)
       <ulink url="&commit_baseurl;8f113698b">&sect;</ulink>
      </para>

      <para>
       Instead, give comparable <link
       linkend="app-vacuumdb"><application>vacuumdb</application></link>
       instructions.
      </para>
     </listitem>

     <listitem>
<!--
Author: Magnus Hagander <magnus@hagander.net>
2020-11-10 [d2e4bf688] Remove -o option to postmaster
-->

      <para>
       Remove support for the <link
       linkend="app-postgres"><application>postmaster</application></link>
       <option>-o</option> option (Magnus Hagander)
       <ulink url="&commit_baseurl;d2e4bf688">&sect;</ulink>
      </para>

      <para>
       This option was unnecessary since all passed options could already
       be specified directly.
      </para>
     </listitem>

    </itemizedlist>

   </sect3>

   <sect3>
    <title>Documentation</title>

    <itemizedlist>

     <listitem>
<!--
Author: Stephen Frost <sfrost@snowman.net>
2021-04-01 [c9c41c7a3] Rename Default Roles to Predefined Roles
-->

      <para>
       Rename "Default Roles" to <link
       linkend="predefined-roles">"Predefined Roles"</link> (Bruce Momjian,
       Stephen Frost)
       <ulink url="&commit_baseurl;c9c41c7a3">&sect;</ulink>
      </para>
     </listitem>

     <listitem>
<!--
Author: Peter Eisentraut <peter@eisentraut.org>
2020-06-16 [4c5cf5431] doc: Document factorial function
-->

      <para>
       Add documentation for the <link
       linkend="function-factorial"><function>factorial()</function></link>
       function (Peter Eisentraut)
       <ulink url="&commit_baseurl;4c5cf5431">&sect;</ulink>
      </para>

      <para>
       With the removal of the ! operator in this release,
       <function>factorial()</function> is the only built-in way to compute
       a factorial.
      </para>
     </listitem>

    </itemizedlist>

   </sect3>

   <sect3>
   <title>Source Code</title>

   <itemizedlist>

     <listitem>
<!--
Author: Michael Paquier <michael@paquier.xyz>
2021-02-01 [fe61df7f8] Introduce - -with-ssl={openssl} as a configure option
-->

       <para>
        Add configure option <link
        linkend="configure-options-features"><literal>--with-ssl={openssl}</literal></link>
        to allow future choice of the SSL library to use (Daniel Gustafsson,
        Michael Paquier)
        <ulink url="&commit_baseurl;fe61df7f8">&sect;</ulink>
       </para>

       <para>
        The spelling <option>--with-openssl</option> is kept for
        compatibility.
       </para>
      </listitem>

      <listitem>
<!--
Author: Peter Eisentraut <peter@eisentraut.org>
2020-11-25 [c9f0624bc] Add support for abstract Unix-domain sockets
-->

       <para>
        Add support for <link linkend="guc-unix-socket-directories">abstract
        Unix-domain sockets</link> (Peter Eisentraut)
        <ulink url="&commit_baseurl;c9f0624bc">&sect;</ulink>
       </para>

       <para>
        This is currently supported on <productname>Linux</productname>
        and <productname>Windows</productname>.
       </para>
      </listitem>

      <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
2020-10-09 [bed90759f] Fix our Windows stat() emulation to handle file sizes >
-->

       <para>
        Allow Windows to properly handle files larger than four gigabytes
        (Juan José Santamaría Flecha)
        <ulink url="&commit_baseurl;bed90759f">&sect;</ulink>
       </para>

       <para>
        For example this allows <link
        linkend="sql-copy"><command>COPY,</command></link> <link
        linkend="configure-options-misc"><acronym>WAL</acronym></link>
        files, and relation segment files to be larger than four gigabytes.
       </para>
      </listitem>

      <listitem>
<!--
Author: Peter Eisentraut <peter@eisentraut.org>
2021-01-06 [4656e3d66] Replace CLOBBER_CACHE_ALWAYS with run-time GUC
Author: Tom Lane <tgl@sss.pgh.pa.us>
2021-07-01 [d04770801] Add - -clobber-cache option to initdb, for CCA testing.
Author: Tom Lane <tgl@sss.pgh.pa.us>
2021-07-13 [6201fa3c1] Rename debug_invalidate_system_caches_always to debug_di
-->

       <para>
        Add server parameter <xref linkend="guc-debug-discard-caches"/>
        to control cache flushing for test purposes (Craig Ringer)
        <ulink url="&commit_baseurl;4656e3d66">&sect;</ulink>
        <ulink url="&commit_baseurl;d04770801">&sect;</ulink>
        <ulink url="&commit_baseurl;6201fa3c1">&sect;</ulink>
       </para>

       <para>
        Previously this behavior could only be set at compile time.
        To invoke it during <application>initdb</application>, use the new
        option <option>--discard-caches</option>.
       </para>
      </listitem>

      <listitem>
<!--
Author: Peter Geoghegan <pg@bowt.ie>
2020-07-17 [1e0dfd166] Add Valgrind buffer access instrumentation.
Author: Peter Geoghegan <pg@bowt.ie>
2020-07-19 [46ef520b9] Mark buffers as defined to Valgrind consistently.
Author: Peter Geoghegan <pg@bowt.ie>
2020-07-19 [a766d6ca2] Avoid harmless Valgrind no-buffer-pin errors.
-->

       <para>
        Various improvements in <productname>valgrind</productname>
        error detection ability (Álvaro Herrera, Peter Geoghegan)
        <ulink url="&commit_baseurl;1e0dfd166">&sect;</ulink>
        <ulink url="&commit_baseurl;46ef520b9">&sect;</ulink>
        <ulink url="&commit_baseurl;a766d6ca2">&sect;</ulink>
       </para>
      </listitem>

      <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
2021-01-06 [ca8217c10] Add a test module for the regular expression package.
-->

       <para>
        Add a test module for the regular expression package (Tom Lane)
        <ulink url="&commit_baseurl;ca8217c10">&sect;</ulink>
       </para>
      </listitem>

      <listitem>
<!--
Author: Andres Freund <andres@anarazel.de>
2020-11-09 [6c57f2ed1] jit: Add support for LLVM 12.
-->

       <para>
        Add support for <productname>LLVM</productname> version 12
        (Andres Freund)
        <ulink url="&commit_baseurl;6c57f2ed1">&sect;</ulink>
       </para>
      </listitem>

      <listitem>
<!--
Author: Michael Paquier <michael@paquier.xyz>
2020-12-04 [4f48a6fbe] Change SHA2 implementation based on OpenSSL to use EVP d
Author: Michael Paquier <michael@paquier.xyz>
2020-12-10 [b67b57a96] Refactor MD5 implementations according to new cryptohash
Author: Michael Paquier <michael@paquier.xyz>
2021-01-23 [a8ed6bb8f] Introduce SHA1 implementations in the cryptohash infrast
Author: Michael Paquier <michael@paquier.xyz>
2021-04-03 [e6bdfd970] Refactor HMAC implementations
-->

       <para>
        Change SHA1, SHA2, and MD5 hash computations to use the
        <productname>OpenSSL</productname> <acronym>EVP API</acronym>
        (Michael Paquier)
        <ulink url="&commit_baseurl;4f48a6fbe">&sect;</ulink>
        <ulink url="&commit_baseurl;b67b57a96">&sect;</ulink>
        <ulink url="&commit_baseurl;a8ed6bb8f">&sect;</ulink>
        <ulink url="&commit_baseurl;e6bdfd970">&sect;</ulink>
       </para>

       <para>
        This is more modern and supports <acronym>FIPS</acronym> mode.
       </para>
      </listitem>

      <listitem>
<!--
Author: Magnus Hagander <magnus@hagander.net>
2020-11-20 [16f96c74d] Remove ability to independently select random number gen
-->

       <para>
        Remove separate build-time control over the choice of random number
        generator (Daniel Gustafsson)
        <ulink url="&commit_baseurl;16f96c74d">&sect;</ulink>
       </para>

       <para>
        This is now always determined by the choice of SSL library.
       </para>
      </listitem>

      <listitem>
<!--
Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
2021-01-28 [6c5576075] Add direct conversion routines between EUC_TW and Big5.
-->

       <para>
        Add direct conversion routines between EUC_TW and Big5 encodings
        (Heikki Linnakangas)
        <ulink url="&commit_baseurl;6c5576075">&sect;</ulink>
       </para>
      </listitem>

      <listitem>
<!--
Author: Thomas Munro <tmunro@postgresql.org>
2020-11-20 [ca051d8b1] Add collation versions for FreeBSD.
-->

       <para>
        Add collation version support for <productname>FreeBSD</productname>
        (Thomas Munro)
        <ulink url="&commit_baseurl;ca051d8b1">&sect;</ulink>
       </para>
      </listitem>

      <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
2020-08-01 [9f9682783] Invent "amadjustmembers" AM method for validating opclas
-->

       <para>
        Add <link
        linkend="index-api"><structfield>amadjustmembers</structfield></link>
        to the index access method <acronym>API</acronym> (Tom Lane)
        <ulink url="&commit_baseurl;9f9682783">&sect;</ulink>
       </para>

       <para>
        This allows an index access method to provide validity checking
        during creation of a new operator class or family.
       </para>
      </listitem>

      <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
2021-06-19 [6991e774e] Provide feature-test macros for libpq features added in
-->

       <para>
        Provide feature-test macros in <filename>libpq-fe.h</filename>
        for recently-added <application>libpq</application> features
        (Tom Lane, Álvaro Herrera)
        <ulink url="&commit_baseurl;6991e774e">&sect;</ulink>
       </para>

       <para>
        Historically, applications have usually used compile-time checks
        of <literal>PG_VERSION_NUM</literal> to test whether a feature is
        available.  But that's normally the server version, which might
        not be a good guide to <application>libpq</application>'s
        version.  <filename>libpq-fe.h</filename> now
        offers <literal>#define</literal> symbols denoting
        application-visible features added in v14; the intent is to keep
        adding symbols for such features in future versions.
       </para>
      </listitem>

     </itemizedlist>

   </sect3>

   <sect3>
    <title>Additional Modules</title>

    <itemizedlist>

     <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
2020-12-11 [0ec5f7e78] Allow subscripting of hstore values.
-->

      <para>
       Allow subscripting of <link
       linkend="hstore"><application>hstore</application></link> values
       (Tom Lane, Dmitry Dolgov)
       <ulink url="&commit_baseurl;0ec5f7e78">&sect;</ulink>
      </para>
     </listitem>

     <listitem>
<!--
Author: Alexander Korotkov <akorotkov@postgresql.org>
2020-11-15 [935f66665] Handle equality operator in contrib/pg_trgm
-->

      <para>
       Allow GiST/GIN <link
       linkend="pgtrgm"><application>pg_trgm</application></link> indexes
       to do equality lookups (Julien Rouhaud)
       <ulink url="&commit_baseurl;935f66665">&sect;</ulink>
      </para>

      <para>
       This is similar to <literal>LIKE</literal> except no wildcards
       are honored.
      </para>
     </listitem>

     <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
2021-03-06 [1265a9c8f] Add binary I/O capability for cube datatype.
-->

      <para>
       Allow the <link
       linkend="cube"><application>cube</application></link> data type
       to be transferred in binary mode (KaiGai Kohei)
       <ulink url="&commit_baseurl;1265a9c8f">&sect;</ulink>
      </para>
     </listitem>

     <listitem>
<!--
Author: Peter Eisentraut <peter@eisentraut.org>
2020-06-30 [ee0202d55] pgstattuple: Have pgstattuple_approx accept TOAST tables
-->

      <para>
       Allow <link
       linkend="pgstattuple"><function>pgstattuple_approx()</function></link>
       to report on <acronym>TOAST</acronym> tables (Peter Eisentraut)
       <ulink url="&commit_baseurl;ee0202d55">&sect;</ulink>
      </para>
     </listitem>

     <listitem>
<!--
Author: Robert Haas <rhaas@postgresql.org>
2020-09-10 [34a947ca1] New contrib module, pg_surgery, with heap surgery functi
-->

      <para>
       Add contrib module <link
       linkend="pgsurgery"><application>pg_surgery</application></link>
       which allows changes to row visibility (Ashutosh Sharma)
       <ulink url="&commit_baseurl;34a947ca1">&sect;</ulink>
      </para>

      <para>
       This is useful for correcting database corruption.
      </para>
     </listitem>

     <listitem>
<!--
Author: Robert Haas <rhaas@postgresql.org>
2020-09-24 [aecf5ee2b] Add new 'old_snapshot' contrib module.
-->

      <para>
       Add contrib module <link
       linkend="oldsnapshot"><application>old_snapshot</application></link>
       to report the <type>XID</type>/time mapping used by an active
       <xref linkend="guc-old-snapshot-threshold"/> (Robert Haas)
       <ulink url="&commit_baseurl;aecf5ee2b">&sect;</ulink>
      </para>
     </listitem>

     <listitem>
<!--
Author: Robert Haas <rhaas@postgresql.org>
2020-10-22 [866e24d47] Extend amcheck to check heap pages.
-->

      <para>
       Allow <link
       linkend="amcheck"><application>amcheck</application></link> to
       also check heap pages (Mark Dilger)
       <ulink url="&commit_baseurl;866e24d47">&sect;</ulink>
      </para>

      <para>
       Previously it only checked B-Tree index pages.
      </para>
     </listitem>

     <listitem>
<!--
Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
2021-01-13 [756ab2912] Add functions to 'pageinspect' to inspect GiST indexes.
Author: Peter Geoghegan <pg@bowt.ie>
2021-02-14 [9e596b65f] Add "LP_DEAD item?" column to GiST pageinspect functions
-->

      <para>
       Allow <link
       linkend="pageinspect"><application>pageinspect</application></link>
       to inspect GiST indexes (Andrey Borodin, Heikki Linnakangas)
       <ulink url="&commit_baseurl;756ab2912">&sect;</ulink>
       <ulink url="&commit_baseurl;9e596b65f">&sect;</ulink>
      </para>
     </listitem>

     <listitem>
<!--
Author: Peter Eisentraut <peter@eisentraut.org>
2021-01-19 [f18aa1b20] pageinspect: Change block number arguments to bigint
-->

      <para>
       Change <application>pageinspect</application> block numbers
       to be <link linkend="datatype-int"><type>bigints</type></link>
       (Peter Eisentraut)
       <ulink url="&commit_baseurl;f18aa1b20">&sect;</ulink>
      </para>
     </listitem>

     <listitem>
<!--
Author: Alexander Korotkov <akorotkov@postgresql.org>
2020-07-20 [d98c08cdc] Update btree_gist extension for parallel query
-->

      <para>
       Mark <link
       linkend="btree-gist"><application>btree_gist</application></link>
       functions as parallel safe (Steven Winfield)
       <ulink url="&commit_baseurl;d98c08cdc">&sect;</ulink>
      </para>
     </listitem>

     </itemizedlist>

     <sect4>
      <title><link linkend="pgstatstatements">pg_stat_statements</link></title>

      <itemizedlist>

     <listitem>
<!--
Author: Bruce Momjian <bruce@momjian.us>
2021-04-07 [5fd9dfa5f] Move pg_stat_statements query jumbling to core.
-->

      <para>
       Move query hash computation from
       <application>pg_stat_statements</application> to the core server
       (Julien Rouhaud)
       <ulink url="&commit_baseurl;5fd9dfa5f">&sect;</ulink>
      </para>

      <para>
       The new server parameter <xref linkend="guc-compute-query-id"/>'s
       default of <literal>auto</literal> will automatically enable query
       id computation when this extension is loaded.
      </para>
     </listitem>

     <listitem>
<!--
Author: Magnus Hagander <magnus@hagander.net>
2021-04-08 [6b4d23fee] Track identical top vs nested queries independently in p
-->

      <para>
       Cause <application>pg_stat_statements</application> to track top
       and nested statements separately (Julien Rohaud)
       <ulink url="&commit_baseurl;6b4d23fee">&sect;</ulink>
      </para>

      <para>
       Previously, when tracking all statements, identical top and nested
       statements were tracked as a single entry; but it seems more useful
       to separate such usages.
      </para>
     </listitem>

     <listitem>
<!--
Author: Fujii Masao <fujii@postgresql.org>
2020-07-29 [6023b7ea7] pg_stat_statements: track number of rows processed by so
Author: Fujii Masao <fujii@postgresql.org>
2020-11-12 [b62e6056a] pg_stat_statements: track number of rows processed by RE
-->

      <para>
       Add row counts for utility commands to
       <application>pg_stat_statements</application> (Fujii Masao, Katsuragi
       Yuta, Seino Yuki)
       <ulink url="&commit_baseurl;6023b7ea7">&sect;</ulink>
       <ulink url="&commit_baseurl;b62e6056a">&sect;</ulink>
      </para>
     </listitem>

     <listitem>
<!--
Author: Fujii Masao <fujii@postgresql.org>
2020-11-26 [9fbc3f318] pg_stat_statements: Track number of times pgss entries w
Author: Fujii Masao <fujii@postgresql.org>
2020-12-18 [2e0fedf03] pg_stat_statements: Track time at which all statistics w
-->

      <para>
       Add <structname>pg_stat_statements_info</structname> system view
       to show <application>pg_stat_statements</application> activity
       (Katsuragi Yuta, Yuki Seino, Naoki Nakamichi)
       <ulink url="&commit_baseurl;9fbc3f318">&sect;</ulink>
       <ulink url="&commit_baseurl;2e0fedf03">&sect;</ulink>
      </para>
     </listitem>

    </itemizedlist>

    </sect4>

    <sect4>
     <title><link linkend="postgres-fdw"><application>postgres_fdw</application></link></title>

     <itemizedlist>

      <listitem>
<!--
Author: Tomas Vondra <tomas.vondra@postgresql.org>
2021-01-20 [b663a4136] Implement support for bulk inserts in postgres_fdw
Author: Tomas Vondra <tomas.vondra@postgresql.org>
2021-02-18 [927f453a9] Fix tuple routing to initialize batching only for insert
-->

       <para>
        Allow <application>postgres_fdw</application> to
        <command>INSERT</command> rows in bulk (Takayuki Tsunakawa, Tomas
        Vondra, Amit Langote)
        <ulink url="&commit_baseurl;b663a4136">&sect;</ulink>
        <ulink url="&commit_baseurl;927f453a9">&sect;</ulink>
       </para>
      </listitem>

      <listitem>
<!--
Author: Fujii Masao <fujii@postgresql.org>
2021-04-07 [a3740c48e] postgres_fdw: Allow partitions specified in LIMIT TO to
-->

       <para>
        Allow <application>postgres_fdw</application>
        to import table partitions if specified by <link
        linkend="sql-importforeignschema"><command>IMPORT FOREIGN SCHEMA
        ... LIMIT TO</command></link> (Matthias van de Meent)
        <ulink url="&commit_baseurl;a3740c48e">&sect;</ulink>
       </para>

       <para>
        By default, only the root of a partitioned table is imported.
       </para>
      </listitem>

      <listitem>
<!--
Author: Fujii Masao <fujii@postgresql.org>
2021-01-18 [708d165dd] postgres_fdw: Add function to list cached connections to
-->

       <para>
        Add <application>postgres_fdw</application> function
        <function>postgres_fdw_get_connections()</function> to report open
        foreign server connections (Bharath Rupireddy)
        <ulink url="&commit_baseurl;708d165dd">&sect;</ulink>
       </para>
      </listitem>

      <listitem>
<!--
Author: Fujii Masao <fujii@postgresql.org>
2021-04-02 [b1be3074a] postgres_fdw: Add option to control whether to keep conn
-->

       <para>
        Allow control over whether foreign servers keep connections open
        after transaction completion (Bharath Rupireddy)
        <ulink url="&commit_baseurl;b1be3074a">&sect;</ulink>
       </para>

       <para>
        This is controlled by <varname>keep_connections</varname> and
        defaults to on.
       </para>
      </listitem>

      <listitem>
<!--
Author: Fujii Masao <fujii@postgresql.org>
2020-10-06 [32a9c0bdf] postgres_fdw: reestablish new connection if cached one i
Author: Fujii Masao <fujii@postgresql.org>
2020-10-16 [7fc1a81e4] postgres_fdw: Restructure connection retry logic.
-->

       <para>
        Allow <application>postgres_fdw</application> to reestablish
        foreign server connections if necessary (Bharath Rupireddy)
        <ulink url="&commit_baseurl;32a9c0bdf">&sect;</ulink>
        <ulink url="&commit_baseurl;7fc1a81e4">&sect;</ulink>
       </para>

       <para>
        Previously foreign server restarts could cause foreign table
        access errors.
       </para>
      </listitem>

      <listitem>
<!--
Author: Fujii Masao <fujii@postgresql.org>
2021-01-26 [411ae6499] postgres_fdw: Add functions to discard cached connection
-->

       <para>
        Add <application>postgres_fdw</application> functions to discard
        cached connections (Bharath Rupireddy)
        <ulink url="&commit_baseurl;411ae6499">&sect;</ulink>
       </para>
      </listitem>

     </itemizedlist>

    </sect4>

   </sect3>

  </sect2>

  <sect2 id="release-14-acknowledgements">
   <title>Acknowledgments</title>

   <para>
    The following individuals (in alphabetical order) have contributed
    to this release as patch authors, committers, reviewers, testers,
    or reporters of issues.
   </para>

   <simplelist>
    <member>Abhijit Menon-Sen</member>
    <member>Ádám Balogh</member>
    <member>Adrian Ho</member>
    <member>Ahsan Hadi</member>
    <member>Ajin Cherian</member>
    <member>Aleksander Alekseev</member>
    <member>Alessandro Gherardi</member>
    <member>Alex Kozhemyakin</member>
    <member>Alexander Korotkov</member>
    <member>Alexander Lakhin</member>
    <member>Alexander Nawratil</member>
    <member>Alexander Pyhalov</member>
    <member>Alexandra Wang</member>
    <member>Alexey Bashtanov</member>
    <member>Alexey Bulgakov</member>
    <member>Alexey Kondratov</member>
    <member>Álvaro Herrera</member>
    <member>Amit Kapila</member>
    <member>Amit Khandekar</member>
    <member>Amit Langote</member>
    <member>Amul Sul</member>
    <member>Anastasia Lubennikova</member>
    <member>Andreas Grob</member>
    <member>Andreas Kretschmer</member>
    <member>Andreas Seltenreich</member>
    <member>Andreas Wicht</member>
    <member>Andres Freund</member>
    <member>Andrew Bille</member>
    <member>Andrew Dunstan</member>
    <member>Andrew Gierth</member>
    <member>Andrey Borodin</member>
    <member>Andrey Lepikhov</member>
    <member>Andy Fan</member>
    <member>Anton Voloshin</member>
    <member>Antonin Houska</member>
    <member>Arne Roland</member>
    <member>Arseny Sher</member>
    <member>Arthur Nascimento</member>
    <member>Arthur Zakirov</member>
    <member>Ashutosh Bapat</member>
    <member>Ashutosh Sharma</member>
    <member>Ashwin Agrawal</member>
    <member>Asif Rehman</member>
    <member>Asim Praveen</member>
    <member>Atsushi Torikoshi</member>
    <member>Aya Iwata</member>
    <member>Barry Pederson</member>
    <member>Bas Poot</member>
    <member>Bauyrzhan Sakhariyev</member>
    <member>Beena Emerson</member>
    <member>Benoît Lobréau</member>
    <member>Bernd Helmle</member>
    <member>Bernhard M. Wiedemann</member>
    <member>Bertrand Drouvot</member>
    <member>Bharath Rupireddy</member>
    <member>Boris Kolpackov</member>
    <member>Brar Piening</member>
    <member>Brian Ye</member>
    <member>Bruce Momjian</member>
    <member>Bryn Llewellyn</member>
    <member>Cameron Daniel</member>
    <member>Chapman Flack</member>
    <member>Charles Samborski</member>
    <member>Charlie Hornsby</member>
    <member>Chen Jiaoqian</member>
    <member>Chris Wilson</member>
    <member>Christian Quest</member>
    <member>Christoph Berg</member>
    <member>Christophe Courtois</member>
    <member>Corey Huinker</member>
    <member>Craig Ringer</member>
    <member>Dagfinn Ilmari Mannsåker</member>
    <member>Dana Burd</member>
    <member>Daniel Cherniy</member>
    <member>Daniel Gustafsson</member>
    <member>Daniel Vérité</member>
    <member>Daniel Westermann</member>
    <member>Daniele Varrazzo</member>
    <member>Dar Alathar-Yemen</member>
    <member>Darafei Praliaskouski</member>
    <member>Dave Cramer</member>
    <member>David Christensen</member>
    <member>David Fetter</member>
    <member>David G. Johnston</member>
    <member>David Geier</member>
    <member>David Gilman</member>
    <member>David Pirotte</member>
    <member>David Rowley</member>
    <member>David Steele</member>
    <member>David Turon</member>
    <member>David Zhang</member>
    <member>Dean Rasheed</member>
    <member>Denis Patron</member>
    <member>Dian Fay</member>
    <member>Dilip Kumar</member>
    <member>Dimitri Nüscheler</member>
    <member>Dmitriy Kuzmin</member>
    <member>Dmitry Dolgov</member>
    <member>Dmitry Marakasov</member>
    <member>Domagoj Smoljanovic</member>
    <member>Dong Wook</member>
    <member>Douglas Doole</member>
    <member>Duncan Sands</member>
    <member>Edmund Horner</member>
    <member>Edson Richter</member>
    <member>Egor Rogov</member>
    <member>Ekaterina Kiryanova</member>
    <member>Elena Indrupskaya</member>
    <member>Emil Iggland</member>
    <member>Emre Hasegeli</member>
    <member>Eric Thinnes</member>
    <member>Erik Rijkers</member>
    <member>Erwin Brandstetter</member>
    <member>Etienne Stalmans</member>
    <member>Etsuro Fujita</member>
    <member>Eugen Konkov</member>
    <member>Euler Taveira</member>
    <member>Fabien Coelho</member>
    <member>Fabrízio de Royes Mello</member>
    <member>Federico Caselli</member>
    <member>Felix Lechner</member>
    <member>Filip Gospodinov</member>
    <member>Floris Van Nee</member>
    <member>Frank Gagnepain</member>
    <member>Frits Jalvingh</member>
    <member>Georgios Kokolatos</member>
    <member>Greg Nancarrow</member>
    <member>Greg Rychlewski</member>
    <member>Greg Sabino Mullane</member>
    <member>Gregory Smith</member>
    <member>Grigory Smolkin</member>
    <member>Guillaume Lelarge</member>
    <member>Guy Burgess</member>
    <member>Guyren Howe</member>
    <member>Haiying Tang</member>
    <member>Hamid Akhtar</member>
    <member>Hans Buschmann</member>
    <member>Hao Wu</member>
    <member>Haribabu Kommi</member>
    <member>Harisai Hari</member>
    <member>Hayato Kuroda</member>
    <member>Heath Lord</member>
    <member>Heikki Linnakangas</member>
    <member>Henry Hinze</member>
    <member>Herwig Goemans</member>
    <member>Himanshu Upadhyaya</member>
    <member>Hironobu Suzuki</member>
    <member>Hiroshi Inoue</member>
    <member>Hisanori Kobayashi</member>
    <member>Honza Horak</member>
    <member>Hou Zhijie</member>
    <member>Hubert Lubaczewski</member>
    <member>Hubert Zhang</member>
    <member>Ian Barwick</member>
    <member>Ibrar Ahmed</member>
    <member>Ildus Kurbangaliev</member>
    <member>Isaac Morland</member>
    <member>Israel Barth</member>
    <member>Itamar Gafni</member>
    <member>Jacob Champion</member>
    <member>Jaime Casanova</member>
    <member>Jaime Soler</member>
    <member>Jakub Wartak</member>
    <member>James Coleman</member>
    <member>James Hilliard</member>
    <member>James Hunter</member>
    <member>James Inform</member>
    <member>Jan Mussler</member>
    <member>Japin Li</member>
    <member>Jasen Betts</member>
    <member>Jason Harvey</member>
    <member>Jason Kim</member>
    <member>Jeevan Ladhe</member>
    <member>Jeff Davis</member>
    <member>Jeff Janes</member>
    <member>Jelte Fennema</member>
    <member>Jeremy Evans</member>
    <member>Jeremy Finzel</member>
    <member>Jeremy Smith</member>
    <member>Jesse Kinkead</member>
    <member>Jesse Zhang</member>
    <member>Jie Zhang</member>
    <member>Jim Doty</member>
    <member>Jim Nasby</member>
    <member>Jimmy Angelakos</member>
    <member>Jimmy Yih</member>
    <member>Jiri Fejfar</member>
    <member>Joe Conway</member>
    <member>Joel Jacobson</member>
    <member>John Naylor</member>
    <member>John Thompson</member>
    <member>Jonathan Katz</member>
    <member>Josef Šimánek</member>
    <member>Joseph Nahmias</member>
    <member>Josh Berkus</member>
    <member>Juan José Santamaría Flecha</member>
    <member>Julien Rouhaud</member>
    <member>Junfeng Yang</member>
    <member>Jürgen Purtz</member>
    <member>Justin Pryzby</member>
    <member>Kazutaka Onishi</member>
    <member>Keisuke Kuroda</member>
    <member>Kelly Min</member>
    <member>Kensuke Okamura</member>
    <member>Kevin Sweet</member>
    <member>Kevin Yeap</member>
    <member>Kirk Jamison</member>
    <member>Kohei KaiGai</member>
    <member>Konstantin Knizhnik</member>
    <member>Kota Miyake</member>
    <member>Krzysztof Gradek</member>
    <member>Kuntal Ghosh</member>
    <member>Kyle Kingsbury</member>
    <member>Kyotaro Horiguchi</member>
    <member>Laurent Hasson</member>
    <member>Laurenz Albe</member>
    <member>Lee Dong Wook</member>
    <member>Li Japin</member>
    <member>Liu Huailing</member>
    <member>Luc Vlaming</member>
    <member>Ludovic Kuty</member>
    <member>Luis Roberto</member>
    <member>Lukas Eder</member>
    <member>Ma Liangzhu</member>
    <member>Maciek Sakrejda</member>
    <member>Madan Kumar</member>
    <member>Magnus Hagander</member>
    <member>Mahendra Singh Thalor</member>
    <member>Maksim Milyutin</member>
    <member>Marc Boeren</member>
    <member>Marcin Krupowicz</member>
    <member>Marco Atzeri</member>
    <member>Marek Szuba</member>
    <member>Marina Polyakova</member>
    <member>Mario Emmenlauer</member>
    <member>Mark Dilger</member>
    <member>Mark Wong</member>
    <member>Mark Zhao</member>
    <member>Markus Wanner</member>
    <member>Martín Marqués</member>
    <member>Martin Visser</member>
    <member>Masahiko Sawada</member>
    <member>Masahiro Ikeda</member>
    <member>Masao Fujii</member>
    <member>Mathis Rudolf</member>
    <member>Matthias van de Meent</member>
    <member>Matthieu Garrigues</member>
    <member>Matthijs van der Vleuten</member>
    <member>Maxim Orlov</member>
    <member>Melanie Plageman</member>
    <member>Merlin Moncure</member>
    <member>Michael Banck</member>
    <member>Michael Brown</member>
    <member>Michael Meskes</member>
    <member>Michael Paquier</member>
    <member>Michael Paul Killian</member>
    <member>Michael Powers</member>
    <member>Michael Vastola</member>
    <member>Michail Nikolaev</member>
    <member>Michal Albrycht</member>
    <member>Mikael Gustavsson</member>
    <member>Movead Li</member>
    <member>Muhammad Usama</member>
    <member>Nagaraj Raj</member>
    <member>Naoki Nakamichi</member>
    <member>Nathan Bossart</member>
    <member>Nathan Long</member>
    <member>Nazli Ugur Koyluoglu</member>
    <member>Neha Sharma</member>
    <member>Neil Chen</member>
    <member>Nick Cleaton</member>
    <member>Nico Williams</member>
    <member>Nikhil Benesch</member>
    <member>Nikhil Sontakke</member>
    <member>Nikita Glukhov</member>
    <member>Nikita Konev</member>
    <member>Nikolai Berkoff</member>
    <member>Nikolay Samokhvalov</member>
    <member>Nikolay Shaplov</member>
    <member>Nitin Jadhav</member>
    <member>Noah Misch</member>
    <member>Noriyoshi Shinoda</member>
    <member>Odin Ugedal</member>
    <member>Oleg Bartunov</member>
    <member>Oleg Samoilov</member>
    <member>Önder Kalaci</member>
    <member>Pascal Legrand</member>
    <member>Paul Förster</member>
    <member>Paul Guo</member>
    <member>Paul Jungwirth</member>
    <member>Paul Martinez</member>
    <member>Paul Sivash</member>
    <member>Pavan Deolasee</member>
    <member>Pavel Boev</member>
    <member>Pavel Borisov</member>
    <member>Pavel Luzanov</member>
    <member>Pavel Stehule</member>
    <member>Pengcheng Liu</member>
    <member>Peter Eisentraut</member>
    <member>Peter Geoghegan</member>
    <member>Peter Smith</member>
    <member>Peter Vandivier</member>
    <member>Petr Fedorov</member>
    <member>Petr Jelínek</member>
    <member>Phil Krylov</member>
    <member>Philipp Gramzow</member>
    <member>Philippe Beaudoin</member>
    <member>Phillip Menke</member>
    <member>Pierre Giraud</member>
    <member>Prabhat Sahu</member>
    <member>Quan Zongliang</member>
    <member>Rafi Shamim</member>
    <member>Rahila Syed</member>
    <member>Rajkumar Raghuwanshi</member>
    <member>Ranier Vilela</member>
    <member>Regina Obe</member>
    <member>Rémi Lapeyre</member>
    <member>Robert Foggia</member>
    <member>Robert Grange</member>
    <member>Robert Haas</member>
    <member>Robert Kahlert</member>
    <member>Robert Sosinski</member>
    <member>Robert Treat</member>
    <member>Robin Abbi</member>
    <member>Robins Tharakan</member>
    <member>Roger Mason</member>
    <member>Rohit Bhogate</member>
    <member>Roman Zharkov</member>
    <member>Ron L. Johnson</member>
    <member>Ronan Dunklau</member>
    <member>Ryan Lambert</member>
    <member>Ryo Matsumura</member>
    <member>Saeed Hubaishan</member>
    <member>Sait Talha Nisanci</member>
    <member>Sandro Mani</member>
    <member>Santosh Udupi</member>
    <member>Scott Ribe</member>
    <member>Sehrope Sarkuni</member>
    <member>Sergei Kornilov</member>
    <member>Sergey Bernikov</member>
    <member>Sergey Cherkashin</member>
    <member>Sergey Koposov</member>
    <member>Sergey Shinderuk</member>
    <member>Sergey Zubkovsky</member>
    <member>Shawn Wang</member>
    <member>Shay Rojansky</member>
    <member>Shi Yu</member>
    <member>Shinya Kato</member>
    <member>Shinya Okano</member>
    <member>Sigrid Ehrenreich</member>
    <member>Simon Norris</member>
    <member>Simon Riggs</member>
    <member>Sofoklis Papasofokli</member>
    <member>Soumyadeep Chakraborty</member>
    <member>Stas Kelvich</member>
    <member>Stephan Springl</member>
    <member>Stéphane Lorek</member>
    <member>Stephen Frost</member>
    <member>Steven Winfield</member>
    <member>Surafel Temesgen</member>
    <member>Suraj Kharage</member>
    <member>Sven Klemm</member>
    <member>Takamichi Osumi</member>
    <member>Takashi Menjo</member>
    <member>Takayuki Tsunakawa</member>
    <member>Tang Haiying</member>
    <member>Tatsuhito Kasahara</member>
    <member>Tatsuo Ishii</member>
    <member>Tatsuro Yamada</member>
    <member>Theodor Arsenij Larionov-Trichkin</member>
    <member>Thomas Kellerer</member>
    <member>Thomas Munro</member>
    <member>Thomas Trenz</member>
    <member>Tijs van Dam</member>
    <member>Tom Ellis</member>
    <member>Tom Gottfried</member>
    <member>Tom Lane</member>
    <member>Tom Vijlbrief</member>
    <member>Tomas Barton</member>
    <member>Tomas Vondra</member>
    <member>Tomohiro Hiramitsu</member>
    <member>Tony Reix</member>
    <member>Vaishnavi Prabakaran</member>
    <member>Valentin Gatien-Baron</member>
    <member>Victor Wagner</member>
    <member>Victor Yegorov</member>
    <member>Vignesh C</member>
    <member>Vik Fearing</member>
    <member>Vitaly Ustinov</member>
    <member>Vladimir Sitnikov</member>
    <member>Vyacheslav Shablistyy</member>
    <member>Wang Shenhao</member>
    <member>Wei Wang</member>
    <member>Wells Oliver</member>
    <member>Wenjing Zeng</member>
    <member>Wolfgang Walther</member>
    <member>Yang Lin</member>
    <member>Yanliang Lei</member>
    <member>Yaoguang Chen</member>
    <member>Yaroslav Pashinsky</member>
    <member>Yaroslav Schekin</member>
    <member>Yasushi Yamashita</member>
    <member>Yoran Heling</member>
    <member>YoungHwan Joo</member>
    <member>Yugo Nagata</member>
    <member>Yuki Seino</member>
    <member>Yukun Wang</member>
    <member>Yulin Pei</member>
    <member>Yura Sokolov</member>
    <member>Yuta Katsuragi</member>
    <member>Yuta Kondo</member>
    <member>Yuzuko Hosoya</member>
    <member>Zhihong Yu</member>
    <member>Zhiyong Wu</member>
    <member>Zsolt Ero</member>
   </simplelist>
  </sect2>

 </sect1>
