diff options
Diffstat (limited to 'doc/src/sgml/release-15.sgml')
-rw-r--r-- | doc/src/sgml/release-15.sgml | 8633 |
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 (Á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, Á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 (Á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 (>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 (Á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 (Á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 (Á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, Á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&""</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><pwd.h></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 >= 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> |