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

 <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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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.
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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.
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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.
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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.
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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.
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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.
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
     </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)
      </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)
      </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)
      </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)
      </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)
      </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)
      </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)
      </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)
       </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)
       </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)
       </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)
       </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)
       </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)
       </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)
       </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)
       </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)
       </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)
       </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)
       </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)
       </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)
       </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)
       </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)
       </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)
       </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)
       </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)
       </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)
       </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)
       </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)
       </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)
       </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)
       </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)
       </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)
       </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)
       </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)
       </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)
       </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)
       </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)
       </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)
       </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)
       </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)
       </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)
       </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)
       </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)
       </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)
       </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)
       </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)
       </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)
       </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)
       </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)
       </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)
       </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)
       </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)
       </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)
       </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)
       </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)
       </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)
       </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)
       </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)
       </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)
       </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)
       </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)
       </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)
       </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)
       </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)
       </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)
      </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)
      </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)
      </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)
      </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)
      </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)
      </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)
      </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)
      </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)
      </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)
      </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)
      </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)
       </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)
       </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)
       </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)
       </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)
       </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)
       </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)
       </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)
       </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)
       </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)
       </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)
      </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)
      </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)
      </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)
      </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)
      </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)
      </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)
      </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)
      </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)
      </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)
       </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)
      </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)
      </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)
      </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)
      </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)
      </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)
      </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)
      </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)
      </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)
      </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)
      </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)
      </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)
      </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)
      </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)
      </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)
      </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)
      </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)
      </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)
      </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)
      </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)
      </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)
      </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)
      </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)
      </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)
      </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)
      </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)
      </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)
      </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)
      </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)
      </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)
      </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)
      </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)
      </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)
      </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)
      </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)
      </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)
      </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)
      </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)
      </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)
      </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)
      </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)
      </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)
      </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)
      </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)
      </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)
      </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)
      </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)
      </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)
      </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)
      </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)
      </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)
      </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)
      </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)
       </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)
       </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)
       </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)
       </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)
       </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)
       </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)
       </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)
      </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)
      </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)
      </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)
      </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)
      </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)
      </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)
       </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)
       </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)
       </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)
       </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)
       </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)
       </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)
       </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)
       </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)
       </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)
       </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)
       </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)
       </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)
       </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)
      </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)
      </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)
      </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)
      </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)
      </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)
      </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)
      </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)
      </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)
      </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)
      </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)
      </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)
      </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)
      </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)
      </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)
       </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)
       </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)
       </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)
       </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)
       </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)
       </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>
