summaryrefslogtreecommitdiffstats
path: root/doc/src/sgml/release-15.sgml
diff options
context:
space:
mode:
Diffstat (limited to 'doc/src/sgml/release-15.sgml')
-rw-r--r--doc/src/sgml/release-15.sgml8633
1 files changed, 8633 insertions, 0 deletions
diff --git a/doc/src/sgml/release-15.sgml b/doc/src/sgml/release-15.sgml
new file mode 100644
index 0000000..09df673
--- /dev/null
+++ b/doc/src/sgml/release-15.sgml
@@ -0,0 +1,8633 @@
+<!-- doc/src/sgml/release-15.sgml -->
+<!-- See header comment in release.sgml about typical markup -->
+
+ <sect1 id="release-15-4">
+ <title>Release 15.4</title>
+
+ <formalpara>
+ <title>Release date:</title>
+ <para>2023-08-10</para>
+ </formalpara>
+
+ <para>
+ This release contains a variety of fixes from 15.3.
+ For information about new features in major release 15, see
+ <xref linkend="release-15"/>.
+ </para>
+
+ <sect2>
+ <title>Migration to Version 15.4</title>
+
+ <para>
+ A dump/restore is not required for those running 15.X.
+ </para>
+
+ <para>
+ However, if you use BRIN indexes, it may be advisable to reindex them;
+ see the third changelog entry below.
+ </para>
+
+ <para>
+ Also, if you are upgrading from a version earlier than 15.1,
+ see <xref linkend="release-15-1"/>.
+ </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 Gate,
+ Valerie Woolard, Tim Carey-Smith, and Christoph Berg for reporting
+ this problem.
+ (CVE-2023-39417)
+ </para>
+ </listitem>
+
+ <listitem>
+<!--
+Author: Dean Rasheed <dean.a.rasheed@gmail.com>
+Branch: master [c2e08b04c] 2023-08-07 09:28:47 +0100
+Branch: REL_16_STABLE [67a007dc0] 2023-08-07 09:27:09 +0100
+Branch: REL_15_STABLE [cb2ae5741] 2023-08-07 09:24:27 +0100
+-->
+ <para>
+ Fix <command>MERGE</command> to enforce row security policies
+ properly (Dean Rasheed)
+ </para>
+
+ <para>
+ When <command>MERGE</command> performs an <literal>UPDATE</literal>
+ action, it should enforce any <literal>UPDATE</literal> or
+ <literal>SELECT</literal> RLS policies defined on the target table,
+ to be consistent with the way that a plain <command>UPDATE</command>
+ with a <literal>WHERE</literal> clause works. Instead it was
+ enforcing <literal>INSERT</literal> RLS policies for both
+ <literal>INSERT</literal> and <literal>UPDATE</literal> actions.
+ </para>
+
+ <para>
+ In addition, when <command>MERGE</command> performs a <literal>DO
+ NOTHING</literal> action, it applied the target table's
+ <literal>DELETE</literal> RLS policies to existing rows, even though
+ those rows are not being deleted. While it's not a security
+ problem, this could result in unwanted errors.
+ </para>
+
+ <para>
+ The <productname>PostgreSQL</productname> Project thanks
+ Dean Rasheed for reporting this problem.
+ (CVE-2023-39418)
+ </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: Michael Paquier <michael@paquier.xyz>
+Branch: master Release: REL_16_BR [97d891010] 2023-06-30 07:49:01 +0900
+Branch: REL_15_STABLE [93401ec02] 2023-06-30 07:49:07 +0900
+-->
+ <para>
+ Fix tracking of tables' access method dependencies (Michael Paquier)
+ </para>
+
+ <para>
+ <command>ALTER TABLE ... SET ACCESS METHOD</command> failed to
+ update relevant <structname>pg_depend</structname> entries when
+ changing a table's access method. When using non-built-in access
+ methods, this creates a risk that an access method could be dropped
+ even though tables still depend on it. This fix corrects the logic
+ in <command>ALTER TABLE</command>, but it will not adjust any
+ already-missing <structname>pg_depend</structname> entries.
+ </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: REL_15_STABLE [a5f312c58] 2023-07-06 13:05:25 +0300
+-->
+ <para>
+ Ensure that all existing placeholders are checked for matches when
+ an extension declares its GUC prefix to be reserved (Karina
+ Litskevich, Ekaterina Sokolova)
+ </para>
+
+ <para>
+ Faulty loop logic could cause some entries to be skipped.
+ </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: Masahiko Sawada <msawada@postgresql.org>
+Branch: master [68a59f9e9] 2023-07-05 14:49:46 +0900
+Branch: REL_16_STABLE [be8cae7e2] 2023-07-05 14:49:58 +0900
+Branch: REL_15_STABLE [66f8a1397] 2023-07-05 14:49:53 +0900
+-->
+ <para>
+ Avoid leaking a stats entry for a subscription when it is dropped
+ (Masahiko Sawada)
+ </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: 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: Thomas Munro <tmunro@postgresql.org>
+Branch: master [4637a6ac0] 2023-07-03 11:16:27 +1200
+Branch: REL_16_STABLE [76d5966b3] 2023-07-03 11:21:56 +1200
+Branch: REL_15_STABLE [f50200c01] 2023-07-03 11:22:10 +1200
+-->
+ <para>
+ Silence bogus <quote>missing contrecord</quote> errors (Thomas Munro)
+ </para>
+
+ <para>
+ Treat this case as plain end-of-WAL to avoid logging inaccurate
+ complaints from <application>pg_waldump</application>
+ and <application>walsender</application>.
+ </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: Michael Paquier <michael@paquier.xyz>
+Branch: master Release: REL_16_BR [605994651] 2023-05-10 11:24:30 +0900
+Branch: REL_15_STABLE [ccd21e1cf] 2023-05-10 11:24:40 +0900
+-->
+ <para>
+ Avoid assertion failure when
+ the <varname>stats_fetch_consistency</varname> setting is changed
+ intra-transaction (Kyotaro Horiguchi)
+ </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 [51b2c0879] 2023-05-12 16:11:14 -0400
+Branch: REL_15_STABLE [bc478a0a8] 2023-05-12 16:11:14 -0400
+-->
+ <para>
+ In <application>psql</application>, ignore
+ the <envar>PSQL_WATCH_PAGER</envar> environment variable when
+ stdin/stdout are not a terminal (Tom Lane)
+ </para>
+
+ <para>
+ This corresponds to the treatment of <envar>PSQL_PAGER</envar> in
+ commands besides <command>\watch</command>.
+ </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: Tom Lane <tgl@sss.pgh.pa.us>
+Branch: master Release: REL_16_BR [b3f32a6c3] 2023-06-04 11:22:05 -0400
+Branch: REL_15_STABLE [751ba1a7c] 2023-06-04 11:22:05 -0400
+-->
+ <para>
+ Improve <application>pg_dump</application>'s display of details
+ about dependency-loop problems (Tom Lane)
+ </para>
+ </listitem>
+
+ <listitem>
+<!--
+Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
+Branch: master Release: REL_16_BR [8f5e42d33] 2023-05-25 12:36:18 +0200
+Branch: REL_15_STABLE [34f511965] 2023-05-25 12:36:18 +0200
+-->
+ <para>
+ Avoid crash in <application>pgbench</application> with an empty
+ pipeline and prepared mode (&Aacute;lvaro Herrera)
+ </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>
+
+ <listitem>
+<!--
+Author: Tatsuo Ishii <ishii@postgresql.org>
+Branch: master Release: REL_16_BR [ae66716bf] 2023-06-14 11:02:50 +0900
+Branch: REL_15_STABLE [af26f28b9] 2023-06-14 11:11:18 +0900
+-->
+ <para>
+ Fix <application>make_etags</application> script to work with
+ non-Exuberant <application>ctags</application> (Masahiko Sawada)
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ </sect2>
+ </sect1>
+
+ <sect1 id="release-15-3">
+ <title>Release 15.3</title>
+
+ <formalpara>
+ <title>Release date:</title>
+ <para>2023-05-11</para>
+ </formalpara>
+
+ <para>
+ This release contains a variety of fixes from 15.2.
+ For information about new features in major release 15, see
+ <xref linkend="release-15"/>.
+ </para>
+
+ <sect2>
+ <title>Migration to Version 15.3</title>
+
+ <para>
+ A dump/restore is not required for those running 15.X.
+ </para>
+
+ <para>
+ However, if you are upgrading from a version earlier than 15.1,
+ see <xref linkend="release-15-1"/>.
+ </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 [8a8661828] 2023-02-22 10:14:52 +0900
+Branch: REL_15_STABLE [fa5dd460c] 2023-02-22 10:14:56 +0900
+-->
+ <para>
+ Fix potential corruption of the template (source) database after
+ <command>CREATE DATABASE</command> with the <literal>STRATEGY
+ WAL_LOG</literal> option (Nathan Bossart, Ryo Matsumura)
+ </para>
+
+ <para>
+ Improper buffer handling created a risk that any later modification
+ of the template's <structname>pg_class</structname> catalog would be
+ lost.
+ </para>
+ </listitem>
+
+ <listitem>
+<!--
+Author: Andres Freund <andres@anarazel.de>
+Branch: master [5df319f3d] 2023-03-22 09:20:34 -0700
+Branch: REL_15_STABLE [560bb56c6] 2023-03-22 09:26:23 -0700
+-->
+ <para>
+ Fix memory leakage and unnecessary disk reads
+ during <command>CREATE DATABASE</command> with the <literal>STRATEGY
+ WAL_LOG</literal> option (Andres Freund)
+ </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 [326a33a28] 2023-03-28 11:39:24 -0400
+Branch: REL_15_STABLE [bf5c4b3d9] 2023-03-28 11:36:50 -0400
+Author: Tom Lane <tgl@sss.pgh.pa.us>
+Branch: master [e3ac85014] 2023-03-15 11:59:18 -0400
+Branch: REL_15_STABLE [3908d6ae1] 2023-03-15 11:59:18 -0400
+-->
+ <para>
+ Fix various planner failures with <command>MERGE</command>
+ commands (Tom Lane)
+ </para>
+
+ <para>
+ Planning could fail with errors like <quote>variable not found in
+ subplan target list</quote> or <quote>PlaceHolderVar found where not
+ expected</quote>.
+ </para>
+ </listitem>
+
+ <listitem>
+<!--
+Author: Dean Rasheed <dean.a.rasheed@gmail.com>
+Branch: master [7b14e20b1] 2023-03-13 11:12:20 +0000
+Branch: REL_15_STABLE [da6257eee] 2023-03-13 11:11:10 +0000
+Branch: master [80a48e0f2] 2023-02-22 09:39:09 +0000
+Branch: REL_15_STABLE [018af1cc1] 2023-02-22 09:41:28 +0000
+-->
+ <para>
+ Fix the row count reported by <command>MERGE</command> for some
+ corner cases (Dean Rasheed)
+ </para>
+
+ <para>
+ The row count reported in the command tag counted rows that actually
+ hadn't been modified due to a <literal>BEFORE ROW</literal> trigger
+ returning NULL. This is inconsistent with what happens in
+ plain <command>UPDATE</command> or <command>DELETE</command>, so
+ change it to not count such rows. Also, avoid counting a row twice
+ when <command>MERGE</command> moves it into a different partition of
+ a partitioned table.
+ </para>
+ </listitem>
+
+ <listitem>
+<!--
+Author: Dean Rasheed <dean.a.rasheed@gmail.com>
+Branch: master [9321c79c8] 2023-03-13 10:22:22 +0000
+Branch: REL_15_STABLE [7d9a75713] 2023-03-13 10:23:42 +0000
+Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
+Branch: master [fd923b5de] 2023-02-15 20:37:44 +0100
+Branch: REL_15_STABLE [5d8ec1b9f] 2023-02-15 20:37:44 +0100
+-->
+ <para>
+ Fix <command>MERGE</command> problems with concurrent updates
+ (Dean Rasheed, &Aacute;lvaro Herrera)
+ </para>
+
+ <para>
+ Some cases misbehaved if a row to be updated or deleted
+ by <command>MERGE</command> had just been updated by a concurrent
+ transaction. This could lead to a crash, or the wrong merge action
+ being executed, or no action at all.
+ </para>
+ </listitem>
+
+ <listitem>
+<!--
+Author: Tom Lane <tgl@sss.pgh.pa.us>
+Branch: master [41e2c52fd] 2023-05-07 11:01:15 -0400
+Branch: REL_15_STABLE [f200b9695] 2023-05-07 11:01:15 -0400
+-->
+ <para>
+ Add support for decompiling <command>MERGE</command>
+ commands (&Aacute;lvaro Herrera)
+ </para>
+
+ <para>
+ This was overlooked when <command>MERGE</command> was added, but
+ it's essential support for <command>MERGE</command> in new-style SQL
+ functions.
+ </para>
+ </listitem>
+
+ <listitem>
+<!--
+Author: Tom Lane <tgl@sss.pgh.pa.us>
+Branch: master [6949b921d] 2023-03-04 13:32:35 -0500
+Branch: REL_15_STABLE [f61e60102] 2023-03-04 13:32:35 -0500
+-->
+ <para>
+ Fix enabling/disabling of foreign-key triggers in partitioned tables
+ (Tom Lane)
+ </para>
+
+ <para>
+ <command>ALTER TABLE ... ENABLE/DISABLE TRIGGER</command> failed if
+ applied to a partitioned table's foreign-key enforcement triggers,
+ because it tried to locate the clone triggers for the partitions by
+ name, and they do not have the same name. Locate them by
+ parent-trigger OID instead.
+ </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: Jeff Davis <jdavis@postgresql.org>
+Branch: master [f413941f4] 2023-03-17 12:08:46 -0700
+Branch: REL_15_STABLE [8b87e9291] 2023-03-17 12:07:47 -0700
+-->
+ <para>
+ Adjust text-search-related character classification logic to
+ correctly detect whether the prevailing locale
+ is <literal>C</literal> (Jeff Davis)
+ </para>
+
+ <para>
+ This code got confused if the database's default collation uses ICU.
+ </para>
+ </listitem>
+
+ <listitem>
+<!--
+Author: Tom Lane <tgl@sss.pgh.pa.us>
+Branch: master [5e80d3515] 2023-02-12 12:50:55 -0500
+Branch: REL_15_STABLE [0ef65d0f5] 2023-02-12 12:50:55 -0500
+-->
+ <para>
+ Avoid possible crash on empty input for type <type>interval</type>
+ (Tom Lane)
+ </para>
+ </listitem>
+
+ <listitem>
+<!--
+Author: Tom Lane <tgl@sss.pgh.pa.us>
+Branch: master [f0d0394e8] 2023-02-20 16:55:59 -0500
+Branch: REL_15_STABLE [ded5ede27] 2023-02-20 16:55:59 -0500
+-->
+ <para>
+ Re-allow exponential notation in ISO-8601 interval fields
+ (Tom Lane)
+ </para>
+
+ <para>
+ Interval input like <literal>P0.1e10D</literal> isn't officially
+ sanctioned by ISO-8601, but we accepted it for a long time before
+ version 15, so re-allow it.
+ </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 [eb7d043c9] 2023-03-17 15:49:53 +1300
+Branch: REL_15_STABLE [371e3daaa] 2023-03-17 15:51:00 +1300
+-->
+ <para>
+ Fix incorrect tests for whether a qual clause applied to a subquery
+ can be transformed into a window aggregate <quote>run
+ condition</quote> within the subquery (David Rowley)
+ </para>
+
+ <para>
+ A SubPlan within such a clause would cause assertion failures or
+ incorrect answers, as would some other unusual cases.
+ </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: Robert Haas <rhaas@postgresql.org>
+Branch: master [8a2f783cc] 2023-02-06 10:51:08 -0500
+Branch: REL_15_STABLE [ecb01e6eb] 2023-02-10 16:27:05 -0500
+-->
+ <para>
+ Disable startup progress reporting overhead in standby mode
+ (Bharath Rupireddy)
+ </para>
+
+ <para>
+ In standby mode, we don't actually report progress of recovery,
+ but we were doing work to track it anyway.
+ </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: David Rowley <drowley@postgresql.org>
+Branch: master [e35ded295] 2023-04-20 10:34:46 +1200
+Branch: REL_15_STABLE [63a03aea6] 2023-04-21 10:02:25 +1200
+-->
+ <para>
+ Fix <function>list_copy_head()</function> to work correctly on an
+ empty List (David Rowley)
+ </para>
+
+ <para>
+ This case is not known to be reached by any
+ core <productname>PostgreSQL</productname> code, but extensions
+ might rely on it working.
+ </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: Dean Rasheed <dean.a.rasheed@gmail.com>
+Branch: master [0d3b49d4a] 2023-02-22 10:51:34 +0000
+Branch: REL_15_STABLE [d8c3b65db] 2023-02-22 10:54:57 +0000
+-->
+ <para>
+ Fix assertion failure for <command>MERGE</command> into a
+ partitioned table with row-level security enabled (Dean Rasheed)
+ </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: Robert Haas <rhaas@postgresql.org>
+Branch: master [8e82db97b] 2023-04-12 11:37:13 -0400
+Branch: REL_15_STABLE [fa83e9e23] 2023-04-12 11:51:09 -0400
+-->
+ <para>
+ In <filename>contrib/basebackup_to_shell</filename>, properly detect
+ failure to open a pipe (Robert Haas)
+ </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: Michael Paquier <michael@paquier.xyz>
+Branch: master [8427ce4c3] 2023-02-21 20:01:43 +0900
+Branch: REL_15_STABLE [5bace41ab] 2023-02-21 20:02:09 +0900
+-->
+ <para>
+ Fix handling of escape sequences
+ in <filename>contrib/postgres_fdw</filename>'s
+ <varname>application_name</varname> parameter (Kyotaro Horiguchi,
+ Michael Paquier)
+ </para>
+
+ <para>
+ The code to expand these could fail if executed in a background
+ process, as for example during auto-analyze of a foreign table.
+ </para>
+ </listitem>
+
+ <listitem>
+<!--
+Author: Jeff Davis <jdavis@postgresql.org>
+Branch: master [69e8c7cf1] 2023-02-20 11:07:24 -0800
+Branch: REL_15_STABLE [da32a99df] 2023-02-20 11:29:31 -0800
+-->
+ <para>
+ In <filename>contrib/pg_walinspect</filename>, limit memory usage
+ of <function>pg_get_wal_records_info()</function> (Bharath Rupireddy)
+ </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-15-2">
+ <title>Release 15.2</title>
+
+ <formalpara>
+ <title>Release date:</title>
+ <para>2023-02-09</para>
+ </formalpara>
+
+ <para>
+ This release contains a variety of fixes from 15.1.
+ For information about new features in major release 15, see
+ <xref linkend="release-15"/>.
+ </para>
+
+ <sect2>
+ <title>Migration to Version 15.2</title>
+
+ <para>
+ A dump/restore is not required for those running 15.X.
+ </para>
+
+ <para>
+ However, if you are upgrading from a version earlier than 15.1,
+ see <xref linkend="release-15-1"/>.
+ </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: Dean Rasheed <dean.a.rasheed@gmail.com>
+Branch: master [fe9e658f4] 2023-01-30 10:04:57 +0000
+Branch: REL_15_STABLE [4785af9e6] 2023-01-30 10:07:32 +0000
+-->
+ <para>
+ Fix possible failure of <command>MERGE</command> to compute
+ <literal>GENERATED</literal> columns (Dean Rasheed)
+ </para>
+
+ <para>
+ When the first row-level action of the <command>MERGE</command> was
+ an <literal>UPDATE</literal>, any
+ subsequent <literal>INSERT</literal> actions would fail to
+ compute <literal>GENERATED</literal> columns that were deemed
+ unnecessary to compute for the <literal>UPDATE</literal> action
+ (due to not depending on any of the <literal>UPDATE</literal> target
+ columns).
+ </para>
+ </listitem>
+
+ <listitem>
+<!--
+Author: Dean Rasheed <dean.a.rasheed@gmail.com>
+Branch: master [f026c16a2] 2023-01-10 14:17:47 +0000
+Branch: REL_15_STABLE [38255f2d0] 2023-01-10 14:16:27 +0000
+-->
+ <para>
+ Fix <command>MERGE</command>'s check for
+ unreachable <literal>WHEN</literal> clauses (Dean Rasheed)
+ </para>
+
+ <para>
+ A <literal>WHEN</literal> clause following an
+ unconditional <literal>WHEN</literal> clause should be rejected as
+ unreachable, but this case was not always detected.
+ </para>
+ </listitem>
+
+ <listitem>
+<!--
+Author: Dean Rasheed <dean.a.rasheed@gmail.com>
+Branch: master [7b2ccc5e0] 2022-11-25 13:31:48 +0000
+Branch: REL_15_STABLE [04d61bfe6] 2022-11-25 13:29:51 +0000
+-->
+ <para>
+ Fix <command>MERGE</command>'s rule-detection test (Dean Rasheed)
+ </para>
+
+ <para>
+ <command>MERGE</command> is not supported on tables with rules;
+ but it also failed on tables that once had rules but no longer do.
+ </para>
+ </listitem>
+
+ <listitem>
+<!--
+Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
+Branch: master [6ff5aa129] 2022-11-17 18:56:11 +0100
+Branch: REL_15_STABLE [3d45edcef] 2022-11-17 18:56:11 +0100
+-->
+ <para>
+ In <command>MERGE</command>, don't count a <literal>DO
+ NOTHING</literal> action as a processed tuple (&Aacute;lvaro Herrera)
+ </para>
+
+ <para>
+ This makes the code's behavior match the documentation.
+ </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 [647fa5005] 2023-01-15 17:32:09 -0500
+Branch: REL_15_STABLE [db9127c58] 2023-01-15 17:32:09 -0500
+-->
+ <para>
+ Remove arbitrary limit on number of elements
+ in <type>int2vector</type> and <type>oidvector</type> (Tom Lane)
+ </para>
+
+ <para>
+ The input functions for these types previously rejected more than
+ 100 elements. With the introduction of the logical replication
+ column list feature, it's necessary to
+ accept <type>int2vector</type>s having up to 1600 columns,
+ otherwise long column lists cause logical-replication failures.
+ </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: David Rowley <drowley@postgresql.org>
+Branch: master [94985c210] 2022-12-10 19:27:20 +1300
+Branch: REL_15_STABLE [04788ee4c] 2022-12-10 19:27:53 +1300
+-->
+ <para>
+ Fix planner preprocessing oversights for window function run-condition
+ expressions (Richard Guo, David Rowley)
+ </para>
+
+ <para>
+ This could lead to planner errors such as <quote>WindowFunc not
+ found in subplan target lists</quote>.
+ </para>
+ </listitem>
+
+ <listitem>
+<!--
+Author: David Rowley <drowley@postgresql.org>
+Branch: master [a85832722] 2022-12-07 00:09:36 +1300
+Branch: REL_15_STABLE [2a535620c] 2022-12-07 00:10:21 +1300
+-->
+ <para>
+ Fix possible dangling-pointer access during execution of window
+ function run-condition expressions (David Rowley)
+ </para>
+
+ <para>
+ In practice, because the run-condition optimization is only applied
+ to certain window functions that happen to all
+ return <type>int8</type>, this only manifested as a problem on
+ 32-bit builds.
+ </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: Andres Freund <andres@anarazel.de>
+Branch: master [cb2e7ddfe] 2022-12-02 18:10:30 -0800
+Branch: REL_15_STABLE [c6a60471a] 2022-12-02 18:07:47 -0800
+-->
+ <para>
+ Prevent the statistics machinery from getting confused when a
+ relation's relkind changes (Andres Freund)
+ </para>
+
+ <para>
+ Converting a table to a view could lead to crashes or assertion
+ failures.
+ </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: Michael Paquier <michael@paquier.xyz>
+Branch: master [5ad165d2c] 2023-01-12 13:40:33 +0900
+Branch: REL_15_STABLE [6f25e4877] 2023-01-12 13:41:22 +0900
+-->
+ <para>
+ Acquire spinlock while updating shared state during logical decoding
+ context creation (Masahiko Sawada)
+ </para>
+
+ <para>
+ We neglected to acquire the appropriate lock while updating data
+ about two-phase transactions, potentially allowing other processes
+ to see inconsistent data.
+ </para>
+ </listitem>
+
+ <listitem>
+<!--
+Author: Amit Kapila <akapila@postgresql.org>
+Branch: master [40b149135] 2022-12-02 10:52:58 +0530
+Branch: REL_15_STABLE [ebf87c019] 2022-12-02 11:14:42 +0530
+-->
+ <para>
+ Fix <application>pgoutput</application> replication plug-in to not
+ send columns not listed in a table's replication column list
+ (Hou Zhijie)
+ </para>
+
+ <para>
+ <literal>UPDATE</literal> and <literal>DELETE</literal> events did
+ not pay attention to the configured column list, thus sending more
+ data than expected. This did not cause a problem when the receiver
+ is our built-in logical replication code, but it might confuse other
+ receivers, and in any case it wasted network bandwidth.
+ </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: 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: Robert Haas <rhaas@postgresql.org>
+Branch: master [45f5c81ad] 2022-12-12 10:26:48 -0500
+Branch: REL_15_STABLE [8b5ba2f3f] 2022-12-12 10:33:02 -0500
+-->
+ <para>
+ Fix possible corruption of very large tablespace map files
+ in <application>pg_basebackup</application> (Antonin Houska)
+ </para>
+ </listitem>
+
+ <listitem>
+<!--
+Author: Tom Lane <tgl@sss.pgh.pa.us>
+Branch: master [74739d1d3] 2023-01-19 19:32:50 -0500
+Branch: REL_15_STABLE [488e89bf7] 2023-01-19 19:32:47 -0500
+-->
+ <para>
+ Avoid harmless warning from <application>pg_dump</application>
+ in <option>--if-exists</option> mode (Tom Lane)
+ </para>
+
+ <para>
+ If the <literal>public</literal> schema has a non-default owner then
+ use of <application>pg_dump</application>'s <option>--if-exists</option>
+ option resulted in a warning message <quote>warning: could not find
+ where to insert IF EXISTS in statement "-- *not* dropping schema,
+ since initdb creates it"</quote>. The dump output was okay, though.
+ </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 [aeaaf520f] 2022-11-21 15:37:10 -0500
+Branch: REL_15_STABLE [b8988cf1d] 2022-11-21 15:37:10 -0500
+-->
+ <para>
+ Update <filename>contrib/pageinspect</filename> to mark its
+ disk-accessing functions as <literal>PARALLEL RESTRICTED</literal>
+ (Tom Lane)
+ </para>
+
+ <para>
+ This avoids possible failure if one of these functions is used to
+ examine a temporary table, since a session's temporary tables are not
+ accessible from parallel workers.
+ </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-15-1">
+ <title>Release 15.1</title>
+
+ <formalpara>
+ <title>Release date:</title>
+ <para>2022-11-10</para>
+ </formalpara>
+
+ <para>
+ This release contains a variety of fixes from 15.0.
+ For information about new features in major release 15, see
+ <xref linkend="release-15"/>.
+ </para>
+
+ <sect2>
+ <title>Migration to Version 15.1</title>
+
+ <para>
+ A dump/restore is not required for those running 15.X.
+ </para>
+
+ <para>
+ However, if you regularly create and drop tables exceeding 1GB,
+ see the first changelog entry below.
+ </para>
+ </sect2>
+
+ <sect2>
+ <title>Changes</title>
+
+ <itemizedlist>
+
+ <listitem>
+<!--
+Author: Tom Lane <tgl@sss.pgh.pa.us>
+Branch: master [0e758ae89] 2022-11-07 11:36:45 -0500
+Branch: REL_15_STABLE [5fe0ab420] 2022-11-07 11:36:45 -0500
+-->
+ <para>
+ Fix failure to remove non-first segments of large tables
+ (Tom Lane)
+ </para>
+
+ <para>
+ <productname>PostgreSQL</productname> splits large tables into
+ multiple files (normally with 1GB per file). The logic for dropping
+ a table was broken and would miss removing all but the first such
+ file, in two cases: drops of temporary tables and WAL replay of
+ drops of regular tables. Applications that routinely create
+ multi-gigabyte temporary tables could suffer significant disk space
+ leakage.
+ </para>
+
+ <para>
+ Orphaned temporary-table files are removed during postmaster start,
+ so the mere act of updating to 15.1 is sufficient to clear any
+ leaked temporary-table storage. However, if you suffered any
+ database crashes while using 15.0, and there might have been
+ large tables dropped just before such crashes, it's advisable
+ to check the database directories for files named according to the
+ pattern
+ <literal><replaceable>NNNN</replaceable>.<replaceable>NN</replaceable></literal>.
+ If there is no matching file named
+ just <literal><replaceable>NNNN</replaceable></literal> (without
+ the <literal>.<replaceable>NN</replaceable></literal> suffix), these
+ files should be removed manually.
+ </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 [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 [cba4e78f3] 2022-10-15 19:24:26 +0200
+Branch: REL_15_STABLE [16d11d684] 2022-10-15 19:24:26 +0200
+-->
+ <para>
+ Prevent use of <command>MERGE</command> on a partitioned table with
+ foreign-table partitions (&Aacute;lvaro Herrera)
+ </para>
+
+ <para>
+ The case isn't supported, and previously threw an incomprehensible
+ error.
+ </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: Tom Lane <tgl@sss.pgh.pa.us>
+Branch: master [f4857082b] 2022-11-01 14:34:44 -0400
+Branch: REL_15_STABLE [1f1865e90] 2022-11-01 14:34:44 -0400
+-->
+ <para>
+ Fix planner failure with extended statistics on partitioned or
+ inherited tables (Richard Guo, Justin Pryzby)
+ </para>
+
+ <para>
+ Some cases failed with <quote>cache lookup failed for statistics
+ object</quote>.
+ </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: 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: 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: Michael Paquier <michael@paquier.xyz>
+Branch: master [9668c4a66] 2022-10-19 14:06:56 +0900
+Branch: REL_15_STABLE [5d2a47a29] 2022-10-19 14:07:01 +0900
+-->
+ <para>
+ Avoid double call of the shutdown callback of an archiver module
+ (Nathan Bossart, Bharath Rupireddy)
+ </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: 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: Peter Eisentraut <peter@eisentraut.org>
+Branch: master [2598b76bf] 2022-10-22 09:42:52 +0200
+Branch: REL_15_STABLE [4a6de748d] 2022-10-22 09:41:38 +0200
+-->
+ <para>
+ Fix <application>psql</application>'s exit status when a
+ command-line query is canceled (Peter Eisentraut)
+ </para>
+
+ <para>
+ <literal>psql -c <replaceable>query</replaceable></literal> would
+ exit successfully if the query was canceled. Fix it to exit with
+ nonzero status, as in other error cases.
+ </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 [26ee7fb36] 2022-11-02 11:30:04 -0400
+Branch: REL_15_STABLE [0eede9625] 2022-11-02 11:30:04 -0400
+-->
+ <para>
+ Fix <application>pg_dump</application>'s failure to dump comments
+ attached to some <literal>CHECK</literal> constraints (Tom Lane)
+ </para>
+ </listitem>
+
+ <listitem>
+<!--
+Author: Tom Lane <tgl@sss.pgh.pa.us>
+Branch: master [34fa0ddae] 2022-11-04 10:39:52 -0400
+Branch: REL_15_STABLE [2c6d43650] 2022-11-04 10:39:52 -0400
+-->
+ <para>
+ Fix <command>CREATE DATABASE</command> to allow
+ its <literal>oid</literal> parameter to exceed
+ 2<superscript>31</superscript> (Tom Lane)
+ </para>
+
+ <para>
+ This oversight prevented <application>pg_upgrade</application> from
+ succeeding when the source installation contained databases with
+ OIDs larger than that.
+ </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: 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: 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-15">
+ <title>Release 15</title>
+
+ <formalpara>
+ <title>Release date:</title>
+ <para>2022-10-13</para>
+ </formalpara>
+
+ <sect2>
+ <title>Overview</title>
+
+ <para>
+ <productname>PostgreSQL</productname> 15 contains many new features
+ and enhancements, including:
+ </para>
+
+ <itemizedlist>
+ <listitem>
+ <para>
+ Support for the <acronym>SQL</acronym>
+ <link linkend="sql-merge"><command>MERGE</command></link> command.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Selective publication of tables' contents within
+ <link linkend="logical-replication">logical replication</link>
+ publications, through the ability to specify column lists and
+ row filter conditions.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ More options for compression, including support for Zstandard (zstd)
+ compression. This includes support for performing compression on
+ the server side during
+ <link linkend="app-pgbasebackup"><application>pg_basebackup</application></link>.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Support for structured <link linkend="guc-log-destination">server
+ log output</link> using the <acronym>JSON</acronym> format.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Performance improvements, particularly for in-memory and on-disk
+ sorting.
+ </para>
+ </listitem>
+ </itemizedlist>
+
+ <para>
+ The above items and other new features of
+ <productname>PostgreSQL</productname> 15 are explained in more detail
+ in the sections below.
+ </para>
+
+ </sect2>
+
+ <sect2>
+
+ <title>Migration to Version 15</title>
+
+ <para>
+ A dump/restore using <xref linkend="app-pg-dumpall"/> or use of
+ <xref linkend="pgupgrade"/> or logical replication is required for
+ those wishing to migrate data from any previous release. See <xref
+ linkend="upgrading"/> for general information on migrating to new
+ major releases.
+ </para>
+
+ <para>
+ Version 15 contains a number of changes that may affect compatibility
+ with previous releases. Observe the following incompatibilities:
+ </para>
+
+ <itemizedlist>
+
+<!--
+Author: Noah Misch <noah@leadboat.com>
+2021-09-09 [b073c3ccd] Revoke PUBLIC CREATE from public schema, now owned by pg
+-->
+
+ <listitem>
+ <para>
+ Remove <literal>PUBLIC</literal> creation permission on the <link
+ linkend="ddl-schemas-public"><literal>public</literal> schema</link>
+ (Noah Misch)
+ </para>
+
+ <para>
+ The new default is one of the secure schema usage patterns that <xref
+ linkend="ddl-schemas-patterns"/> has recommended since the security
+ release for CVE-2018-1058. The change applies to new database
+ clusters and to newly-created databases in existing clusters.
+ Upgrading a cluster or restoring a database dump will preserve
+ <literal>public</literal>'s existing permissions.
+ </para>
+
+ <para>
+ For existing databases, especially those having multiple users,
+ consider revoking <literal>CREATE</literal> permission on
+ the <literal>public</literal> schema to adopt this new default.
+ For new databases having no need to defend against insider threats,
+ granting <literal>CREATE</literal> permission will yield the behavior
+ of prior releases.
+ </para>
+ </listitem>
+
+<!--
+Author: Noah Misch <noah@leadboat.com>
+2021-09-09 [b073c3ccd] Revoke PUBLIC CREATE from public schema, now owned by pg
+-->
+
+ <listitem>
+ <para>
+ Change the owner of the <literal>public</literal> schema to be the
+ new <literal>pg_database_owner</literal> role (Noah Misch)
+ </para>
+
+ <para>
+ This allows each database's owner to have ownership privileges on
+ the <literal>public</literal> schema within their database.
+ Previously it was owned by the bootstrap superuser, so that
+ non-superuser database owners could not do anything with it.
+ </para>
+
+ <para>
+ This change applies to new database clusters and to newly-created
+ databases in existing clusters.
+ Upgrading a cluster or restoring a database dump will preserve
+ <literal>public</literal>'s existing ownership specification.
+ </para>
+ </listitem>
+
+<!--
+Author: Stephen Frost <sfrost@snowman.net>
+2022-04-06 [39969e2a1] Remove exclusive backup mode
+-->
+
+ <listitem>
+ <para>
+ Remove long-deprecated <link linkend="backup-base-backup">exclusive
+ backup mode</link> (David Steele, Nathan Bossart)
+ </para>
+
+ <para>
+ If the database server stops abruptly while in this mode, the
+ server could fail to start. The non-exclusive backup mode is
+ considered superior for all purposes. Functions
+ <function>pg_start_backup()</function>/<function>pg_stop_backup()</function>
+ have been renamed to
+ <function>pg_backup_start()</function>/<function>pg_backup_stop()</function>,
+ and the functions <function>pg_backup_start_time()</function>
+ and <function>pg_is_in_backup()</function> have been removed.
+ </para>
+ </listitem>
+
+<!--
+Author: Peter Geoghegan <pg@bowt.ie>
+2022-02-16 [8f388f6f5] Increase hash_mem_multiplier default to 2.0.
+-->
+
+ <listitem>
+ <para>
+ Increase <link
+ linkend="guc-hash-mem-multiplier"><varname>hash_mem_multiplier</varname></link>
+ default to 2.0 (Peter Geoghegan)
+ </para>
+
+ <para>
+ This allows query hash operations to use more
+ <link linkend="guc-work-mem"><varname>work_mem</varname></link>
+ memory than other operations.
+ </para>
+ </listitem>
+
+<!--
+Author: Andres Freund <andres@anarazel.de>
+2022-03-07 [76a29adee] plpython: Remove plpythonu, plpython2u and associated tr
+-->
+
+ <listitem>
+ <para>
+ Remove server-side language <link
+ linkend="plpython"><literal>plpython2u</literal></link> and generic
+ Python language <literal>plpythonu</literal> (Andres Freund)
+ </para>
+
+ <para>
+ Python 2.x is no longer supported. While the original intent of
+ <literal>plpythonu</literal> was that it could eventually refer
+ to <literal>plpython3u</literal>, changing it now seems more likely
+ to cause problems than solve them, so it's just been removed.
+ </para>
+ </listitem>
+
+<!--
+Author: Tom Lane <tgl@sss.pgh.pa.us>
+2021-11-06 [cbe25dcff] Disallow making an empty lexeme via array_to_tsvector().
+-->
+
+ <listitem>
+ <para>
+ Generate an error if <link
+ linkend="textsearch-functions-table"><function>array_to_tsvector()</function></link>
+ is passed an empty-string array element (Jean-Christophe Arnu)
+ </para>
+
+ <para>
+ This is prohibited because lexemes should never be empty. Users of
+ previous Postgres releases should verify that no empty lexemes
+ are stored because they can lead to dump/restore failures and
+ inconsistent results.
+ </para>
+ </listitem>
+
+<!--
+Author: Peter Eisentraut <peter@eisentraut.org>
+2021-12-06 [e9e63b702] Fix inappropriate uses of PG_GETARG_UINT32()
+-->
+
+ <listitem>
+ <para>
+ Generate an error when <link
+ linkend="functions-string-other"><function>chr()</function></link>
+ is supplied with a negative argument (Peter Eisentraut)
+ </para>
+ </listitem>
+
+<!--
+Author: Tom Lane <tgl@sss.pgh.pa.us>
+2022-02-15 [2523928b2] Reject change of output-column collation in CREATE OR RE
+-->
+
+ <listitem>
+ <para>
+ Prevent <link linkend="sql-createview"><command>CREATE OR REPLACE
+ VIEW</command></link> from changing the collation of an output column
+ (Tom Lane)
+ </para>
+ </listitem>
+
+<!--
+Author: Peter Eisentraut <peter@eisentraut.org>
+2022-01-12 [a18b6d2dc] ecpg: Catch zero-length Unicode identifiers correctly
+-->
+
+ <listitem>
+ <para>
+ Disallow zero-length <link
+ linkend="sql-syntax-identifiers">Unicode identifiers</link>,
+ e.g., <literal>U&amp;""</literal>
+ (Peter Eisentraut)
+ </para>
+
+ <para>
+ Non-Unicode zero-length identifiers were already disallowed.
+ </para>
+ </listitem>
+
+<!--
+Author: Peter Eisentraut <peter@eisentraut.org>
+2022-02-16 [2549f0661] Reject trailing junk after numeric literals
+-->
+
+ <listitem>
+ <para>
+ Prevent <link linkend="sql-syntax-constants-numeric">numeric
+ literals</link> from having non-numeric trailing characters (Peter
+ Eisentraut)
+ </para>
+
+ <para>
+ Previously, query text like <literal>123abc</literal> would be
+ interpreted as <literal>123</literal> followed
+ by a separate token <literal>abc</literal>.
+ </para>
+ </listitem>
+
+<!--
+Author: Peter Eisentraut <peter@eisentraut.org>
+2022-03-28 [e26114c81] Make JSON path numeric literals more correct
+-->
+
+ <listitem>
+ <para>
+ Adjust <link linkend="datatype-json"><acronym>JSON</acronym></link>
+ numeric literal processing to match the
+ <acronym>SQL</acronym>/<acronym>JSON</acronym>-standard (Peter
+ Eisentraut)
+ </para>
+
+ <para>
+ This accepts numeric formats like <literal>.1</literal> and
+ <literal>1.</literal>, and disallows trailing junk after numeric
+ literals, like <literal>1.type()</literal>.
+ </para>
+ </listitem>
+
+<!--
+Author: Bruce Momjian <bruce@momjian.us>
+2021-08-03 [95ab1e0a9] interval: round values when spilling to months
+-->
+
+ <listitem>
+ <para>
+ When <link linkend="datatype-datetime"><type>interval</type></link>
+ input provides a fractional value for a unit greater than months,
+ round to the nearest month (Bruce Momjian)
+ </para>
+
+ <para>
+ For example, convert <literal>1.99 years</literal> to <literal>2
+ years</literal>, not <literal>1 year 11 months</literal> as before.
+ </para>
+ </listitem>
+
+<!--
+Author: Tom Lane <tgl@sss.pgh.pa.us>
+2022-04-03 [591e088dd] Fix portability issues in datetime parsing.
+-->
+
+ <listitem>
+ <para>
+ Improve consistency of <type>interval</type> parsing with trailing
+ periods (Tom Lane)
+ </para>
+
+ <para>
+ Numbers with trailing periods were rejected on some platforms.
+ </para>
+ </listitem>
+
+<!--
+Author: Tom Lane <tgl@sss.pgh.pa.us>
+2022-01-19 [a3d6264bb] interval_out() must be marked STABLE, not IMMUTABLE.
+-->
+
+ <listitem>
+ <para>
+ Mark the <type>interval</type> output
+ function as stable, not immutable, since it depends on <link
+ linkend="guc-intervalstyle"><varname>IntervalStyle</varname></link>
+ (Tom Lane)
+ </para>
+
+ <para>
+ This will, for example, cause creation of indexes relying on the
+ text output of <type>interval</type> values to fail.
+ </para>
+ </listitem>
+
+<!--
+Author: Tom Lane <tgl@sss.pgh.pa.us>
+2022-02-28 [54bd1e43c] Handle integer overflow in interval justification functi
+-->
+
+ <listitem>
+ <para>
+ Detect integer overflow in <link
+ linkend="functions-datetime-table">interval justification
+ functions</link> (Joe Koshakow)
+ </para>
+
+ <para>
+ The affected functions are <function>justify_interval()</function>,
+ <function>justify_hours()</function>, and
+ <function>justify_days()</function>.
+ </para>
+ </listitem>
+
+<!--
+Author: Tom Lane <tgl@sss.pgh.pa.us>
+2022-08-02 [c034b629c] Change type "char"'s I/O format for non-ASCII characters
+-->
+
+ <listitem>
+ <para>
+ Change the I/O format of type <type>"char"</type> for non-ASCII
+ characters (Tom Lane)
+ </para>
+
+ <para>
+ Bytes with the high bit set are now output as a backslash and three
+ octal digits, to avoid encoding issues.
+ </para>
+ </listitem>
+
+<!--
+Author: Robert Haas <rhaas@postgresql.org>
+2022-03-28 [79de9842a] Remove the ability of a role to administer itself.
+-->
+
+ <listitem>
+ <para>
+ Remove the default <link linkend="sql-createrole"><literal>ADMIN
+ OPTION</literal></link> privilege a login role has on its own role
+ membership (Robert Haas)
+ </para>
+
+ <para>
+ Previously, a login role could add/remove members of its own role,
+ even without <literal>ADMIN OPTION</literal> privilege.
+ </para>
+ </listitem>
+
+<!--
+Author: Jeff Davis <jdavis@postgresql.org>
+2022-01-07 [a2ab9c06e] Respect permissions within logical replication.
+-->
+
+ <listitem>
+ <para>
+ Allow <link linkend="logical-replication">logical replication</link>
+ to run as the owner of the subscription (Mark Dilger)
+ </para>
+
+ <para>
+ Because row-level security policies are not checked, only superusers,
+ roles with <literal>bypassrls</literal>, and table owners can
+ replicate into tables with row-level security policies.
+ </para>
+ </listitem>
+
+<!--
+Author: Jeff Davis <jdavis@postgresql.org>
+2022-01-08 [96a6f11c0] More cleanup of a2ab9c06ea.
+-->
+
+ <listitem>
+ <para>
+ Prevent <command>UPDATE</command> and <command>DELETE</command>
+ <link linkend="logical-replication">logical replication</link>
+ operations on tables where the subscription owner does not have
+ <command>SELECT</command> permission on the table (Jeff Davis)
+ </para>
+
+ <para>
+ <command>UPDATE</command> and <command>DELETE</command> commands
+ typically involve reading the table as well, so require the
+ subscription owner to have table <command>SELECT</command>
+ permission.
+ </para>
+ </listitem>
+
+<!--
+Author: Tom Lane <tgl@sss.pgh.pa.us>
+2021-07-27 [48c5c9068] Use the "pg_temp" schema alias in EXPLAIN and related ou
+-->
+
+ <listitem>
+ <para>
+ When <link linkend="sql-explain"><command>EXPLAIN</command></link>
+ references the session's temporary object schema, refer to it as
+ <literal>pg_temp</literal> (Amul Sul)
+ </para>
+
+ <para>
+ Previously the actual schema name was reported, leading to
+ inconsistencies across sessions.
+ </para>
+ </listitem>
+
+<!--
+Author: Tom Lane <tgl@sss.pgh.pa.us>
+2022-03-24 [ce95c5437] Fix pg_statio_all_tables view for multiple TOAST indexes
+-->
+
+ <listitem>
+ <para>
+ Fix <link
+ linkend="monitoring-pg-statio-all-tables-view"><structname>pg_statio_all_tables</structname></link>
+ to sum values for the rare case of <acronym>TOAST</acronym> tables
+ with multiple indexes (Andrei Zubkov)
+ </para>
+
+ <para>
+ Previously such cases would show one row for each index.
+ </para>
+ </listitem>
+
+<!--
+Author: Peter Eisentraut <peter@eisentraut.org>
+2021-12-01 [75d22069e] Warning on SET of nonexisting setting with a prefix rese
+Author: Tom Lane <tgl@sss.pgh.pa.us>
+2021-12-27 [2ed8a8cc5] Rethink handling of settings with a prefix reserved by a
+Author: Tom Lane <tgl@sss.pgh.pa.us>
+2022-02-21 [88103567c] Disallow setting bogus GUCs within an extension's reserv
+-->
+
+ <listitem>
+ <para>
+ Disallow setting <link linkend="runtime-config-custom">custom
+ options</link> that match the name of an installed extension, but
+ are not one of the extension's declared variables
+ (Florin Irion, Tom Lane)
+ </para>
+
+ <para>
+ This change causes any such pre-existing variables to be deleted
+ during extension load, and then prevents new ones from being created
+ later in the session. The intent is to prevent confusion about
+ whether a variable is associated with an extension or not.
+ </para>
+ </listitem>
+
+<!--
+Author: Andres Freund <andres@anarazel.de>
+2022-04-06 [6f0cf8787] pgstat: remove stats_temp_directory.
+-->
+
+ <listitem>
+ <para>
+ Remove obsolete server variable
+ <varname>stats_temp_directory</varname> (Andres Freund, Kyotaro
+ Horiguchi)
+ </para>
+ </listitem>
+
+<!--
+Author: Tom Lane <tgl@sss.pgh.pa.us>
+2021-11-28 [3804539e4] Replace random(), pg_erand48(), etc with a better PRNG A
+Author: Tom Lane <tgl@sss.pgh.pa.us>
+2022-04-12 [d4f109e4a] Doc: update description of random() function.
+-->
+
+ <listitem>
+ <para>
+ Improve the algorithm used to compute <link
+ linkend="functions-math-random-table"><function>random()</function></link>
+ (Fabien Coelho)
+ </para>
+
+ <para>
+ This will cause <function>random()</function>'s results to differ
+ from what was emitted by prior versions, even for the same seed
+ value.
+ </para>
+ </listitem>
+
+<!--
+Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
+2022-09-23 [bd8ac900d] Remove PQsendQuery support in pipeline mode
+-->
+
+ <listitem>
+ <para>
+ <application>libpq</application>'s <link
+ linkend="libpq-PQsendQuery"><function>PQsendQuery()</function></link>
+ function is no longer supported in pipeline mode (Álvaro Herrera)
+ </para>
+
+ <para>
+ Applications that are using that combination will need to be
+ modified to use <function>PQsendQueryParams()</function> instead.
+ </para>
+ </listitem>
+
+<!--
+Author: Tom Lane <tgl@sss.pgh.pa.us>
+2022-01-09 [376ce3e40] Prefer $HOME when looking up the current user's home dir
+-->
+
+ <listitem>
+ <para>
+ On non-Windows platforms, consult the <envar>HOME</envar> environment
+ variable to find the user's home directory (Anders Kaseorg)
+ </para>
+
+ <para>
+ If <envar>HOME</envar> is empty or unset, fall back to the previous
+ method of checking the <literal>&lt;pwd.h&gt;</literal> database.
+ This change affects <application>libpq</application> (for example,
+ while looking up <filename>~/.pgpass</filename>) as well as various
+ client application programs.
+ </para>
+ </listitem>
+
+<!--
+Author: Tom Lane <tgl@sss.pgh.pa.us>
+2021-12-15 [2a712066d] Remove pg_dump's - -no-synchronized-snapshots switch.
+-->
+
+ <listitem>
+ <para>
+ Remove <link
+ linkend="app-pgdump"><application>pg_dump</application></link>'s
+ <option>--no-synchronized-snapshots</option> option (Tom Lane)
+ </para>
+
+ <para>
+ All still-supported server versions support synchronized snapshots,
+ so there's no longer a need for this option.
+ </para>
+ </listitem>
+
+<!--
+Author: Michael Paquier <michael@paquier.xyz>
+2022-06-15 [a3ff08e0b] Tweak behavior of psql - -single-transaction depending
+-->
+
+ <listitem>
+ <para>
+ After an error is detected in <link
+ linkend="app-psql"><application>psql</application></link>'s
+ <option>--single-transaction</option> mode, change the
+ final <command>COMMIT</command> command
+ to <command>ROLLBACK</command> only
+ if <varname>ON_ERROR_STOP</varname> is set (Michael Paquier)
+ </para>
+ </listitem>
+
+<!--
+Author: Tom Lane <tgl@sss.pgh.pa.us>
+2021-11-12 [f8abb0f5e] postgres_fdw: suppress casts on constants in limited cas
+-->
+
+ <listitem>
+ <para>
+ Avoid unnecessary casting of constants in queries sent by <link
+ linkend="postgres-fdw">postgres_fdw</link> (Dian Fay)
+ </para>
+
+ <para>
+ When column types are intentionally different between local and
+ remote databases, such casts could cause errors.
+ </para>
+ </listitem>
+
+<!--
+Author: Tom Lane <tgl@sss.pgh.pa.us>
+2022-02-14 [fd2abeb7c] Delete contrib/xml2's legacy implementation of xml_is_we
+-->
+
+ <listitem>
+ <para>
+ Remove <link linkend="xml2">xml2</link>'s
+ <function>xml_is_well_formed()</function> function (Tom Lane)
+ </para>
+
+ <para>
+ This function has been implemented in the core backend since
+ Postgres 9.1.
+ </para>
+ </listitem>
+
+<!--
+Author: Tom Lane <tgl@sss.pgh.pa.us>
+2021-07-06 [955b3e0f9] Allow CustomScan providers to say whether they support p
+-->
+
+ <listitem>
+ <para>
+ Allow <link linkend="custom-scan">custom scan providers</link>
+ to indicate if they support projections (Sven Klemm)
+ </para>
+
+ <para>
+ The default is now that custom scan providers are assumed to not
+ support projections; those that do will need to be updated for
+ this release.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ </sect2>
+
+ <sect2>
+ <title>Changes</title>
+
+ <para>
+ Below you will find a detailed account of the changes between
+ <productname>PostgreSQL</productname> 15 and the previous major
+ release.
+ </para>
+
+ <sect3>
+ <title>Server</title>
+
+ <itemizedlist>
+
+<!--
+Author: Peter Eisentraut <peter@eisentraut.org>
+2022-02-14 [37851a8b8] Database-level collation version tracking
+-->
+
+ <listitem>
+ <para>
+ Record and check the collation version of each <link
+ linkend="sql-createdatabase">database</link> (Peter Eisentraut)
+ </para>
+
+ <para>
+ This feature is designed to detect collation version
+ changes to avoid index corruption. Function
+ <function>pg_database_collation_actual_version()</function>
+ reports the underlying operating system collation version, and
+ <command>ALTER DATABASE ... REFRESH</command> sets the recorded
+ database collation version to match the operating system collation
+ version.
+ </para>
+ </listitem>
+
+<!--
+Author: Peter Eisentraut <peter@eisentraut.org>
+2022-03-17 [f2553d430] Add option to use ICU as global locale provider
+-->
+
+ <listitem>
+ <para>
+ Allow <link linkend="locale"><acronym>ICU</acronym></link>
+ collations to be set as the default for clusters and databases
+ (Peter Eisentraut)
+ </para>
+
+ <para>
+ Previously, only <application>libc</application>-based
+ collations could be selected at the cluster and database levels.
+ <acronym>ICU</acronym> collations could only be used via explicit
+ <literal>COLLATE</literal> clauses.
+ </para>
+ </listitem>
+
+<!--
+Author: Michael Paquier <michael@paquier.xyz>
+2022-03-29 [a2c84990b] Add system view pg_ident_file_mappings
+-->
+
+ <listitem>
+ <para>
+ Add system view <link
+ linkend="view-pg-ident-file-mappings"><structname>pg_ident_file_mappings</structname></link>
+ to report <filename>pg_ident.conf</filename> information (Julien
+ Rouhaud)
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ <sect4>
+ <title><link linkend="ddl-partitioning">Partitioning</link></title>
+
+ <itemizedlist>
+
+<!--
+Author: David Rowley <drowley@postgresql.org>
+2021-08-03 [475dbd0b7] Track a Bitmapset of non-pruned partitions in RelOptInfo
+-->
+
+ <listitem>
+ <para>
+ Improve planning time for queries referencing partitioned tables
+ (David Rowley)
+ </para>
+
+ <para>
+ This change helps when only a few of many partitions are relevant.
+ </para>
+ </listitem>
+
+<!--
+Author: David Rowley <drowley@postgresql.org>
+2021-08-03 [db632fbca] Allow ordered partition scans in more cases
+-->
+
+ <listitem>
+ <para>
+ Allow ordered scans of partitions to avoid sorting in more cases
+ (David Rowley)
+ </para>
+
+ <para>
+ Previously, a partitioned table with a <literal>DEFAULT</literal>
+ partition or a <literal>LIST</literal> partition containing
+ multiple values could not be used for ordered partition scans.
+ Now they can be used if such partitions are pruned during planning.
+ </para>
+ </listitem>
+
+<!--
+Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
+2022-03-20 [ba9a7e392] Enforce foreign key correctly during cross-partition upd
+-->
+
+ <listitem>
+ <para>
+ Improve foreign key behavior of updates on partitioned tables
+ that move rows between partitions (Amit Langote)
+ </para>
+
+ <para>
+ Previously, such updates ran a delete action on the source
+ partition and an insert action on the target partition.
+ <productname>PostgreSQL</productname> will now run an update action
+ on the partition root, providing cleaner semantics.
+ </para>
+ </listitem>
+
+<!--
+Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
+2022-04-02 [cfdd03f45] Allow CLUSTER on partitioned tables
+Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
+2022-04-14 [3f19e176a] Have CLUSTER ignore partitions not owned by caller
+-->
+
+ <listitem>
+ <para>
+ Allow <link linkend="sql-cluster"><command>CLUSTER</command></link>
+ on partitioned tables (Justin Pryzby)
+ </para>
+ </listitem>
+
+<!--
+Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
+2021-07-22 [80ba4bb38] Make ALTER TRIGGER RENAME consistent for partitioned tab
+-->
+
+ <listitem>
+ <para>
+ Fix <link linkend="sql-altertable"><command>ALTER TRIGGER
+ RENAME</command></link> on partitioned tables to properly rename
+ triggers on all partitions (Arne Roland, Álvaro Herrera)
+ </para>
+
+ <para>
+ Also prohibit cloned triggers from being renamed.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ </sect4>
+
+ <sect4>
+ <title>Indexes</title>
+
+ <itemizedlist>
+
+<!--
+Author: Peter Geoghegan <pg@bowt.ie>
+2021-10-02 [2903f1404] Enable deduplication in system catalog indexes.
+-->
+
+ <listitem>
+ <para>
+ Allow btree indexes on system and <link
+ linkend="storage-toast"><acronym>TOAST</acronym></link>
+ tables to efficiently store duplicates (Peter Geoghegan)
+ </para>
+
+ <para>
+ Previously de-duplication was disabled for these types of indexes.
+ </para>
+ </listitem>
+
+<!--
+Author: Alexander Korotkov <akorotkov@postgresql.org>
+2022-02-07 [f1ea98a79] Reduce non-leaf keys overlap in GiST indexes produced by
+-->
+
+ <listitem>
+ <para>
+ Improve lookup performance
+ of <link linkend="gist"><acronym>GiST</acronym></link> indexes
+ that were built using sorting (Aliaksandr Kalenik, Sergei
+ Shoulbakov, Andrey Borodin)
+ </para>
+ </listitem>
+
+<!--
+Author: Peter Eisentraut <peter@eisentraut.org>
+2022-02-03 [94aa7cc5f] Add UNIQUE null treatment option
+-->
+
+ <listitem>
+ <para>
+ Allow unique constraints and indexes to treat
+ <literal>NULL</literal> values as not distinct (Peter Eisentraut)
+ </para>
+
+ <para>
+ Previously <literal>NULL</literal> entries were always treated
+ as distinct values, but this can now be changed by creating
+ constraints and indexes using <literal>UNIQUE NULLS NOT
+ DISTINCT</literal>.
+ </para>
+ </listitem>
+
+<!--
+Author: Tom Lane <tgl@sss.pgh.pa.us>
+2021-11-17 [a148f8bc0] Add a planner support function for starts_with().
+-->
+
+ <listitem>
+ <para>
+ Allow the <link
+ linkend="functions-string-other"><literal>^@</literal></link>
+ starts-with operator and the <function>starts_with()</function>
+ function to use btree indexes if using the C collation (Tom Lane)
+ </para>
+
+ <para>
+ Previously these could only use <link
+ linkend="spgist"><acronym>SP-GiST</acronym></link> indexes.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ </sect4>
+
+ <sect4>
+ <title>Optimizer</title>
+
+ <itemizedlist>
+
+<!--
+Author: Tomas Vondra <tomas.vondra@postgresql.org>
+2022-01-16 [269b532ae] Add stxdinherit flag to pg_statistic_ext_data
+-->
+
+ <listitem>
+ <para>
+ Allow <link linkend="sql-createstatistics">extended
+ statistics</link> to record statistics for a parent with all its
+ children (Tomas Vondra, Justin Pryzby)
+ </para>
+
+ <para>
+ Regular statistics already tracked parent and
+ parent-plus-all-children statistics separately.
+ </para>
+ </listitem>
+
+<!--
+Author: Tom Lane <tgl@sss.pgh.pa.us>
+2022-03-24 [0bd7af082] Invent recursive_worktable_factor GUC to replace hard-wi
+-->
+
+ <listitem>
+ <para>
+ Add server variable <link
+ linkend="guc-recursive-worktable-factor"><varname>recursive_worktable_factor</varname></link>
+ to allow the user to specify the expected size of the working
+ table of a <link linkend="queries-with-recursive">recursive
+ query</link> (Simon Riggs)
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ </sect4>
+
+ <sect4>
+ <title>General Performance</title>
+
+ <itemizedlist>
+
+<!--
+Author: David Rowley <drowley@postgresql.org>
+2021-07-07 [29f45e299] Use a hash table to speed up NOT IN(values)
+-->
+
+ <listitem>
+ <para>
+ Allow hash lookup for <link
+ linkend="functions-subquery-notin"><literal>NOT IN</literal></link>
+ clauses with many constants (David Rowley, James Coleman)
+ </para>
+
+ <para>
+ Previously the code always sequentially scanned the list of values.
+ </para>
+ </listitem>
+
+<!--
+Author: David Rowley <drowley@postgresql.org>
+2021-08-22 [22c4e88eb] Allow parallel DISTINCT
+-->
+
+ <listitem>
+ <para>
+ Allow <command>SELECT DISTINCT</command> to be parallelized
+ (David Rowley)
+ </para>
+ </listitem>
+
+<!--
+Author: John Naylor <john.naylor@postgresql.org>
+2021-12-20 [911588a3f] Add fast path for validating UTF-8 text
+-->
+
+ <listitem>
+ <para>
+ Speed up encoding validation of <acronym>UTF</acronym>-8 text
+ by processing 16 bytes at a time
+ (John Naylor, Heikki Linnakangas)
+ </para>
+
+ <para>
+ This will improve text-heavy operations like <link
+ linkend="sql-copy"><command>COPY FROM</command></link>.
+ </para>
+ </listitem>
+
+<!--
+Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
+2021-10-18 [65014000b] Replace polyphase merge algorithm with a simple balanced
+Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
+2021-10-25 [166f94377] Clarify the logic in a few places in the new balanced me
+-->
+
+ <listitem>
+ <para>
+ Improve performance for sorts that exceed <link
+ linkend="guc-work-mem"><varname>work_mem</varname></link>
+ (Heikki Linnakangas)
+ </para>
+
+ <para>
+ When the sort data no longer fits in <varname>work_mem</varname>,
+ switch to a batch sorting algorithm that uses more output streams
+ than before.
+ </para>
+ </listitem>
+
+<!--
+Author: David Rowley <drowley@postgresql.org>
+2021-07-22 [91e9e89dc] Make nodeSort.c use Datum sorts for single column sorts
+Author: David Rowley <drowley@postgresql.org>
+2022-04-04 [40af10b57] Use Generation memory contexts to store tuples in sorts
+Author: John Naylor <john.naylor@postgresql.org>
+2022-04-02 [697492434] Specialize tuplesort routines for different kinds of abb
+-->
+
+ <listitem>
+ <para>
+ Improve performance and reduce memory consumption of in-memory
+ sorts (Ronan Dunklau, David Rowley, Thomas Munro, John Naylor)
+ </para>
+ </listitem>
+
+<!--
+Author: Michael Paquier <michael@paquier.xyz>
+2021-06-29 [4035cd5d4] Add support for LZ4 with compression of full-page writes
+Author: Michael Paquier <michael@paquier.xyz>
+2022-03-11 [e9537321a] Add support for zstd with compression of full-page write
+-->
+
+ <listitem>
+ <para>
+ Allow <acronym>WAL</acronym> <link
+ linkend="guc-full-page-writes">full page writes</link> to use
+ LZ4 and Zstandard compression (Andrey Borodin, Justin Pryzby)
+ </para>
+
+ <para>
+ This is controlled by the <link
+ linkend="guc-wal-compression"><varname>wal_compression</varname></link>
+ server setting.
+ </para>
+ </listitem>
+
+<!--
+Author: Thomas Munro <tmunro@postgresql.org>
+2021-07-19 [2dbe89057] Support direct I/O on macOS.
+-->
+
+ <listitem>
+ <para>
+ Add support for writing <acronym>WAL</acronym>
+ using <link linkend="guc-wal-sync-method">direct I/O</link> on
+ macOS (Thomas Munro)
+ </para>
+
+ <para>
+ This only works if <literal>max_wal_senders = 0</literal>
+ and <literal>wal_level = minimal</literal>.
+ </para>
+ </listitem>
+
+<!--
+Author: Peter Geoghegan <pg@bowt.ie>
+2022-04-03 [0b018faba] Set relfrozenxid to oldest extant XID seen by VACUUM.
+-->
+
+ <listitem>
+ <para>
+ Allow <link linkend="routine-vacuuming">vacuum</link> to be more
+ aggressive in setting the oldest frozen and multi transaction id
+ (Peter Geoghegan)
+ </para>
+ </listitem>
+
+<!--
+Author: Etsuro Fujita <efujita@postgresql.org>
+2022-04-06 [c2bb02bc2] Allow asynchronous execution in more cases.
+-->
+
+ <listitem>
+ <para>
+ Allow a query referencing multiple <link
+ linkend="ddl-foreign-data">foreign tables</link> to perform
+ parallel foreign table scans in more cases (Andrey Lepikhov,
+ Etsuro Fujita)
+ </para>
+ </listitem>
+
+<!--
+Author: David Rowley <drowley@postgresql.org>
+2022-04-08 [9d9c02ccd] Teach planner and executor about monotonic window funcs
+-->
+
+ <listitem>
+ <para>
+ Improve the performance of <link linkend="functions-window">window
+ functions</link> that use <function>row_number()</function>,
+ <function>rank()</function>, <function>dense_rank()</function> and
+ <function>count()</function>
+ (David Rowley)
+ </para>
+ </listitem>
+
+<!--
+Author: Tom Lane <tgl@sss.pgh.pa.us>
+2022-04-06 [a82a5eee3] Use ISB as a spin-delay instruction on ARM64.
+-->
+
+ <listitem>
+ <para>
+ Improve the performance of spinlocks on high-core-count ARM64
+ systems (Geoffrey Blake)
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ </sect4>
+
+ <sect4>
+ <title>Monitoring</title>
+
+ <itemizedlist>
+
+<!--
+Author: Robert Haas <rhaas@postgresql.org>
+2021-12-13 [64da07c41] Default to log_checkpoints=on, log_autovacuum_min_durati
+-->
+
+ <listitem>
+ <para>
+ Enable default logging of checkpoints and slow autovacuum
+ operations (Bharath Rupireddy)
+ </para>
+
+ <para>
+ This changes the default of <link
+ linkend="guc-log-checkpoints"><varname>log_checkpoints</varname></link>
+ to <literal>on</literal> and that of <link
+ linkend="guc-log-autovacuum-min-duration"><varname>log_autovacuum_min_duration</varname></link>
+ to 10 minutes. This will cause even an idle server to generate
+ some log output, which might cause problems on
+ resource-constrained servers without log file rotation. These
+ defaults should be changed in such cases.
+ </para>
+ </listitem>
+
+<!--
+Author: Robert Haas <rhaas@postgresql.org>
+2021-10-25 [9ce346eab] Report progress of startup operations that take a long t
+Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
+2021-11-05 [e543906e2] Document default and changeability of log_startup_progre
+-->
+
+ <listitem>
+ <para>
+ Generate progress messages in the server log during slow server
+ starts (Nitin Jadhav, Robert Haas)
+ </para>
+
+ <para>
+ The messages report the cause of the delay. The time interval for
+ notification is controlled by the new server variable <link
+ linkend="guc-log-startup-progress-interval"><varname>log_startup_progress_interval</varname></link>.
+ </para>
+ </listitem>
+
+<!--
+Author: Andres Freund <andres@anarazel.de>
+2022-04-06 [5891c7a8e] pgstat: store statistics in shared memory.
+Author: Andres Freund <andres@anarazel.de>
+2022-04-07 [b3abca681] pgstat: Update docs to match the shared memory stats rea
+-->
+
+ <listitem>
+ <para>
+ Store <link linkend="monitoring-stats">cumulative statistics
+ system</link> data in shared memory (Kyotaro Horiguchi, Andres
+ Freund, Melanie Plageman)
+ </para>
+
+ <para>
+ Previously this data was sent to a statistics collector process
+ via <acronym>UDP</acronym> packets, and could only be read by
+ sessions after transferring it via the file system. There is no
+ longer a separate statistics collector process.
+ </para>
+ </listitem>
+
+<!--
+Author: Peter Geoghegan <pg@bowt.ie>
+2022-02-11 [872770fd6] Add VACUUM instrumentation for scanned pages, relfrozenx
+Author: Peter Geoghegan <pg@bowt.ie>
+2022-03-13 [6e20f4600] VACUUM VERBOSE: tweak scanned_pages logic.
+Author: Peter Geoghegan <pg@bowt.ie>
+2022-04-15 [bdb71dbe8] VACUUM VERBOSE: Show dead items for an empty table.
+-->
+
+ <listitem>
+ <para>
+ Add additional information to <command>VACUUM VERBOSE</command>
+ and autovacuum logging messages (Peter Geoghegan)
+ </para>
+ </listitem>
+
+<!--
+Author: Michael Paquier <michael@paquier.xyz>
+2022-04-08 [efb0ef909] Track I/O timing for temporary file blocks in EXPLAIN (B
+-->
+
+ <listitem>
+ <para>
+ Add <link linkend="sql-explain"><command>EXPLAIN
+ (BUFFERS)</command></link> output for temporary file block I/O
+ (Masahiko Sawada)
+ </para>
+ </listitem>
+
+<!--
+Author: Michael Paquier <michael@paquier.xyz>
+2022-01-17 [dc686681e] Introduce log_destination=jsonlog
+-->
+
+ <listitem>
+ <para>
+ Allow <link linkend="guc-log-destination">log output</link> in
+ <acronym>JSON</acronym> format (Sehrope Sarkuni, Michael Paquier)
+ </para>
+
+ <para>
+ The new setting is <literal>log_destination = jsonlog</literal>.
+ </para>
+ </listitem>
+
+<!--
+Author: Fujii Masao <fujii@postgresql.org>
+2021-09-02 [e04267844] Enhance pg_stat_reset_single_table_counters function.
+-->
+
+ <listitem>
+ <para>
+ Allow <link
+ linkend="monitoring-stats-funcs-table"><function>pg_stat_reset_single_table_counters()</function></link>
+ to reset the counters of relations shared across all databases
+ (Sadhuprasad Patro)
+ </para>
+ </listitem>
+
+<!--
+Author: Fujii Masao <fujii@postgresql.org>
+2021-11-22 [1b06d7bac] Report wait events for local shell commands like archive
+-->
+
+ <listitem>
+ <para>
+ Add <link linkend="wait-event-table">wait events</link> for local
+ shell commands (Fujii Masao)
+ </para>
+
+ <para>
+ The new wait events are used when calling
+ <varname>archive_command</varname>,
+ <varname>archive_cleanup_command</varname>,
+ <varname>restore_command</varname> and
+ <varname>recovery_end_command</varname>.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ </sect4>
+
+ <sect4>
+ <title>Privileges</title>
+
+ <itemizedlist>
+
+<!--
+Author: Dean Rasheed <dean.a.rasheed@gmail.com>
+2022-03-22 [7faa5fc84] Add support for security invoker views.
+-->
+
+ <listitem>
+ <para>
+ Allow table accesses done by
+ a <link linkend="sql-createview">view</link> to optionally be
+ controlled by privileges of the view's caller (Christoph Heiss)
+ </para>
+
+ <para>
+ Previously, view accesses were always treated as being done by the
+ view's owner. That's still the default.
+ </para>
+ </listitem>
+
+<!--
+Author: Robert Haas <rhaas@postgresql.org>
+2022-01-28 [7f6772317] Adjust server-side backup to depend on pg_write_server_f
+-->
+
+ <listitem>
+ <para>
+ Allow members of the <link
+ linkend="predefined-roles-table"><literal>pg_write_server_files</literal></link>
+ predefined role to perform server-side base backups (Dagfinn
+ Ilmari Mannsåker)
+ </para>
+
+ <para>
+ Previously only superusers could perform such backups.
+ </para>
+ </listitem>
+
+<!--
+Author: Tom Lane <tgl@sss.pgh.pa.us>
+2022-04-06 [a0ffa885e] Allow granting SET and ALTER SYSTEM privileges on GUC pa
+Author: Tom Lane <tgl@sss.pgh.pa.us>
+2022-07-19 [a2944d872] Fix missed corner cases for grantable permissions on GUC
+-->
+
+ <listitem>
+ <para>
+ Allow <link linkend="sql-grant"><command>GRANT</command></link>
+ to grant permissions to change individual server variables via
+ <command>SET</command> and <command>ALTER SYSTEM</command>
+ (Mark Dilger)
+ </para>
+
+ <para>
+ The new function <function>has_parameter_privilege()</function>
+ reports on this privilege.
+ </para>
+ </listitem>
+
+<!--
+Author: Jeff Davis <jdavis@postgresql.org>
+2021-11-09 [4168a4745] Add pg_checkpointer predefined role for CHECKPOINT comma
+Author: Robert Haas <rhaas@postgresql.org>
+2022-07-05 [d3526e59f] Rename pg_checkpointer predefined role to pg_checkpoint.
+-->
+
+ <listitem>
+ <para>
+ Add predefined role <link
+ linkend="predefined-roles-table"><literal>pg_checkpoint</literal></link>
+ that allows members to run <command>CHECKPOINT</command>
+ (Jeff Davis)
+ </para>
+
+ <para>
+ Previously checkpoints could only be run by superusers.
+ </para>
+ </listitem>
+
+<!--
+Author: Jeff Davis <jdavis@postgresql.org>
+2021-10-27 [77ea4f943] Grant memory views to pg_read_all_stats.
+-->
+
+ <listitem>
+ <para>
+ Allow members of the <link
+ linkend="predefined-roles-table"><literal>pg_read_all_stats</literal></link>
+ predefined role to access the views <link
+ linkend="view-pg-backend-memory-contexts"><structname>pg_backend_memory_contexts</structname></link>
+ and <link
+ linkend="view-pg-shmem-allocations"><structname>pg_shmem_allocations</structname></link>
+ (Bharath Rupireddy)
+ </para>
+
+ <para>
+ Previously these views could only be accessed by superusers.
+ </para>
+ </listitem>
+
+<!--
+Author: Jeff Davis <jdavis@postgresql.org>
+2021-10-26 [f0b051e32] Allow GRANT on pg_log_backend_memory_contexts().
+-->
+
+ <listitem>
+ <para>
+ Allow <link linkend="sql-grant"><command>GRANT</command></link>
+ to grant permissions on <link
+ linkend="functions-admin-signal"><function>pg_log_backend_memory_contexts()</function></link>
+ (Jeff Davis)
+ </para>
+
+ <para>
+ Previously this function could only be run by superusers.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ </sect4>
+
+ <sect4>
+ <title>Server Configuration</title>
+
+ <itemizedlist>
+
+<!--
+Author: Michael Paquier <michael@paquier.xyz>
+2021-09-08 [bd1788051] Introduce GUC shared_memory_size
+Author: Michael Paquier <michael@paquier.xyz>
+2021-09-09 [3b231596c] Make shared_memory_size a preset option
+-->
+
+ <listitem>
+ <para>
+ Add server variable <link
+ linkend="guc-shared-memory-size"><varname>shared_memory_size</varname></link>
+ to report the size of allocated shared memory (Nathan Bossart)
+ </para>
+ </listitem>
+
+<!--
+Author: Michael Paquier <michael@paquier.xyz>
+2021-09-21 [43c1c4f65] Introduce GUC shared_memory_size_in_huge_pages
+Author: Michael Paquier <michael@paquier.xyz>
+2022-03-24 [bbd4951b7] doc: Improve postgres command for shared_memory_size_in_
+-->
+
+ <listitem>
+ <para>
+ Add server variable <link
+ linkend="guc-shared-memory-size-in-huge-pages"><varname>shared_memory_size_in_huge_pages</varname></link>
+ to report the number of huge memory pages required (Nathan Bossart)
+ </para>
+
+ <para>
+ This is only supported on Linux.
+ </para>
+ </listitem>
+
+<!--
+Author: Jeff Davis <jdavis@postgresql.org>
+2022-07-20 [2103266a3] Process shared_preload_libraries in single-user mode.
+-->
+
+ <listitem>
+ <para>
+ Honor server variable <link
+ linkend="guc-shared-preload-libraries"><varname>shared_preload_libraries</varname></link>
+ in single-user mode (Jeff Davis)
+ </para>
+
+ <para>
+ This change supports use
+ of <varname>shared_preload_libraries</varname> to load custom
+ access methods and WAL resource managers, which would be essential
+ for database access even in single-user mode.
+ </para>
+ </listitem>
+
+<!--
+Author: Thomas Munro <tmunro@postgresql.org>
+2022-07-02 [a2b0719cc] Default to dynamic_shared_memory_type=sysv on Solaris.
+-->
+
+ <listitem>
+ <para>
+ On Solaris, make the default setting of <link
+ linkend="guc-dynamic-shared-memory-type"><varname>dynamic_shared_memory_type</varname></link>
+ be <literal>sysv</literal> (Thomas Munro)
+ </para>
+
+ <para>
+ The previous default choice, <literal>posix</literal>, can result
+ in spurious failures on this platform.
+ </para>
+ </listitem>
+
+<!--
+Author: Michael Paquier <michael@paquier.xyz>
+2021-09-16 [0c39c2920] Support "postgres -C" with runtime-computed GUCs
+-->
+
+ <listitem>
+ <para>
+ Allow <link linkend="app-postgres"><command>postgres
+ -C</command></link> to properly report runtime-computed values
+ (Nathan Bossart)
+ </para>
+
+ <para>
+ Previously runtime-computed values <link
+ linkend="guc-data-checksums"><varname>data_checksums</varname></link>,
+ <link
+ linkend="guc-wal-segment-size"><varname>wal_segment_size</varname></link>,
+ and <link
+ linkend="guc-data-directory-mode"><varname>data_directory_mode</varname></link>
+ would report values that would not be accurate on the running
+ server. However, this does not work on a running server.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ </sect4>
+
+ </sect3>
+
+ <sect3>
+ <title>Streaming Replication and Recovery</title>
+
+ <itemizedlist>
+
+<!--
+Author: Robert Haas <rhaas@postgresql.org>
+2022-02-11 [dab298471] Add suport for server-side LZ4 base backup compression.
+Author: Robert Haas <rhaas@postgresql.org>
+2022-03-08 [7cf085f07] Add support for zstd base backup compression.
+Author: Robert Haas <rhaas@postgresql.org>
+2022-03-30 [51c0d186d] Allow parallel zstd compression when taking a base backu
+-->
+
+ <listitem>
+ <para>
+ Add support for LZ4 and Zstandard compression of server-side <link
+ linkend="backup-base-backup">base backups</link> (Jeevan Ladhe,
+ Robert Haas)
+ </para>
+ </listitem>
+
+<!--
+Author: Thomas Munro <tmunro@postgresql.org>
+2021-08-02 [7ff23c6d2] Run checkpointer and bgwriter in crash recovery.
+-->
+
+ <listitem>
+ <para>
+ Run the checkpointer and bgwriter processes during crash recovery
+ (Thomas Munro)
+ </para>
+
+ <para>
+ This helps to speed up long crash recoveries.
+ </para>
+ </listitem>
+
+<!--
+Author: Thomas Munro <tmunro@postgresql.org>
+2022-04-07 [5dc0418fa] Prefetch data referenced by the WAL, take II.
+-->
+
+ <listitem>
+ <para>
+ Allow <acronym>WAL</acronym> processing to pre-fetch needed file
+ contents (Thomas Munro)
+ </para>
+
+ <para>
+ This is controlled by the server variable <link
+ linkend="guc-recovery-prefetch"><varname>recovery_prefetch</varname></link>.
+ </para>
+ </listitem>
+
+<!--
+Author: Robert Haas <rhaas@postgresql.org>
+2022-02-03 [5ef1eefd7] Allow archiving via loadable modules.
+-->
+
+ <listitem>
+ <para>
+ Allow archiving via loadable modules (Nathan Bossart)
+ </para>
+
+ <para>
+ Previously, archiving was only done by calling shell commands.
+ The new server variable <link
+ linkend="guc-archive-library"><varname>archive_library</varname></link>
+ can be set to specify a library to be called for archiving.
+ </para>
+ </listitem>
+
+<!--
+Author: Jeff Davis <jdavis@postgresql.org>
+2021-07-09 [8e7811e95] Eliminate replication protocol error related to IDENTIFY
+-->
+
+ <listitem>
+ <para>
+ No longer require <link
+ linkend="protocol-replication"><literal>IDENTIFY_SYSTEM</literal></link>
+ to be run before <literal>START_REPLICATION</literal> (Jeff Davis)
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ <sect4>
+ <title><link linkend="logical-replication">Logical Replication</link></title>
+
+ <itemizedlist>
+
+<!--
+Author: Amit Kapila <akapila@postgresql.org>
+2021-10-27 [5a2832465] Allow publishing the tables of schema.
+Author: Amit Kapila <akapila@postgresql.org>
+2021-12-08 [1a2aaeb0d] Fix changing the ownership of ALL TABLES IN SCHEMA publi
+Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
+2022-09-22 [f256236fb] Remove ALL keyword from TABLES IN SCHEMA for publication
+-->
+
+ <listitem>
+ <para>
+ Allow <link linkend="sql-createpublication">publication</link> of
+ all tables in a schema (Vignesh C, Hou Zhijie, Amit Kapila)
+ </para>
+
+ <para>
+ For example, this syntax is now supported: <literal>CREATE
+ PUBLICATION pub1 FOR TABLES IN SCHEMA s1,s2</literal>.
+ <command>ALTER PUBLICATION</command> supports a similar syntax.
+ Tables added later to the listed schemas will also be replicated.
+ </para>
+ </listitem>
+
+<!--
+Author: Amit Kapila <akapila@postgresql.org>
+2022-02-22 [52e4f0cd4] Allow specifying row filters for logical replication of
+Author: Tomas Vondra <tomas.vondra@postgresql.org>
+2022-03-17 [5a0796622] Fix row filters with multiple publications
+Author: Amit Kapila <akapila@postgresql.org>
+2022-04-18 [676eeb6dd] Add additional documentation for row filters.
+-->
+
+ <listitem>
+ <para>
+ Allow publication content to be filtered using a
+ <literal>WHERE</literal> clause (Hou Zhijie, Euler Taveira,
+ Peter Smith, Ajin Cherian, Tomas Vondra, Amit Kapila)
+ </para>
+
+ <para>
+ Rows not satisfying the <literal>WHERE</literal> clause are not
+ published.
+ </para>
+ </listitem>
+
+<!--
+Author: Tomas Vondra <tomas.vondra@postgresql.org>
+2022-03-26 [923def9a5] Allow specifying column lists for logical replication
+-->
+
+ <listitem>
+ <para>
+ Allow publication content to
+ be restricted to specific columns (Tomas Vondra, Álvaro Herrera,
+ Rahila Syed)
+ </para>
+ </listitem>
+
+<!--
+Author: Amit Kapila <akapila@postgresql.org>
+2022-03-22 [208c5d65b] Add ALTER SUBSCRIPTION ... SKIP.
+-->
+
+ <listitem>
+ <para>
+ Allow skipping of transactions on a subscriber using <link
+ linkend="sql-altersubscription"><command>ALTER SUBSCRIPTION
+ ... SKIP</command></link> (Masahiko Sawada)
+ </para>
+ </listitem>
+
+<!--
+Author: Amit Kapila <akapila@postgresql.org>
+2021-06-30 [cda03cfed] Allow enabling two-phase option via replication protocol
+Author: Amit Kapila <akapila@postgresql.org>
+2021-07-14 [a8fd13cab] Add support for prepared transactions to built-in logica
+Author: Amit Kapila <akapila@postgresql.org>
+2021-08-04 [63cf61cde] Add prepare API support for streaming transactions in lo
+-->
+
+ <listitem>
+ <para>
+ Add support for prepared (two-phase) transactions to logical
+ replication (Peter Smith, Ajin Cherian, Amit Kapila, Nikhil
+ Sontakke, Stas Kelvich)
+ </para>
+
+ <para>
+ The new <link
+ linkend="protocol-replication"><literal>CREATE_REPLICATION_SLOT</literal></link>
+ option is called <literal>TWO_PHASE</literal>.
+ <application>pg_recvlogical</application> now supports a new
+ <option>--two-phase</option> option during slot creation.
+ </para>
+ </listitem>
+
+<!--
+Author: Amit Kapila <akapila@postgresql.org>
+2022-03-30 [d5a9d86d8] Skip empty transactions for logical replication.
+-->
+
+ <listitem>
+ <para>
+ Prevent logical replication of empty transactions (Ajin Cherian,
+ Hou Zhijie, Euler Taveira)
+ </para>
+
+ <para>
+ Previously, publishers would send empty transactions to
+ subscribers if subscribed tables were not modified.
+ </para>
+ </listitem>
+
+<!--
+Author: Michael Paquier <michael@paquier.xyz>
+2021-11-23 [1922d7c6e] Add SQL functions to monitor the directory contents of r
+-->
+
+ <listitem>
+ <para>
+ Add <acronym>SQL</acronym> functions to monitor the directory
+ contents of logical replication slots (Bharath Rupireddy)
+ </para>
+
+ <para>
+ The new functions are <link
+ linkend="functions-admin-genfile-table"><function>pg_ls_logicalsnapdir()</function></link>,
+ <function>pg_ls_logicalmapdir()</function>, and
+ <function>pg_ls_replslotdir()</function>. They can be run by
+ members of the predefined <literal>pg_monitor</literal> role.
+ </para>
+ </listitem>
+
+<!--
+Author: Amit Kapila <akapila@postgresql.org>
+2022-03-14 [705e20f85] Optionally disable subscriptions on error.
+-->
+
+ <listitem>
+ <para>
+ Allow subscribers to stop the application of logical replication changes on error
+ (Osumi Takamichi, Mark Dilger)
+ </para>
+
+ <para>
+ This is enabled with the subscriber option <link
+ linkend="sql-createsubscription"><literal>disable_on_error</literal></link>
+ and avoids possible infinite error loops during stream application.
+ </para>
+ </listitem>
+
+<!--
+Author: Tom Lane <tgl@sss.pgh.pa.us>
+2021-11-02 [f3d4019da] Ensure consistent logical replication of datetime and fl
+-->
+
+ <listitem>
+ <para>
+ Adjust subscriber server variables to match the publisher so
+ datetime and float8 values are interpreted consistently (Japin Li)
+ </para>
+
+ <para>
+ Some publishers might be relying on inconsistent behavior.
+ </para>
+ </listitem>
+
+<!--
+Author: Amit Kapila <akapila@postgresql.org>
+2021-11-30 [8d74fc96d] Add a view to show the stats of subscription workers.
+Author: Amit Kapila <akapila@postgresql.org>
+2022-03-01 [7a8507329] Reconsider pg_stat_subscription_workers view.
+-->
+
+ <listitem>
+ <para>
+ Add system view <link
+ linkend="monitoring-pg-stat-subscription-stats"><structname>pg_stat_subscription_stats</structname></link>
+ to report on subscriber activity (Masahiko Sawada)
+ </para>
+
+ <para>
+ The new function <link
+ linkend="monitoring-stats-functions"><function>pg_stat_reset_subscription_stats()</function></link>
+ allows resetting these statistics counters.
+ </para>
+ </listitem>
+
+<!--
+Author: Amit Kapila <akapila@postgresql.org>
+2021-12-08 [a61bff2bf] De-duplicate the result of pg_publication_tables view.
+-->
+
+ <listitem>
+ <para>
+ Suppress duplicate entries in the <link
+ linkend="view-pg-publication-tables"><structname>pg_publication_tables</structname></link>
+ system view (Hou Zhijie)
+ </para>
+
+ <para>
+ In some cases a partition could appear more than once.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ </sect4>
+
+ </sect3>
+
+ <sect3>
+ <title>Utility Commands</title>
+
+ <itemizedlist>
+
+<!--
+Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
+2022-03-28 [7103ebb7a] Add support for MERGE SQL command
+-->
+
+ <listitem>
+ <para>
+ Add <acronym>SQL</acronym> <link
+ linkend="sql-merge"><command>MERGE</command></link>
+ command to adjust one table to match another (Simon Riggs, Pavan
+ Deolasee, Álvaro Herrera, Amit Langote)
+ </para>
+
+ <para>
+ This is similar to <command>INSERT ... ON CONFLICT</command>
+ but more batch-oriented.
+ </para>
+ </listitem>
+
+<!--
+Author: Peter Eisentraut <peter@eisentraut.org>
+2022-01-28 [43f33dc01] Add HEADER support to COPY text format
+Author: Peter Eisentraut <peter@eisentraut.org>
+2022-03-30 [072132f04] Add header matching mode to COPY FROM
+-->
+
+ <listitem>
+ <para>
+ Add support for <literal>HEADER</literal> option in <link
+ linkend="sql-copy"><command>COPY</command></link> text format
+ (Rémi Lapeyre)
+ </para>
+
+ <para>
+ The new option causes the column names to be output, and optionally
+ verified on input.
+ </para>
+ </listitem>
+
+<!--
+Author: Robert Haas <rhaas@postgresql.org>
+2022-03-29 [9c08aea6a] Add new block-by-block strategy for CREATE DATABASE.
+-->
+
+ <listitem>
+ <para>
+ Add new <acronym>WAL</acronym>-logged method for <link
+ linkend="sql-createdatabase">database creation</link> (Dilip Kumar)
+ </para>
+
+ <para>
+ This is the new default method for copying the template database,
+ as it avoids the need for checkpoints during database creation.
+ However, it might be slow if the template database is large, so
+ the old method is still available.
+ </para>
+ </listitem>
+
+<!--
+Author: Robert Haas <rhaas@postgresql.org>
+2022-01-24 [aa0105141] pg_upgrade: Preserve database OIDs.
+-->
+
+ <listitem>
+ <para>
+ Allow <link linkend="sql-createdatabase"><command>CREATE
+ DATABASE</command></link> to set the database <acronym>OID</acronym>
+ (Shruthi Gowda, Antonin Houska)
+ </para>
+ </listitem>
+
+<!--
+Author: Thomas Munro <tmunro@postgresql.org>
+2022-02-12 [4eb217631] Fix DROP {DATABASE,TABLESPACE} on Windows.
+-->
+
+ <listitem>
+ <para>
+ Prevent <link linkend="sql-dropdatabase"><command>DROP
+ DATABASE</command></link>, <link
+ linkend="sql-droptablespace"><command>DROP
+ TABLESPACE</command></link>, and <link
+ linkend="sql-alterdatabase"><command>ALTER DATABASE SET
+ TABLESPACE</command></link> from occasionally failing during
+ concurrent use on Windows (Thomas Munro)
+ </para>
+ </listitem>
+
+<!--
+Author: Peter Eisentraut <peter@eisentraut.org>
+2021-12-08 [d6f96ed94] Allow specifying column list for foreign key ON DELETE S
+-->
+
+ <listitem>
+ <para>
+ Allow foreign key <link linkend="ddl-constraints-fk"><literal>ON
+ DELETE SET</literal></link> actions to affect only specified columns
+ (Paul Martinez)
+ </para>
+
+ <para>
+ Previously, all of the columns in the foreign key were always
+ affected.
+ </para>
+ </listitem>
+
+<!--
+Author: Michael Paquier <michael@paquier.xyz>
+2021-07-28 [b0483263d] Add support for SET ACCESS METHOD in ALTER TABLE
+-->
+
+ <listitem>
+ <para>
+ Allow <link linkend="sql-altertable"><command>ALTER
+ TABLE</command></link> to modify a table's <literal>ACCESS
+ METHOD</literal> (Justin Pryzby, Jeff Davis)
+ </para>
+ </listitem>
+
+<!--
+Author: Michael Paquier <michael@paquier.xyz>
+2021-08-10 [7b565843a] Add call to object access hook at the end of table rewri
+-->
+
+ <listitem>
+ <para>
+ Properly call object access hooks when <link
+ linkend="sql-altertable"><command>ALTER TABLE</command></link>
+ causes table rewrites (Michael Paquier)
+ </para>
+ </listitem>
+
+<!--
+Author: Peter Eisentraut <peter@eisentraut.org>
+2022-04-07 [344d62fb9] Unlogged sequences
+-->
+
+ <listitem>
+ <para>
+ Allow creation of unlogged <link
+ linkend="sql-createsequence">sequences</link> (Peter Eisentraut)
+ </para>
+ </listitem>
+
+<!--
+Author: Tom Lane <tgl@sss.pgh.pa.us>
+2022-07-22 [c2fa113dd] Close old gap in dependency checks for functions returni
+-->
+
+ <listitem>
+ <para>
+ Track dependencies on individual columns in the results of
+ functions returning composite types (Tom Lane)
+ </para>
+
+ <para>
+ Previously, if a view or rule contained a reference to a specific
+ column within the result of a composite-returning function, that
+ was not noted as a dependency; the view or rule was only considered
+ to depend on the composite type as a whole. This meant that
+ dropping the individual column would be allowed, causing problems
+ in later use of the view or rule. The column-level dependency is
+ now also noted, so that dropping such a column will be rejected
+ unless the view is changed or dropped.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ </sect3>
+
+ <sect3>
+ <title>Data Types</title>
+
+ <itemizedlist>
+
+<!--
+Author: Dean Rasheed <dean.a.rasheed@gmail.com>
+2021-07-26 [085f931f5] Allow numeric scale to be negative or greater than preci
+-->
+
+ <listitem>
+ <para>
+ Allow the scale of
+ a <link linkend="datatype-numeric"><type>numeric</type></link>
+ value to be negative, or greater than its precision (Dean Rasheed,
+ Tom Lane)
+ </para>
+
+ <para>
+ This allows rounding of values to the left of the decimal point,
+ e.g., <literal>'1234'::numeric(4, -2)</literal> returns 1200.
+ </para>
+ </listitem>
+
+<!--
+Author: Tom Lane <tgl@sss.pgh.pa.us>
+2022-04-02 [e39f99046] Fix overflow hazards in interval input and output conver
+-->
+
+ <listitem>
+ <para>
+ Improve overflow detection when casting values to <link
+ linkend="datatype-datetime">interval</link> (Joe Koshakow)
+ </para>
+ </listitem>
+
+<!--
+Author: Tom Lane <tgl@sss.pgh.pa.us>
+2022-08-02 [c034b629c] Change type "char"'s I/O format for non-ASCII characters
+-->
+
+ <listitem>
+ <para>
+ Change the I/O format of type <type>"char"</type> for non-ASCII
+ characters (Tom Lane)
+ </para>
+ </listitem>
+
+<!--
+Author: John Naylor <john.naylor@postgresql.org>
+2021-08-26 [bab982161] Update display widths as part of updating Unicode
+Author: Peter Eisentraut <peter@eisentraut.org>
+2021-09-15 [f7e56f1f5] Update Unicode data to Unicode 14.0.0
+-->
+
+ <listitem>
+ <para>
+ Update the display width information of modern Unicode characters,
+ like emojis (Jacob Champion)
+ </para>
+
+ <para>
+ Also update from Unicode 5.0 to 14.0.0. There is now an automated
+ way to keep Postgres updated with Unicode releases.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ </sect3>
+
+ <sect3>
+ <title>Functions</title>
+
+ <itemizedlist>
+
+<!--
+Author: Peter Eisentraut <peter@eisentraut.org>
+2022-03-30 [7ae1619bc] Add range_agg with multirange inputs
+-->
+
+ <listitem>
+ <para>
+ Add multirange input to <link
+ linkend="functions-aggregate-table"><function>range_agg()</function></link>
+ (Paul Jungwirth)
+ </para>
+ </listitem>
+
+<!--
+Author: Fujii Masao <fujii@postgresql.org>
+2022-02-10 [400fc6b64] Add min() and max() aggregates for xid8.
+-->
+
+ <listitem>
+ <para>
+ Add <link linkend="tutorial-agg"><function>MIN()</function></link>
+ and <function>MAX()</function> aggregates for the <link
+ linkend="datatype-int"><type>xid8</type></link> data type (Ken Kato)
+ </para>
+ </listitem>
+
+<!--
+Author: Tom Lane <tgl@sss.pgh.pa.us>
+2021-08-03 [642433707] Add assorted new regexp_xxx SQL functions.
+-->
+
+ <listitem>
+ <para>
+ Add regular expression functions for compatibility with other
+ relational systems (Gilles Darold, Tom Lane)
+ </para>
+
+ <para>
+ The new functions are <link
+ linkend="functions-string-other"><function>regexp_count()</function></link>,
+ <function>regexp_instr()</function>,
+ <function>regexp_like()</function>, and
+ <function>regexp_substr()</function>. Some new optional arguments
+ were also added to <function>regexp_replace()</function>.
+ </para>
+ </listitem>
+
+<!--
+Author: Tom Lane <tgl@sss.pgh.pa.us>
+2021-12-13 [c5c192d7b] Implement poly_distance().
+-->
+
+ <listitem>
+ <para>
+ Add the ability to compute the distance between <link
+ linkend="datatype-polygon"><type>polygons</type></link> (Tom Lane)
+ </para>
+ </listitem>
+
+<!--
+Author: Robert Haas <rhaas@postgresql.org>
+2022-03-14 [9dde82899] Support "of", "tzh", and "tzm" format codes.
+-->
+
+ <listitem>
+ <para>
+ Add <link
+ linkend="functions-formatting-table"><function>to_char()</function></link>
+ format codes <literal>of</literal>, <literal>tzh</literal>, and
+ <literal>tzm</literal> (Nitin Jadhav)
+ </para>
+
+ <para>
+ The upper-case equivalents of these were already supported.
+ </para>
+ </listitem>
+
+<!--
+Author: Tom Lane <tgl@sss.pgh.pa.us>
+2021-09-06 [388e71af8] Make timetz_zone() stable, and correct a bug for DYNTZ a
+-->
+
+ <listitem>
+ <para>
+ When applying <link
+ linkend="functions-datetime-zoneconvert"><literal>AT
+ TIME ZONE</literal></link> to a <type>time with time zone</type>
+ value, use the transaction start time rather than wall clock time
+ to determine whether DST applies (Aleksander Alekseev, Tom Lane)
+ </para>
+
+ <para>
+ This allows the conversion to be considered stable rather than
+ volatile, and it saves a kernel call per invocation.
+ </para>
+ </listitem>
+
+<!--
+Author: Tom Lane <tgl@sss.pgh.pa.us>
+2021-11-06 [cbe25dcff] Disallow making an empty lexeme via array_to_tsvector().
+-->
+
+ <listitem>
+ <para>
+ Ignore NULL array elements in <link
+ linkend="textsearch-functions-table"><function>ts_delete()</function></link> and
+ <function>setweight()</function> functions with array arguments
+ (Jean-Christophe Arnu)
+ </para>
+
+ <para>
+ These functions effectively ignore empty-string array elements
+ (since those could never match a valid lexeme). It seems
+ consistent to let them ignore NULL elements too, instead of
+ failing.
+ </para>
+ </listitem>
+
+<!--
+Author: David Rowley <drowley@postgresql.org>
+2021-07-09 [ca2e4472b] Teach pg_size_pretty and pg_size_bytes about petabytes
+-->
+
+ <listitem>
+ <para>
+ Add support for petabyte units to <link
+ linkend="functions-admin-dbsize"><function>pg_size_pretty()</function></link>
+ and <function>pg_size_bytes()</function> (David Christensen)
+ </para>
+ </listitem>
+
+<!--
+Author: Tom Lane <tgl@sss.pgh.pa.us>
+2021-07-27 [024515cac] In event triggers, use "pg_temp" only for our own temp s
+-->
+
+ <listitem>
+ <para>
+ Change <link
+ linkend="pg-event-trigger-ddl-command-end-functions"><function>pg_event_trigger_ddl_commands()</function></link>
+ to output references to other sessions' temporary schemas using the
+ actual schema name (Tom Lane)
+ </para>
+
+ <para>
+ Previously this function reported all temporary schemas as
+ <literal>pg_temp</literal>, but it's misleading to use that for any
+ but the current session's temporary schema.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ </sect3>
+
+ <sect3>
+ <title><link linkend="plpgsql">PL/pgSQL</link></title>
+
+ <itemizedlist>
+
+<!--
+Author: Tom Lane <tgl@sss.pgh.pa.us>
+2022-04-30 [ccd10a9bf] Tighten enforcement of variable CONSTANT markings in plp
+-->
+
+ <listitem>
+ <para>
+ Fix enforcement of PL/pgSQL variable <literal>CONSTANT</literal>
+ markings (Tom Lane)
+ </para>
+
+ <para>
+ Previously, a variable could be used as a <link
+ linkend="plpgsql-statements-calling-procedure"><command>CALL</command></link>
+ output parameter or refcursor <command>OPEN</command> variable
+ despite being marked <literal>CONSTANT</literal>.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ </sect3>
+
+ <sect3>
+ <title><link linkend="libpq">libpq</link></title>
+
+ <itemizedlist>
+
+<!--
+Author: Peter Eisentraut <peter@eisentraut.org>
+2022-04-01 [c1932e542] libpq: Allow IP address SANs in server certificates
+-->
+
+ <listitem>
+ <para>
+ Allow <acronym>IP</acronym> address matching against a server
+ certificate's Subject Alternative Name (Jacob Champion)
+ </para>
+ </listitem>
+
+<!--
+Author: Daniel Gustafsson <dgustafsson@postgresql.org>
+2022-03-29 [ebc8b7d44] Enable SSL library detection via PQsslAttribute()
+-->
+
+ <listitem>
+ <para>
+ Allow <function>PQsslAttribute()</function> to report the
+ <acronym>SSL</acronym> library type without requiring a libpq
+ connection (Jacob Champion)
+ </para>
+ </listitem>
+
+<!--
+Author: Tom Lane <tgl@sss.pgh.pa.us>
+2022-01-18 [5987feb70] Make PQcancel use the PGconn's tcp_user_timeout and keep
+-->
+
+ <listitem>
+ <para>
+ Change query cancellations sent by the client to use the same
+ <acronym>TCP</acronym> settings as normal client connections
+ (Jelte Fennema)
+ </para>
+
+ <para>
+ This allows configured <acronym>TCP</acronym> timeouts to apply
+ to query cancel connections.
+ </para>
+ </listitem>
+
+<!--
+Author: Tom Lane <tgl@sss.pgh.pa.us>
+2022-02-18 [ce1e7a2f7] Don't let libpq "event" procs break the state of PGresul
+Author: Tom Lane <tgl@sss.pgh.pa.us>
+2022-02-18 [2e372869a] Don't let libpq PGEVT_CONNRESET callbacks break a PGconn
+-->
+
+ <listitem>
+ <para>
+ Prevent libpq event callback failures from forcing an error result
+ (Tom Lane)
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ </sect3>
+
+ <sect3>
+ <title>Client Applications</title>
+
+ <itemizedlist>
+
+<!--
+Author: Tatsuo Ishii <ishii@postgresql.org>
+2022-03-23 [4a39f87ac] Allow pgbench to retry in some cases.
+-->
+
+ <listitem>
+ <para>
+ Allow <link
+ linkend="pgbench"><application>pgbench</application></link> to
+ retry after serialization and deadlock failures (Yugo Nagata,
+ Marina Polyakova)
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ <sect4>
+ <title><xref linkend="app-psql"/></title>
+
+ <itemizedlist>
+
+<!--
+Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
+2021-07-14 [eec57115e] In psql \copy from, send data to server in larger chunks
+-->
+
+ <listitem>
+ <para>
+ Improve performance
+ of <application>psql</application>'s <command>\copy</command>
+ command, by sending data in larger chunks (Heikki Linnakangas)
+ </para>
+ </listitem>
+
+<!--
+Author: Tom Lane <tgl@sss.pgh.pa.us>
+2022-04-07 [3e707fbb4] psql: add \dconfig command to show server's configuratio
+Author: Tom Lane <tgl@sss.pgh.pa.us>
+2022-04-11 [5e70d8b5d] Tweak the default behavior of psql's \dconfig.
+Author: Tom Lane <tgl@sss.pgh.pa.us>
+2022-04-13 [139d46ee2] Further tweak the default behavior of psql's \dconfig.
+-->
+
+ <listitem>
+ <para>
+ Add <command>\dconfig</command> command to report server variables
+ (Mark Dilger, Tom Lane)
+ </para>
+
+ <para>
+ This is similar to the server-side <command>SHOW</command>
+ command, but it can process patterns to show multiple variables
+ conveniently.
+ </para>
+ </listitem>
+
+<!--
+Author: Tom Lane <tgl@sss.pgh.pa.us>
+2021-12-20 [33d3eeadb] Add a \getenv command to psql.
+-->
+
+ <listitem>
+ <para>
+ Add <command>\getenv</command> command
+ to assign the value of an environment variable to a
+ <application>psql</application> variable (Tom Lane)
+ </para>
+ </listitem>
+
+<!--
+Author: Tom Lane <tgl@sss.pgh.pa.us>
+2022-01-06 [328dfbdab] Extend psql's \lo_list/\dl to be able to print large obj
+-->
+
+ <listitem>
+ <para>
+ Add <literal>+</literal> option to the
+ <literal>\lo_list</literal> and <literal>\dl</literal> commands to
+ show large-object privileges (Pavel Luzanov)
+ </para>
+ </listitem>
+
+<!--
+Author: Thomas Munro <tmunro@postgresql.org>
+2021-07-13 [7c09d2797] Add PSQL_WATCH_PAGER for psql's \watch command.
+-->
+
+ <listitem>
+ <para>
+ Add a pager option for the <command>\watch</command>
+ command (Pavel Stehule, Thomas Munro)
+ </para>
+
+ <para>
+ This is only supported on Unix and is controlled by the
+ <envar>PSQL_WATCH_PAGER</envar> environment variable.
+ </para>
+ </listitem>
+
+<!--
+Author: Tom Lane <tgl@sss.pgh.pa.us>
+2021-12-01 [83884682f] psql: include intra-query "- -" comments in what's sent t
+Author: Tom Lane <tgl@sss.pgh.pa.us>
+2021-12-01 [c2f654930] psql: treat "- -" comments between queries as separate hi
+-->
+
+ <listitem>
+ <para>
+ Make <application>psql</application> include intra-query double-hyphen
+ comments in queries sent to the server (Tom Lane, Greg Nancarrow)
+ </para>
+
+ <para>
+ Previously such comments were removed from the query
+ before being sent. Double-hyphen comments that are before any
+ query text are not sent, and are not recorded as separate
+ <application>psql</application> history entries.
+ </para>
+ </listitem>
+
+<!--
+Author: Tom Lane <tgl@sss.pgh.pa.us>
+2021-12-01 [3d858af07] psql: initialize comment-begin setting to a useful value
+-->
+
+ <listitem>
+ <para>
+ Adjust <application>psql</application> so
+ that <application>Readline</application>'s
+ meta-<literal>#</literal> command will insert a double-hyphen
+ comment marker (Tom Lane)
+ </para>
+
+ <para>
+ Previously a pound marker was inserted, unless the user had taken
+ the trouble to configure a non-default comment marker.
+ </para>
+ </listitem>
+
+<!--
+Author: Peter Eisentraut <peter@eisentraut.org>
+2022-04-04 [7844c9918] psql: Show all query results by default
+-->
+
+ <listitem>
+ <para>
+ Make <application>psql</application> output all results when multiple
+ queries are passed to the server at once (Fabien Coelho)
+ </para>
+
+ <para>
+ Previously, only the last query result was displayed. The old
+ behavior can be restored by setting
+ the <literal>SHOW_ALL_RESULTS</literal> <application>psql</application>
+ variable to <literal>off</literal>.
+ </para>
+ </listitem>
+
+<!--
+Author: Michael Paquier <michael@paquier.xyz>
+2022-06-15 [a3ff08e0b] Tweak behavior of psql - -single-transaction depending
+-->
+
+ <listitem>
+ <para>
+ After an error is detected
+ in <option>--single-transaction</option> mode, change the
+ final <command>COMMIT</command> command
+ to <command>ROLLBACK</command> only
+ if <varname>ON_ERROR_STOP</varname> is set (Michael Paquier)
+ </para>
+
+ <para>
+ Previously, detection of an error in a <option>-c</option> command
+ or <option>-f</option> script file would lead to
+ issuing <command>ROLLBACK</command> at the end, regardless of the
+ value of <varname>ON_ERROR_STOP</varname>.
+ </para>
+ </listitem>
+
+<!--
+Author: Michael Paquier <michael@paquier.xyz>
+2021-08-10 [e2ce88b58] Add tab completion for DECLARE .. ASENSITIVE in psql
+Author: Michael Paquier <michael@paquier.xyz>
+2021-08-25 [346511313] Add tab completion for EXPLAIN .. EXECUTE in psql
+Author: Michael Paquier <michael@paquier.xyz>
+2021-08-30 [d3fa87657] Add more tab completion support for ALTER TABLE ADD in p
+Author: Michael Paquier <michael@paquier.xyz>
+2021-08-31 [f2bbadce6] Add tab completion for data types after ALTER TABLE ADD
+Author: Fujii Masao <fujii@postgresql.org>
+2021-09-01 [b0c066297] Improve tab-completion for CREATE PUBLICATION.
+Author: Fujii Masao <fujii@postgresql.org>
+2021-10-05 [0b0d277c3] psql: Improve tab-completion for LOCK TABLE.
+Author: Michael Paquier <michael@paquier.xyz>
+2021-11-05 [a5b336b8b] Improve psql tab completion for COMMENT
+Author: Michael Paquier <michael@paquier.xyz>
+2021-11-19 [0cd6d3b3c] Improve psql tab completion for transforms, domains and
+Author: Michael Paquier <michael@paquier.xyz>
+2021-11-29 [f44ceb46e] Improve psql tab completion for views, FDWs, sequences a
+Author: Michael Paquier <michael@paquier.xyz>
+2021-12-01 [9270778f4] Improve psql tab completion for various DROP commands
+Author: Tom Lane <tgl@sss.pgh.pa.us>
+2022-01-03 [dfe67c0e8] Tab completion: don't offer valid constraints in VALIDAT
+Author: Fujii Masao <fujii@postgresql.org>
+2022-01-15 [74527c3e0] Add tab-completion for CREATE FOREIGN TABLE.
+Author: Peter Eisentraut <peter@eisentraut.org>
+2022-01-27 [fefce9ef9] psql: Add tab completion for ALTER COLLATION / REFRESH V
+Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
+2022-01-28 [95787e849] Tab-complete ALTER PUBLICATION ADD TABLE with list of ta
+Author: Tom Lane <tgl@sss.pgh.pa.us>
+2022-01-30 [02b8048ba] psql: improve tab-complete's handling of variant SQL nam
+Author: Tom Lane <tgl@sss.pgh.pa.us>
+2022-02-01 [020258fbd] Treat case of tab-completion keywords a bit more careful
+Author: Tom Lane <tgl@sss.pgh.pa.us>
+2022-02-09 [f0cd9097c] Further tweaks for psql's new tab-completion logic.
+Author: Tom Lane <tgl@sss.pgh.pa.us>
+2022-03-20 [7fa3db367] psql: handle tab completion of timezone names after "SET
+Author: Tomas Vondra <tomas.vondra@postgresql.org>
+2022-03-25 [2d2232933] Update tab-completion for CREATE PUBLICATION with sequen
+Author: Tom Lane <tgl@sss.pgh.pa.us>
+2022-04-13 [b5607b074] Fix case sensitivity in psql's tab completion for GUC na
+-->
+
+ <listitem>
+ <para>
+ Improve <application>psql</application>'s tab completion (Shinya
+ Kato, Dagfinn Ilmari Mannsåker, Peter Smith, Koyu Tanigawa,
+ Ken Kato, David Fetter, Haiying Tang, Peter Eisentraut, Álvaro
+ Herrera, Tom Lane, Masahiko Sawada)
+ </para>
+ </listitem>
+
+<!--
+Author: Tom Lane <tgl@sss.pgh.pa.us>
+2021-12-16 [cf0cab868] Remove psql support for server versions preceding 9.2.
+-->
+
+ <listitem>
+ <para>
+ Limit support of <application>psql</application>'s backslash
+ commands to servers running <productname>PostgreSQL</productname>
+ 9.2 or later (Tom Lane)
+ </para>
+
+ <para>
+ Remove code that was only used when running with an older server.
+ Commands that do not require any version-specific adjustments
+ compared to 9.2 will still work.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ </sect4>
+
+ <sect4>
+ <title><link linkend="app-pgdump"><application>pg_dump</application></link></title>
+
+ <itemizedlist>
+
+<!--
+Author: Noah Misch <noah@leadboat.com>
+2021-06-28 [a7a7be1f2] Dump public schema ownership and security labels.
+Author: Noah Misch <noah@leadboat.com>
+2021-06-28 [7ac10f692] Dump COMMENT ON SCHEMA public.
+-->
+
+ <listitem>
+ <para>
+ Make <application>pg_dump</application> dump
+ <literal>public</literal> schema ownership changes and security
+ labels (Noah Misch)
+ </para>
+ </listitem>
+
+<!--
+Author: Tom Lane <tgl@sss.pgh.pa.us>
+2021-12-06 [989596152] Avoid per-object queries in performance-critical paths i
+Author: Tom Lane <tgl@sss.pgh.pa.us>
+2021-12-06 [be85727a3] Use PREPARE/EXECUTE for repetitive per-object queries in
+Author: Tom Lane <tgl@sss.pgh.pa.us>
+2021-12-31 [d5e8930f5] pg_dump: minor performance improvements from eliminating
+-->
+
+ <listitem>
+ <para>
+ Improve performance of dumping databases with many objects
+ (Tom Lane)
+ </para>
+
+ <para>
+ This will also improve the performance of <link
+ linkend="pgupgrade"><application>pg_upgrade</application></link>.
+ </para>
+ </listitem>
+
+<!--
+Author: Tom Lane <tgl@sss.pgh.pa.us>
+2021-12-06 [65aaed22a] Account for TOAST data while scheduling parallel dumps.
+-->
+
+ <listitem>
+ <para>
+ Improve parallel <application>pg_dump</application>'s performance
+ for tables with large <acronym>TOAST</acronym> tables (Tom Lane)
+ </para>
+ </listitem>
+
+<!--
+Author: Michael Paquier <michael@paquier.xyz>
+2022-01-17 [215862886] Add support for - -no-table-access-method in pg_{dump,dum
+-->
+
+ <listitem>
+ <para>
+ Add dump/restore option <option>--no-table-access-method</option>
+ to force restore to only use the default table access method
+ (Justin Pryzby)
+ </para>
+ </listitem>
+
+<!--
+Author: Tom Lane <tgl@sss.pgh.pa.us>
+2021-12-14 [30e7c175b] Remove pg_dump/pg_dumpall support for dumping from pre-9
+-->
+
+ <listitem>
+ <para>
+ Limit support of <application>pg_dump</application> and <link
+ linkend="app-pg-dumpall"><application>pg_dumpall</application></link>
+ to servers running <productname>PostgreSQL</productname> 9.2 or
+ later (Tom Lane)
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ </sect4>
+
+ </sect3>
+
+ <sect3>
+ <title>Server Applications</title>
+
+ <itemizedlist>
+
+<!--
+Author: Robert Haas <rhaas@postgresql.org>
+2022-01-20 [3500ccc39] Support base backup targets.
+-->
+
+ <listitem>
+ <para>
+ Add new <link
+ linkend="app-pgbasebackup"><application>pg_basebackup</application></link>
+ option <option>--target</option> to control the base backup location
+ (Robert Haas)
+ </para>
+
+ <para>
+ The new options are <literal>server</literal> to write the
+ backup locally and <literal>blackhole</literal> to discard the
+ backup (for testing).
+ </para>
+ </listitem>
+
+<!--
+Author: Robert Haas <rhaas@postgresql.org>
+2022-02-11 [751b8d23b] pg_basebackup: Allow client-side LZ4 (de)compression.
+Author: Robert Haas <rhaas@postgresql.org>
+2022-03-08 [7cf085f07] Add support for zstd base backup compression.
+Author: Robert Haas <rhaas@postgresql.org>
+2022-01-24 [0ad803291] Server-side gzip compression.
+-->
+
+ <listitem>
+ <para>
+ Allow <application>pg_basebackup</application> to do server-side
+ gzip, LZ4, and Zstandard compression and client-side LZ4 and
+ Zstandard compression of base backup files (Dipesh Pandit,
+ Jeevan Ladhe)
+ </para>
+
+ <para>
+ Client-side <literal>gzip</literal> compression was already
+ supported.
+ </para>
+ </listitem>
+
+<!--
+Author: Robert Haas <rhaas@postgresql.org>
+2022-01-28 [d45099425] Allow server-side compression to be used with -Fp.
+-->
+
+ <listitem>
+ <para>
+ Allow <application>pg_basebackup</application> to compress on
+ the server side and decompress on the client side before storage
+ (Dipesh Pandit)
+ </para>
+
+ <para>
+ This is accomplished by specifying compression on the server side
+ and plain output format.
+ </para>
+ </listitem>
+
+<!--
+Author: Michael Paquier <michael@paquier.xyz>
+2022-01-21 [5c649fe15] Extend the options of pg_basebackup to control compressi
+Author: Robert Haas <rhaas@postgresql.org>
+2022-01-24 [0ad803291] Server-side gzip compression.
+Author: Robert Haas <rhaas@postgresql.org>
+2022-01-25 [e1f860f13] Tidy up a few cosmetic issues related to pg_basebackup.
+-->
+
+ <listitem>
+ <para>
+ Allow <application>pg_basebackup</application>'s
+ <option>--compress</option> option to control the compression
+ location (server or client), compression method, and compression
+ options (Michael Paquier, Robert Haas)
+ </para>
+ </listitem>
+
+<!--
+Author: Michael Paquier <michael@paquier.xyz>
+2021-11-05 [babbbb595] Add support for LZ4 compression in pg_receivewal
+Author: Michael Paquier <michael@paquier.xyz>
+2022-04-13 [042a923ad] Rework compression options of pg_receivewal
+-->
+
+ <listitem>
+ <para>
+ Add the LZ4 compression method to <link
+ linkend="app-pgreceivewal"><application>pg_receivewal</application></link>
+ (Georgios Kokolatos)
+ </para>
+
+ <para>
+ This is enabled via <literal>--compress=lz4</literal> and requires
+ binaries to be built using <option>--with-lz4</option>.
+ </para>
+ </listitem>
+
+<!--
+Author: Michael Paquier <michael@paquier.xyz>
+2021-11-04 [d62bcc8b0] Rework compression options of pg_receivewal
+-->
+
+ <listitem>
+ <para>
+ Add additional capabilities to
+ <application>pg_receivewal</application>'s
+ <option>--compress</option> option (Georgios Kokolatos)
+ </para>
+ </listitem>
+
+<!--
+Author: Michael Paquier <michael@paquier.xyz>
+2021-10-26 [f61e1dd2c] Allow pg_receivewal to stream from a slot's restart LSN
+-->
+
+ <listitem>
+ <para>
+ Improve <application>pg_receivewal</application>'s ability to
+ restart at the proper <acronym>WAL</acronym> location (Ronan
+ Dunklau)
+ </para>
+
+ <para>
+ Previously, <application>pg_receivewal</application> would start
+ based on the <acronym>WAL</acronym> file stored in the local archive
+ directory, or at the sending server's current <acronym>WAL</acronym>
+ flush location. With this change, if the sending server is running
+ Postgres 15 or later, the local archive directory is empty, and
+ a replication slot is specified, the replication slot's restart
+ point will be used.
+ </para>
+ </listitem>
+
+<!--
+Author: Michael Paquier <michael@paquier.xyz>
+2022-04-07 [0d5c38757] Add option - -config-file to pg_rewind
+-->
+
+ <listitem>
+ <para>
+ Add <link
+ linkend="app-pgrewind"><application>pg_rewind</application></link>
+ option <option>--config-file</option> to simplify use when server
+ configuration files are stored outside the data directory (Gunnar
+ Bluth)
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ <sect4>
+ <title><link linkend="pgupgrade"><application>pg_upgrade</application></link></title>
+
+ <itemizedlist>
+
+<!--
+Author: Michael Paquier <michael@paquier.xyz>
+2022-02-06 [38bfae365] pg_upgrade: Move all the files generated internally to a
+Author: Michael Paquier <michael@paquier.xyz>
+2022-02-15 [a00849630] Fix thinko with subdirectories generated by pg_upgrade f
+Author: Michael Paquier <michael@paquier.xyz>
+2022-09-13 [f5047c129] Move any remaining files generated by pg_upgrade into an
+-->
+
+ <listitem>
+ <para>
+ Store <application>pg_upgrade</application>'s log and
+ temporary files in a subdirectory of the new cluster called
+ <filename>pg_upgrade_output.d</filename> (Justin Pryzby)
+ </para>
+
+ <para>
+ Previously such files were left in the current directory,
+ requiring manual cleanup. Now they are automatically removed on
+ successful completion of <application>pg_upgrade</application>.
+ </para>
+ </listitem>
+
+<!--
+Author: Andres Freund <andres@anarazel.de>
+2022-02-21 [27b02e070] pg_upgrade: Don't print progress status when output is n
+-->
+
+ <listitem>
+ <para>
+ Disable default status reporting during
+ <application>pg_upgrade</application> operation if the output is
+ not a terminal (Andres Freund)
+ </para>
+
+ <para>
+ The status reporting output can be enabled for non-tty usage by
+ using <option>--verbose</option>.
+ </para>
+ </listitem>
+
+<!--
+Author: Daniel Gustafsson <dgustafsson@postgresql.org>
+2022-03-24 [26ebb0e28] List offending databases in pg_upgrade datallowconn chec
+-->
+
+ <listitem>
+ <para>
+ Make <application>pg_upgrade</application> report all databases
+ with invalid connection settings (Jeevan Ladhe)
+ </para>
+
+ <para>
+ Previously only the first database with an invalid connection
+ setting was reported.
+ </para>
+ </listitem>
+
+<!--
+Author: Robert Haas <rhaas@postgresql.org>
+2022-01-17 [9a974cbcb] pg_upgrade: Preserve relfilenodes and tablespace OIDs.
+Author: Robert Haas <rhaas@postgresql.org>
+2022-01-24 [aa0105141] pg_upgrade: Preserve database OIDs.
+Author: Robert Haas <rhaas@postgresql.org>
+2022-07-28 [4ab5dae94] Use TRUNCATE to preserve relfilenode for pg_largeobject
+-->
+
+ <listitem>
+ <para>
+ Make <application>pg_upgrade</application> preserve tablespace
+ and database OIDs, as well as relation relfilenode numbers
+ (Shruthi Gowda, Antonin Houska)
+ </para>
+ </listitem>
+
+<!--
+Author: Michael Paquier <michael@paquier.xyz>
+2021-12-18 [3d5ffccb6] Add option -N/- -no-sync to pg_upgrade
+-->
+
+ <listitem>
+ <para>
+ Add a <option>--no-sync</option> option to
+ <application>pg_upgrade</application> (Michael Paquier)
+ </para>
+
+ <para>
+ This is recommended only for testing.
+ </para>
+ </listitem>
+
+<!--
+Author: Tom Lane <tgl@sss.pgh.pa.us>
+2021-12-14 [e469f0aaf] Remove pg_upgrade support for upgrading from pre-9.2 ser
+-->
+
+ <listitem>
+ <para>
+ Limit support of <application>pg_upgrade</application> to old
+ servers running <productname>PostgreSQL</productname> 9.2 or later
+ (Tom Lane)
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ </sect4>
+
+ <sect4>
+ <title><link linkend="pgwaldump"><application>pg_waldump</application></link></title>
+
+ <itemizedlist>
+
+<!--
+Author: Thomas Munro <tmunro@postgresql.org>
+2022-03-24 [127aea2a6] Add additional filtering options to pg_waldump.
+Author: Thomas Munro <tmunro@postgresql.org>
+2022-03-25 [52b556843] Improve command line options for pg_waldump.
+-->
+
+ <listitem>
+ <para>
+ Allow <application>pg_waldump</application> output to be filtered by
+ relation file node, block number, fork number, and full page images
+ (David Christensen, Thomas Munro)
+ </para>
+ </listitem>
+
+<!--
+Author: Michael Paquier <michael@paquier.xyz>
+2021-12-02 [f2c52eeba] pg_waldump: Emit stats summary when interrupted by SIGIN
+-->
+
+ <listitem>
+ <para>
+ Make <application>pg_waldump</application> report statistics
+ before an interrupted exit (Bharath Rupireddy)
+ </para>
+
+ <para>
+ For example, issuing a control-C in a terminal running
+ <command>pg_waldump --stats --follow</command> will report the
+ current statistics before exiting. This does not work on Windows.
+ </para>
+ </listitem>
+
+<!--
+Author: Michael Paquier <michael@paquier.xyz>
+2021-12-13 [c8b733c4c] Improve description of some WAL records with transaction
+-->
+
+ <listitem>
+ <para>
+ Improve descriptions of some transaction <acronym>WAL</acronym>
+ records reported by <application>pg_waldump</application>
+ (Masahiko Sawada, Michael Paquier)
+ </para>
+ </listitem>
+
+<!--
+Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
+2021-07-01 [c8bf5098c] Allow specifying pg_waldump - -rmgr option multiple times
+-->
+
+ <listitem>
+ <para>
+ Allow <application>pg_waldump</application> to dump information
+ about multiple resource managers (Heikki Linnakangas)
+ </para>
+
+ <para>
+ This is enabled by specifying the <option>--rmgr</option> option
+ multiple times.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ </sect4>
+
+ </sect3>
+
+ <sect3>
+ <title>Documentation</title>
+
+ <itemizedlist>
+
+<!--
+Author: Fujii Masao <fujii@postgresql.org>
+2021-10-05 [f6b5d05ba] doc: Document pg_encoding_to_char() and pg_char_to_encod
+-->
+
+ <listitem>
+ <para>
+ Add documentation for <link
+ linkend="functions-info-catalog-table"><function>pg_encoding_to_char()</function></link>
+ and <function>pg_char_to_encoding()</function> (Ian Lawrence
+ Barwick)
+ </para>
+ </listitem>
+
+<!--
+Author: Tom Lane <tgl@sss.pgh.pa.us>
+2021-10-09 [2ae5d72f0] Doc: improve documentation for ^@ starts-with operator.
+-->
+
+ <listitem>
+ <para>
+ Document the <link
+ linkend="functions-string-other"><literal>^@</literal></link>
+ starts-with operator (Tom Lane)
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ </sect3>
+
+ <sect3>
+ <title>Source Code</title>
+
+ <itemizedlist>
+
+<!--
+Author: Andres Freund <andres@anarazel.de>
+2021-12-30 [93d973494] ci: Add continuous integration for github repositories v
+-->
+
+ <listitem>
+ <para>
+ Add support for continuous integration testing using cirrus-ci
+ (Andres Freund, Thomas Munro, Melanie Plageman)
+ </para>
+ </listitem>
+
+<!--
+Author: Robert Haas <rhaas@postgresql.org>
+2022-02-18 [6c417bbcc] Add support for building with ZSTD.
+-->
+
+ <listitem>
+ <para>
+ Add configure option <link
+ linkend="configure-options-features"><option>--with-zstd</option></link>
+ to enable Zstandard builds (Jeevan Ladhe, Robert Haas, Michael
+ Paquier)
+ </para>
+ </listitem>
+
+<!--
+Author: Peter Eisentraut <peter@eisentraut.org>
+2021-11-22 [d6d1dfcc9] Add ABI extra field to fmgr magic block
+-->
+
+ <listitem>
+ <para>
+ Add an ABI identifier field to the magic block in loadable
+ libraries, allowing
+ non-community <productname>PostgreSQL</productname> distributions
+ to identify libraries that are not compatible with other builds
+ (Peter Eisentraut)
+ </para>
+
+ <para>
+ An ABI field mismatch will generate an error at load time.
+ </para>
+ </listitem>
+
+<!--
+Author: Tom Lane <tgl@sss.pgh.pa.us>
+2021-12-11 [07eee5a0d] Create a new type category for "internal use" types.
+-->
+
+ <listitem>
+ <para>
+ Create a new <link
+ linkend="catalog-pg-type"><structfield>pg_type.typcategory</structfield></link>
+ value for <type>"char"</type> (Tom Lane)
+ </para>
+
+ <para>
+ Some other internal-use-only types have also been assigned to this
+ category.
+ </para>
+ </listitem>
+
+<!--
+Author: Robert Haas <rhaas@postgresql.org>
+2022-01-18 [cc333f323] Modify pg_basebackup to use a new COPY subprotocol for b
+-->
+
+ <listitem>
+ <para>
+ Add new protocol message <link
+ linkend="protocol-replication-base-backup"><literal>TARGET</literal></link>
+ to specify a new <command>COPY</command> method to be used for base
+ backups (Robert Haas)
+ </para>
+
+ <para>
+ <link
+ linkend="app-pgbasebackup"><application>pg_basebackup</application></link>
+ now uses this method.
+ </para>
+ </listitem>
+
+<!--
+Author: Robert Haas <rhaas@postgresql.org>
+2022-01-24 [0ad803291] Server-side gzip compression.
+Author: Robert Haas <rhaas@postgresql.org>
+2022-03-23 [ffd53659c] Replace BASE_BACKUP COMPRESSION_LEVEL option with COMPRE
+-->
+
+ <listitem>
+ <para>
+ Add new protocol message <link
+ linkend="protocol-replication-base-backup"><literal>COMPRESSION</literal></link>
+ and <literal>COMPRESSION_DETAIL</literal> to specify the compression
+ method and options (Robert Haas)
+ </para>
+ </listitem>
+
+<!--
+Author: Robert Haas <rhaas@postgresql.org>
+2022-02-10 [9cd28c2e5] Remove server support for old BASE_BACKUP command syntax
+Author: Robert Haas <rhaas@postgresql.org>
+2022-02-10 [0d4513b61] Remove server support for the previous base backup proto
+-->
+
+ <listitem>
+ <para>
+ Remove server support for old <literal>BASE_BACKUP</literal>
+ command syntax and base backup protocol (Robert Haas)
+ </para>
+ </listitem>
+
+<!--
+Author: Robert Haas <rhaas@postgresql.org>
+2022-03-15 [e4ba69f3f] Allow extensions to add new backup targets.
+-->
+
+ <listitem>
+ <para>
+ Add support for extensions to set custom backup targets (Robert
+ Haas)
+ </para>
+ </listitem>
+
+<!--
+Author: Jeff Davis <jdavis@postgresql.org>
+2022-04-06 [5c279a6d3] Custom WAL Resource Managers.
+-->
+
+ <listitem>
+ <para>
+ Allow extensions to define custom <acronym>WAL</acronym>
+ resource managers (Jeff Davis)
+ </para>
+ </listitem>
+
+<!--
+Author: Michael Paquier <michael@paquier.xyz>
+2022-01-31 [d10e41d42] Introduce pg_settings_get_flags() to find flags associat
+-->
+
+ <listitem>
+ <para>
+ Add function <link
+ linkend="functions-info-catalog-table"><function>pg_settings_get_flags()</function></link>
+ to get the flags of server variables (Justin Pryzby)
+ </para>
+ </listitem>
+
+<!--
+Author: Robert Haas <rhaas@postgresql.org>
+2022-04-08 [8ec569479] Apply PGDLLIMPORT markings broadly.
+-->
+
+ <listitem>
+ <para>
+ On Windows, export all the server's global variables using
+ <literal>PGDLLIMPORT</literal> markers (Robert Haas)
+ </para>
+
+ <para>
+ Previously, only specific variables were accessible to extensions
+ on Windows.
+ </para>
+ </listitem>
+
+<!--
+Author: Tom Lane <tgl@sss.pgh.pa.us>
+2022-07-23 [3b474a2e6] Increase minimum supported GNU make version to 3.81.
+-->
+
+ <listitem>
+ <para>
+ Require GNU <application>make</application> version 3.81 or later
+ to build <productname>PostgreSQL</productname> (Tom Lane)
+ </para>
+ </listitem>
+
+<!--
+Author: Peter Eisentraut <peter@eisentraut.org>
+2021-11-05 [db7d1a7b0] pgcrypto: Remove non-OpenSSL support
+-->
+
+ <listitem>
+ <para>
+ Require OpenSSL to build the <link
+ linkend="pgcrypto"><application>pgcrypto</application></link>
+ extension (Peter Eisentraut)
+ </para>
+ </listitem>
+
+<!--
+Author: Tom Lane <tgl@sss.pgh.pa.us>
+2021-10-07 [92e6a98c3] Adjust configure to insist on Perl version &gt;= 5.8.3.
+-->
+
+ <listitem>
+ <para>
+ Require <application>Perl</application>
+ version 5.8.3 or later (Dagfinn Ilmari Mannsåker)
+ </para>
+ </listitem>
+
+<!--
+Author: Andres Freund <andres@anarazel.de>
+2022-02-16 [19252e8ec] plpython: Reject Python 2 during build configuration.
+-->
+
+ <listitem>
+ <para>
+ Require <application>Python</application>
+ version 3.2 or later (Andres Freund)
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ </sect3>
+
+ <sect3>
+ <title>Additional Modules</title>
+
+ <itemizedlist>
+
+<!--
+Author: Peter Eisentraut <peter@eisentraut.org>
+2021-09-28 [c3b011d99] Support amcheck of sequences
+-->
+
+ <listitem>
+ <para>
+ Allow <link
+ linkend="amcheck"><application>amcheck</application></link> to
+ check sequences (Mark Dilger)
+ </para>
+ </listitem>
+
+<!--
+Author: Robert Haas <rhaas@postgresql.org>
+2021-11-05 [bd807be69] amcheck: Add additional TOAST pointer checks.
+-->
+
+ <listitem>
+ <para>
+ Improve <application>amcheck</application> sanity checks for
+ <acronym>TOAST</acronym> tables (Mark Dilger)
+ </para>
+ </listitem>
+
+<!--
+Author: Robert Haas <rhaas@postgresql.org>
+2022-03-15 [c6306db24] Add 'basebackup_to_shell' contrib module.
+Author: Robert Haas <rhaas@postgresql.org>
+2022-03-30 [26a0c025e] Document basebackup_to_shell.required_role.
+-->
+
+ <listitem>
+ <para>
+ Add new module <application><link
+ linkend="basebackup-to-shell">basebackup_to_shell</link></application>
+ as an example of a custom backup target (Robert Haas)
+ </para>
+ </listitem>
+
+<!--
+Author: Robert Haas <rhaas@postgresql.org>
+2022-02-03 [5ef1eefd7] Allow archiving via loadable modules.
+-->
+
+ <listitem>
+ <para>
+ Add new module <link
+ linkend="basic-archive"><application>basic_archive</application></link>
+ as an example of performing archiving via a library (Nathan Bossart)
+ </para>
+ </listitem>
+
+<!--
+Author: Tomas Vondra <tomas.vondra@postgresql.org>
+2021-11-06 [57e3c5160] Add bool GiST opclass to btree_gist
+Author: Tomas Vondra <tomas.vondra@postgresql.org>
+2021-11-08 [e2fbb8837] Fix gist_bool_ops to use gbtreekey2
+Author: Tomas Vondra <tomas.vondra@postgresql.org>
+2021-12-11 [4c6145b51] Add bool to btree_gist documentation
+-->
+
+ <listitem>
+ <para>
+ Allow <link
+ linkend="btree-gist"><application>btree_gist</application></link>
+ indexes on boolean columns (Emre Hasegeli)
+ </para>
+
+ <para>
+ These can be used for exclusion constraints.
+ </para>
+ </listitem>
+
+<!--
+Author: Michael Paquier <michael@paquier.xyz>
+2021-07-12 [127404fbe] pageinspect: Improve page_header() for pages of 32kB
+-->
+
+ <listitem>
+ <para>
+ Fix <link
+ linkend="pageinspect"><application>pageinspect</application></link>'s
+ <function>page_header()</function> to handle 32-kilobyte page sizes
+ (Quan Zongliang)
+ </para>
+
+ <para>
+ Previously, improper negative values could be returned in certain
+ cases.
+ </para>
+ </listitem>
+
+<!--
+Author: Michael Paquier <michael@paquier.xyz>
+2022-04-08 [76cbf7edb] pg_stat_statements: Track I/O timing for temporary file
+-->
+
+ <listitem>
+ <para>
+ Add counters for temporary file block I/O to <link
+ linkend="pgstatstatements"><application>pg_stat_statements</application></link>
+ (Masahiko Sawada)
+ </para>
+ </listitem>
+
+<!--
+Author: Magnus Hagander <magnus@hagander.net>
+2022-04-08 [57d6aea00] Add JIT counters to pg_stat_statements
+-->
+
+ <listitem>
+ <para>
+ Add <acronym>JIT</acronym> counters to pg_stat_statements (Magnus
+ Hagander)
+ </para>
+ </listitem>
+
+<!--
+Author: Jeff Davis <jdavis@postgresql.org>
+2022-04-08 [2258e76f9] Add contrib/pg_walinspect.
+-->
+
+ <listitem>
+ <para>
+ Add new module <link
+ linkend="pgwalinspect"><application>pg_walinspect</application></link>
+ (Bharath Rupireddy)
+ </para>
+
+ <para>
+ This gives <acronym>SQL</acronym>-level output similar to <link
+ linkend="pgwaldump"><application>pg_waldump</application></link>.
+ </para>
+ </listitem>
+
+<!--
+Author: Tom Lane <tgl@sss.pgh.pa.us>
+2022-01-12 [134d97463] Include permissive/enforcing state in sepgsql log messag
+-->
+
+ <listitem>
+ <para>
+ Indicate the permissive/enforcing state in <link
+ linkend="sepgsql"><application>sepgsql</application></link> log
+ messages (Dave Page)
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ <sect4>
+ <title><link linkend="postgres-fdw"><application>postgres_fdw</application></link></title>
+
+ <itemizedlist>
+
+<!--
+Author: Tom Lane <tgl@sss.pgh.pa.us>
+2021-07-30 [5d44fff01] In postgres_fdw, allow CASE expressions to be pushed to
+-->
+
+ <listitem>
+ <para>
+ Allow postgres_fdw to push down <literal>CASE</literal> expressions
+ (Alexander Pyhalov)
+ </para>
+ </listitem>
+
+<!--
+Author: Fujii Masao <fujii@postgresql.org>
+2021-09-07 [449ab6350] postgres_fdw: Allow application_name of remote connectio
+Author: Fujii Masao <fujii@postgresql.org>
+2021-12-24 [6e0cb3dec] postgres_fdw: Allow postgres_fdw.application_name to inc
+Author: Fujii Masao <fujii@postgresql.org>
+2022-02-18 [94c49d534] postgres_fdw: Make postgres_fdw.application_name support
+-->
+
+ <listitem>
+ <para>
+ Add server variable
+ <varname>postgres_fdw.application_name</varname> to control the
+ application name of postgres_fdw connections (Hayato Kuroda)
+ </para>
+
+ <para>
+ Previously the remote session's <link
+ linkend="guc-application-name"><varname>application_name</varname></link>
+ could only be set on the remote server or via a
+ <application>postgres_fdw</application> connection specification.
+ <varname>postgres_fdw.application_name</varname> supports some
+ escape sequences for customization, making it easier to tell such
+ connections apart on the remote server.
+ </para>
+ </listitem>
+
+<!--
+Author: Etsuro Fujita <efujita@postgresql.org>
+2022-02-24 [04e706d42] postgres_fdw: Add support for parallel commit.
+-->
+
+ <listitem>
+ <para>
+ Allow parallel commit on <application>postgres_fdw</application>
+ servers (Etsuro Fujita)
+ </para>
+
+ <para>
+ This is enabled with the <literal>CREATE SERVER</literal> option
+ <literal>parallel_commit</literal>.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ </sect4>
+
+ </sect3>
+
+ </sect2>
+
+ <sect2 id="release-15-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>Adam Brusselback</member>
+ <member>Adam Mackler</member>
+ <member>Adrian Ho</member>
+ <member>Ahsan Hadi</member>
+ <member>Ajin Cherian</member>
+ <member>Alastair McKinley</member>
+ <member>Aleksander Alekseev</member>
+ <member>Ales Zeleny</member>
+ <member>Alex Kingsborough</member>
+ <member>Alex Kozhemyakin</member>
+ <member>Alexander Korotkov</member>
+ <member>Alexander Kukushkin</member>
+ <member>Alexander Lakhin</member>
+ <member>Alexander Nawratil</member>
+ <member>Alexander Pyhalov</member>
+ <member>Alexey Borzov</member>
+ <member>Alexey Ermakov</member>
+ <member>Aliaksandr Kalenik</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>Anders Kaseorg</member>
+ <member>Andreas Dijkman</member>
+ <member>Andreas Grob</member>
+ <member>Andreas Seltenreich</member>
+ <member>Andrei Zubkov</member>
+ <member>Andres Freund</member>
+ <member>Andrew Alsup</member>
+ <member>Andrew Bille</member>
+ <member>Andrew Dunstan</member>
+ <member>Andrew Gierth</member>
+ <member>Andrew Kesper</member>
+ <member>Andrey Borodin</member>
+ <member>Andrey Lepikhov</member>
+ <member>Andrey Sokolov</member>
+ <member>Andy Fan</member>
+ <member>Anton Melnikov</member>
+ <member>Anton Voloshin</member>
+ <member>Antonin Houska</member>
+ <member>Arjan van de Ven</member>
+ <member>Arne Roland</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>Bauyrzhan Sakhariyev</member>
+ <member>Benoit Lobréau</member>
+ <member>Bernd Dorn</member>
+ <member>Bertrand Drouvot</member>
+ <member>Bharath Rupireddy</member>
+ <member>Björn Harrtell</member>
+ <member>Boris Kolpackov</member>
+ <member>Boris Korzun</member>
+ <member>Brad Nicholson</member>
+ <member>Brar Piening</member>
+ <member>Bruce Momjian</member>
+ <member>Bruno da Silva</member>
+ <member>Bryn Llewellyn</member>
+ <member>Carl Sopchak</member>
+ <member>Cary Huang</member>
+ <member>Chapman Flack</member>
+ <member>Chen Jiaoqian</member>
+ <member>Chris Bandy</member>
+ <member>Chris Lowder</member>
+ <member>Christian Quest</member>
+ <member>Christoph Berg</member>
+ <member>Christoph Heiss</member>
+ <member>Christophe Pettus</member>
+ <member>Christopher Painter-Wakefield</member>
+ <member>Claudio Freire</member>
+ <member>Clemens Zeidler</member>
+ <member>Corey Huinker</member>
+ <member>Dag Lem</member>
+ <member>Dagfinn Ilmari Mannsåker</member>
+ <member>Dan Kubb</member>
+ <member>Daniel Cherniy</member>
+ <member>Daniel Gustafsson</member>
+ <member>Daniel Polski</member>
+ <member>Daniel Vérité</member>
+ <member>Daniel Westermann</member>
+ <member>Daniele Varrazzo</member>
+ <member>Daniil Anisimov</member>
+ <member>Danny Shemesh</member>
+ <member>Darafei Praliaskouski</member>
+ <member>Daria Lepikhova</member>
+ <member>Dave Cramer</member>
+ <member>Dave Page</member>
+ <member>David Christensen</member>
+ <member>David Fetter</member>
+ <member>David G. Johnston</member>
+ <member>David Rowley</member>
+ <member>David Steele</member>
+ <member>David Zhang</member>
+ <member>Dean Rasheed</member>
+ <member>Dian Fay</member>
+ <member>Dilip Kumar</member>
+ <member>Dipesh Pandit</member>
+ <member>Dmitry Dolgov</member>
+ <member>Dmitry Koval</member>
+ <member>Dmitry Marakasov</member>
+ <member>Dominique Devienne</member>
+ <member>Dong Wook</member>
+ <member>Drew DeVault</member>
+ <member>Eduard Català</member>
+ <member>Egor Chindyaskin</member>
+ <member>Egor Rogov</member>
+ <member>Ekaterina Kiryanova</member>
+ <member>Elena Indrupskaya</member>
+ <member>Elvis Pranskevichus</member>
+ <member>Emmanuel Quincerot</member>
+ <member>Emre Hasegeli</member>
+ <member>Eric Mutta</member>
+ <member>Erica Zhang</member>
+ <member>Erik Rijkers</member>
+ <member>Erki Eessaar</member>
+ <member>Etsuro Fujita</member>
+ <member>Euler Taveira</member>
+ <member>Fabien Coelho</member>
+ <member>Fabrice Chapuis</member>
+ <member>Fabrice Fontaine</member>
+ <member>Fabrízio de Royes Mello</member>
+ <member>Feike Steenbergen</member>
+ <member>Filip Gospodinov</member>
+ <member>Florin Irion</member>
+ <member>Floris Van Nee</member>
+ <member>Frédéric Yhuel</member>
+ <member>Gabriela Serventi</member>
+ <member>Gaurab Dey</member>
+ <member>Geoff Winkless</member>
+ <member>Geoffrey Blake</member>
+ <member>Georgios Kokolatos</member>
+ <member>Gilles Darold</member>
+ <member>Greg Nancarrow</member>
+ <member>Greg Rychlewski</member>
+ <member>Greg Sabino Mullane</member>
+ <member>Greg Stark</member>
+ <member>Gregory Smith</member>
+ <member>Guillaume Lelarge</member>
+ <member>Gunnar Bluth</member>
+ <member>Gurjeet Singh</member>
+ <member>Haiyang Wang</member>
+ <member>Haiying Tang</member>
+ <member>Hannu Krosing</member>
+ <member>Hans Buschmann</member>
+ <member>Hayato Kuroda</member>
+ <member>Heath Lord</member>
+ <member>Heikki Linnakangas</member>
+ <member>Herwig Goemans</member>
+ <member>Himanshu Upadhyaya</member>
+ <member>Holly Roberts</member>
+ <member>Hou Zhijie</member>
+ <member>Hubert Lubaczewski</member>
+ <member>Ian Barwick</member>
+ <member>Ian Campbell</member>
+ <member>Ibrar Ahmed</member>
+ <member>Ildus Kurbangaliev</member>
+ <member>Ilya Anfimov</member>
+ <member>Itamar Gafni</member>
+ <member>Jacob Champion</member>
+ <member>Jaime Casanova</member>
+ <member>Jakub Wartak</member>
+ <member>James Coleman</member>
+ <member>James Hilliard</member>
+ <member>James Inform</member>
+ <member>Jan Piotrowski</member>
+ <member>Japin Li</member>
+ <member>Jason Harvey</member>
+ <member>Jason Kim</member>
+ <member>Jean-Christophe Arnu</member>
+ <member>Jeevan Ladhe</member>
+ <member>Jeff Davis</member>
+ <member>Jeff Janes</member>
+ <member>Jehan-Guillaume de Rorthais</member>
+ <member>Jelte Fennema</member>
+ <member>Jeremy Evans</member>
+ <member>Jeremy Schneider</member>
+ <member>Jian Guo</member>
+ <member>Jian He</member>
+ <member>Jimmy Yih</member>
+ <member>Jiri Fejfar</member>
+ <member>Jitka Plesníková</member>
+ <member>Joe Conway</member>
+ <member>Joe Wildish</member>
+ <member>Joel Jacobson</member>
+ <member>Joey Bodoia</member>
+ <member>John Naylor</member>
+ <member>Jonathan Katz</member>
+ <member>Josef Simanek</member>
+ <member>Joseph Koshakow</member>
+ <member>Josh Soref</member>
+ <member>Joshua Brindle</member>
+ <member>Juan José Santamaría Flecha</member>
+ <member>Julien Rouhaud</member>
+ <member>Julien Roze</member>
+ <member>Junwang Zhao</member>
+ <member>Jürgen Purtz</member>
+ <member>Justin Pryzby</member>
+ <member>Ken Kato</member>
+ <member>Kevin Burke</member>
+ <member>Kevin Grittner</member>
+ <member>Kevin Humphreys</member>
+ <member>Kevin McKibbin</member>
+ <member>Kevin Sweet</member>
+ <member>Kevin Zheng</member>
+ <member>Klaudie Willis</member>
+ <member>Konstantin Knizhnik</member>
+ <member>Konstantina Skovola</member>
+ <member>Kosei Masumura</member>
+ <member>Kotaro Kawamoto</member>
+ <member>Koyu Tanigawa</member>
+ <member>Kuntal Ghosh</member>
+ <member>Kyotaro Horiguchi</member>
+ <member>Lars Kanis</member>
+ <member>Lauren Fliksteen</member>
+ <member>Laurent Hasson</member>
+ <member>Laurenz Albe</member>
+ <member>Leslie Lemaire</member>
+ <member>Liam Bowen</member>
+ <member>Lingjie Qiang</member>
+ <member>Liu Huailing</member>
+ <member>Louis Jachiet</member>
+ <member>Lukas Fittl</member>
+ <member>Ma Liangzhu</member>
+ <member>Maciek Sakrejda</member>
+ <member>Magnus Hagander</member>
+ <member>Mahendra Singh Thalor</member>
+ <member>Maksim Milyutin</member>
+ <member>Marc Bachmann</member>
+ <member>Marcin Krupowicz</member>
+ <member>Marcus Gartner</member>
+ <member>Marek Szuba</member>
+ <member>Marina Polyakova</member>
+ <member>Mario Emmenlauer</member>
+ <member>Mark Dilger</member>
+ <member>Mark Murawski</member>
+ <member>Mark Wong</member>
+ <member>Markus Wanner</member>
+ <member>Markus Winand</member>
+ <member>Martijn van Oosterhout</member>
+ <member>Martin Jurca</member>
+ <member>Martin Kalcher</member>
+ <member>Martín Marqués</member>
+ <member>Masahiko Sawada</member>
+ <member>Masahiro Ikeda</member>
+ <member>Masao Fujii</member>
+ <member>Masaya Kawamoto</member>
+ <member>Masayuki Hirose</member>
+ <member>Matthias van de Meent</member>
+ <member>Matthijs van der Vleuten</member>
+ <member>Maxim Orlov</member>
+ <member>Maxim Yablokov</member>
+ <member>Melanie Plageman</member>
+ <member>Michael Banck</member>
+ <member>Michael Harris</member>
+ <member>Michael J. Sullivan</member>
+ <member>Michael Meskes</member>
+ <member>Michael Mühlbeyer</member>
+ <member>Michael Paquier</member>
+ <member>Michael Powers</member>
+ <member>Mike Fiedler</member>
+ <member>Mike Oh</member>
+ <member>Mikhail Kulagin</member>
+ <member>Miles Delahunty</member>
+ <member>Naoki Okano</member>
+ <member>Nathan Bossart</member>
+ <member>Nathan Long</member>
+ <member>Nazir Bilal Yavuz</member>
+ <member>Neha Sharma</member>
+ <member>Neil Chen</member>
+ <member>Nicola Contu</member>
+ <member>Nicolas Lutic</member>
+ <member>Nikhil Benesch</member>
+ <member>Nikhil Shetty</member>
+ <member>Nikhil Sontakke</member>
+ <member>Nikita Glukhov</member>
+ <member>Nikolai Berkoff</member>
+ <member>Nikolay Samokhvalov</member>
+ <member>Nikolay Shaplov</member>
+ <member>Nitin Jadhav</member>
+ <member>Noah Misch</member>
+ <member>Noboru Saito</member>
+ <member>Noriyoshi Shinoda</member>
+ <member>Olaf Bohlen</member>
+ <member>Olly Betts</member>
+ <member>Onder Kalaci</member>
+ <member>Oskar Stenberg</member>
+ <member>Otto Kekalainen</member>
+ <member>Paul Guo</member>
+ <member>Paul Jungwirth</member>
+ <member>Paul Martinez</member>
+ <member>Pavan Deolasee</member>
+ <member>Pavel Borisov</member>
+ <member>Pavel Luzanov</member>
+ <member>Pavel Stehule</member>
+ <member>Peter Eisentraut</member>
+ <member>Peter Geoghegan</member>
+ <member>Peter Slavov</member>
+ <member>Peter Smith</member>
+ <member>Petr Jelínek</member>
+ <member>Phil Florent</member>
+ <member>Phil Krylov</member>
+ <member>Pierre-Aurélien Georges</member>
+ <member>Prabhat Sahu</member>
+ <member>Quan Zongliang</member>
+ <member>Rachel Heaton</member>
+ <member>Rahila Syed</member>
+ <member>Rajakavitha Kodhandapani</member>
+ <member>Rajkumar Raghuwanshi</member>
+ <member>Ranier Vilela</member>
+ <member>Rei Kamigishi</member>
+ <member>Reid Thompson</member>
+ <member>Rémi Lapeyre</member>
+ <member>Renan Soares Lopes</member>
+ <member>Richard Guo</member>
+ <member>Richard Wesley</member>
+ <member>RKN Sai Krishna</member>
+ <member>Robert Haas</member>
+ <member>Robert Treat</member>
+ <member>Roberto Mello</member>
+ <member>Robins Tharakan</member>
+ <member>Roger Mason</member>
+ <member>Roman Zharkov</member>
+ <member>Ronan Dunklau</member>
+ <member>Rui Zhao</member>
+ <member>Ryan Kelly</member>
+ <member>Ryo Matsumura</member>
+ <member>Ryohei Takahashi</member>
+ <member>Sadhuprasad Patro</member>
+ <member>Sait Talha Nisanci</member>
+ <member>Sami Imseih</member>
+ <member>Sandeep Thakkar</member>
+ <member>Sebastian Kemper</member>
+ <member>Sehrope Sarkuni</member>
+ <member>Sergei Kornilov</member>
+ <member>Sergei Shoulbakov</member>
+ <member>Sergey Shinderuk</member>
+ <member>Shay Rojansky</member>
+ <member>Shenhao Wang</member>
+ <member>Shi Yu</member>
+ <member>Shinya Kato</member>
+ <member>Shruthi Gowda</member>
+ <member>Simon Perepelitsa</member>
+ <member>Simon Riggs</member>
+ <member>Sirisha Chamarthi</member>
+ <member>Soumyadeep Chakraborty</member>
+ <member>Stan Hu</member>
+ <member>Stas Kelvich</member>
+ <member>Stefen Hillman</member>
+ <member>Stephen Frost</member>
+ <member>Steve Chavez</member>
+ <member>Sumanta Mukherjee</member>
+ <member>Suraj Khamkar</member>
+ <member>Suraj Kharage</member>
+ <member>Sven Klemm</member>
+ <member>Takamichi Osumi</member>
+ <member>Takayuki Tsunakawa</member>
+ <member>Takeshi Ideriha</member>
+ <member>Tatsuhiro Nakamori</member>
+ <member>Tatsuhito Kasahara</member>
+ <member>Tatsuo Ishii</member>
+ <member>Tatsuro Yamada</member>
+ <member>Teja Mupparti</member>
+ <member>Teodor Sigaev</member>
+ <member>Thibaud Walkowiak</member>
+ <member>Thom Brown</member>
+ <member>Thomas McKay</member>
+ <member>Thomas Munro</member>
+ <member>Tim McNamara</member>
+ <member>Timo Stolz</member>
+ <member>Timur Khanjanov</member>
+ <member>Tom Lane</member>
+ <member>Tomas Barton</member>
+ <member>Tomas Vondra</member>
+ <member>Tony Reix</member>
+ <member>Troy Frericks</member>
+ <member>Tushar Ahuja</member>
+ <member>Victor Wagner</member>
+ <member>Victor Yegorov</member>
+ <member>Vignesh C</member>
+ <member>Vik Fearing</member>
+ <member>Vincas Dargis</member>
+ <member>Vitaly Burovoy</member>
+ <member>Vitaly Voronov</member>
+ <member>Vladimir Sitnikov</member>
+ <member>Wang Ke</member>
+ <member>Wei Sun</member>
+ <member>Wei Wang</member>
+ <member>Whale Song</member>
+ <member>Will Mortensen</member>
+ <member>Wolfgang Walther</member>
+ <member>Yanliang Lei</member>
+ <member>Yaoguang Chen</member>
+ <member>Yogendra Suralkar</member>
+ <member>YoungHwan Joo</member>
+ <member>Yugo Nagata</member>
+ <member>Yukun Wang</member>
+ <member>Yura Sokolov</member>
+ <member>Yusuke Egashira</member>
+ <member>Yuzuko Hosoya</member>
+ <member>Zhang Mingli</member>
+ <member>Zhang Wenjie</member>
+ <member>Zhihong Yu</member>
+ <member>Zhiyong Wu</member>
+ </simplelist>
+ </sect2>
+
+ </sect1>