postgresql/doc/src/sgml/release-17.sgml
Tom Lane 2c0382f98b Last-minute updates for release notes.
Security: CVE-2025-12817, CVE-2025-12818
2025-11-10 13:36:13 -05:00

11931 lines
421 KiB
Text

<!-- doc/src/sgml/release-17.sgml -->
<!-- See header comment in release.sgml about typical markup -->
<sect1 id="release-17-7">
<title>Release 17.7</title>
<formalpara>
<title>Release date:</title>
<para>2025-11-13</para>
</formalpara>
<para>
This release contains a variety of fixes from 17.6.
For information about new features in major release 17, see
<xref linkend="release-17"/>.
</para>
<sect2 id="release-17-7-migration">
<title>Migration to Version 17.7</title>
<para>
A dump/restore is not required for those running 17.X.
</para>
<para>
However, if you are upgrading from a version earlier than 17.6,
see <xref linkend="release-17-6"/>.
</para>
</sect2>
<sect2 id="release-17-7-changes">
<title>Changes</title>
<itemizedlist>
<listitem>
<!--
Author: Nathan Bossart <nathan@postgresql.org>
Branch: master [5e4fcbe53] 2025-11-10 09:00:00 -0600
Branch: REL_18_STABLE [00eb646ea] 2025-11-10 09:00:00 -0600
Branch: REL_17_STABLE [e2fb3dfa8] 2025-11-10 09:00:00 -0600
Branch: REL_16_STABLE [d20abb587] 2025-11-10 09:00:00 -0600
Branch: REL_15_STABLE [2393d374a] 2025-11-10 09:00:00 -0600
Branch: REL_14_STABLE [95cce5669] 2025-11-10 09:00:00 -0600
Branch: REL_13_STABLE [8a2530ebc] 2025-11-10 09:00:00 -0600
-->
<para>
Check for <literal>CREATE</literal> privileges on the schema
in <command>CREATE STATISTICS</command> (Jelte Fennema-Nio)
<ulink url="&commit_baseurl;e2fb3dfa8">&sect;</ulink>
</para>
<para>
This omission allowed table owners to create statistics in any
schema, potentially leading to unexpected naming conflicts.
</para>
<para>
The <productname>PostgreSQL</productname> Project thanks
Jelte Fennema-Nio for reporting this problem.
(CVE-2025-12817)
</para>
</listitem>
<listitem>
<!--
Author: Jacob Champion <jchampion@postgresql.org>
Branch: master [600086f47] 2025-11-10 06:20:33 -0800
Branch: REL_18_STABLE [7eb8fcad8] 2025-11-10 06:03:01 -0800
Branch: REL_17_STABLE [f5999f018] 2025-11-10 06:03:03 -0800
Branch: REL_16_STABLE [585fd9b3c] 2025-11-10 06:03:04 -0800
Branch: REL_15_STABLE [91421565f] 2025-11-10 06:03:05 -0800
Branch: REL_14_STABLE [96d2c7e96] 2025-11-10 06:03:05 -0800
Branch: REL_13_STABLE [d6f0c0d6d] 2025-11-10 06:03:06 -0800
-->
<para>
Avoid integer overflow in allocation-size calculations
within <application>libpq</application> (Jacob Champion)
<ulink url="&commit_baseurl;f5999f018">&sect;</ulink>
</para>
<para>
Several places in <application>libpq</application> were not
sufficiently careful about computing the required size of a memory
allocation. Sufficiently large inputs could cause integer overflow,
resulting in an undersized buffer, which would then lead to writing
past the end of the buffer.
</para>
<para>
The <productname>PostgreSQL</productname> Project thanks Aleksey
Solovev of Positive Technologies for reporting this problem.
(CVE-2025-12818)
</para>
</listitem>
<listitem>
<!--
Author: Amit Langote <amitlan@postgresql.org>
Branch: master [ef5e60a9d] 2025-10-09 01:07:59 -0400
Branch: REL_18_STABLE [dc9125111] 2025-10-09 01:07:52 -0400
Branch: REL_17_STABLE [09f86a42f] 2025-10-09 01:07:36 -0400
Author: Peter Eisentraut <peter@eisentraut.org>
Branch: master [c09a06918] 2025-11-04 12:25:04 +0100
Branch: REL_18_STABLE [1baae827e] 2025-11-04 12:25:14 +0100
Branch: REL_17_STABLE [1e6dfdaa0] 2025-11-04 12:25:20 +0100
-->
<para>
Prevent <quote>unrecognized node type</quote> errors when a SQL/JSON
function such as <function>JSON_VALUE</function> has
a <literal>DEFAULT</literal> clause containing
a <literal>COLLATE</literal> expression (Jian He)
<ulink url="&commit_baseurl;09f86a42f">&sect;</ulink>
<ulink url="&commit_baseurl;1e6dfdaa0">&sect;</ulink>
</para>
</listitem>
<listitem>
<!--
Author: Richard Guo <rguo@postgresql.org>
Branch: master [b63a82245] 2025-09-16 18:42:20 +0900
Branch: REL_18_STABLE Release: REL_18_0 [d29a3f4b4] 2025-09-16 18:43:57 +0900
Branch: REL_17_STABLE [d719e2ecb] 2025-09-16 18:45:26 +0900
Branch: REL_16_STABLE [62397bb18] 2025-09-16 18:46:39 +0900
-->
<para>
Correctly treat JSON constructor expressions, such
as <function>JSON_OBJECT()</function>, as non-strict (Tender Wang,
Richard Guo)
<ulink url="&commit_baseurl;d719e2ecb">&sect;</ulink>
</para>
<para>
In some cases these expressions can yield a non-null result despite
having one or more null inputs, making them non-strict. The planner
incorrectly classified them as strict and could perform incorrect
query transformations as a result.
</para>
</listitem>
<listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [cdf7feb96] 2025-09-13 16:55:51 -0400
Branch: REL_18_STABLE Release: REL_18_0 [802308693] 2025-09-13 16:55:51 -0400
Branch: REL_17_STABLE [e09adb5b9] 2025-09-13 16:55:51 -0400
Branch: REL_16_STABLE [281ad4ed1] 2025-09-13 16:55:51 -0400
Branch: REL_15_STABLE [9fd531534] 2025-09-13 16:55:51 -0400
Branch: REL_14_STABLE [f75ff1b14] 2025-09-13 16:55:51 -0400
Branch: REL_13_STABLE [308773617] 2025-09-13 16:55:51 -0400
-->
<para>
Further fix processing of character classes within <literal>SIMILAR
TO</literal> regular expressions (Laurenz Albe)
<ulink url="&commit_baseurl;e09adb5b9">&sect;</ulink>
</para>
<para>
The previous fix for translating <literal>SIMILAR TO</literal>
pattern matching expressions to POSIX-style regular expressions
broke a corner case that formerly worked: if there is an escape
character right after the opening bracket and then a closing bracket
right after the escape sequence (for
example <literal>[\w]</literal>), the closing bracket was no longer
seen as terminating the character class.
</para>
</listitem>
<listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [b0cc0a71e] 2025-09-17 16:32:57 -0400
Branch: REL_18_STABLE Release: REL_18_0 [4eab45649] 2025-09-17 16:32:57 -0400
Branch: REL_17_STABLE [e830896c1] 2025-09-17 16:32:57 -0400
Branch: REL_16_STABLE [7df74e635] 2025-09-17 16:32:57 -0400
Branch: REL_15_STABLE [afd18f276] 2025-09-17 16:32:57 -0400
Branch: REL_14_STABLE [31bf09632] 2025-09-17 16:32:57 -0400
Branch: REL_13_STABLE [b649ef244] 2025-09-17 16:32:57 -0400
-->
<para>
Fix parsing of aggregate functions whose arguments contain a
sub-select with a <literal>FROM</literal> reference to a CTE outside
the aggregate function (Tom Lane)
<ulink url="&commit_baseurl;e830896c1">&sect;</ulink>
</para>
<para>
Such a CTE reference must act like a outer-level column reference
when determining the aggregate's semantic level; but it was not
being accounted for, leading to obscure planner or executor errors.
</para>
</listitem>
<listitem>
<!--
Author: Richard Guo <rguo@postgresql.org>
Branch: master [aba8f61c3] 2025-09-03 16:00:38 +0900
Branch: REL_18_STABLE Release: REL_18_0 [ab4a35b4e] 2025-09-03 16:03:43 +0900
Branch: REL_17_STABLE [f34202f51] 2025-09-03 16:05:49 +0900
Branch: REL_16_STABLE [79ade5873] 2025-09-03 16:09:23 +0900
Branch: REL_15_STABLE [53e35fb56] 2025-09-03 16:13:33 +0900
Branch: REL_14_STABLE [160ef51c8] 2025-09-03 16:16:36 +0900
Branch: REL_13_STABLE [8c02d92c6] 2025-09-03 16:19:06 +0900
-->
<para>
Fix <quote>no relation entry for relid</quote> errors in corner
cases while estimating SubPlan costs (Richard Guo)
<ulink url="&commit_baseurl;f34202f51">&sect;</ulink>
</para>
</listitem>
<listitem>
<!--
Author: David Rowley <drowley@postgresql.org>
Branch: master [da9f9f75e] 2025-08-30 00:50:50 +1200
Branch: REL_18_STABLE Release: REL_18_0 [4aea55891] 2025-08-30 00:51:39 +1200
Branch: REL_17_STABLE [ed394c4bd] 2025-08-30 00:52:22 +1200
Branch: REL_16_STABLE [f0fe1da50] 2025-08-30 00:52:49 +1200
Branch: REL_15_STABLE [8286bce0a] 2025-08-30 00:53:17 +1200
-->
<para>
Avoid unlikely use-after-free in planner's expansion of partitioned
tables (Bernd Reiß)
<ulink url="&commit_baseurl;ed394c4bd">&sect;</ulink>
</para>
<para>
There was a hazard only when the last live partition was
concurrently dropped.
</para>
</listitem>
<listitem>
<!--
Author: Peter Geoghegan <pg@bowt.ie>
Branch: master [843e50208] 2025-10-10 14:52:25 -0400
Branch: REL_18_STABLE [61de81a49] 2025-10-10 14:52:23 -0400
Branch: REL_17_STABLE [ae15cebc2] 2025-10-10 14:52:21 -0400
Branch: REL_16_STABLE [c160fd469] 2025-10-10 14:52:19 -0400
Branch: REL_15_STABLE [ca0c93908] 2025-10-10 14:52:17 -0400
Branch: REL_14_STABLE [314004021] 2025-10-10 14:52:14 -0400
Branch: REL_13_STABLE [af302ff6b] 2025-10-10 14:52:12 -0400
-->
<para>
Remove faulty assertion in btree index cleanup (Peter Geoghegan)
<ulink url="&commit_baseurl;ae15cebc2">&sect;</ulink>
</para>
</listitem>
<listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [327b7324d] 2025-08-26 12:08:57 -0400
Branch: REL_18_STABLE Release: REL_18_0 [3a7a3eaaf] 2025-08-26 12:08:57 -0400
Branch: REL_17_STABLE [456c6a05d] 2025-08-26 12:08:57 -0400
Branch: REL_16_STABLE [d532069c3] 2025-08-26 12:08:57 -0400
Branch: REL_15_STABLE [34249b3b5] 2025-08-26 12:08:57 -0400
Branch: REL_14_STABLE [4a593043e] 2025-08-26 12:08:57 -0400
Branch: REL_13_STABLE [3e0f5f00b] 2025-08-26 12:08:57 -0400
-->
<para>
Fix possible infinite loop in GIN index scans with multiple scan
conditions (Tom Lane)
<ulink url="&commit_baseurl;456c6a05d">&sect;</ulink>
</para>
<para>
GIN can handle scan conditions that can reject non-matching entries
but are not useful for searching for relevant entries, for example
a <type>tsquery</type> clause like <literal>!term</literal>. But
such a condition must not be first in the array of scan conditions.
The code failed to ensure that in all cases, with the result that a
query having a mix of such conditions with normal conditions might
work or not depending on the order in which the conditions were
given in the query.
</para>
</listitem>
<listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [b55068236] 2025-08-26 11:38:41 -0400
Branch: REL_18_STABLE Release: REL_18_0 [44c2e5b76] 2025-08-26 11:38:41 -0400
Branch: REL_17_STABLE [d17abaea8] 2025-08-26 11:38:41 -0400
Branch: REL_16_STABLE [25eadfd0f] 2025-08-26 11:38:41 -0400
Branch: REL_15_STABLE [a9c1b9c1c] 2025-08-26 11:38:41 -0400
Branch: REL_14_STABLE [a7da746c1] 2025-08-26 11:38:41 -0400
Branch: REL_13_STABLE [b2d71c455] 2025-08-26 11:38:41 -0400
-->
<para>
Ensure that GIN index scans can be canceled (Tom Lane)
<ulink url="&commit_baseurl;d17abaea8">&sect;</ulink>
</para>
<para>
Some code paths were capable of running for a long time without
checking for interrupts.
</para>
</listitem>
<listitem>
<!--
Author: Álvaro Herrera <alvherre@kurilemu.de>
Branch: master [a95e3d84c] 2025-11-04 13:23:26 +0100
Branch: REL_18_STABLE [419ffde23] 2025-11-04 13:23:26 +0100
Branch: REL_17_STABLE [f4b68b033] 2025-11-04 13:23:26 +0100
Branch: REL_16_STABLE [6ef33c805] 2025-11-04 13:23:26 +0100
Branch: REL_15_STABLE [23ddadf68] 2025-11-04 13:23:26 +0100
Branch: REL_14_STABLE [f0ad41716] 2025-11-04 13:23:26 +0100
Branch: REL_13_STABLE [3c7b47974] 2025-11-04 13:23:26 +0100
Branch: master [0a3d27bfe] 2025-11-04 20:31:43 +0100
Branch: REL_18_STABLE [8733f0b54] 2025-11-04 20:31:43 +0100
Branch: REL_17_STABLE [3b5007347] 2025-11-04 20:31:43 +0100
Branch: REL_16_STABLE [20442cf50] 2025-11-04 20:31:43 +0100
Branch: REL_15_STABLE [bcfbd3f74] 2025-11-04 20:31:43 +0100
Branch: REL_14_STABLE [65b0d1f74] 2025-11-04 20:31:43 +0100
Branch: REL_13_STABLE [ef81697fe] 2025-11-04 20:31:43 +0100
-->
<para>
Ensure that BRIN autosummarization provides a snapshot for index
expressions that need one (Álvaro Herrera)
<ulink url="&commit_baseurl;f4b68b033">&sect;</ulink>
<ulink url="&commit_baseurl;3b5007347">&sect;</ulink>
</para>
<para>
Previously, autosummarization would fail for such indexes, and then
leave placeholder index tuples behind, causing the index to bloat
over time.
</para>
</listitem>
<listitem>
<!--
Author: David Rowley <drowley@postgresql.org>
Branch: master [9fd29d7ff] 2025-10-21 20:46:14 +1300
Branch: REL_18_STABLE [715983a81] 2025-10-21 20:46:49 +1300
Branch: REL_17_STABLE [c4f5a59ab] 2025-10-21 20:47:10 +1300
Branch: REL_16_STABLE [ef915bf93] 2025-10-21 20:47:35 +1300
Branch: REL_15_STABLE [810aaf7f2] 2025-10-21 20:48:06 +1300
Branch: REL_14_STABLE [eea24eb0a] 2025-10-21 20:48:34 +1300
Branch: REL_13_STABLE [c28f8ca29] 2025-10-21 20:49:00 +1300
-->
<para>
Fix integer-overflow hazard in BRIN index scans when the table
contains close to 2<superscript>32</superscript> pages (Sunil S)
<ulink url="&commit_baseurl;c4f5a59ab">&sect;</ulink>
</para>
<para>
This oversight could result in an infinite loop or scanning of
unneeded table pages.
</para>
</listitem>
<listitem>
<!--
Author: David Rowley <drowley@postgresql.org>
Branch: master [6911f8037] 2025-10-23 13:11:02 +1300
Branch: REL_18_STABLE [ceb51d09b] 2025-10-23 13:12:03 +1300
Branch: REL_17_STABLE [10945148e] 2025-10-23 13:12:49 +1300
Branch: REL_16_STABLE [3398b0d02] 2025-10-23 13:13:19 +1300
Branch: REL_15_STABLE [b8ecfbe5a] 2025-10-23 13:13:44 +1300
Branch: REL_14_STABLE [e4316ec4d] 2025-10-23 13:14:08 +1300
Branch: REL_13_STABLE [4afab175b] 2025-10-23 13:14:33 +1300
-->
<para>
Fix incorrect zero-extension of stored values in JIT-generated tuple
deforming code (David Rowley)
<ulink url="&commit_baseurl;10945148e">&sect;</ulink>
</para>
<para>
When not using JIT, the equivalent code does sign-extension not
zero-extension, leading to a different Datum representation of small
integer data types. This inconsistency was masked in most cases,
but it is known to lead to <quote>could not find memoization table
entry</quote> errors when using Memoize plan nodes, and there might
be other symptoms.
</para>
</listitem>
<listitem>
<!--
Author: David Rowley <drowley@postgresql.org>
Branch: master [39dcfda2d] 2025-10-26 10:59:50 +1300
Branch: REL_18_STABLE [a2387c32f] 2025-10-26 11:01:32 +1300
Branch: REL_17_STABLE [0d3074615] 2025-10-26 11:01:53 +1300
Branch: REL_16_STABLE [a546964db] 2025-10-26 11:02:15 +1300
Branch: REL_15_STABLE [2992b9a07] 2025-10-26 11:02:36 +1300
-->
<para>
Fix incorrect logic for caching result-relation information for
triggers (David Rowley, Amit Langote)
<ulink url="&commit_baseurl;0d3074615">&sect;</ulink>
</para>
<para>
In cases where partitions' column sets aren't physically identical
to their parent partitioned tables' column sets, this oversight
could lead to crashes.
</para>
</listitem>
<listitem>
<!--
Author: David Rowley <drowley@postgresql.org>
Branch: master [ac06ea8f7] 2025-09-17 12:19:15 +1200
Branch: REL_18_STABLE Release: REL_18_0 [78e6047dc] 2025-09-17 12:19:51 +1200
Branch: REL_17_STABLE [0fb06e893] 2025-09-17 12:20:19 +1200
Branch: REL_16_STABLE [ba0203880] 2025-09-17 12:20:44 +1200
Branch: REL_15_STABLE [f00ad440a] 2025-09-17 12:21:08 +1200
Branch: REL_14_STABLE [f78a69034] 2025-09-17 12:21:29 +1200
Branch: master [dee21ea6d] 2025-09-17 11:48:55 +1200
Branch: REL_18_STABLE Release: REL_18_0 [bae6c74ba] 2025-09-17 11:49:26 +1200
Branch: REL_17_STABLE [3d939a9b1] 2025-09-17 11:49:49 +1200
Branch: REL_16_STABLE [d6539f88b] 2025-09-17 11:50:12 +1200
Branch: REL_15_STABLE [005770203] 2025-09-17 11:50:35 +1200
Branch: REL_14_STABLE [2eb7ea97d] 2025-09-17 11:50:58 +1200
Branch: REL_13_STABLE [940f3cd5d] 2025-09-17 11:51:21 +1200
-->
<para>
Add missing EvalPlanQual rechecks for TID Scan and TID Range Scan
plan nodes (Sophie Alpert, David Rowley)
<ulink url="&commit_baseurl;0fb06e893">&sect;</ulink>
<ulink url="&commit_baseurl;3d939a9b1">&sect;</ulink>
</para>
<para>
This omission led to possibly not rechecking a condition
on <structfield>ctid</structfield> during concurrent-update
situations, causing the update's behavior to vary depending on which
plan type had been selected.
</para>
</listitem>
<listitem>
<!--
Author: Etsuro Fujita <efujita@postgresql.org>
Branch: master [12609fbac] 2025-10-15 17:15:00 +0900
Branch: REL_18_STABLE [b14144325] 2025-10-15 17:15:01 +0900
Branch: REL_17_STABLE [2bb84ea7e] 2025-10-15 17:15:02 +0900
Branch: REL_16_STABLE [5a9af4868] 2025-10-15 17:15:03 +0900
Branch: REL_15_STABLE [4a08603a2] 2025-10-15 17:15:04 +0900
Branch: REL_14_STABLE [24e74b962] 2025-10-15 17:15:05 +0900
Branch: REL_13_STABLE [12b0c0e51] 2025-10-15 17:15:05 +0900
-->
<para>
Fix EvalPlanQual handling of foreign or custom joins that do not
have an alternative local-join plan prepared for EPQ (Masahiko
Sawada, Etsuro Fujita)
<ulink url="&commit_baseurl;2bb84ea7e">&sect;</ulink>
</para>
<para>
In such cases the foreign or custom access method should be invoked
normally, but that did not happen, typically leading to a crash.
</para>
</listitem>
<listitem>
<!--
Author: Álvaro Herrera <alvherre@kurilemu.de>
Branch: master [3231fd045] 2025-10-11 20:30:12 +0200
Branch: REL_18_STABLE [08c037dff] 2025-10-11 20:30:12 +0200
Branch: REL_17_STABLE [ea06f97ee] 2025-10-11 20:30:12 +0200
Branch: REL_16_STABLE [b835759ec] 2025-10-11 20:30:12 +0200
Branch: REL_15_STABLE [bdae98495] 2025-10-11 20:30:12 +0200
Branch: REL_14_STABLE [b753be38a] 2025-10-11 20:30:12 +0200
-->
<para>
Avoid duplicating hash partition constraints during <literal>DETACH
CONCURRENTLY</literal> (Haiyang Li)
<ulink url="&commit_baseurl;ea06f97ee">&sect;</ulink>
</para>
<para>
<command>ALTER TABLE DETACH PARTITION CONCURRENTLY</command> was
written to add a copy of the partitioning constraint to the
now-detached partition. This was misguided, partially because
non-concurrent <literal>DETACH</literal> doesn't do that, but mostly
because in the case of hash partitioning the constraint expression
contains references to the parent table's OID. That causes problems
during dump/restore, or if the parent table is dropped
after <literal>DETACH</literal>. In v19 and later, we'll no longer
create any such copied constraints at all. In released branches, to
minimize the risk of unforeseen consequences, only skip adding a
copied constraint if it is for hash partitioning.
</para>
</listitem>
<listitem>
<!--
Author: Peter Eisentraut <peter@eisentraut.org>
Branch: master [040cc5f3c] 2025-11-04 14:46:58 +0100
Branch: REL_18_STABLE [ba99c9491] 2025-11-04 14:47:15 +0100
Branch: REL_17_STABLE [0b44f2443] 2025-11-04 15:18:09 +0100
Branch: REL_16_STABLE [7180d56c5] 2025-11-04 15:22:17 +0100
Branch: REL_15_STABLE [643a5e96c] 2025-11-04 15:28:46 +0100
Branch: REL_14_STABLE [04345d7a4] 2025-11-04 15:37:08 +0100
Branch: REL_13_STABLE [7f239c72a] 2025-11-04 15:37:19 +0100
-->
<para>
Disallow generated columns in partition keys
(Jian He, Ashutosh Bapat)
<ulink url="&commit_baseurl;0b44f2443">&sect;</ulink>
</para>
<para>
This was already not allowed, but the check missed some cases, such
as where the column reference is implicit in a whole-row reference.
</para>
</listitem>
<listitem>
<!--
Author: Peter Eisentraut <peter@eisentraut.org>
Branch: master [aa606b931] 2025-11-06 13:54:42 +0100
Branch: REL_18_STABLE [0f9e0068b] 2025-11-06 13:55:08 +0100
Branch: REL_17_STABLE [07f787e57] 2025-11-06 14:01:42 +0100
Branch: REL_16_STABLE [26958f4d9] 2025-11-06 14:01:57 +0100
Branch: REL_15_STABLE [8278737bf] 2025-11-06 14:02:03 +0100
Branch: REL_14_STABLE [ccfe28eb4] 2025-11-06 14:02:09 +0100
Branch: REL_13_STABLE [3717849e6] 2025-11-06 14:02:13 +0100
-->
<para>
Disallow generated columns in <literal>COPY ... FROM
... WHERE</literal> clauses (Peter Eisentraut, Jian He)
<ulink url="&commit_baseurl;07f787e57">&sect;</ulink>
</para>
<para>
Previously, incorrect behavior or an obscure error message resulted
from attempting to reference such a column, since generated columns
have not yet been computed at the point
where <literal>WHERE</literal> filtering is done.
</para>
</listitem>
<listitem>
<!--
Author: John Naylor <john.naylor@postgresql.org>
Branch: master [54ab74865] 2025-10-03 16:05:02 +0700
Branch: REL_18_STABLE [76613b539] 2025-10-03 16:07:42 +0700
Branch: REL_17_STABLE [3549ffb6a] 2025-10-03 16:07:34 +0700
-->
<para>
Avoid potential use-after-free in parallel vacuum (Kevin Oommen
Anish)
<ulink url="&commit_baseurl;3549ffb6a">&sect;</ulink>
</para>
<para>
This bug seems to have no consequences in standard builds, but it's
theoretically a hazard.
</para>
</listitem>
<listitem>
<!--
Author: Noah Misch <noah@leadboat.com>
Branch: master [a95393ecd] 2025-09-29 11:15:44 -0700
Branch: REL_18_STABLE [d024160ff] 2025-09-29 11:15:47 -0700
Branch: REL_17_STABLE [6778fbca6] 2025-09-29 11:15:48 -0700
Branch: REL_16_STABLE [ab16418ee] 2025-09-29 11:15:48 -0700
Branch: REL_15_STABLE [d202ec1fb] 2025-09-29 11:15:48 -0700
Branch: REL_14_STABLE [5816baa9b] 2025-09-29 11:15:49 -0700
Branch: REL_13_STABLE [afb2cce74] 2025-09-29 11:15:49 -0700
-->
<para>
Fix visibility checking for statistics objects
in <literal>pg_temp</literal> (Noah Misch)
<ulink url="&commit_baseurl;6778fbca6">&sect;</ulink>
</para>
<para>
A statistics object located in a temporary schema cannot be named
without schema qualification,
but <function>pg_statistics_obj_is_visible()</function> missed that
memo and could return <quote>true</quote> regardless. In turn,
functions such as <function>pg_describe_object()</function> could
fail to schema-qualify the object's name as expected.
</para>
</listitem>
<listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [a0b99fc12] 2025-09-11 17:11:57 -0400
Branch: REL_18_STABLE Release: REL_18_0 [3c02c4652] 2025-09-11 17:11:54 -0400
Branch: REL_17_STABLE [c0c8ee23c] 2025-09-11 17:11:54 -0400
Branch: REL_16_STABLE [8856f1acc] 2025-09-11 17:11:54 -0400
Branch: REL_15_STABLE [451373dc5] 2025-09-11 17:11:54 -0400
Branch: master [f14ea34d6] 2025-09-12 17:43:17 -0400
Branch: REL_18_STABLE Release: REL_18_0 [ef81db969] 2025-09-12 17:43:18 -0400
Branch: REL_17_STABLE [a220e40d1] 2025-09-12 17:43:15 -0400
Branch: REL_16_STABLE [f6c8e7824] 2025-09-12 17:43:15 -0400
Branch: REL_15_STABLE [33e49ee01] 2025-09-12 17:43:15 -0400
-->
<para>
Fix <function>pg_event_trigger_dropped_objects()</function>'s
reporting of temporary status (Antoine Violin, Tom Lane)
<ulink url="&commit_baseurl;c0c8ee23c">&sect;</ulink>
<ulink url="&commit_baseurl;a220e40d1">&sect;</ulink>
</para>
<para>
If a dropped column default, trigger, or RLS policy belongs to a
temporary table, report it with <literal>is_temporary</literal>
true.
</para>
</listitem>
<listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [abdeacdb0] 2025-09-10 16:05:03 -0400
Branch: REL_18_STABLE Release: REL_18_0 [bc865ff6d] 2025-09-10 16:05:03 -0400
Branch: REL_17_STABLE [862980f92] 2025-09-10 16:05:03 -0400
Branch: REL_16_STABLE [e1da9c072] 2025-09-10 16:05:03 -0400
Branch: REL_15_STABLE [5ac973892] 2025-09-10 16:05:03 -0400
Branch: REL_14_STABLE [5eab9b0a4] 2025-09-10 16:05:03 -0400
Branch: REL_13_STABLE [8b6c29afd] 2025-09-10 16:05:03 -0400
-->
<para>
Fix memory leakage in hashed subplans (Haiyang Li)
<ulink url="&commit_baseurl;862980f92">&sect;</ulink>
</para>
<para>
Any memory consumed by the hash functions used for hashing tuples
constituted a query-lifespan memory leak. One way that could happen
is if the values being hashed require de-toasting.
</para>
</listitem>
<listitem>
<!--
Author: Michael Paquier <michael@paquier.xyz>
Branch: master [8c8f7b199] 2025-09-10 07:23:05 +0900
Branch: REL_18_STABLE Release: REL_18_0 [039301b3f] 2025-09-10 07:23:22 +0900
Branch: REL_17_STABLE [e2dd7b2ac] 2025-09-10 07:23:24 +0900
-->
<para>
Avoid leaking <structname>SMgrRelation</structname> objects in the
startup process (Jingtang Zhang)
<ulink url="&commit_baseurl;e2dd7b2ac">&sect;</ulink>
</para>
<para>
In a long-running standby server, the hashtable holding these
objects could bloat substantially, because there was no mechanism
for freeing no-longer-interesting entries.
</para>
</listitem>
<listitem>
<!--
Author: Álvaro Herrera <alvherre@kurilemu.de>
Branch: master [ff47f9c16] 2025-10-11 16:39:22 +0200
Branch: REL_18_STABLE [33e7b4a7c] 2025-10-11 16:39:22 +0200
Branch: REL_17_STABLE [f9993ac64] 2025-10-11 16:39:22 +0200
Branch: REL_16_STABLE [c72b5c536] 2025-10-11 16:39:22 +0200
Branch: REL_15_STABLE [23b316c36] 2025-10-11 16:39:22 +0200
-->
<para>
Fix minor memory leak during WAL replay of database creation
(Nathan Bossart)
<ulink url="&commit_baseurl;f9993ac64">&sect;</ulink>
</para>
</listitem>
<listitem>
<!--
Author: Michael Paquier <michael@paquier.xyz>
Branch: master [8191e0c16] 2025-09-08 15:52:23 +0900
Branch: REL_18_STABLE Release: REL_18_0 [f256a7bba] 2025-09-08 15:52:48 +0900
Branch: REL_17_STABLE [3e6dfcfb0] 2025-09-08 15:52:51 +0900
Branch: REL_16_STABLE [12f57681c] 2025-09-08 15:52:53 +0900
Branch: REL_15_STABLE [1852ec5db] 2025-09-08 15:52:56 +0900
-->
<para>
Fix corruption of the shared statistics table after out-of-memory
failures (Mikhail Kot)
<ulink url="&commit_baseurl;3e6dfcfb0">&sect;</ulink>
</para>
<para>
Previously, an out-of-memory failure partway through creating a new
hash table entry left a broken entry behind, potentially causing
errors in other sessions later.
</para>
</listitem>
<listitem>
<!--
Author: Dean Rasheed <dean.a.rasheed@gmail.com>
Branch: master [6ede13d1b] 2025-09-05 08:18:18 +0100
Branch: REL_18_STABLE Release: REL_18_0 [c70b6db34] 2025-09-05 08:21:35 +0100
Branch: REL_17_STABLE [6195afbe5] 2025-09-05 08:22:38 +0100
Branch: REL_16_STABLE [21a61b87f] 2025-09-05 08:23:57 +0100
Branch: REL_15_STABLE [f871fbae9] 2025-09-05 08:25:03 +0100
-->
<para>
Fix concurrent update issue in <command>MERGE</command>
(Yugo Nagata)
<ulink url="&commit_baseurl;6195afbe5">&sect;</ulink>
</para>
<para>
When executing a <literal>MERGE UPDATE</literal> action, if there is
more than one concurrent update of the target row, the
lock-and-retry code would sometimes incorrectly identify the latest
version of the target tuple, leading to incorrect results.
</para>
</listitem>
<listitem>
<!--
Author: Dean Rasheed <dean.a.rasheed@gmail.com>
Branch: master [fc6600fc1] 2025-09-04 11:45:44 +0100
Branch: REL_18_STABLE Release: REL_18_0 [311340f17] 2025-09-04 11:47:15 +0100
Branch: REL_17_STABLE [76f45be93] 2025-09-04 11:48:02 +0100
Branch: REL_16_STABLE [421d7a157] 2025-09-04 11:48:51 +0100
Branch: REL_15_STABLE [5481cc332] 2025-09-04 11:50:59 +0100
Branch: master [5386bfb9c] 2025-09-04 11:27:53 +0100
Branch: REL_18_STABLE Release: REL_18_0 [344662848] 2025-09-04 11:32:00 +0100
Branch: REL_17_STABLE [0b934d399] 2025-09-04 11:33:00 +0100
Branch: REL_16_STABLE [0c4d5a45d] 2025-09-04 11:34:25 +0100
Branch: REL_15_STABLE [451b22efd] 2025-09-04 11:35:19 +0100
Branch: REL_14_STABLE [5fd569ef2] 2025-09-04 11:36:25 +0100
Branch: REL_13_STABLE [0610b843c] 2025-09-04 11:37:46 +0100
Branch: REL_17_STABLE [57dfb64ec] 2025-09-04 16:01:18 +0100
Branch: REL_16_STABLE [d37694b97] 2025-09-04 16:00:01 +0100
Branch: REL_15_STABLE [a4624929d] 2025-09-04 15:59:02 +0100
Branch: REL_14_STABLE [ea65c8823] 2025-09-04 15:57:18 +0100
Branch: REL_13_STABLE [dbef9cbaa] 2025-09-04 15:55:59 +0100
-->
<para>
Add missing replica identity checks in <command>MERGE</command> and
<command>INSERT ... ON CONFLICT DO UPDATE</command>
(Zhijie Hou)
<ulink url="&commit_baseurl;76f45be93">&sect;</ulink>
<ulink url="&commit_baseurl;0b934d399">&sect;</ulink>
<ulink url="&commit_baseurl;57dfb64ec">&sect;</ulink>
</para>
<para>
If <command>MERGE</command> may require update or delete actions,
and the target table publishes updates or deletes, insist that it
have a <literal>REPLICA IDENTITY</literal> defined. Failing to
require this can silently break replication.
Likewise, <command>INSERT</command> with
an <literal>UPDATE</literal> option must require <literal>REPLICA
IDENTITY</literal> if the target table publishes either inserts or
updates.
</para>
</listitem>
<listitem>
<!--
Author: Amit Kapila <akapila@postgresql.org>
Branch: master [aa21e4922] 2025-08-19 05:33:17 +0000
Branch: REL_18_STABLE Release: REL_18_0 [a5d4c0415] 2025-08-19 05:18:24 +0000
Branch: REL_17_STABLE [288a817bc] 2025-08-19 05:06:37 +0000
Branch: REL_16_STABLE [7ece76129] 2025-08-19 04:54:19 +0000
Branch: REL_15_STABLE [e41137155] 2025-08-19 04:41:14 +0000
Branch: REL_14_STABLE [ef7750274] 2025-08-19 04:28:19 +0000
Branch: REL_13_STABLE [0a98f24a6] 2025-08-19 04:17:03 +0000
-->
<para>
Avoid deadlock during <command>DROP SUBSCRIPTION</command> when
publisher is on the same server as subscriber (Dilip Kumar)
<ulink url="&commit_baseurl;288a817bc">&sect;</ulink>
</para>
</listitem>
<listitem>
<!--
Author: Fujii Masao <fujii@postgresql.org>
Branch: master [883a95646] 2025-10-22 11:27:15 +0900
Branch: REL_18_STABLE [9670032cc] 2025-10-22 11:28:48 +0900
Branch: REL_17_STABLE [62d5ee75b] 2025-10-22 11:28:57 +0900
Branch: REL_16_STABLE [2e55cf4ef] 2025-10-22 11:29:02 +0900
Branch: REL_15_STABLE [59b215f72] 2025-10-22 11:29:07 +0900
Branch: REL_14_STABLE [a7ab6ce6a] 2025-10-22 11:29:13 +0900
Branch: REL_13_STABLE [7d7ebdb80] 2025-10-22 11:29:18 +0900
-->
<para>
Fix incorrect reporting of replication lag
in <structname>pg_stat_replication</structname> view (Fujii Masao)
<ulink url="&commit_baseurl;62d5ee75b">&sect;</ulink>
</para>
<para>
If any standby server's replay LSN stopped advancing,
the <structfield>write_lag</structfield>
and <structfield>flush_lag</structfield> columns would eventually
stop updating.
</para>
</listitem>
<listitem>
<!--
Author: Fujii Masao <fujii@postgresql.org>
Branch: master [f33e60a53] 2025-10-22 20:09:43 +0900
Branch: REL_18_STABLE [6ff7ba9fe] 2025-10-22 20:10:58 +0900
Branch: REL_17_STABLE [1db2870bb] 2025-10-22 20:11:47 +0900
Branch: REL_16_STABLE [4fd916eab] 2025-10-22 20:12:36 +0900
Branch: REL_15_STABLE [caf529aba] 2025-10-22 20:13:15 +0900
Branch: REL_14_STABLE [f106f53df] 2025-10-22 20:14:02 +0900
Branch: REL_13_STABLE [b00a16bae] 2025-10-22 20:14:07 +0900
-->
<para>
Avoid duplicative log messages about
invalid <varname>primary_slot_name</varname> settings (Fujii Masao)
<ulink url="&commit_baseurl;1db2870bb">&sect;</ulink>
</para>
</listitem>
<listitem>
<!--
Author: Amit Kapila <akapila@postgresql.org>
Branch: master [e0dc4bbfb] 2025-10-27 06:48:32 +0000
Branch: REL_18_STABLE [b45a8d7d8] 2025-10-27 06:37:35 +0000
Branch: REL_17_STABLE [0024f5a10] 2025-10-27 06:34:29 +0000
-->
<para>
Avoid failures when <varname>synchronized_standby_slots</varname>
references nonexistent replication slots (Shlok Kyal)
<ulink url="&commit_baseurl;0024f5a10">&sect;</ulink>
</para>
</listitem>
<listitem>
<!--
Author: Michael Paquier <michael@paquier.xyz>
Branch: master [912af1c7e] 2025-10-10 09:23:59 +0900
Branch: REL_18_STABLE [9a6ea00ac] 2025-10-10 09:24:48 +0900
Branch: REL_17_STABLE [42348839d] 2025-10-10 09:24:50 +0900
Branch: REL_16_STABLE [bfdd1a12d] 2025-10-10 09:24:53 +0900
Branch: REL_15_STABLE [0adf424b4] 2025-10-10 09:24:54 +0900
Branch: REL_14_STABLE [f57f2760e] 2025-10-10 09:24:57 +0900
Branch: REL_13_STABLE [c878d9808] 2025-10-10 09:24:59 +0900
-->
<para>
Remove the unfinished slot state file after failing to write a
replication slot's state to disk (Michael Paquier)
<ulink url="&commit_baseurl;42348839d">&sect;</ulink>
</para>
<para>
Previously, a failure such as out-of-disk-space resulted in leaving
a temporary <filename>state.tmp</filename> file behind. That's
problematic because it would block all subsequent attempts to
write the state, requiring manual intervention to clean up.
</para>
</listitem>
<listitem>
<!--
Author: Amit Kapila <akapila@postgresql.org>
Branch: master [e41d954da] 2025-09-24 04:11:53 +0000
Branch: REL_18_STABLE [37fc5de43] 2025-09-24 04:00:15 +0000
Branch: REL_17_STABLE [2f6e1a490] 2025-09-24 03:49:02 +0000
Branch: REL_16_STABLE [a54c7a113] 2025-09-24 03:38:27 +0000
-->
<para>
Fix mishandling of lock timeout signals in parallel apply workers
for logical replication (Hayato Kuroda)
<ulink url="&commit_baseurl;2f6e1a490">&sect;</ulink>
</para>
<para>
The same signal number was being used for both worker shutdown and
lock timeout, leading to confusion.
</para>
</listitem>
<listitem>
<!--
Author: Michael Paquier <michael@paquier.xyz>
Branch: master [17b2d5ec7] 2025-11-04 10:47:38 +0900
Branch: REL_18_STABLE [a14201073] 2025-11-04 10:52:33 +0900
Branch: REL_17_STABLE [e7340b484] 2025-11-04 10:52:35 +0900
Branch: REL_16_STABLE [9b6109607] 2025-11-04 10:52:38 +0900
Branch: REL_15_STABLE [da5ea6c70] 2025-11-04 10:52:41 +0900
Branch: REL_14_STABLE [a1b8b3b2e] 2025-11-04 10:52:42 +0900
Branch: REL_13_STABLE [25b484080] 2025-11-04 10:52:44 +0900
-->
<para>
Avoid unwanted WAL receiver shutdown when switching from streaming
to archive WAL source (Xuneng Zhou)
<ulink url="&commit_baseurl;e7340b484">&sect;</ulink>
</para>
<para>
During a timeline change, a standby server's WAL receiver should
remain alive, waiting for a new WAL streaming start point. Instead
it was repeatedly shutting down and immediately getting restarted,
which could confuse status monitoring code.
</para>
</listitem>
<listitem>
<!--
Author: Michael Paquier <michael@paquier.xyz>
Branch: master [ef03ea01f] 2025-08-22 09:03:59 +0900
Branch: REL_18_STABLE Release: REL_18_0 [86831952a] 2025-08-22 09:06:34 +0900
Branch: REL_17_STABLE [dcdc95cb4] 2025-08-22 09:06:36 +0900
Branch: REL_16_STABLE [ab874faaa] 2025-08-22 09:06:37 +0900
Branch: REL_15_STABLE [ec471008c] 2025-08-22 09:06:38 +0900
Branch: REL_14_STABLE [222130edd] 2025-08-22 09:06:40 +0900
Branch: REL_13_STABLE [30b32b08c] 2025-08-22 09:06:42 +0900
-->
<para>
Avoid failures in logical replication due to chance collisions of
file numbers between regular and temporary tables (Vignesh C)
<ulink url="&commit_baseurl;dcdc95cb4">&sect;</ulink>
</para>
<para>
This low-probability problem manifested as transient errors
like <quote>unexpected duplicate for
tablespace <replaceable>X</replaceable>,
relfilenode <replaceable>Y</replaceable></quote>.
<filename>contrib/autoprewarm</filename> was also affected.
A side-effect of the fix is that the SQL
function <function>pg_filenode_relation()</function> will now ignore
temporary tables.
</para>
</listitem>
<listitem>
<!--
Author: Masahiko Sawada <msawada@postgresql.org>
Branch: master [b46efe904] 2025-10-09 10:59:27 -0700
Branch: REL_18_STABLE [32b95fc71] 2025-10-09 10:59:29 -0700
Branch: REL_17_STABLE [a61592253] 2025-10-09 10:59:31 -0700
Branch: REL_16_STABLE [b07682bce] 2025-10-09 10:59:34 -0700
Branch: REL_15_STABLE [c40761759] 2025-10-09 10:59:36 -0700
-->
<para>
Fix use-after-free issue in the relation synchronization cache
maintained by the <application>pgoutput</application> logical
decoding plugin (Vignesh C, Masahiko Sawada)
<ulink url="&commit_baseurl;a61592253">&sect;</ulink>
</para>
<para>
An error during logical decoding could result in crashes in
subsequent logical decoding attempts in the same session.
The case is only reachable when <application>pgoutput</application>
is invoked via SQL functions.
</para>
</listitem>
<listitem>
<!--
Author: Michael Paquier <michael@paquier.xyz>
Branch: master [d43209468] 2025-10-30 13:13:28 +0900
Branch: REL_18_STABLE [bf3dba508] 2025-10-30 13:13:31 +0900
Branch: REL_17_STABLE [f3fb6bc9f] 2025-10-30 13:13:34 +0900
Branch: REL_16_STABLE [e3714dc05] 2025-10-30 13:13:37 +0900
-->
<para>
Avoid unnecessary invalidation of logical replication slots
(Bertrand Drouvot)
<ulink url="&commit_baseurl;f3fb6bc9f">&sect;</ulink>
</para>
</listitem>
<listitem>
<!--
Author: Michael Paquier <michael@paquier.xyz>
Branch: master [1f2e51e3c] 2025-08-20 15:00:04 +0900
Branch: REL_18_STABLE Release: REL_18_0 [ea1c6b0b0] 2025-08-20 15:00:08 +0900
Branch: REL_17_STABLE [07a302387] 2025-08-20 15:00:10 +0900
Branch: REL_16_STABLE [fea1cc3f7] 2025-08-20 15:00:13 +0900
Branch: REL_15_STABLE [818be9b73] 2025-08-20 15:00:14 +0900
Branch: REL_14_STABLE [32d388d00] 2025-08-20 15:00:16 +0900
Branch: REL_13_STABLE [8ed079cad] 2025-08-20 15:00:17 +0900
-->
<para>
Avoid assertion failure when trying to release a replication slot in
single-user mode (Hayato Kuroda)
<ulink url="&commit_baseurl;07a302387">&sect;</ulink>
</para>
</listitem>
<listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [03bf7a12c] 2025-10-13 17:56:45 -0400
Branch: REL_18_STABLE [b48ae226e] 2025-10-13 17:56:45 -0400
Branch: REL_17_STABLE [4c53519e1] 2025-10-13 17:56:45 -0400
Branch: REL_16_STABLE [9883e3cd1] 2025-10-13 17:56:45 -0400
Branch: REL_15_STABLE [f91666c83] 2025-10-13 17:56:45 -0400
Branch: REL_14_STABLE [e91eb4ad6] 2025-10-13 17:56:45 -0400
Branch: REL_13_STABLE [75a555d61] 2025-10-13 17:56:45 -0400
-->
<para>
Fix incorrect printing of messages about failures in checking
whether the user has Windows administrator privilege (Bryan Green)
<ulink url="&commit_baseurl;4c53519e1">&sect;</ulink>
</para>
<para>
This code would have crashed or at least printed garbage.
No such cases have been reported though, indicating that failure of
these system calls is extremely rare.
</para>
</listitem>
<listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [21fddb3d7] 2025-08-13 12:00:03 -0400
Branch: REL_18_STABLE Release: REL_18_0 [787cd2b7d] 2025-08-13 11:59:47 -0400
Branch: REL_17_STABLE [ab92f0e7f] 2025-08-13 11:59:47 -0400
Branch: REL_16_STABLE [e67d5f7ba] 2025-08-13 11:59:47 -0400
Branch: REL_15_STABLE [f4c088344] 2025-08-13 11:59:47 -0400
Branch: REL_14_STABLE [b3d6e8b63] 2025-08-13 11:59:47 -0400
Branch: REL_13_STABLE [e3b3fa863] 2025-08-13 11:59:47 -0400
-->
<para>
Avoid startup failure on macOS and BSD platforms when there is a
collision with a pre-existing semaphore set (Tom Lane)
<ulink url="&commit_baseurl;ab92f0e7f">&sect;</ulink>
</para>
<para>
If the pre-existing set has fewer semaphores than we asked for,
these platforms return <systemitem>EINVAL</systemitem>
not <systemitem>EEXIST</systemitem> as our code expected, resulting
in failure to start the database.
</para>
</listitem>
<listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [d4baa327a] 2025-11-05 11:09:45 -0500
Branch: REL_18_STABLE [6d8acb777] 2025-11-05 11:09:30 -0500
Branch: REL_17_STABLE [a9515f294] 2025-11-05 11:09:30 -0500
Branch: REL_16_STABLE [c775bf048] 2025-11-05 11:09:30 -0500
-->
<para>
Avoid crash when attempting to
test <productname>PostgreSQL</productname> with certain libsanitizer
options (Emmanuel Sibi, Jacob Champion)
<ulink url="&commit_baseurl;a9515f294">&sect;</ulink>
</para>
</listitem>
<listitem>
<!--
Author: David Rowley <drowley@postgresql.org>
Branch: master [50eb4e118] 2025-10-30 14:48:10 +1300
Branch: REL_18_STABLE [af3a79e08] 2025-10-30 14:49:07 +1300
Branch: REL_17_STABLE [bd6f986c9] 2025-10-30 14:49:42 +1300
Branch: REL_16_STABLE [cdc04a6c3] 2025-10-30 14:50:05 +1300
Branch: REL_15_STABLE [f3420e006] 2025-10-30 14:50:26 +1300
Branch: REL_14_STABLE [86bd9497f] 2025-10-30 14:50:46 +1300
Branch: REL_13_STABLE [7b955c227] 2025-10-30 14:51:08 +1300
-->
<para>
Fix false memory-context-checking warnings in debug builds
on 64-bit Windows (David Rowley)
<ulink url="&commit_baseurl;bd6f986c9">&sect;</ulink>
</para>
</listitem>
<listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [7504d2be9] 2025-09-27 14:29:41 -0400
Branch: REL_18_STABLE [78a284b0b] 2025-09-27 14:29:41 -0400
Branch: REL_17_STABLE [3fc9aa5b0] 2025-09-27 14:29:41 -0400
Branch: REL_16_STABLE [b7f6798c0] 2025-09-27 14:29:41 -0400
Branch: REL_15_STABLE [9ca79896a] 2025-09-27 14:29:41 -0400
Branch: REL_14_STABLE [0be39b4b1] 2025-09-27 14:29:41 -0400
-->
<para>
Correctly handle <literal>GROUP BY DISTINCT</literal> in PL/pgSQL
assignment statements (Tom Lane)
<ulink url="&commit_baseurl;3fc9aa5b0">&sect;</ulink>
</para>
<para>
The parser failed to record the <literal>DISTINCT</literal> option
in this context, so that the command would act as if it were
plain <literal>GROUP BY</literal>.
</para>
</listitem>
<listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [798b19d27] 2025-10-23 11:47:46 -0400
Branch: REL_18_STABLE [447a794f6] 2025-10-23 11:47:46 -0400
Branch: REL_17_STABLE [fbc41a145] 2025-10-23 11:47:46 -0400
Branch: REL_16_STABLE [cbfd4d0f8] 2025-10-23 11:47:46 -0400
Branch: REL_15_STABLE [4cde73259] 2025-10-23 11:47:46 -0400
Branch: REL_14_STABLE [7fb8c9240] 2025-10-23 11:47:46 -0400
Branch: REL_13_STABLE [d90c92d1c] 2025-10-23 11:47:46 -0400
-->
<para>
Avoid leaking memory when handling a SQL error within PL/Python
(Tom Lane)
<ulink url="&commit_baseurl;fbc41a145">&sect;</ulink>
</para>
<para>
This fixes a session-lifespan memory leak introduced in our previous
minor releases.
</para>
</listitem>
<listitem>
<!--
Author: Michael Paquier <michael@paquier.xyz>
Branch: master [db9405493] 2025-09-03 12:54:23 +0900
Branch: REL_18_STABLE Release: REL_18_0 [ae53537e2] 2025-09-03 12:54:27 +0900
Branch: REL_17_STABLE [0fedb3a27] 2025-09-03 12:54:29 +0900
Branch: REL_16_STABLE [701a0bd56] 2025-09-03 12:54:31 +0900
Branch: REL_15_STABLE [0b274c475] 2025-09-03 12:54:32 +0900
Branch: REL_14_STABLE [0cc540f0d] 2025-09-03 12:54:34 +0900
-->
<para>
Fix <application>libpq</application>'s trace output of characters
with the high bit set (Ran Benita)
<ulink url="&commit_baseurl;0fedb3a27">&sect;</ulink>
</para>
<para>
On platforms where <type>char</type> is considered signed, the
output included unsightly <literal>\xffffff</literal> decoration.
</para>
</listitem>
<listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [ea78bd6d5] 2025-10-05 16:27:47 -0400
Branch: REL_18_STABLE [d83879a32] 2025-10-05 16:27:47 -0400
Branch: REL_17_STABLE [1c4671f7b] 2025-10-05 16:27:47 -0400
Branch: REL_16_STABLE [46c4478db] 2025-10-05 16:27:47 -0400
Branch: REL_15_STABLE [771b106d1] 2025-10-05 16:27:47 -0400
Branch: REL_14_STABLE [f46d77377] 2025-10-05 16:27:47 -0400
Branch: REL_13_STABLE [fc287cf3c] 2025-10-05 16:27:47 -0400
-->
<para>
Fix <application>libpq</application>'s handling of socket-related
errors on Windows within its GSSAPI logic (Ning Wu, Tom Lane)
<ulink url="&commit_baseurl;1c4671f7b">&sect;</ulink>
</para>
<para>
The code for encrypting/decrypting transmitted data using GSSAPI did
not correctly recognize error conditions on the connection socket,
since Windows reports those differently than other platforms. This
led to failure to make such connections on Windows.
</para>
</listitem>
<listitem>
<!--
Author: Álvaro Herrera <alvherre@kurilemu.de>
Branch: master [615ff828e] 2025-10-18 18:18:19 +0200
Branch: REL_18_STABLE [0fe07fa11] 2025-10-18 18:18:19 +0200
Branch: REL_17_STABLE [c945b06d5] 2025-10-18 18:18:19 +0200
-->
<para>
Fix dumping of non-inherited not-null constraints on inherited table
columns (Dilip Kumar)
<ulink url="&commit_baseurl;c945b06d5">&sect;</ulink>
</para>
<para>
<application>pg_dump</application> failed to preserve such
constraints when dumping from a pre-v18 server.
</para>
</listitem>
<listitem>
<!--
Author: Fujii Masao <fujii@postgresql.org>
Branch: master [8e5b92928] 2025-09-16 16:44:58 +0900
Branch: REL_18_STABLE Release: REL_18_0 [176002c5b] 2025-09-16 16:46:28 +0900
Branch: REL_17_STABLE [968141898] 2025-09-16 16:46:36 +0900
Branch: REL_16_STABLE [20b23784f] 2025-09-16 16:46:43 +0900
Branch: REL_15_STABLE [165b07efe] 2025-09-16 16:46:51 +0900
Branch: REL_14_STABLE [295c0a644] 2025-09-16 16:46:58 +0900
Branch: REL_13_STABLE [dff7591a7] 2025-09-16 16:47:05 +0900
-->
<para>
In <application>pg_dump</application>, dump security labels on
subscriptions and event triggers (Jian He, Fujii Masao)
<ulink url="&commit_baseurl;968141898">&sect;</ulink>
</para>
<para>
Labels on these types of objects were previously missed.
</para>
</listitem>
<listitem>
<!--
Author: Noah Misch <noah@leadboat.com>
Branch: master [b61a5c4be] 2025-08-22 20:50:28 -0700
Branch: REL_18_STABLE Release: REL_18_0 [7652142f4] 2025-08-22 20:50:31 -0700
Branch: REL_17_STABLE [e8d22095e] 2025-08-22 20:50:32 -0700
Branch: REL_16_STABLE [e68fa9a83] 2025-08-22 20:50:32 -0700
Branch: REL_15_STABLE [fbf967e99] 2025-08-22 20:50:32 -0700
Branch: REL_14_STABLE [4948bb9df] 2025-08-22 20:50:33 -0700
Branch: REL_13_STABLE [05341b2e9] 2025-08-22 20:50:33 -0700
Branch: master [ad4412480] 2025-08-23 16:46:20 -0700
Branch: REL_18_STABLE Release: REL_18_0 [c6dca7c3d] 2025-08-23 16:46:24 -0700
Branch: REL_17_STABLE [49a09c6c5] 2025-08-23 16:46:24 -0700
Branch: REL_16_STABLE [412d29fd2] 2025-08-23 16:46:24 -0700
Branch: REL_15_STABLE [090c9c960] 2025-08-23 16:46:25 -0700
Branch: REL_14_STABLE [22c6a44f0] 2025-08-23 16:46:25 -0700
Branch: REL_13_STABLE [fb75e1ef7] 2025-08-23 16:46:26 -0700
Author: Álvaro Herrera <alvherre@kurilemu.de>
Branch: master [4921a5972] 2025-10-18 17:50:10 +0200
Branch: REL_18_STABLE [162e70ea0] 2025-10-18 17:50:10 +0200
Branch: REL_17_STABLE [7419c99a2] 2025-10-18 17:50:10 +0200
Branch: REL_16_STABLE [06c1ee6b7] 2025-10-18 17:50:10 +0200
Branch: REL_15_STABLE [4cc3b4445] 2025-10-18 17:50:10 +0200
Branch: REL_14_STABLE [6062c3db3] 2025-10-18 17:50:10 +0200
Branch: REL_13_STABLE [d20df9590] 2025-10-18 17:50:10 +0200
-->
<para>
Fix <application>pg_dump</application>'s sorting of default ACLs and
foreign key constraints (Kirill Reshke, Álvaro Herrera)
<ulink url="&commit_baseurl;e8d22095e">&sect;</ulink>
<ulink url="&commit_baseurl;49a09c6c5">&sect;</ulink>
<ulink url="&commit_baseurl;7419c99a2">&sect;</ulink>
</para>
<para>
Ensure consistent ordering of these database object types, as was
already done for other object types.
</para>
</listitem>
<listitem>
<!--
Author: Noah Misch <noah@leadboat.com>
Branch: master [c044b50d1] 2025-09-16 09:40:44 -0700
Branch: REL_18_STABLE Release: REL_18_0 [4ad846445] 2025-09-16 09:40:48 -0700
Branch: REL_17_STABLE [e127764b6] 2025-09-16 09:40:48 -0700
Branch: REL_16_STABLE [3cf328eca] 2025-09-16 09:40:48 -0700
Branch: REL_15_STABLE [0773f3a87] 2025-09-16 09:40:49 -0700
Branch: REL_14_STABLE [85d6ed31f] 2025-09-16 09:40:49 -0700
Branch: REL_13_STABLE [a685c057a] 2025-09-16 09:40:50 -0700
-->
<para>
In <application>pg_dump</application>, label comments for
separately-dumped domain constraints with the proper dependency
(Noah Misch)
<ulink url="&commit_baseurl;e127764b6">&sect;</ulink>
</para>
<para>
This error could lead to
parallel <application>pg_restore</application> attempting to create
the comment before the constraint itself has been restored.
</para>
</listitem>
<listitem>
<!--
Author: Fujii Masao <fujii@postgresql.org>
Branch: master [b54e8dbfe] 2025-09-16 10:35:12 +0900
Branch: REL_18_STABLE Release: REL_18_0 [77d2b155c] 2025-09-16 10:36:20 +0900
Branch: REL_17_STABLE [f7f9c5d65] 2025-09-16 10:36:54 +0900
Branch: REL_16_STABLE [97527a5e6] 2025-09-16 10:37:38 +0900
Branch: REL_15_STABLE [c8ed16050] 2025-09-16 10:38:09 +0900
Branch: REL_14_STABLE [db900ec35] 2025-09-16 10:38:40 +0900
Branch: REL_13_STABLE [8fbd1f8ea] 2025-09-16 10:39:13 +0900
Branch: master [45f50c995] 2025-09-18 11:09:15 +0900
Branch: REL_18_STABLE Release: REL_18_0 [7aecc00b3] 2025-09-18 11:10:12 +0900
Branch: REL_17_STABLE [dc8aa2f58] 2025-09-18 11:10:18 +0900
Branch: REL_16_STABLE [0870397cc] 2025-09-18 11:10:24 +0900
Branch: REL_15_STABLE [5f42008f9] 2025-09-18 11:10:30 +0900
Branch: REL_14_STABLE [bc476f8b8] 2025-09-18 11:10:37 +0900
Branch: REL_13_STABLE [a4dbb11bb] 2025-09-18 11:10:43 +0900
-->
<para>
In <application>pg_restore</application>, skip comments and security
labels for publications and subscriptions that are not being
restored (Jian He, Fujii Masao)
<ulink url="&commit_baseurl;f7f9c5d65">&sect;</ulink>
<ulink url="&commit_baseurl;dc8aa2f58">&sect;</ulink>
</para>
<para>
Do not emit <command>COMMENT</command> or <command>SECURITY
LABEL</command> commands for these objects
when <option>--no-publications</option>
or <option>--no-subscriptions</option> is specified.
</para>
</listitem>
<listitem>
<!--
Author: Daniel Gustafsson <dgustafsson@postgresql.org>
Branch: master [e686010c5] 2025-08-29 19:28:46 +0200
Branch: REL_18_STABLE Release: REL_18_0 [8980c724b] 2025-08-29 19:28:46 +0200
Branch: REL_17_STABLE [92268b35d] 2025-08-29 19:28:46 +0200
Branch: REL_16_STABLE [ec017a305] 2025-08-29 19:28:46 +0200
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [a239c4a0c] 2025-10-13 12:44:20 -0400
Branch: REL_18_STABLE [6a4009747] 2025-10-13 12:44:20 -0400
Branch: REL_17_STABLE [bf18e9bd7] 2025-10-13 12:44:20 -0400
Branch: REL_16_STABLE [1518b7d76] 2025-10-13 12:44:20 -0400
Branch: master [277dec651] 2025-10-19 14:36:58 -0400
Branch: REL_18_STABLE [aa1fcd087] 2025-10-19 14:36:58 -0400
Branch: REL_17_STABLE [2efca1633] 2025-10-19 14:36:58 -0400
Branch: REL_16_STABLE [c865f5b9f] 2025-10-19 14:36:58 -0400
Branch: REL_15_STABLE [8b9924bce] 2025-10-19 14:36:58 -0400
Branch: REL_14_STABLE [40dc710a6] 2025-10-19 14:36:58 -0400
Branch: REL_13_STABLE [33276cd02] 2025-10-19 14:36:58 -0400
-->
<para>
Fix assorted errors in the data compression logic
in <application>pg_dump</application>
and <application>pg_restore</application>
(Daniel Gustafsson, Tom Lane)
<ulink url="&commit_baseurl;92268b35d">&sect;</ulink>
<ulink url="&commit_baseurl;bf18e9bd7">&sect;</ulink>
<ulink url="&commit_baseurl;2efca1633">&sect;</ulink>
</para>
<para>
Error checking was missing or incorrect in several places, and there
were also portability issues that would manifest on big-endian
hardware. These problems had been missed because this code is only
used to read compressed TOC files within directory-format
dumps. <application>pg_dump</application> never produces such a
dump; the case can be reached only by manually compressing the TOC
file after the fact, which is a supported thing to do but very
uncommon.
</para>
</listitem>
<listitem>
<!--
Author: Michael Paquier <michael@paquier.xyz>
Branch: master [902c08887] 2025-10-03 14:03:55 +0900
Branch: REL_18_STABLE [c00637b5f] 2025-10-03 14:04:00 +0900
Branch: REL_17_STABLE [de6de069d] 2025-10-03 14:04:01 +0900
Branch: REL_16_STABLE [640590bb4] 2025-10-03 14:04:03 +0900
Branch: REL_15_STABLE [b5cefc197] 2025-10-03 14:04:05 +0900
Branch: REL_14_STABLE [9b3beb7c6] 2025-10-03 14:04:06 +0900
Branch: REL_13_STABLE [f1a2f3a0c] 2025-10-03 14:04:08 +0900
-->
<para>
Fix <application>pgbench</application> to error out cleanly if
a <literal>COPY</literal> operation is started (Anthonin Bonnefoy)
<ulink url="&commit_baseurl;de6de069d">&sect;</ulink>
</para>
<para>
<application>pgbench</application> doesn't intend to support this
case, but previously it went into an infinite loop.
</para>
</listitem>
<listitem>
<!--
Author: Fujii Masao <fujii@postgresql.org>
Branch: master [19d4f9ffc] 2025-09-30 23:52:28 +0900
Branch: REL_18_STABLE [29aabbc43] 2025-09-30 23:53:32 +0900
Branch: REL_17_STABLE [a912118c6] 2025-09-30 23:53:46 +0900
Branch: REL_16_STABLE [36c4d30c8] 2025-09-30 23:53:53 +0900
Branch: REL_15_STABLE [bdccb6302] 2025-09-30 23:54:01 +0900
Branch: REL_14_STABLE [cb21e1f92] 2025-09-30 23:55:02 +0900
Branch: REL_13_STABLE [7d7e81d1e] 2025-09-30 23:55:33 +0900
-->
<para>
Fix <application>pgbench</application>'s reporting of multiple
errors (Yugo Nagata)
<ulink url="&commit_baseurl;a912118c6">&sect;</ulink>
</para>
<para>
In cases where two successive <function>PQgetResult</function> calls
both fail, <application>pgbench</application> might report the wrong
error message.
</para>
</listitem>
<listitem>
<!--
Author: Fujii Masao <fujii@postgresql.org>
Branch: master [8bb174295] 2025-09-26 21:23:43 +0900
Branch: REL_18_STABLE [c736808e0] 2025-09-26 21:24:59 +0900
Branch: REL_17_STABLE [f39d9164b] 2025-09-26 21:25:05 +0900
Branch: REL_16_STABLE [8b2e290bd] 2025-09-26 21:25:11 +0900
Branch: REL_15_STABLE [704f51771] 2025-09-26 21:25:17 +0900
-->
<para>
In <application>pgbench</application>, fix faulty assertion about
errors in pipeline mode (Yugo Nagata)
<ulink url="&commit_baseurl;f39d9164b">&sect;</ulink>
</para>
</listitem>
<listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [9224c3025] 2025-10-22 13:38:40 -0400
Branch: REL_18_STABLE [e2072b47b] 2025-10-22 13:38:37 -0400
Branch: REL_17_STABLE [4eb6992af] 2025-10-22 13:38:37 -0400
-->
<para>
Fix per-file memory leakage
in <application>pg_combinebackup</application> (Tom Lane)
<ulink url="&commit_baseurl;4eb6992af">&sect;</ulink>
</para>
</listitem>
<listitem>
<!--
Author: Masahiko Sawada <msawada@postgresql.org>
Branch: master [8ae0f6a0c] 2025-11-04 15:47:25 -0800
Branch: REL_18_STABLE [71aa2e114] 2025-11-04 15:47:22 -0800
Branch: master [eab9e4e27] 2025-08-19 12:11:42 -0700
Branch: REL_18_STABLE Release: REL_18_0 [0beb7e933] 2025-08-19 12:11:39 -0700
Branch: REL_17_STABLE [b6090ed96] 2025-08-19 12:11:37 -0700
Branch: REL_16_STABLE [815fcfb20] 2025-08-19 12:11:34 -0700
Branch: REL_15_STABLE [eb9ee4d18] 2025-08-19 12:11:32 -0700
Branch: REL_14_STABLE [79643105a] 2025-08-19 12:11:29 -0700
Branch: REL_13_STABLE [7d8d36289] 2025-08-19 12:11:25 -0700
-->
<para>
Ensure that <filename>contrib/pg_buffercache</filename> functions
can be canceled (Satyanarayana Narlapuram, Yuhang Qiu)
<ulink url="&commit_baseurl;b6090ed96">&sect;</ulink>
</para>
<para>
Some code paths were capable of running for a long time without
checking for interrupts.
</para>
</listitem>
<listitem>
<!--
Author: Nathan Bossart <nathan@postgresql.org>
Branch: master [208927e65] 2025-10-17 11:36:50 -0500
Branch: REL_18_STABLE [3ccf8e9ac] 2025-10-17 11:36:50 -0500
Branch: REL_17_STABLE [a0551bc57] 2025-10-17 11:36:50 -0500
Branch: REL_16_STABLE [fae0ce5e3] 2025-10-17 11:36:50 -0500
Branch: REL_15_STABLE [6c03ae8d6] 2025-10-17 11:36:50 -0500
Branch: REL_14_STABLE [f146eb45c] 2025-10-17 11:36:50 -0500
Branch: REL_13_STABLE [19a64f567] 2025-10-17 11:36:50 -0500
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [da44d71e7] 2025-10-18 18:36:21 -0400
Branch: REL_18_STABLE [c29d32d27] 2025-10-18 18:36:21 -0400
Branch: REL_17_STABLE [d4e8c37cc] 2025-10-18 18:36:21 -0400
Branch: REL_16_STABLE [c26a8eaf6] 2025-10-18 18:36:21 -0400
-->
<para>
Fix <filename>contrib/pg_prewarm</filename>'s privilege checks for
indexes (Ayush Vatsa, Nathan Bossart)
<ulink url="&commit_baseurl;a0551bc57">&sect;</ulink>
<ulink url="&commit_baseurl;d4e8c37cc">&sect;</ulink>
</para>
<para>
<function>pg_prewarm()</function> requires <literal>SELECT</literal>
privilege on relations to be prewarmed. However, since indexes have
no SQL privileges of their own, this resulted in non-superusers
being unable to prewarm indexes. Instead, check
for <literal>SELECT</literal> privilege on the index's table.
</para>
</listitem>
<listitem>
<!--
Author: Michael Paquier <michael@paquier.xyz>
Branch: master [684a745f5] 2025-10-02 11:07:30 +0900
Branch: REL_18_STABLE [fc295beb7] 2025-10-02 11:09:10 +0900
Branch: REL_17_STABLE [036decbba] 2025-10-02 11:09:12 +0900
Branch: REL_16_STABLE [c0f9fe877] 2025-10-02 11:09:13 +0900
Branch: REL_15_STABLE [49b5f0b53] 2025-10-02 11:09:15 +0900
Branch: REL_14_STABLE [ee2dbcad0] 2025-10-02 11:09:17 +0900
Branch: REL_13_STABLE [c207bf473] 2025-10-02 11:09:19 +0900
-->
<para>
Make <filename>contrib/pgstattuple</filename> more robust about
empty or invalid index pages (Nitin Motiani)
<ulink url="&commit_baseurl;036decbba">&sect;</ulink>
</para>
<para>
Count all-zero pages as free space, and ignore pages that are
invalid according to a check of the page's special-space size.
The code for btree indexes already counted all-zero pages as free,
but the hash and gist code would error out, which has been found to
be much less user-friendly. Similarly, make all three cases agree
on ignoring corrupted pages rather than throwing errors.
</para>
</listitem>
<listitem>
<!--
Author: Thomas Munro <tmunro@postgresql.org>
Branch: master [c5d34f4a5] 2025-11-08 12:26:43 +1300
Branch: REL_18_STABLE [f8ccab0e9] 2025-11-08 12:28:15 +1300
Branch: REL_17_STABLE [03d9140cb] 2025-11-08 12:28:52 +1300
Branch: REL_16_STABLE [2f76ffe5e] 2025-11-08 12:29:15 +1300
Branch: REL_15_STABLE [1c7cba4c5] 2025-11-08 12:30:08 +1300
Branch: REL_14_STABLE [d8ba910b0] 2025-11-08 12:32:42 +1300
Branch: REL_13_STABLE [77b5b2c6f] 2025-11-08 12:33:01 +1300
-->
<para>
Harden our read and write barrier macros to satisfy Clang
(Thomas Munro)
<ulink url="&commit_baseurl;03d9140cb">&sect;</ulink>
</para>
<para>
We supposed that <function>__atomic_thread_fence()</function> is a
sufficient barrier to prevent the C compiler from re-ordering memory
accesses around it, but it appears that that's not true for Clang,
allowing it to generate incorrect code for at least RISC-V, MIPS,
and LoongArch machines. Add explicit compiler barriers to fix that.
</para>
</listitem>
<listitem>
<!--
Author: Peter Eisentraut <peter@eisentraut.org>
Branch: master [282d0bdee] 2025-09-15 08:31:11 +0200
Branch: REL_18_STABLE Release: REL_18_0 [c11ac811a] 2025-09-15 08:31:36 +0200
Branch: REL_17_STABLE [755f01ad7] 2025-09-15 08:31:47 +0200
Branch: REL_16_STABLE [2670881af] 2025-09-15 08:31:53 +0200
Branch: REL_15_STABLE [72a24bebc] 2025-09-15 08:31:59 +0200
Branch: REL_14_STABLE [fbfc36e94] 2025-09-15 08:32:08 +0200
Branch: REL_13_STABLE [59d6e843e] 2025-09-15 08:32:14 +0200
-->
<para>
Fix building with LLVM version 21 and later (Holger Hoffstätte)
<ulink url="&commit_baseurl;755f01ad7">&sect;</ulink>
</para>
</listitem>
<listitem>
<!--
Author: Nathan Bossart <nathan@postgresql.org>
Branch: master [9016fa7e3] 2025-09-10 11:21:12 -0500
Branch: REL_18_STABLE Release: REL_18_0 [87ea6e9b6] 2025-09-10 11:21:12 -0500
Branch: REL_17_STABLE [15f9eeef6] 2025-09-10 11:21:12 -0500
Branch: REL_16_STABLE [509c77929] 2025-09-10 11:21:12 -0500
Author: Jeff Davis <jdavis@postgresql.org>
Branch: master [9af672bcb] 2025-09-08 12:29:42 -0700
Branch: REL_18_STABLE Release: REL_18_0 [a7024398b] 2025-09-09 16:04:04 -0700
Branch: REL_17_STABLE [e25453a36] 2025-09-09 16:04:23 -0700
Branch: REL_16_STABLE [2de24ca6c] 2025-09-09 16:06:30 -0700
-->
<para>
When building with meson, apply the same special optimization flags
for <filename>numeric.c</filename>
and <filename>checksum.c</filename> as the makefile build does
(Nathan Bossart, Jeff Davis)
<ulink url="&commit_baseurl;15f9eeef6">&sect;</ulink>
<ulink url="&commit_baseurl;e25453a36">&sect;</ulink>
</para>
<para>
Use <option>-ftree-vectorize</option> for both files, as well
as <option>-funroll-loops</option>
for <filename>checksum.c</filename>, to match what the makefiles
have long done.
</para>
</listitem>
<listitem>
<!--
Author: Álvaro Herrera <alvherre@kurilemu.de>
Branch: master [6ad9378c9] 2025-10-16 20:21:05 +0200
Branch: REL_18_STABLE [6aa04a60c] 2025-10-16 20:21:05 +0200
Branch: REL_17_STABLE [a8933194e] 2025-10-16 20:21:05 +0200
Branch: REL_16_STABLE [a506b0c0a] 2025-10-16 20:21:05 +0200
Branch: REL_15_STABLE [33202cba8] 2025-10-16 20:21:05 +0200
Branch: REL_14_STABLE [56cd332f8] 2025-10-16 20:21:05 +0200
Branch: REL_13_STABLE [f768f5a7d] 2025-10-16 20:21:05 +0200
-->
<para>
Fix PGXS build infrastructure to support building
NLS <filename>po</filename> files for extensions (Ryo Matsumura)
<ulink url="&commit_baseurl;a8933194e">&sect;</ulink>
</para>
</listitem>
</itemizedlist>
</sect2>
</sect1>
<sect1 id="release-17-6">
<title>Release 17.6</title>
<formalpara>
<title>Release date:</title>
<para>2025-08-14</para>
</formalpara>
<para>
This release contains a variety of fixes from 17.5.
For information about new features in major release 17, see
<xref linkend="release-17"/>.
</para>
<sect2 id="release-17-6-migration">
<title>Migration to Version 17.6</title>
<para>
A dump/restore is not required for those running 17.X.
</para>
<para>
However, if you have any
BRIN <literal>numeric_minmax_multi_ops</literal> indexes, it is
advisable to reindex them after updating. See the fourth changelog
entry below.
</para>
<para>
Also, if you are upgrading from a version earlier than 17.5,
see <xref linkend="release-17-5"/>.
</para>
</sect2>
<sect2 id="release-17-6-changes">
<title>Changes</title>
<itemizedlist>
<listitem>
<!--
Author: Dean Rasheed <dean.a.rasheed@gmail.com>
Branch: master [22424953c] 2025-08-11 09:03:11 +0100
Branch: REL_18_STABLE [64f77c6a6] 2025-08-11 09:07:36 +0100
Branch: REL_17_STABLE [a85eddab2] 2025-08-11 09:09:12 +0100
Branch: REL_16_STABLE [7e86da539] 2025-08-11 09:10:17 +0100
Branch: REL_15_STABLE [415badc13] 2025-08-11 09:11:02 +0100
Branch: REL_14_STABLE [afe38fb6a] 2025-08-11 09:12:09 +0100
Branch: REL_13_STABLE [533211ded] 2025-08-11 09:13:20 +0100
-->
<para>
Tighten security checks in planner estimation functions
(Dean Rasheed)
<ulink url="&commit_baseurl;a85eddab2">&sect;</ulink>
</para>
<para>
The fix for CVE-2017-7484, plus followup fixes, intended to prevent
leaky functions from being applied to statistics data for columns
that the calling user does not have permission to read. Two gaps in
that protection have been found. One gap applies to partitioning
and inheritance hierarchies where RLS policies on the tables should
restrict access to statistics data, but did not.
</para>
<para>
The other gap applies to cases where the query accesses a table via
a view, and the view owner has permissions to read the underlying
table but the calling user does not have permissions on the view.
The view owner's permissions satisfied the security checks, and the
leaky function would get applied to the underlying table's
statistics before we check the calling user's permissions on the
view. This has been fixed by making security checks on views occur
at the start of planning. That might cause permissions failures to
occur earlier than before.
</para>
<para>
The <productname>PostgreSQL</productname> Project thanks
Dean Rasheed for reporting this problem.
(CVE-2025-8713)
</para>
</listitem>
<listitem>
<!--
Author: Nathan Bossart <nathan@postgresql.org>
Branch: master [71ea0d679] 2025-08-11 09:00:00 -0500
Branch: REL_18_STABLE [67a2fbb8f] 2025-08-11 09:00:00 -0500
Branch: REL_17_STABLE [575f54d4c] 2025-08-11 09:00:00 -0500
Branch: REL_16_STABLE [7ad8e7909] 2025-08-11 09:00:00 -0500
Branch: REL_15_STABLE [424040506] 2025-08-11 09:00:00 -0500
Branch: REL_14_STABLE [e4998d089] 2025-08-11 09:00:00 -0500
Branch: REL_13_STABLE [c204bd39f] 2025-08-11 09:00:00 -0500
Branch: REL_14_STABLE [8967c33c6] 2025-08-11 12:37:00 -0500
Branch: REL_13_STABLE [27d3dee68] 2025-08-11 12:37:00 -0500
-->
<para>
Prevent <application>pg_dump</application> scripts from being used
to attack the user running the restore (Nathan Bossart)
<ulink url="&commit_baseurl;575f54d4c">&sect;</ulink>
</para>
<para>
Since dump/restore operations typically involve running SQL commands
as superuser, the target database installation must trust the source
server. However, it does not follow that the operating system user
who executes <application>psql</application> to perform the restore
should have to trust the source server. The risk here is that an
attacker who has gained superuser-level control over the source
server might be able to cause it to emit text that would be
interpreted as <application>psql</application> meta-commands.
That would provide shell-level access to the restoring user's own
account, independently of access to the target database.
</para>
<para>
To provide a positive guarantee that this can't happen,
extend <application>psql</application> with
a <command>\restrict</command> command that prevents execution of
further meta-commands, and teach <application>pg_dump</application>
to issue that before any data coming from the source server.
</para>
<para>
The PostgreSQL Project thanks Martin Rakhmanov, Matthieu Denais, and
RyotaK for reporting this problem.
(CVE-2025-8714)
</para>
</listitem>
<listitem>
<!--
Author: Noah Misch <noah@leadboat.com>
Branch: master [70693c645] 2025-08-11 06:18:59 -0700
Branch: REL_18_STABLE [13a67ce60] 2025-08-11 06:19:03 -0700
Branch: REL_17_STABLE [9b92f115b] 2025-08-11 06:19:03 -0700
Branch: REL_16_STABLE [850caae60] 2025-08-11 06:19:03 -0700
Branch: REL_15_STABLE [9751f934a] 2025-08-11 06:19:04 -0700
Branch: REL_14_STABLE [0f5838438] 2025-08-11 06:19:04 -0700
Branch: REL_13_STABLE [2179e6005] 2025-08-11 06:19:05 -0700
-->
<para>
Convert newlines to spaces in names included in comments
in <application>pg_dump</application> output
(Noah Misch)
<ulink url="&commit_baseurl;9b92f115b">&sect;</ulink>
</para>
<para>
Object names containing newlines offered the ability to inject
arbitrary SQL commands into the output script. (Without the
preceding fix, injection of <application>psql</application>
meta-commands would also be possible this way.)
CVE-2012-0868 fixed this class of problem at the time, but later
work reintroduced several cases.
</para>
<para>
The <productname>PostgreSQL</productname> Project thanks
Noah Misch for reporting this problem.
(CVE-2025-8715)
</para>
</listitem>
<listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [80c758a2e] 2025-08-05 16:51:10 -0400
Branch: REL_18_STABLE [9b681e239] 2025-08-05 16:51:10 -0400
Branch: REL_17_STABLE [0b0d3c19b] 2025-08-05 16:51:10 -0400
Branch: REL_16_STABLE [b9279058a] 2025-08-05 16:51:10 -0400
Branch: REL_15_STABLE [835c9374d] 2025-08-05 16:51:10 -0400
Branch: REL_14_STABLE [5b0c8e328] 2025-08-05 16:51:10 -0400
-->
<para>
Fix incorrect distance calculation in
BRIN <literal>numeric_minmax_multi_ops</literal> support function
(Peter Eisentraut, Tom Lane)
<ulink url="&commit_baseurl;0b0d3c19b">&sect;</ulink>
</para>
<para>
The results were sometimes wrong on 64-bit platforms, and wildly
wrong on 32-bit platforms. This did not produce obvious failures
because the logic is only used to choose how to merge values into
ranges; at worst the index would become inefficient and bloated.
Nonetheless it's recommended to reindex any BRIN indexes that use
the <literal>numeric_minmax_multi_ops</literal> operator class.
</para>
</listitem>
<listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [71c0921b6] 2025-07-28 16:50:41 -0400
Branch: REL_18_STABLE [637ead2e1] 2025-07-28 16:50:41 -0400
Branch: REL_17_STABLE [fd4ad33fe] 2025-07-28 16:50:41 -0400
Branch: REL_16_STABLE [6d5e493b4] 2025-07-28 16:50:42 -0400
Branch: REL_15_STABLE [0ffbd345e] 2025-07-28 16:50:42 -0400
Branch: REL_14_STABLE [0395464af] 2025-07-28 16:50:42 -0400
Branch: REL_13_STABLE [589d6e640] 2025-07-28 16:50:42 -0400
Branch: master [902f92221] 2025-07-29 12:47:38 -0400
Branch: REL_18_STABLE [d5f014d89] 2025-07-29 12:47:19 -0400
Branch: REL_17_STABLE [7571e0f6e] 2025-07-29 12:47:19 -0400
Branch: REL_16_STABLE [762c6d8d2] 2025-07-29 12:47:19 -0400
Branch: REL_15_STABLE [0928e18eb] 2025-07-29 12:47:20 -0400
Branch: REL_14_STABLE [cdcdabce5] 2025-07-29 12:47:20 -0400
Branch: REL_13_STABLE [0ae824704] 2025-07-29 12:47:20 -0400
-->
<para>
Avoid regression in the size of XML input that we will accept
(Michael Paquier, Erik Wienhold)
<ulink url="&commit_baseurl;fd4ad33fe">&sect;</ulink>
<ulink url="&commit_baseurl;7571e0f6e">&sect;</ulink>
</para>
<para>
Our workaround for a bug in early 2.13.x releases
of <application>libxml2</application> made use of a code path that
rejects text chunks exceeding 10MB, whereas the previous coding did
not. Those early releases are presumably extinct in the wild by
now, so revert to the previous coding.
</para>
</listitem>
<listitem>
<!--
Author: Dean Rasheed <dean.a.rasheed@gmail.com>
Branch: master [5022ff250] 2025-07-18 09:55:43 +0100
Branch: REL_18_STABLE [27c7c1136] 2025-07-18 09:59:40 +0100
Branch: REL_17_STABLE [91ad1bdef] 2025-07-18 10:01:31 +0100
-->
<para>
Fix <command>MERGE</command> problems with concurrent updates
(Dean Rasheed)
<ulink url="&commit_baseurl;91ad1bdef">&sect;</ulink>
</para>
<para>
If a <command>MERGE</command>
inside a CTE attempts an update or delete on a table with
<literal>BEFORE ROW</literal> triggers, and a
concurrent <command>UPDATE</command> or <command>DELETE</command>
changes the target row, the <command>MERGE</command> command would
fail (crashing in the case of an update action, and potentially
executing the wrong action in the case of a delete action).
</para>
</listitem>
<listitem>
<!--
Author: Dean Rasheed <dean.a.rasheed@gmail.com>
Branch: master Release: REL_18_BR [b006bcd53] 2025-05-31 12:12:58 +0100
Branch: REL_17_STABLE [ab52f6b5b] 2025-05-31 12:17:30 +0100
Branch: REL_16_STABLE [3611794af] 2025-05-31 12:19:37 +0100
Branch: REL_15_STABLE [d6a3f3272] 2025-05-31 12:21:02 +0100
-->
<para>
Fix <command>MERGE</command> into a plain-inheritance parent table
(Dean Rasheed)
<ulink url="&commit_baseurl;ab52f6b5b">&sect;</ulink>
</para>
<para>
Insertions into such a target table could crash or produce incorrect
query results due to failing to handle <literal>WITH CHECK
OPTION</literal> and <literal>RETURNING</literal> actions.
</para>
</listitem>
<listitem>
<!--
Author: Etsuro Fujita <efujita@postgresql.org>
Branch: master [9e63f83a7] 2025-08-08 17:35:00 +0900
Branch: REL_18_STABLE [bba6a6faf] 2025-08-08 17:35:00 +0900
Branch: REL_17_STABLE [e028ce911] 2025-08-08 17:35:01 +0900
Branch: REL_16_STABLE [3863c6fb6] 2025-08-08 17:35:02 +0900
Branch: REL_15_STABLE [f39a7f32a] 2025-08-08 17:35:02 +0900
Branch: REL_14_STABLE [73eb6afa1] 2025-08-08 17:35:03 +0900
Branch: REL_13_STABLE [afdb4cde1] 2025-08-08 17:35:04 +0900
-->
<para>
Allow tables with statement-level triggers to become partitions or
inheritance children (Etsuro Fujita)
<ulink url="&commit_baseurl;e028ce911">&sect;</ulink>
</para>
<para>
We do not allow partitions or inheritance child tables to have
row-level triggers with transition tables, because an operation on
the whole inheritance tree would need to maintain a separate
transition table for each such child table. But that problem does
not apply for statement-level triggers, because only the parent's
statement-level triggers will be fired. The code that checks
whether an existing table can become a partition or inheritance
child nonetheless rejected both kinds of trigger.
</para>
</listitem>
<listitem>
<!--
Author: Etsuro Fujita <efujita@postgresql.org>
Branch: master [62a1211d3] 2025-08-08 10:50:00 +0900
Branch: REL_18_STABLE [ce8817022] 2025-08-08 10:50:01 +0900
Branch: REL_17_STABLE [9048a83c7] 2025-08-08 10:50:02 +0900
Branch: REL_16_STABLE [9cca445df] 2025-08-08 10:50:02 +0900
Branch: REL_15_STABLE [d642d2306] 2025-08-08 10:50:03 +0900
Branch: REL_14_STABLE [e94fc1a8a] 2025-08-08 10:50:04 +0900
Branch: REL_13_STABLE [b6641f7b0] 2025-08-08 10:50:05 +0900
-->
<para>
Disallow collecting transition tuples from child foreign tables
(Etsuro Fujita)
<ulink url="&commit_baseurl;9048a83c7">&sect;</ulink>
</para>
<para>
We do not support triggers with transition tables on foreign tables.
However, the case of a partition or inheritance child that is a
foreign table was overlooked. If the parent has such a trigger,
incorrect transition tuples were collected from the foreign child.
Instead throw an error, reporting that the case is not supported.
</para>
</listitem>
<listitem>
<!--
Author: Nathan Bossart <nathan@postgresql.org>
Branch: master [9eb6068fb] 2025-08-01 16:52:11 -0500
Branch: REL_18_STABLE [7b9674a8b] 2025-08-01 16:52:11 -0500
Branch: REL_17_STABLE [39ff05636] 2025-08-01 16:52:11 -0500
Branch: REL_16_STABLE [b998ce327] 2025-08-01 16:52:11 -0500
Branch: REL_15_STABLE [f79ca73d7] 2025-08-01 16:52:11 -0500
-->
<para>
Allow resetting unknown custom parameters with reserved prefixes
(Nathan Bossart)
<ulink url="&commit_baseurl;39ff05636">&sect;</ulink>
</para>
<para>
Previously, if a parameter setting had been stored
using <command>ALTER DATABASE/ROLE/SYSTEM</command>, the stored
setting could not be removed if the parameter was unknown but had a
reserved prefix. This case could arise if an extension used to have
a parameter, but that parameter had been removed in an upgrade.
</para>
</listitem>
<listitem>
<!--
Author: Amit Kapila <akapila@postgresql.org>
Branch: master [2ab2d6f97] 2025-08-01 07:58:48 +0000
Branch: REL_18_STABLE [d9f01a287] 2025-08-01 07:46:22 +0000
Branch: REL_17_STABLE [8c298324a] 2025-08-01 06:53:16 +0000
Branch: REL_16_STABLE [adfd80219] 2025-08-01 06:40:06 +0000
Branch: REL_15_STABLE [434d2d147] 2025-08-01 07:23:37 +0000
Branch: REL_14_STABLE [41fb3f51c] 2025-08-01 07:16:30 +0000
-->
<para>
Fix a potential deadlock during <command>ALTER SUBSCRIPTION ... DROP
PUBLICATION</command> (Ajin Cherian)
<ulink url="&commit_baseurl;8c298324a">&sect;</ulink>
</para>
<para>
Ensure that server processes acquire catalog locks in a consistent
order during replication origin drops.
</para>
</listitem>
<listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master Release: REL_18_BR [5861b1f34] 2025-06-20 13:41:11 -0400
Branch: REL_17_STABLE [fdd826922] 2025-06-20 13:41:11 -0400
Branch: REL_16_STABLE [1e24ea160] 2025-06-20 13:41:11 -0400
Branch: REL_15_STABLE [75b8982ea] 2025-06-20 13:41:11 -0400
Branch: REL_14_STABLE [27af8b9be] 2025-06-20 13:41:11 -0400
Branch: REL_13_STABLE [4b66cb188] 2025-06-20 13:41:11 -0400
-->
<para>
Shorten the race condition window for creating indexes with
conflicting names (Tom Lane)
<ulink url="&commit_baseurl;fdd826922">&sect;</ulink>
</para>
<para>
When choosing an auto-generated name for an index, avoid conflicting
with not-yet-committed <structname>pg_class</structname> rows as
well as fully-valid ones. This avoids possibly choosing the same
name as some concurrent <command>CREATE INDEX</command> did,
when that command is still in process of filling its index, or is
done but is part of a not-yet-committed transaction. There's still
a window for trouble, but it's only as long as the time needed to
validate a new index's parameters and insert
its <structname>pg_class</structname> row.
</para>
</listitem>
<listitem>
<!--
Author: Michael Paquier <michael@paquier.xyz>
Branch: master Release: REL_18_BR [661643ded] 2025-06-25 10:03:46 +0900
Branch: REL_17_STABLE [2e0b5d252] 2025-06-25 10:03:50 +0900
Branch: REL_16_STABLE [d187cabdd] 2025-06-25 10:03:52 +0900
Branch: REL_15_STABLE [354944663] 2025-06-25 10:03:53 +0900
Branch: REL_14_STABLE [c079ba3fc] 2025-06-25 10:03:54 +0900
Branch: REL_13_STABLE [65c3223f9] 2025-06-25 10:03:56 +0900
-->
<para>
Prevent usage of incorrect <command>VACUUM</command> options in some
cases where multiple tables are vacuumed in a single command (Nathan
Bossart, Michael Paquier)
<ulink url="&commit_baseurl;2e0b5d252">&sect;</ulink>
</para>
<para>
The <literal>TRUNCATE</literal> and <literal>INDEX_CLEANUP</literal>
options of one table could be applied to others.
</para>
</listitem>
<listitem>
<!--
Author: Masahiko Sawada <msawada@postgresql.org>
Branch: master [3811ca360] 2025-07-01 23:25:20 -0700
Branch: REL_18_STABLE [7c6ededac] 2025-07-01 23:25:17 -0700
Branch: REL_17_STABLE [792238c8b] 2025-07-01 23:25:15 -0700
-->
<para>
Ensure that the table's free-space map is updated in a timely way
when vacuuming a table that has no indexes (Masahiko Sawada)
<ulink url="&commit_baseurl;792238c8b">&sect;</ulink>
</para>
<para>
A previous optimization caused FSM vacuuming to sometimes be skipped
for such tables.
</para>
</listitem>
<listitem>
<!--
Author: Michael Paquier <michael@paquier.xyz>
Branch: master Release: REL_18_BR [d46911e58] 2025-05-28 08:58:40 +0900
Branch: REL_17_STABLE [e3ffc3e91] 2025-05-28 08:59:22 +0900
Branch: REL_16_STABLE [e9e535d61] 2025-05-28 08:59:24 +0900
Branch: REL_15_STABLE [b3e99115e] 2025-05-28 08:59:25 +0900
Branch: REL_14_STABLE [1fe15d25e] 2025-05-28 08:59:27 +0900
Branch: REL_13_STABLE [9481d1614] 2025-05-28 08:59:28 +0900
Branch: master Release: REL_18_BR [4fbb46f61] 2025-05-28 09:43:31 +0900
Branch: REL_17_STABLE [a3c6d92f3] 2025-05-28 09:43:45 +0900
Branch: REL_16_STABLE [52d08620e] 2025-05-28 09:43:46 +0900
Branch: REL_15_STABLE [4dc642e75] 2025-05-28 09:43:48 +0900
Branch: REL_14_STABLE [0c09922c0] 2025-05-28 09:43:50 +0900
Branch: REL_13_STABLE [31ee5ec69] 2025-05-28 09:43:51 +0900
-->
<para>
Fix processing of character classes within <literal>SIMILAR
TO</literal> regular expressions (Laurenz Albe)
<ulink url="&commit_baseurl;e3ffc3e91">&sect;</ulink>
<ulink url="&commit_baseurl;a3c6d92f3">&sect;</ulink>
</para>
<para>
The code that translates <literal>SIMILAR TO</literal> pattern
matching expressions to POSIX-style regular expressions did not
consider that square brackets can be nested. For example, in a
pattern like <literal>[[:alpha:]%_]</literal>, the code treated
the <literal>%</literal> and <literal>_</literal> characters as
metacharacters when they should be literals.
</para>
</listitem>
<listitem>
<!--
Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
Branch: master Release: REL_18_BR [29f7ce6fe] 2025-05-19 18:50:26 +0300
Branch: REL_17_STABLE [54c05292b] 2025-05-19 18:50:47 +0300
Branch: REL_16_STABLE [92a9ba3b9] 2025-05-19 18:50:50 +0300
Branch: REL_15_STABLE [72fe74ca5] 2025-05-19 18:50:52 +0300
Branch: REL_14_STABLE [0420b24fe] 2025-05-19 18:50:54 +0300
Branch: REL_13_STABLE [7ee00918f] 2025-05-19 18:49:34 +0300
Branch: master Release: REL_18_BR [cbf53e2b8] 2025-05-20 10:39:14 +0300
Branch: REL_17_STABLE [a4da7b0cf] 2025-05-20 10:41:20 +0300
Branch: REL_16_STABLE [558ea446a] 2025-05-20 10:41:50 +0300
-->
<para>
When deparsing queries, always add parentheses around the expression
in <literal>FETCH FIRST <replaceable>expression</replaceable> ROWS
WITH TIES</literal> clauses (Heikki Linnakangas)
<ulink url="&commit_baseurl;54c05292b">&sect;</ulink>
<ulink url="&commit_baseurl;a4da7b0cf">&sect;</ulink>
</para>
<para>
This avoids some cases where the deparsed result wasn't
syntactically valid.
</para>
</listitem>
<listitem>
<!--
Author: Alexander Korotkov <akorotkov@postgresql.org>
Branch: REL_18_STABLE [bae507821] 2025-07-27 15:10:02 +0300
Branch: REL_17_STABLE [13559de95] 2025-07-27 15:10:24 +0300
Branch: REL_16_STABLE [f0cdc2afd] 2025-07-27 15:10:29 +0300
Branch: REL_15_STABLE [b248a3ba4] 2025-07-27 15:10:29 +0300
Branch: REL_14_STABLE [50026136c] 2025-07-27 15:10:31 +0300
Branch: REL_13_STABLE [f32a47161] 2025-07-27 15:10:32 +0300
Branch: master [466c5435f] 2025-08-07 14:29:02 +0300
Branch: REL_18_STABLE [5cfbff48a] 2025-08-07 14:31:18 +0300
Branch: REL_17_STABLE [605890034] 2025-08-07 14:59:54 +0300
Branch: REL_16_STABLE [2ac50f118] 2025-08-07 14:31:23 +0300
Branch: REL_15_STABLE [73f897ba5] 2025-08-07 14:31:24 +0300
Branch: REL_14_STABLE [c5d66fc12] 2025-08-07 14:31:25 +0300
Branch: REL_13_STABLE [7f872ae70] 2025-08-07 14:31:26 +0300
-->
<para>
Limit the checkpointer process's fsync request queue size (Alexander
Korotkov, Xuneng Zhou)
<ulink url="&commit_baseurl;13559de95">&sect;</ulink>
<ulink url="&commit_baseurl;605890034">&sect;</ulink>
</para>
<para>
With very large <varname>shared_buffers</varname> settings, it was
possible for the checkpointer to attempt to allocate more than 1GB
for fsync requests, leading to failure and an infinite loop. Clamp
the queue size to prevent this scenario.
</para>
</listitem>
<listitem>
<!--
Author: Alexander Korotkov <akorotkov@postgresql.org>
Branch: master [d3917d8f1] 2025-07-19 13:45:51 +0300
Branch: REL_18_STABLE [5449d5b7a] 2025-07-19 13:44:30 +0300
Branch: REL_17_STABLE [c9f4e7520] 2025-07-20 01:29:14 +0300
Branch: REL_16_STABLE [b485e1c89] 2025-07-19 13:46:02 +0300
Branch: REL_15_STABLE [9f270f48f] 2025-07-19 13:46:03 +0300
Branch: REL_14_STABLE [bedfdb85b] 2025-07-19 14:13:41 +0300
Branch: REL_13_STABLE [762f352ca] 2025-07-19 14:13:58 +0300
-->
<para>
Avoid infinite wait in logical decoding when reading a
partially-written WAL record (Vignesh C)
<ulink url="&commit_baseurl;c9f4e7520">&sect;</ulink>
</para>
<para>
If the server crashes after writing the first part of a WAL record
that would span multiple pages, subsequent logical decoding of the
WAL stream would wait for data to arrive on the next WAL page.
That might never happen if the server is now idle.
</para>
</listitem>
<listitem>
<!--
Author: Michael Paquier <michael@paquier.xyz>
Branch: master [a493e741d] 2025-07-17 09:30:26 +0900
Branch: REL_18_STABLE [4fcbe06aa] 2025-07-17 09:32:49 +0900
Branch: REL_17_STABLE [b3abec0ad] 2025-07-17 09:32:55 +0900
-->
<para>
Fix inconsistent spelling of LWLock names
for <literal>MultiXactOffsetSLRU</literal>
and <literal>MultiXactMemberSLRU</literal> (Bertrand Drouvot)
<ulink url="&commit_baseurl;b3abec0ad">&sect;</ulink>
</para>
<para>
This resulted in different wait-event names being displayed
in <structname>pg_wait_events</structname>
and <structname>pg_stat_activity</structname>, potentially breaking
monitoring queries that join those views.
</para>
</listitem>
<listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [64840e462] 2025-07-11 18:50:13 -0400
Branch: REL_18_STABLE [ccacaf4fa] 2025-07-11 18:50:13 -0400
Branch: REL_17_STABLE [50959f96e] 2025-07-11 18:50:13 -0400
Branch: REL_16_STABLE [53a936b61] 2025-07-11 18:50:13 -0400
Branch: REL_15_STABLE [de73cb3ed] 2025-07-11 18:50:13 -0400
Branch: REL_14_STABLE [ac8cdb249] 2025-07-11 18:50:13 -0400
Branch: REL_13_STABLE [093d3d745] 2025-07-11 18:50:13 -0400
-->
<para>
Fix inconsistent quoting of role names in ACL strings (Tom Lane)
<ulink url="&commit_baseurl;50959f96e">&sect;</ulink>
</para>
<para>
The previous quoting rule was locale-sensitive, which could lead to
portability problems when transferring <type>aclitem</type> values
across installations. (<application>pg_dump</application> does not
do that, but other tools might.) To ensure consistency, always quote
non-ASCII characters in <type>aclitem</type> output; but to preserve
backward compatibility, never require that they be quoted
during <type>aclitem</type> input.
</para>
</listitem>
<listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master Release: REL_18_BR [aa87f69c0] 2025-06-02 15:22:44 -0400
Branch: REL_17_STABLE [d4046125d] 2025-06-02 15:22:44 -0400
Branch: REL_16_STABLE [ab758ec4d] 2025-06-02 15:22:44 -0400
Branch: REL_15_STABLE [e76097124] 2025-06-02 15:22:44 -0400
Branch: REL_14_STABLE [eb4234647] 2025-06-02 15:22:45 -0400
Branch: REL_13_STABLE [cd31eaaeb] 2025-06-02 15:22:45 -0400
-->
<para>
Reject equal signs (<literal>=</literal>) in the names of relation
options and foreign-data options (Tom Lane)
<ulink url="&commit_baseurl;d4046125d">&sect;</ulink>
</para>
<para>
There's no evident use-case for option names like this, and allowing
them creates ambiguity in the stored representation.
</para>
</listitem>
<listitem>
<!--
Author: Michael Paquier <michael@paquier.xyz>
Branch: master [3369a3b49] 2025-07-02 13:48:36 +0900
Branch: REL_18_STABLE [d09d13793] 2025-07-02 13:48:41 +0900
Branch: REL_17_STABLE [074003431] 2025-07-02 13:48:43 +0900
Branch: REL_16_STABLE [5c639523f] 2025-07-02 13:48:45 +0900
Branch: REL_15_STABLE [d44efe87e] 2025-07-02 13:48:48 +0900
-->
<para>
Fix potentially-incorrect decompression of LZ4-compressed archive
data (Mikhail Gribkov)
<ulink url="&commit_baseurl;074003431">&sect;</ulink>
</para>
<para>
This error seems to manifest only with not-very-compressible input
data, which may explain why it escaped detection.
</para>
</listitem>
<listitem>
<!--
Author: Peter Geoghegan <pg@bowt.ie>
Branch: master Release: REL_18_BR [7c319f549] 2025-06-11 09:17:35 -0400
Branch: REL_17_STABLE [40aa5ddea] 2025-06-11 09:17:33 -0400
Branch: REL_16_STABLE [c7f25feb3] 2025-06-11 09:17:31 -0400
Branch: REL_15_STABLE [d2ec67109] 2025-06-11 09:17:29 -0400
Branch: REL_14_STABLE [7c7c0a77d] 2025-06-11 09:17:27 -0400
Branch: REL_13_STABLE [38c8d2987] 2025-06-11 09:17:25 -0400
-->
<para>
Avoid a rare scenario where a btree index scan could mark the wrong
index entries as dead (Peter Geoghegan)
<ulink url="&commit_baseurl;40aa5ddea">&sect;</ulink>
</para>
</listitem>
<listitem>
<!--
Author: Masahiko Sawada <msawada@postgresql.org>
Branch: master Release: REL_18_BR [d87d07b7a] 2025-06-16 17:36:01 -0700
Branch: REL_17_STABLE [45c357e0e] 2025-06-16 17:35:58 -0700
Branch: REL_16_STABLE [b2ae07720] 2025-06-16 17:35:55 -0700
Branch: REL_15_STABLE [fc0fb77c5] 2025-06-16 17:35:53 -0700
Branch: REL_14_STABLE [983b36362] 2025-06-16 17:35:50 -0700
Branch: REL_13_STABLE [1230be12f] 2025-06-16 17:35:48 -0700
Branch: REL_13_STABLE [87819f766] 2025-06-24 07:07:40 -0700
-->
<para>
Avoid re-distributing cache invalidation messages from other
transactions during logical replication (vignesh C)
<ulink url="&commit_baseurl;45c357e0e">&sect;</ulink>
</para>
<para>
Our previous round of minor releases included a bug fix to ensure
that replication receiver processes would respond to cross-process
cache invalidation messages, preventing them from using stale
catalog data while performing replication updates. However, the fix
unintentionally made them also redistribute those messages again,
leading to an exponential increase in the number of invalidation
messages, which would often end in a memory allocation failure.
Fix by not redistributing received messages.
</para>
</listitem>
<listitem>
<!--
Author: Fujii Masao <fujii@postgresql.org>
Branch: master [4614d53d4] 2025-08-04 20:51:42 +0900
Branch: REL_18_STABLE [2d81a246f] 2025-08-04 20:52:59 +0900
Branch: REL_17_STABLE [f71fa981c] 2025-08-04 20:53:07 +0900
-->
<para>
Avoid unexpected server shutdown when replication slot
synchronization is misconfigured (Fujii Masao)
<ulink url="&commit_baseurl;f71fa981c">&sect;</ulink>
</para>
<para>
The postmaster process would report an error (and then stop)
if <varname>sync_replication_slots</varname> was set
to <literal>true</literal> while <varname>wal_level</varname> was
less than <literal>logical</literal>. The desired behavior is just
that slot synchronization should be disabled, so reduce this error
message's level to avoid postmaster shutdown.
</para>
</listitem>
<listitem>
<!--
Author: Alexander Korotkov <akorotkov@postgresql.org>
Branch: REL_17_STABLE [2090edc6f] 2025-06-14 03:52:45 +0300
Branch: REL_16_STABLE [cea8f2c3e] 2025-06-14 03:53:18 +0300
Branch: REL_15_STABLE [dd9bc1a17] 2025-06-14 04:15:04 +0300
Branch: REL_14_STABLE [e2832bd96] 2025-06-14 04:15:24 +0300
Branch: REL_13_STABLE [dd3df0b85] 2025-06-14 04:15:29 +0300
-->
<para>
Avoid premature removal of old WAL during checkpoints (Vitaly Davydov)
<ulink url="&commit_baseurl;2090edc6f">&sect;</ulink>
</para>
<para>
If a replication slot's restart point is advanced while a checkpoint
is in progress, no-longer-needed WAL segments could get removed too
soon, leading to recovery failure if the database crashes
immediately afterwards. Fix by keeping them for one additional
checkpoint cycle.
</para>
</listitem>
<listitem>
<!--
Author: Amit Kapila <akapila@postgresql.org>
Branch: master Release: REL_18_BR [ad5eaf390] 2025-05-19 12:13:06 +0530
Branch: REL_17_STABLE [7318f241d] 2025-05-19 11:55:55 +0530
Branch: REL_16_STABLE [c0f51fde5] 2025-05-19 11:41:22 +0530
Branch: REL_15_STABLE [9d1a62359] 2025-05-19 11:28:19 +0530
Branch: REL_14_STABLE [e68459489] 2025-05-19 11:15:09 +0530
Branch: REL_13_STABLE [e323d9df0] 2025-05-19 11:04:39 +0530
-->
<para>
Never move a replication slot's confirmed-flush position backwards
(Shveta Malik)
<ulink url="&commit_baseurl;7318f241d">&sect;</ulink>
</para>
<para>
In some cases a replication client could acknowledge an LSN that's
past what it has stored persistently, and then perhaps send an older
LSN after a restart. We consider this not-a-bug so long as the
client did not have anything it needed to do for the WAL between the
two points. However, we should not re-send that WAL for fear of
data duplication, so make sure we always believe the latest
confirmed LSN for a given slot.
</para>
</listitem>
<listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master Release: REL_18_BR [fd519419c] 2025-06-24 14:14:07 -0400
Branch: REL_17_STABLE [9f33300e6] 2025-06-24 14:14:04 -0400
Branch: REL_16_STABLE [87c8ed3db] 2025-06-24 14:14:04 -0400
-->
<para>
Prevent excessive delays before launching new logical replication
workers (Tom Lane)
<ulink url="&commit_baseurl;9f33300e6">&sect;</ulink>
</para>
<para>
In some cases the logical replication launcher could sleep
considerably longer than the
configured <varname>wal_retrieve_retry_interval</varname> before
launching a new worker.
</para>
</listitem>
<listitem>
<!--
Author: Michael Paquier <michael@paquier.xyz>
Branch: master [3b3fa9490] 2025-08-02 17:08:45 +0900
Branch: REL_18_STABLE [11de339aa] 2025-08-02 17:08:48 +0900
Branch: REL_17_STABLE [9e0b4b1ab] 2025-08-02 17:08:50 +0900
Branch: REL_16_STABLE [ec96e8812] 2025-08-02 17:08:52 +0900
-->
<para>
Fix use-after-free during logical replication of <command>INSERT
... ON CONFLICT</command> (Ethan Mertz, Michael Paquier)
<ulink url="&commit_baseurl;9e0b4b1ab">&sect;</ulink>
</para>
<para>
This could result in incorrect progress reporting, or with very bad
luck it could result in a crash of the WAL sender process.
</para>
</listitem>
<listitem>
<!--
Author: Fujii Masao <fujii@postgresql.org>
Branch: master Release: REL_18_BR [961553daf] 2025-05-31 00:08:40 +0900
Branch: REL_17_STABLE [24c5ad5be] 2025-05-31 00:14:07 +0900
Branch: REL_16_STABLE [63fa7caa9] 2025-05-31 00:14:14 +0900
Branch: REL_15_STABLE [405cca9da] 2025-05-31 00:14:22 +0900
Branch: REL_14_STABLE [9130d8eee] 2025-05-31 00:14:29 +0900
Branch: REL_13_STABLE [706344f06] 2025-05-31 00:14:35 +0900
-->
<para>
Allow waiting for a transaction on a standby server to be
interrupted (Kevin K Biju)
<ulink url="&commit_baseurl;24c5ad5be">&sect;</ulink>
</para>
<para>
Creation of a replication slot on a standby server may require waiting
for some active transaction(s) to finish on the primary and then be
replayed on the standby. Since that could be an indefinite wait,
it's desirable to allow the operation to be cancelled, but there was
no check for query cancel in the loop.
</para>
</listitem>
<listitem>
<!--
Author: Michael Paquier <michael@paquier.xyz>
Branch: master Release: REL_18_BR [5231ed826] 2025-06-02 12:03:59 +0900
Branch: REL_17_STABLE [87be749c7] 2025-06-02 12:04:04 +0900
Branch: REL_16_STABLE [5e6d561bc] 2025-06-02 12:04:08 +0900
-->
<para>
Do not let cascading logical WAL senders try to send data that's
beyond what has been replayed on their standby server (Alexey
Makhmutov)
<ulink url="&commit_baseurl;87be749c7">&sect;</ulink>
</para>
<para>
This avoids a situation where such WAL senders could get stuck at
standby server shutdown, waiting for replay work that will not
happen because the server's startup process is already shut down.
</para>
</listitem>
<listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master Release: REL_18_BR [02502c1bc] 2025-05-23 14:43:43 -0400
Branch: REL_17_STABLE [cd3064f98] 2025-05-23 14:43:43 -0400
Branch: REL_16_STABLE [e087b5b79] 2025-05-23 14:43:44 -0400
Branch: REL_15_STABLE [13d21b48a] 2025-05-23 14:43:44 -0400
-->
<para>
Fix per-relation memory leakage in autovacuum (Tom Lane)
<ulink url="&commit_baseurl;cd3064f98">&sect;</ulink>
</para>
</listitem>
<listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [e03c95287] 2025-07-08 12:50:33 -0400
Branch: REL_18_STABLE [075554ec6] 2025-07-08 12:50:19 -0400
Branch: REL_17_STABLE [95cf1a181] 2025-07-08 12:50:19 -0400
Branch: REL_16_STABLE [abb517d61] 2025-07-08 12:50:19 -0400
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master Release: REL_18_BR [f24605e2d] 2025-05-22 13:52:46 -0400
Branch: REL_17_STABLE [20bae0690] 2025-05-22 13:52:46 -0400
Branch: REL_16_STABLE [ee58de100] 2025-05-22 13:52:46 -0400
-->
<para>
Fix session-lifespan memory leaks
in <function>XMLSERIALIZE(... INDENT)</function>
(Dmitry Kovalenko, Tom Lane)
<ulink url="&commit_baseurl;95cf1a181">&sect;</ulink>
<ulink url="&commit_baseurl;20bae0690">&sect;</ulink>
</para>
</listitem>
<listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master Release: REL_18_BR [d4a7e4e17] 2025-05-10 20:22:39 -0400
Branch: REL_17_STABLE [a05cf22e0] 2025-05-10 20:22:39 -0400
-->
<para>
Fix possible crash after out-of-memory when allocating large chunks
with the <quote>bump</quote> allocator (Tom Lane)
<ulink url="&commit_baseurl;a05cf22e0">&sect;</ulink>
</para>
</listitem>
<listitem>
<!--
Author: Nathan Bossart <nathan@postgresql.org>
Branch: master Release: REL_18_BR [706054b11] 2025-05-30 15:17:28 -0500
Branch: REL_17_STABLE [fe8ea7a2a] 2025-05-30 15:17:28 -0500
Branch: REL_16_STABLE [24135398f] 2025-05-30 15:17:28 -0500
Branch: REL_15_STABLE [ddfcfb7ce] 2025-05-30 15:17:28 -0500
Branch: REL_14_STABLE [b65be6ef0] 2025-05-30 15:17:28 -0500
Branch: REL_13_STABLE [b7ba2c030] 2025-05-30 15:17:28 -0500
-->
<para>
Fix some places that might try to fetch toasted fields of system
catalogs without any snapshot (Nathan Bossart)
<ulink url="&commit_baseurl;fe8ea7a2a">&sect;</ulink>
</para>
<para>
This could result in an assertion failure or <quote>cannot fetch
toast data without an active snapshot</quote> error.
</para>
</listitem>
<listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master Release: REL_18_BR [8319e5cb5] 2025-06-29 13:56:03 -0400
Branch: REL_17_STABLE [bbfcbc4cd] 2025-06-29 13:56:03 -0400
Branch: REL_16_STABLE [c15798cf9] 2025-06-29 13:56:03 -0400
Branch: REL_15_STABLE [614ffb26d] 2025-06-29 13:56:03 -0400
Branch: REL_14_STABLE [25cab4473] 2025-06-29 13:56:03 -0400
Branch: REL_13_STABLE [13f1e9f26] 2025-06-29 13:56:03 -0400
Branch: master [a10f21e6c] 2025-07-03 13:46:07 -0400
Branch: REL_18_STABLE [3d7a96871] 2025-07-03 13:46:07 -0400
Branch: REL_17_STABLE [6d4395b40] 2025-07-03 13:46:07 -0400
Branch: REL_16_STABLE [d36980b71] 2025-07-03 13:46:07 -0400
Branch: REL_15_STABLE [e6dd6e6ee] 2025-07-03 13:46:07 -0400
Branch: REL_14_STABLE [e902f8181] 2025-07-03 13:46:07 -0400
Branch: REL_13_STABLE [f9ba071cc] 2025-07-03 13:46:07 -0400
-->
<para>
Avoid assertion failure during cross-table constraint updates
(Tom Lane, Jian He)
<ulink url="&commit_baseurl;bbfcbc4cd">&sect;</ulink>
<ulink url="&commit_baseurl;6d4395b40">&sect;</ulink>
</para>
</listitem>
<listitem>
<!--
Author: Álvaro Herrera <alvherre@kurilemu.de>
Branch: master [b8926a5b4] 2025-07-17 17:40:22 +0200
Branch: REL_18_STABLE [e0d3f3cfb] 2025-07-17 17:40:22 +0200
Branch: REL_17_STABLE [0c466f5e0] 2025-07-17 17:40:22 +0200
Branch: REL_16_STABLE [4871c1e9c] 2025-07-17 17:40:22 +0200
Branch: REL_15_STABLE [c2720ac60] 2025-07-17 17:40:22 +0200
Branch: REL_14_STABLE [b9a896828] 2025-07-17 17:40:22 +0200
Branch: REL_13_STABLE [43cd85962] 2025-07-17 17:40:22 +0200
-->
<para>
Remove faulty assertion that a command tag must have been determined
by the end of <function>PortalRunMulti()</function> (Álvaro Herrera)
<ulink url="&commit_baseurl;0c466f5e0">&sect;</ulink>
</para>
<para>
This failed in edge cases such as an empty prepared statement.
</para>
</listitem>
<listitem>
<!--
Author: Richard Guo <rguo@postgresql.org>
Branch: master Release: REL_18_BR [fe29b2a1d] 2025-05-15 17:09:04 +0900
Branch: REL_17_STABLE [2f48b4f07] 2025-05-15 17:10:45 +0900
Branch: REL_16_STABLE [d3716d4b1] 2025-05-15 17:21:15 +0900
Branch: REL_15_STABLE [666103090] 2025-05-15 17:26:13 +0900
-->
<para>
Fix assertion failure in <literal>XMLTABLE</literal> parsing
(Richard Guo)
<ulink url="&commit_baseurl;2f48b4f07">&sect;</ulink>
</para>
</listitem>
<listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [87b05fdc7] 2025-07-07 14:33:20 -0400
Branch: REL_18_STABLE [440c5ee20] 2025-07-07 14:33:34 -0400
Branch: REL_17_STABLE [a553a2289] 2025-07-07 14:33:47 -0400
Branch: REL_16_STABLE [3bbc1c4a7] 2025-07-07 14:33:56 -0400
Branch: REL_15_STABLE [c65c36ab5] 2025-07-07 14:34:04 -0400
Branch: REL_14_STABLE [602c91cf2] 2025-07-07 14:34:12 -0400
Branch: REL_13_STABLE [ae693c0bf] 2025-07-07 14:34:19 -0400
-->
<para>
Restore the ability to run PL/pgSQL expressions in parallel
(Dipesh Dhameliya)
<ulink url="&commit_baseurl;a553a2289">&sect;</ulink>
</para>
<para>
PL/pgSQL's notion of an <quote>expression</quote> is very broad,
encompassing any SQL <command>SELECT</command> query that returns a
single column and no more than one row. So there are cases, for
example evaluation of an aggregate function, where the query
involves significant work and it'd be useful to run it with parallel
workers. This used to be possible, but a previous bug fix
unintentionally disabled it.
</para>
</listitem>
<listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master Release: REL_18_BR [c6f7f11d8] 2025-06-01 14:48:35 -0400
Branch: REL_17_STABLE [7559a16e2] 2025-06-01 14:48:35 -0400
Branch: REL_16_STABLE [5c7fd5976] 2025-06-01 14:48:35 -0400
Branch: REL_15_STABLE [b56a92651] 2025-06-01 14:48:35 -0400
Branch: REL_14_STABLE [31a3a15fa] 2025-06-01 14:48:35 -0400
Branch: REL_13_STABLE [1c78d5553] 2025-06-01 14:48:35 -0400
Branch: master Release: REL_18_BR [4672b6223] 2025-06-01 14:55:24 -0400
Branch: REL_17_STABLE [6f724fcf8] 2025-06-01 14:55:24 -0400
Branch: REL_16_STABLE [ecc8fd2b7] 2025-06-01 14:55:24 -0400
Branch: REL_15_STABLE [b898bb2a7] 2025-06-01 14:55:24 -0400
Branch: REL_14_STABLE [d4556f592] 2025-06-01 14:55:24 -0400
Branch: REL_13_STABLE [93aca1246] 2025-06-01 14:55:24 -0400
-->
<para>
Fix edge-case resource leaks in PL/Python error reporting (Tom Lane)
<ulink url="&commit_baseurl;7559a16e2">&sect;</ulink>
<ulink url="&commit_baseurl;6f724fcf8">&sect;</ulink>
</para>
<para>
An out-of-memory failure while reporting an error from Python could
result in failure to drop reference counts on Python objects,
leading to session-lifespan memory leakage.
</para>
</listitem>
<listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [fe05430ac] 2025-07-02 15:48:02 -0400
Branch: REL_18_STABLE [5d0800000] 2025-07-02 15:48:03 -0400
Branch: REL_17_STABLE [445bd37b1] 2025-07-02 15:47:59 -0400
-->
<para>
Fix <application>libpq</application>'s
<function>PQcancelCreate()</function> function for the case where
the server's address was specified using <literal>hostaddr</literal>
(Sergei Kornilov)
<ulink url="&commit_baseurl;445bd37b1">&sect;</ulink>
</para>
<para>
<application>libpq</application> would crash if the resulting cancel
object was actually used.
</para>
</listitem>
<listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [daf9bdc47] 2025-07-17 12:46:57 -0400
Branch: REL_18_STABLE [bfa9b25c9] 2025-07-17 12:46:57 -0400
Branch: REL_17_STABLE [3f10d2b66] 2025-07-17 12:46:58 -0400
Branch: REL_16_STABLE [009c20a3d] 2025-07-17 12:46:58 -0400
Branch: REL_15_STABLE [a372a64db] 2025-07-17 12:46:58 -0400
Branch: REL_14_STABLE [d5cba7746] 2025-07-17 12:46:59 -0400
Branch: REL_13_STABLE [9dcd1aa81] 2025-07-17 12:46:59 -0400
-->
<para>
Fix <application>libpq</application>'s <function>PQport()</function>
function to never return NULL unless the passed connection is NULL
(Daniele Varrazzo)
<ulink url="&commit_baseurl;3f10d2b66">&sect;</ulink>
</para>
<para>
This is the documented behavior, but
recent <application>libpq</application> versions would return NULL
in some cases where the user had not provided a port specification.
Revert to our historical behavior of returning an empty string in
such cases. (v18 and later will return the compiled-in default port
number, typically <literal>"5432"</literal>, instead.)
</para>
</listitem>
<listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master Release: REL_18_BR [d98cefe11] 2025-05-30 12:55:15 -0400
Branch: REL_17_STABLE [8b0aa7a6b] 2025-05-30 12:55:15 -0400
Branch: REL_16_STABLE [ca70ee6ed] 2025-05-30 12:55:15 -0400
Branch: REL_15_STABLE [39b1d1907] 2025-05-30 12:55:15 -0400
Branch: REL_14_STABLE [a7da7914c] 2025-05-30 12:55:15 -0400
Branch: REL_13_STABLE [c81cdffa1] 2025-05-30 12:55:15 -0400
-->
<para>
Avoid failure when GSSAPI authentication requires packets larger
than 16kB (Jacob Champion, Tom Lane)
<ulink url="&commit_baseurl;8b0aa7a6b">&sect;</ulink>
</para>
<para>
Larger authentication packets are needed for Active Directory users
who belong to many AD groups. This limitation manifested in
connection failures with unintelligible error messages,
typically <quote>GSSAPI context establishment error: The routine
must be called again to complete its function: Unknown
error</quote>.
</para>
</listitem>
<listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master Release: REL_18_BR [137935bd1] 2025-06-10 18:39:34 -0400
Branch: REL_17_STABLE [30e0d9ee9] 2025-06-10 18:39:34 -0400
Branch: REL_16_STABLE [3f37400cf] 2025-06-10 18:39:34 -0400
Branch: REL_15_STABLE [6a4d93eda] 2025-06-10 18:39:34 -0400
Branch: REL_14_STABLE [0703c9385] 2025-06-10 18:39:34 -0400
Branch: REL_13_STABLE [f09fea386] 2025-06-10 18:39:34 -0400
-->
<para>
Fix timing-dependent failures in SSL and GSSAPI data transmission
(Tom Lane)
<ulink url="&commit_baseurl;30e0d9ee9">&sect;</ulink>
</para>
<para>
When using SSL or GSSAPI encryption in non-blocking
mode, <application>libpq</application> sometimes failed
with <quote>SSL error: bad length</quote> or <quote>GSSAPI caller
failed to retransmit all data needing to be retried</quote>.
</para>
</listitem>
<listitem>
<!--
Author: Michael Paquier <michael@paquier.xyz>
Branch: master [1b8bbee05] 2025-07-22 14:00:00 +0900
Branch: REL_18_STABLE [0ded7615d] 2025-07-22 14:00:04 +0900
Branch: REL_17_STABLE [2805e1c1e] 2025-07-22 14:00:05 +0900
Branch: REL_16_STABLE [313d3102f] 2025-07-22 14:00:07 +0900
Branch: REL_15_STABLE [0123922f8] 2025-07-22 14:00:08 +0900
Branch: REL_14_STABLE [408fe659a] 2025-07-22 14:00:10 +0900
Branch: REL_13_STABLE [c934d5673] 2025-07-22 14:00:12 +0900
-->
<para>
Avoid null-pointer dereference during connection lookup
in <application>ecpg</application> applications (Aleksander
Alekseev)
<ulink url="&commit_baseurl;2805e1c1e">&sect;</ulink>
</para>
<para>
The case could occur only if the application has some connections
that are named and some that are not.
</para>
</listitem>
<listitem>
<!--
Author: Masahiko Sawada <msawada@postgresql.org>
Branch: master [f5a987c0e] 2025-07-09 05:45:34 -0700
Branch: REL_18_STABLE [765a4c94c] 2025-07-09 05:45:31 -0700
Branch: REL_17_STABLE [c1c6169eb] 2025-07-09 05:45:28 -0700
Branch: REL_16_STABLE [d69836b13] 2025-07-09 05:45:26 -0700
Branch: REL_15_STABLE [e3584e457] 2025-07-09 05:45:23 -0700
Branch: REL_14_STABLE [0514616f0] 2025-07-09 05:45:20 -0700
-->
<para>
Improve <application>psql</application>'s tab completion
for <command>COPY</command> and <command>\copy</command> options
(Atsushi Torikoshi)
<ulink url="&commit_baseurl;c1c6169eb">&sect;</ulink>
</para>
<para>
The same completions were offered for both <command>COPY
FROM</command> and <command>COPY TO</command>, although some options
are only valid for one case or the other. Distinguish these cases
to provide more accurate suggestions.
</para>
</listitem>
<listitem>
<!--
Author: Fujii Masao <fujii@postgresql.org>
Branch: master [12efa4897] 2025-08-03 10:49:03 +0900
Branch: REL_18_STABLE [fee46ab4f] 2025-08-03 10:49:54 +0900
Branch: REL_17_STABLE [398e07162] 2025-08-03 10:50:01 +0900
Branch: REL_16_STABLE [1d3ded521] 2025-08-03 10:50:22 +0900
Branch: REL_15_STABLE [6914a330f] 2025-08-03 10:50:59 +0900
-->
<para>
Avoid assertion failure in <application>pgbench</application> when
multiple pipeline sync messages are received (Fujii Masao)
<ulink url="&commit_baseurl;398e07162">&sect;</ulink>
</para>
</listitem>
<listitem>
<!--
Author: Amit Kapila <akapila@postgresql.org>
Branch: master [e1c365483] 2025-07-24 09:05:32 +0000
Branch: REL_18_STABLE [33f74b806] 2025-07-24 08:50:40 +0000
Branch: REL_17_STABLE [967309116] 2025-07-24 08:38:01 +0000
-->
<para>
Fix duplicate transaction replay when initializing a subscription
with <application>pg_createsubscriber</application> (Shlok Kyal)
<ulink url="&commit_baseurl;967309116">&sect;</ulink>
</para>
<para>
It was possible for the last transaction processed during subscriber
recovery to be sent again once normal replication begins.
</para>
</listitem>
<listitem>
<!--
Author: Álvaro Herrera <alvherre@kurilemu.de>
Branch: master [da71717f0] 2025-07-21 11:34:10 +0200
Branch: REL_18_STABLE [f9545e95c] 2025-07-21 11:34:10 +0200
Branch: REL_17_STABLE [6b755d8d7] 2025-07-21 11:34:10 +0200
-->
<para>
Ensure that <application>pg_dump</application> dumps comments on
not-null constraints on domain types (Jian He, Álvaro Herrera)
<ulink url="&commit_baseurl;6b755d8d7">&sect;</ulink>
</para>
</listitem>
<listitem>
<!--
Author: Álvaro Herrera <alvherre@kurilemu.de>
Branch: master [0858f0f96] 2025-07-16 19:22:53 +0200
Branch: REL_18_STABLE [dca0e9693] 2025-07-16 19:22:53 +0200
Branch: REL_17_STABLE [d07bc7c2b] 2025-07-16 19:22:53 +0200
Branch: REL_16_STABLE [cef998ef8] 2025-07-16 19:22:53 +0200
Branch: REL_15_STABLE [5a261c135] 2025-07-16 19:22:53 +0200
Branch: REL_14_STABLE [e04aca1c4] 2025-07-16 19:22:53 +0200
Branch: REL_13_STABLE [57949cea5] 2025-07-16 19:22:53 +0200
-->
<para>
Ensure that <application>pg_dump</application> dumps comments on
domain constraints in a valid order (Jian He)
<ulink url="&commit_baseurl;d07bc7c2b">&sect;</ulink>
</para>
<para>
In some cases the comment command could appear before creation of
the constraint.
</para>
</listitem>
<listitem>
<!--
Author: Noah Misch <noah@leadboat.com>
Branch: master [0decd5e89] 2025-07-31 06:37:56 -0700
Branch: REL_18_STABLE [c0ae03384] 2025-07-31 06:37:59 -0700
Branch: REL_17_STABLE [1ca1889ea] 2025-07-31 06:38:00 -0700
Branch: REL_16_STABLE [0ac1581c3] 2025-07-31 06:38:00 -0700
Branch: REL_15_STABLE [22f126da6] 2025-07-31 06:38:01 -0700
Branch: REL_14_STABLE [7ee7c1cd3] 2025-07-31 06:38:02 -0700
Branch: REL_13_STABLE [04bc2c42f] 2025-07-31 06:38:03 -0700
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master Release: REL_18_BR [350e6b8ea] 2024-11-04 13:31:12 -0500
Branch: REL_17_STABLE [5dd4957b2] 2025-07-31 06:38:00 -0700
Branch: REL_16_STABLE [9affed263] 2025-07-31 06:38:00 -0700
Branch: REL_15_STABLE [e99010cbd] 2025-07-31 06:38:01 -0700
Branch: REL_14_STABLE [25388fb2c] 2025-07-31 06:38:02 -0700
Branch: REL_13_STABLE [cc9a62c51] 2025-07-31 06:38:03 -0700
Author: Noah Misch <noah@leadboat.com>
Branch: REL_18_STABLE [0d2734eac] 2025-08-10 13:05:13 -0700
Branch: REL_17_STABLE [28e7252e4] 2025-08-10 13:05:16 -0700
Branch: REL_16_STABLE [216683296] 2025-08-10 13:05:16 -0700
Branch: REL_15_STABLE [70637d7ae] 2025-08-10 13:05:17 -0700
Branch: REL_14_STABLE [7846f4709] 2025-08-10 13:05:17 -0700
Branch: REL_13_STABLE [bc05590c7] 2025-08-10 13:05:17 -0700
-->
<para>
Ensure stable sort ordering in <application>pg_dump</application>
for all types of database objects (Noah Misch, Andreas Karlsson)
<ulink url="&commit_baseurl;1ca1889ea">&sect;</ulink>
<ulink url="&commit_baseurl;5dd4957b2">&sect;</ulink>
<ulink url="&commit_baseurl;28e7252e4">&sect;</ulink>
</para>
<para>
<application>pg_dump</application> sorts objects by their logical
names before performing dependency-driven reordering. This sort did
not account for the full unique key identifying certain object types
such as rules and constraints, and thus it could produce dissimilar
sort orders for logically-identical databases. That made it
difficult to compare databases by
diff'ing <application>pg_dump</application> output, so improve the
logic to ensure stable sort ordering in all cases.
</para>
</listitem>
<listitem>
<!--
Author: Fujii Masao <fujii@postgresql.org>
Branch: master [85ccd7e30] 2025-08-08 14:36:39 +0900
Branch: REL_18_STABLE [e3764229e] 2025-08-08 14:37:32 +0900
Branch: REL_17_STABLE [7dafc4a41] 2025-08-08 14:37:41 +0900
-->
<para>
Fix incorrect parsing of object types
in <application>pg_dump</application> filter files (Fujii Masao)
<ulink url="&commit_baseurl;7dafc4a41">&sect;</ulink>
</para>
<para>
Treat keywords as extending to the next whitespace, rather than
stopping at the first non-alphanumeric character as before.
This makes no difference for valid keywords, but it allows some
error cases to be recognized properly. For
example, <literal>table-data</literal> will now be rejected, whereas
previously it was misinterpreted as <literal>table</literal>.
</para>
</listitem>
<listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master Release: REL_18_BR [166b4f456] 2025-06-08 17:06:39 -0400
Branch: REL_17_STABLE [839802792] 2025-06-08 17:06:39 -0400
-->
<para>
<application>pg_restore</application> failed to restore large
objects (BLOBs) from directory-format dumps made
by <application>pg_dump</application> versions
before <productname>PostgreSQL</productname> v12 (Pavel Stehule)
<ulink url="&commit_baseurl;839802792">&sect;</ulink>
</para>
</listitem>
<listitem>
<!--
Author: Álvaro Herrera <alvherre@kurilemu.de>
Branch: master [f295494d3] 2025-07-04 18:05:43 +0200
Branch: REL_18_STABLE [07da2985d] 2025-07-04 18:05:43 +0200
Branch: REL_17_STABLE [b8b2e6052] 2025-07-04 18:05:43 +0200
Branch: REL_16_STABLE [f63e408e8] 2025-07-04 18:05:43 +0200
Branch: REL_15_STABLE [0f4958685] 2025-07-04 18:05:43 +0200
Branch: REL_14_STABLE [ea3386cc7] 2025-07-04 18:05:43 +0200
Branch: REL_13_STABLE [b0f0e2221] 2025-07-04 18:05:43 +0200
Branch: master [144ad723a] 2025-07-04 21:30:05 +0200
Branch: REL_18_STABLE [1e007722f] 2025-07-04 21:30:05 +0200
Branch: REL_17_STABLE [bcb8d47cd] 2025-07-04 21:30:05 +0200
Branch: REL_16_STABLE [f943e2339] 2025-07-04 21:30:05 +0200
Branch: REL_15_STABLE [bd48455d8] 2025-07-04 21:30:05 +0200
Branch: REL_14_STABLE [94dc2b37b] 2025-07-04 21:30:05 +0200
Branch: REL_13_STABLE [708469281] 2025-07-04 21:30:05 +0200
Author: Peter Eisentraut <peter@eisentraut.org>
Branch: master [1beda2c3c] 2025-08-07 11:48:43 +0200
Branch: REL_18_STABLE [1084e76f3] 2025-08-07 11:59:14 +0200
Branch: REL_17_STABLE [930e1faec] 2025-08-07 11:59:20 +0200
Branch: REL_16_STABLE [05b367bea] 2025-08-07 11:59:26 +0200
Branch: REL_15_STABLE [63c79a6fc] 2025-08-07 11:59:32 +0200
Branch: REL_14_STABLE [a00eb374c] 2025-08-07 11:59:38 +0200
Branch: REL_13_STABLE [160131033] 2025-08-07 11:59:42 +0200
Author: Peter Eisentraut <peter@eisentraut.org>
Branch: REL_15_STABLE [22d783350] 2025-08-08 00:18:19 +0200
Branch: REL_14_STABLE [f9f6595e3] 2025-08-08 00:18:15 +0200
Branch: REL_13_STABLE [7406a7d82] 2025-08-08 00:18:11 +0200
Author: Peter Eisentraut <peter@eisentraut.org>
Branch: REL_16_STABLE [06f444816] 2025-08-08 00:27:14 +0200
Branch: REL_15_STABLE [a8b31b160] 2025-08-08 00:28:58 +0200
Branch: REL_14_STABLE [ed2bb0cdd] 2025-08-08 00:29:31 +0200
Branch: REL_13_STABLE [de7fd83cd] 2025-08-08 00:29:34 +0200
Author: Peter Eisentraut <peter@eisentraut.org>
Branch: REL_15_STABLE [18d2d8ae4] 2025-08-08 08:47:10 +0200
Branch: REL_14_STABLE [bef2c2a4e] 2025-08-08 08:48:28 +0200
Branch: REL_13_STABLE [095e83d09] 2025-08-08 08:48:36 +0200
-->
<para>
In <application>pg_upgrade</application>, check for inconsistent
inherited not-null constraints (Ali Akbar)
<ulink url="&commit_baseurl;b8b2e6052">&sect;</ulink>
<ulink url="&commit_baseurl;bcb8d47cd">&sect;</ulink>
<ulink url="&commit_baseurl;930e1faec">&sect;</ulink>
</para>
<para>
<productname>PostgreSQL</productname> versions before 18 allow an
inherited column not-null constraint to be dropped. However, this
results in a schema that cannot be restored, leading to failure
in <application>pg_upgrade</application>. Detect such cases
during <application>pg_upgrade</application>'s preflight checks to
allow users to fix them before initiating the upgrade.
</para>
</listitem>
<listitem>
<!--
Author: Amit Kapila <akapila@postgresql.org>
Branch: master [72e6c08fe] 2025-07-11 10:46:43 +0530
Branch: REL_18_STABLE [f36e57745] 2025-07-11 10:28:29 +0530
Branch: REL_17_STABLE [24f6c1bd4] 2025-07-11 09:53:34 +0530
-->
<para>
Don't require that the target installation
have <varname>max_slot_wal_keep_size</varname> set to its default
during <application>pg_upgrade</application> (Dilip Kumar)
<ulink url="&commit_baseurl;24f6c1bd4">&sect;</ulink>
</para>
</listitem>
<listitem>
<!--
Author: Michael Paquier <michael@paquier.xyz>
Branch: master [5a6c39b6d] 2025-07-04 15:09:24 +0900
Branch: REL_18_STABLE [29a4b63c6] 2025-07-04 15:10:17 +0900
Branch: REL_17_STABLE [ae20c105f] 2025-07-04 15:10:19 +0900
Branch: REL_16_STABLE [7e7059abf] 2025-07-04 15:10:21 +0900
Branch: REL_15_STABLE [dcbbd4331] 2025-07-04 15:10:22 +0900
Branch: REL_14_STABLE [b61ddcaf4] 2025-07-04 15:10:24 +0900
Branch: REL_13_STABLE [8bca4476f] 2025-07-04 15:10:25 +0900
-->
<para>
Avoid assertion failure if <varname>track_commit_timestamp</varname>
is enabled during <application>initdb</application> (Hayato Kuroda,
Andy Fan)
<ulink url="&commit_baseurl;ae20c105f">&sect;</ulink>
</para>
</listitem>
<listitem>
<!--
Author: Fujii Masao <fujii@postgresql.org>
Branch: master Release: REL_18_BR [0bd762e81] 2025-05-21 11:55:14 +0900
Branch: REL_17_STABLE [11efaaffa] 2025-05-21 11:56:24 +0900
Branch: REL_16_STABLE [0d2063585] 2025-05-21 11:56:32 +0900
Branch: REL_15_STABLE [0e0174b49] 2025-05-21 11:56:39 +0900
-->
<para>
Fix <application>pg_waldump</application> to show information about
dropped statistics in <literal>PREPARE TRANSACTION</literal> WAL
records (Daniil Davydov)
<ulink url="&commit_baseurl;11efaaffa">&sect;</ulink>
</para>
</listitem>
<listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master Release: REL_18_BR [470273da0] 2025-05-29 10:39:55 -0400
Branch: REL_17_STABLE [e20b3256a] 2025-05-29 10:39:55 -0400
Branch: REL_16_STABLE [8eef55db1] 2025-05-29 10:39:55 -0400
Branch: REL_15_STABLE [09c9ae8f6] 2025-05-29 10:39:55 -0400
Branch: REL_14_STABLE [2cd2222ca] 2025-05-29 10:39:55 -0400
Branch: REL_13_STABLE [e7d3d4ed4] 2025-05-29 10:39:55 -0400
-->
<para>
Avoid possible leak of the open connection
during <filename>contrib/dblink</filename> connection establishment
(Tom Lane)
<ulink url="&commit_baseurl;e20b3256a">&sect;</ulink>
</para>
<para>
In the rare scenario where we hit out-of-memory while inserting the
new connection object into dblink's hashtable, the open connection
would be leaked until end of session, leaving an idle session
sitting on the remote server.
</para>
</listitem>
<listitem>
<!--
Author: Robert Haas <rhaas@postgresql.org>
Branch: master Release: REL_18_BR [016e407f4] 2025-06-06 08:18:27 -0400
Branch: REL_17_STABLE [e4b8f925a] 2025-06-06 08:18:26 -0400
Branch: REL_16_STABLE [169429264] 2025-06-06 08:18:23 -0400
Branch: REL_15_STABLE [d59ff3be2] 2025-06-06 08:18:22 -0400
Branch: REL_14_STABLE [a4b9707c4] 2025-06-06 08:18:20 -0400
Branch: REL_13_STABLE [4adbaa36c] 2025-06-06 08:18:15 -0400
-->
<para>
Make <filename>contrib/pg_prewarm</filename> cope with very
large <varname>shared_buffers</varname> settings (Daria Shanina)
<ulink url="&commit_baseurl;e4b8f925a">&sect;</ulink>
</para>
<para>
Autoprewarm failed with a memory allocation error
if <varname>shared_buffers</varname> was larger than about 50
million buffers (400GB).
</para>
</listitem>
<listitem>
<!--
Author: Fujii Masao <fujii@postgresql.org>
Branch: master Release: REL_18_BR [3c4d7557e] 2025-05-29 17:50:32 +0900
Branch: REL_17_STABLE [b64c585fd] 2025-05-29 17:52:42 +0900
-->
<para>
Prevent assertion failure
in <filename>contrib/pg_prewarm</filename> (Masahiro Ikeda)
<ulink url="&commit_baseurl;b64c585fd">&sect;</ulink>
</para>
<para>
Applying <function>pg_prewarm()</function> to a relation
lacking storage (such as a view) caused an assertion failure,
although there was no ill effect in non-assert builds.
Add an error check to reject that case.
</para>
</listitem>
<listitem>
<!--
Author: Michael Paquier <michael@paquier.xyz>
Branch: master Release: REL_18_BR [35a428f30] 2025-05-29 11:26:03 +0900
Branch: REL_17_STABLE [290e8ab32] 2025-05-29 11:26:23 +0900
Branch: REL_16_STABLE [7e8b44f4e] 2025-05-29 11:26:27 +0900
Branch: REL_15_STABLE [130300a15] 2025-05-29 11:26:29 +0900
Branch: REL_14_STABLE [8a1459f62] 2025-05-29 11:26:31 +0900
Branch: REL_13_STABLE [3c03b8cd7] 2025-05-29 11:26:34 +0900
-->
<para>
In <filename>contrib/pg_stat_statements</filename>, avoid leaving
gaps in the set of parameter numbers used in a normalized query
(Sami Imseih)
<ulink url="&commit_baseurl;290e8ab32">&sect;</ulink>
</para>
</listitem>
<listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master Release: REL_18_BR [232d8caea] 2025-05-30 13:45:41 -0400
Branch: REL_17_STABLE [9339c85af] 2025-05-30 13:45:41 -0400
Branch: REL_16_STABLE [2b92dc4ee] 2025-05-30 13:45:41 -0400
Branch: REL_15_STABLE [3c31594f5] 2025-05-30 13:45:41 -0400
Branch: REL_14_STABLE [4a07c0961] 2025-05-30 13:45:41 -0400
Branch: REL_13_STABLE [271cb7eaa] 2025-05-30 13:45:41 -0400
-->
<para>
Fix memory leakage in <filename>contrib/postgres_fdw</filename>'s
DirectModify methods (Tom Lane)
<ulink url="&commit_baseurl;9339c85af">&sect;</ulink>
</para>
<para>
The <structname>PGresult</structname> holding the results of the
remote modify command would be leaked for the rest of the session if
the query fails between invocations of the DirectModify methods,
which could happen when there's <literal>RETURNING</literal> data to
process.
</para>
</listitem>
<listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [4300d8b6a] 2025-07-29 15:17:40 -0400
Branch: REL_18_STABLE [8e5e3ff55] 2025-07-29 15:17:40 -0400
Branch: REL_17_STABLE [a644f5fc6] 2025-07-29 15:17:41 -0400
Branch: REL_16_STABLE [bbc20c8a9] 2025-07-29 15:17:41 -0400
Branch: REL_15_STABLE [19857437b] 2025-07-29 15:17:41 -0400
Branch: REL_14_STABLE [2dee95bd0] 2025-07-29 15:17:41 -0400
Branch: REL_13_STABLE [c5bd803e5] 2025-07-29 15:17:41 -0400
-->
<para>
Ensure that directories listed
in <application>configure</application>'s
<option>--with-includes</option>
and <option>--with-libraries</option> options are searched before
system-supplied directories (Tom Lane)
<ulink url="&commit_baseurl;a644f5fc6">&sect;</ulink>
</para>
<para>
A common reason for using these options is to allow a user-built
version of some library to override the system-supplied version.
However, that failed to work in some environments because of
careless ordering of switches in the commands issued by the makefiles.
</para>
</listitem>
<listitem>
<!--
Author: Michael Paquier <michael@paquier.xyz>
Branch: master [1a5212775] 2025-07-30 11:55:42 +0900
Branch: REL_18_STABLE [cd2d52cc6] 2025-07-30 11:55:46 +0900
Branch: REL_17_STABLE [8de56323c] 2025-07-30 11:55:47 +0900
Branch: REL_16_STABLE [c1984be23] 2025-07-30 11:55:49 +0900
Branch: REL_15_STABLE [d6ffc43f9] 2025-07-30 11:55:51 +0900
Branch: REL_14_STABLE [60953d4cb] 2025-07-30 11:55:53 +0900
Branch: REL_13_STABLE [612f5b806] 2025-07-30 11:55:54 +0900
-->
<para>
Fix <application>configure</application>'s checks
for <function>__cpuid()</function>
and <function>__cpuidex()</function> (Lukas Fittl, Michael Paquier)
<ulink url="&commit_baseurl;8de56323c">&sect;</ulink>
</para>
<para>
<application>configure</application> failed to detect these
Windows-specific functions, so that they would not be used,
leading to slower-than-necessary CRC computations since the
availability of hardware instructions could not be verified.
The practical impact of this error was limited, because production
builds for Windows typically do not use the Autoconf toolchain.
</para>
</listitem>
<listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [e6dfd068e] 2025-07-23 15:44:29 -0400
Branch: REL_18_STABLE [3d039b53a] 2025-07-23 15:44:29 -0400
Branch: REL_17_STABLE [635a85627] 2025-07-23 15:44:29 -0400
Branch: REL_16_STABLE [e4d585455] 2025-07-23 15:44:29 -0400
Branch: REL_15_STABLE [b252ce311] 2025-07-23 15:44:29 -0400
Branch: REL_14_STABLE [868b39a54] 2025-07-23 15:44:29 -0400
Branch: REL_13_STABLE [1ccb3851d] 2025-07-23 15:44:29 -0400
-->
<para>
Fix build failure with <option>--with-pam</option> option on
Solaris-based platforms (Tom Lane)
<ulink url="&commit_baseurl;635a85627">&sect;</ulink>
</para>
<para>
Solaris is inconsistent with other Unix platforms about the API for
PAM authentication. This manifested as an <quote>inconsistent
pointer</quote> compiler warning, which we never did anything about.
But as of GCC 14 it's an error not warning by default, so fix it.
</para>
</listitem>
<listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [1fd772d19] 2025-07-01 12:40:35 -0400
Branch: REL_18_STABLE [581305a46] 2025-07-01 12:40:35 -0400
Branch: REL_17_STABLE [0991249d7] 2025-07-01 12:40:35 -0400
Branch: REL_16_STABLE [d25d392e8] 2025-07-01 12:40:35 -0400
Branch: master [29213636e] 2025-07-01 12:08:20 -0400
Branch: REL_18_STABLE [45c527662] 2025-07-01 12:08:20 -0400
Branch: REL_17_STABLE [29c54ea7b] 2025-07-01 12:08:20 -0400
Branch: REL_16_STABLE [3a2617e4f] 2025-07-01 12:08:20 -0400
Branch: REL_15_STABLE [0fb496c70] 2025-07-01 12:08:57 -0400
Branch: REL_14_STABLE [71d71ac4d] 2025-07-01 12:08:57 -0400
Branch: REL_13_STABLE [d0a695cf4] 2025-07-01 12:08:58 -0400
-->
<para>
Make our code portable to GNU Hurd (Michael Banck, Christoph Berg,
Samuel Thibault)
<ulink url="&commit_baseurl;0991249d7">&sect;</ulink>
<ulink url="&commit_baseurl;29c54ea7b">&sect;</ulink>
</para>
<para>
Fix assumptions about <literal>IOV_MAX</literal>
and <literal>O_RDONLY</literal> that don't hold on Hurd.
</para>
</listitem>
<listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master Release: REL_18_BR [12eee85e5] 2025-05-18 12:45:55 -0400
Branch: REL_17_STABLE [5355a2400] 2025-05-18 12:45:55 -0400
Branch: REL_16_STABLE [253cf661c] 2025-05-18 12:45:55 -0400
Branch: REL_16_STABLE [4b53cb493] 2025-05-20 10:55:05 -0400
Branch: REL_15_STABLE [00652b3c9] 2025-05-18 12:45:55 -0400
Branch: REL_14_STABLE [a1e0e7076] 2025-05-18 12:45:55 -0400
Branch: REL_13_STABLE [9bc2d37cc] 2025-05-18 12:45:55 -0400
-->
<para>
Make our usage of <function>memset_s()</function> conform strictly
to the C11 standard (Tom Lane)
<ulink url="&commit_baseurl;5355a2400">&sect;</ulink>
</para>
<para>
This avoids compile failures on some platforms.
</para>
</listitem>
<listitem>
<!--
Author: Peter Eisentraut <peter@eisentraut.org>
Branch: master Release: REL_18_BR [2c0d8b950] 2025-06-22 14:13:46 +0200
Branch: REL_17_STABLE [2499c3490] 2025-06-22 14:15:35 +0200
Branch: REL_16_STABLE [629cc1623] 2025-06-22 14:15:40 +0200
-->
<para>
Silence compatibility warning when using Meson to build with MSVC
(Peter Eisentraut)
<ulink url="&commit_baseurl;2499c3490">&sect;</ulink>
</para>
</listitem>
<listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [aad1617b7] 2025-07-15 18:11:18 -0400
Branch: REL_18_STABLE [0b6dfce0c] 2025-07-15 18:11:18 -0400
Branch: REL_17_STABLE [5a2139a90] 2025-07-15 18:11:18 -0400
Branch: REL_16_STABLE [5db55e13f] 2025-07-15 18:11:18 -0400
Branch: REL_15_STABLE [f32e45641] 2025-07-15 18:11:18 -0400
Branch: REL_14_STABLE [8254b7e33] 2025-07-15 18:11:18 -0400
Branch: REL_13_STABLE [6c93bf735] 2025-07-15 18:11:18 -0400
-->
<para>
Prevent uninitialized-value compiler warnings in JSONB comparison
code (Tom Lane)
<ulink url="&commit_baseurl;5a2139a90">&sect;</ulink>
</para>
</listitem>
<listitem>
<!--
Author: Michael Paquier <michael@paquier.xyz>
Branch: master [8aa54aa7e] 2025-07-07 08:53:57 +0900
Branch: REL_18_STABLE [8d1071e7d] 2025-07-07 08:54:30 +0900
Branch: REL_17_STABLE [c911e7802] 2025-07-07 08:54:37 +0900
Branch: REL_16_STABLE [d24a96ce2] 2025-07-07 08:54:39 +0900
Branch: REL_15_STABLE [75c1eb60b] 2025-07-07 08:54:41 +0900
Branch: REL_14_STABLE [ac166b19a] 2025-07-07 08:54:43 +0900
Branch: REL_13_STABLE [e688cfc2b] 2025-07-07 08:54:44 +0900
-->
<para>
Avoid deprecation warnings when building
with <application>libxml2</application> 2.14 and later
(Michael Paquier)
<ulink url="&commit_baseurl;c911e7802">&sect;</ulink>
</para>
</listitem>
<listitem>
<!--
Author: John Naylor <john.naylor@postgresql.org>
Branch: master [ed26c4e25] 2025-07-09 14:20:22 +0700
Branch: master [90bfae9f9] 2025-08-07 17:10:52 +0700
Branch: REL_18_STABLE [dd2926207] 2025-08-07 17:12:44 +0700
Branch: REL_17_STABLE [21ae8fc5f] 2025-08-07 17:13:55 +0700
Branch: REL_16_STABLE [aae9aad19] 2025-08-07 17:14:39 +0700
Branch: REL_15_STABLE [baacfb9e6] 2025-08-07 17:15:09 +0700
Branch: REL_14_STABLE [a4f891b96] 2025-08-07 17:16:00 +0700
Branch: REL_13_STABLE [9560c1ec1] 2025-08-07 17:16:33 +0700
-->
<para>
Avoid problems when compiling <filename>pg_locale.h</filename> under
C++ (John Naylor)
<ulink url="&commit_baseurl;21ae8fc5f">&sect;</ulink>
</para>
<para>
<productname>PostgreSQL</productname> header files generally need to
be wrapped in <literal>extern "C" { ... }</literal> in order to be
included in extensions written in C++. This failed
for <filename>pg_locale.h</filename> because of its use
of <application>libicu</application> headers, but we can work around
that by suppressing C++-only declarations in those headers. C++
extensions that want to use <application>libicu</application>'s C++
APIs can do so by including the <application>libicu</application>
headers ahead of <filename>pg_locale.h</filename>.
</para>
</listitem>
</itemizedlist>
</sect2>
</sect1>
<sect1 id="release-17-5">
<title>Release 17.5</title>
<formalpara>
<title>Release date:</title>
<para>2025-05-08</para>
</formalpara>
<para>
This release contains a variety of fixes from 17.4.
For information about new features in major release 17, see
<xref linkend="release-17"/>.
</para>
<sect2 id="release-17-5-migration">
<title>Migration to Version 17.5</title>
<para>
A dump/restore is not required for those running 17.X.
</para>
<para>
However, if you have any self-referential foreign key constraints on
partitioned tables, it may be necessary to recreate those constraints
to ensure that they are being enforced correctly. See the second
changelog entry below.
</para>
<para>
Also, if you have any BRIN bloom indexes, it may be advisable to
reindex them after updating. See the third changelog entry below.
</para>
<para>
Also, if you are upgrading from a version earlier than 17.1,
see <xref linkend="release-17-1"/>.
</para>
</sect2>
<sect2 id="release-17-5-changes">
<title>Changes</title>
<itemizedlist>
<listitem>
<!--
Author: Noah Misch <noah@leadboat.com>
Branch: master [627acc3ca] 2025-05-05 04:52:04 -0700
Branch: REL_17_STABLE [ec5f89e8a] 2025-05-05 04:52:07 -0700
Branch: REL_16_STABLE [d1264948f] 2025-05-05 04:52:07 -0700
Branch: REL_15_STABLE [44ba3f55f] 2025-05-05 04:52:08 -0700
Branch: REL_14_STABLE [3f2ab7393] 2025-05-05 04:52:08 -0700
Branch: REL_13_STABLE [cbadeaca9] 2025-05-05 04:52:08 -0700
Branch: master [5be213caa] 2025-05-05 04:52:04 -0700
Branch: REL_17_STABLE [617d34908] 2025-05-05 04:52:07 -0700
Branch: REL_16_STABLE [f3bb0b2c4] 2025-05-05 04:52:07 -0700
Branch: REL_15_STABLE [45fe7e08f] 2025-05-05 04:52:08 -0700
Branch: REL_14_STABLE [258cde839] 2025-05-05 04:52:08 -0700
Branch: REL_13_STABLE [7279e5820] 2025-05-05 04:52:08 -0700
-->
<para>
Avoid one-byte buffer overread when examining invalidly-encoded
strings that are claimed to be in GB18030 encoding
(Noah Misch, Andres Freund)
<ulink url="&commit_baseurl;ec5f89e8a">&sect;</ulink>
<ulink url="&commit_baseurl;617d34908">&sect;</ulink>
</para>
<para>
While unlikely, a SIGSEGV crash could occur if an incomplete
multibyte character appeared at the end of memory. This was
possible both in the server and
in <application>libpq</application>-using applications.
(CVE-2025-4207)
</para>
</listitem>
<listitem>
<!--
Author: Álvaro Herrera <alvherre@kurilemu.de>
Branch: master [c83a38758] 2025-05-02 21:25:50 +0200
Branch: REL_17_STABLE [f51ae3187] 2025-05-02 21:25:50 +0200
Branch: REL_16_STABLE [1817d62ec] 2025-05-02 21:25:50 +0200
Branch: REL_15_STABLE [6ba979cf5] 2025-05-02 21:25:50 +0200
Branch: REL_14_STABLE [1649d153a] 2025-05-02 21:25:50 +0200
Branch: REL_13_STABLE [b3a9c536d] 2025-05-02 21:25:50 +0200
-->
<para>
Handle self-referential foreign keys on partitioned tables correctly
(Álvaro Herrera)
<ulink url="&commit_baseurl;f51ae3187">&sect;</ulink>
</para>
<para>
Creating or attaching partitions failed to make the required catalog
entries for a foreign-key constraint, if the table referenced by the
constraint was the same partitioned table. This resulted in failure
to enforce the constraint fully.
</para>
<para>
To fix this, you should drop and recreate any self-referential
foreign keys on partitioned tables, if partitions have been created
or attached since the constraint was created. Bear in mind that
violating rows might already be present, in which case recreating
the constraint will fail, and you'll need to fix up those rows
before trying again.
</para>
</listitem>
<listitem>
<!--
Author: Tomas Vondra <tomas.vondra@postgresql.org>
Branch: master [818245506] 2025-03-26 17:01:41 +0100
Branch: REL_17_STABLE [cb0ad70b8] 2025-03-26 17:02:17 +0100
Branch: REL_16_STABLE [ebcc799a7] 2025-03-26 17:02:50 +0100
Branch: REL_15_STABLE [e064b770c] 2025-03-26 17:03:02 +0100
Branch: REL_14_STABLE [6be02bbc8] 2025-03-26 17:03:06 +0100
-->
<para>
Avoid data loss when merging compressed BRIN summaries
in <function>brin_bloom_union()</function> (Tomas Vondra)
<ulink url="&commit_baseurl;cb0ad70b8">&sect;</ulink>
</para>
<para>
The code failed to account for decompression results not being
identical to the input objects, which would result in failure to add
some of the data to the merged summary, leading to missed rows in
index searches.
</para>
<para>
This mistake was present back to v14 where BRIN bloom indexes were
introduced, but this code path was only rarely reached then. It's
substantially more likely to be hit in v17 because parallel index
builds now use the code.
</para>
</listitem>
<listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [f4e7756ef] 2025-03-12 11:47:38 -0400
Branch: REL_17_STABLE [ca0830e5a] 2025-03-12 11:47:19 -0400
Branch: REL_16_STABLE [fec43428c] 2025-03-12 11:47:19 -0400
Branch: REL_15_STABLE [ae0be2f0b] 2025-03-12 11:47:19 -0400
Branch: REL_14_STABLE [d3a29ae6a] 2025-03-12 11:47:19 -0400
Branch: REL_13_STABLE [39af32f78] 2025-03-12 11:47:19 -0400
Branch: REL_15_STABLE [317aba70e] 2025-03-12 11:27:59 -0400
Branch: REL_14_STABLE [584f17a90] 2025-03-12 11:28:04 -0400
Branch: REL_13_STABLE [28a7e31d0] 2025-03-12 11:28:11 -0400
Branch: REL_15_STABLE [7713f4592] 2025-03-13 12:13:07 -0400
Branch: REL_14_STABLE [1a20bc946] 2025-03-13 12:13:07 -0400
Branch: REL_13_STABLE [b200180de] 2025-03-13 12:13:07 -0400
-->
<para>
Fix unexpected <quote>attribute has wrong type</quote> errors
in <command>UPDATE</command>, <command>DELETE</command>,
and <command>MERGE</command> queries that use whole-row table
references to views or functions in <literal>FROM</literal>
(Tom Lane)
<ulink url="&commit_baseurl;ca0830e5a">&sect;</ulink>
</para>
</listitem>
<listitem>
<!--
Author: Dean Rasheed <dean.a.rasheed@gmail.com>
Branch: master [8b6a0e239] 2025-03-29 09:58:40 +0000
Branch: REL_17_STABLE [25303678a] 2025-03-29 09:50:14 +0000
Branch: REL_16_STABLE [8d4cd3b4a] 2025-03-29 09:51:23 +0000
Branch: REL_15_STABLE [14a33d3f0] 2025-03-29 09:52:18 +0000
-->
<para>
Fix <command>MERGE</command> into a partitioned table
with <literal>DO NOTHING</literal> actions (Tender Wang)
<ulink url="&commit_baseurl;25303678a">&sect;</ulink>
</para>
<para>
Some cases failed with <quote>unknown action in MERGE WHEN
clause</quote> errors.
</para>
</listitem>
<listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [7c8728494] 2025-04-15 12:08:34 -0400
Branch: REL_17_STABLE [3c39c000c] 2025-04-15 12:08:34 -0400
Branch: REL_16_STABLE [f04e0faa3] 2025-04-15 12:08:34 -0400
Branch: REL_15_STABLE [97d671672] 2025-04-15 12:08:34 -0400
Branch: REL_14_STABLE [4604928ed] 2025-04-15 12:08:34 -0400
-->
<para>
Prevent failure in <command>INSERT</command> commands when the table
has a <literal>GENERATED</literal> column of a domain data type and
the domain's constraints disallow null values (Jian He)
<ulink url="&commit_baseurl;3c39c000c">&sect;</ulink>
</para>
<para>
Constraint failure was reported even if the generation expression
produced a perfectly okay result.
</para>
</listitem>
<listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [691836405] 2025-04-05 15:01:48 -0400
Branch: REL_17_STABLE [5e7be43f4] 2025-04-05 15:01:33 -0400
Branch: REL_16_STABLE [1980ec2bc] 2025-04-05 15:01:33 -0400
Branch: REL_15_STABLE [ede29a1e4] 2025-04-05 15:01:33 -0400
Branch: REL_14_STABLE [754a3d82d] 2025-04-05 15:01:33 -0400
Branch: REL_13_STABLE [e276b5829] 2025-04-05 15:01:33 -0400
-->
<para>
Correctly process references to outer CTE names that appear within
a <literal>WITH</literal> clause attached to
an <command>INSERT</command>/<command>UPDATE</command>/<command>DELETE</command>/<command>MERGE</command>
command that's inside <literal>WITH</literal> (Tom Lane)
<ulink url="&commit_baseurl;5e7be43f4">&sect;</ulink>
</para>
<para>
The parser failed to detect disallowed recursion cases, nor did it
account for such references when sorting CTEs into a usable order.
</para>
</listitem>
<listitem>
<!--
Author: Amit Langote <amitlan@postgresql.org>
Branch: master [d4f79865d] 2025-03-13 09:56:36 +0900
Branch: REL_17_STABLE [8b2392ae3] 2025-03-13 09:56:49 +0900
-->
<para>
Fix misprocessing of casts within the keys of JSON constructor
expressions (Amit Langote)
<ulink url="&commit_baseurl;8b2392ae3">&sect;</ulink>
</para>
</listitem>
<listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [fedfcf665] 2025-03-09 13:11:20 -0400
Branch: REL_17_STABLE [43847dd5e] 2025-03-09 13:11:20 -0400
Branch: REL_16_STABLE [a7aa9f21f] 2025-03-09 13:11:20 -0400
-->
<para>
Don't try to parallelize <function>array_agg()</function> when the
argument is of an anonymous record type (Richard Guo, Tom Lane)
<ulink url="&commit_baseurl;43847dd5e">&sect;</ulink>
</para>
<para>
The protocol for communicating with parallel workers doesn't support
identifying the concrete record type that a worker is returning.
</para>
</listitem>
<listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [4618045be] 2025-03-13 16:07:55 -0400
Branch: REL_17_STABLE [c826cd1b1] 2025-03-13 16:07:55 -0400
Branch: REL_16_STABLE [0405982c7] 2025-03-13 16:07:55 -0400
Branch: REL_15_STABLE [13dd6f772] 2025-03-13 16:07:55 -0400
Branch: REL_14_STABLE [f7ae51312] 2025-03-13 16:07:55 -0400
Branch: REL_13_STABLE [474aee3df] 2025-03-13 16:07:55 -0400
-->
<para>
Fix <literal>ARRAY(<replaceable>subquery</replaceable>)</literal>
and <literal>ARRAY[<replaceable>expression, ...</replaceable>]</literal>
constructs to produce sane results when the input is of
type <type>int2vector</type> or <type>oidvector</type> (Tom Lane)
<ulink url="&commit_baseurl;c826cd1b1">&sect;</ulink>
</para>
<para>
This patch restores the behavior that existed
before <productname>PostgreSQL</productname> 9.5: the result is of
type <type>int2vector[]</type> or <type>oidvector[]</type>.
</para>
</listitem>
<listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [7fb880102] 2025-03-08 11:24:25 -0500
Branch: REL_17_STABLE [99c01aadf] 2025-03-08 11:24:42 -0500
Branch: REL_16_STABLE [61513da08] 2025-03-08 11:24:47 -0500
Branch: REL_15_STABLE [e2921c0e9] 2025-03-08 11:24:52 -0500
Branch: REL_14_STABLE [da85544ae] 2025-03-08 11:24:57 -0500
Branch: REL_13_STABLE [f1c1bafcd] 2025-03-08 11:25:01 -0500
-->
<para>
Fix possible erroneous reports of invalid affixes while parsing
<application>Ispell</application> dictionaries (Jacob Brazeal)
<ulink url="&commit_baseurl;99c01aadf">&sect;</ulink>
</para>
</listitem>
<listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [95f650674] 2025-03-03 12:43:44 -0500
Branch: REL_17_STABLE [d6dd2a02b] 2025-03-03 12:43:29 -0500
Branch: REL_16_STABLE [edc3bccd0] 2025-03-03 12:43:29 -0500
Branch: REL_15_STABLE [1d180931c] 2025-03-03 12:43:29 -0500
Branch: REL_14_STABLE [c75c830e2] 2025-03-03 12:43:29 -0500
Branch: REL_13_STABLE [aac07b562] 2025-03-03 12:43:29 -0500
Branch: master [bd178960c] 2025-04-02 11:13:01 -0400
Branch: REL_17_STABLE [0941aadcd] 2025-04-02 11:13:01 -0400
Branch: REL_16_STABLE [053222a97] 2025-04-02 11:13:01 -0400
Branch: REL_15_STABLE [2d6cfb0cd] 2025-04-02 11:13:01 -0400
Branch: REL_14_STABLE [d31d39cfe] 2025-04-02 11:13:01 -0400
Branch: REL_13_STABLE [dd34cbfce] 2025-04-02 11:13:01 -0400
-->
<para>
Fix <literal>ALTER TABLE ADD COLUMN</literal> to correctly handle
the case of a domain type that has a default
(Jian He, Tom Lane, Tender Wang)
<ulink url="&commit_baseurl;d6dd2a02b">&sect;</ulink>
<ulink url="&commit_baseurl;0941aadcd">&sect;</ulink>
</para>
<para>
If a domain type has a default, adding a column of that type (without
any explicit <literal>DEFAULT</literal>
clause) failed to install the domain's default
value in existing rows, instead leaving the new column null.
</para>
</listitem>
<listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [43b8e6c4a] 2025-04-04 20:11:48 -0400
Branch: REL_17_STABLE [5e6e97fbf] 2025-04-04 20:11:48 -0400
Branch: REL_16_STABLE [fb3a77fd9] 2025-04-04 20:11:48 -0400
Branch: REL_15_STABLE [f5069f026] 2025-04-04 20:11:48 -0400
-->
<para>
Repair misbehavior when there are duplicate column names in a
foreign key constraint's <literal>ON DELETE SET DEFAULT</literal>
or <literal>SET NULL</literal> action (Tom Lane)
<ulink url="&commit_baseurl;5e6e97fbf">&sect;</ulink>
</para>
</listitem>
<listitem>
<!--
Author: Álvaro Herrera <alvherre@alvh.no-ip.org>
Branch: master [7bbc46213] 2025-03-04 20:07:30 +0100
Branch: REL_17_STABLE [4e026be5f] 2025-03-04 20:07:30 +0100
Branch: REL_16_STABLE [9ea5fe5b6] 2025-03-04 20:07:30 +0100
Branch: REL_15_STABLE [bf1e2d2db] 2025-03-04 20:07:30 +0100
Branch: REL_14_STABLE [931a1c023] 2025-03-04 20:07:30 +0100
Branch: REL_13_STABLE [0f354e080] 2025-03-04 20:07:30 +0100
-->
<para>
Improve the error message for disallowed attempts to alter the
properties of a foreign key constraint (Álvaro Herrera)
<ulink url="&commit_baseurl;4e026be5f">&sect;</ulink>
</para>
</listitem>
<listitem>
<!--
Author: Noah Misch <noah@leadboat.com>
Branch: master [2d5350cfb] 2025-04-20 08:28:48 -0700
Branch: REL_17_STABLE [d0a049987] 2025-04-20 08:28:52 -0700
Branch: REL_16_STABLE [5905e9935] 2025-04-20 08:28:52 -0700
Branch: REL_15_STABLE [e0f53e669] 2025-04-20 08:28:52 -0700
Branch: REL_14_STABLE [a61b67cd0] 2025-04-20 08:28:53 -0700
Branch: REL_13_STABLE [d34b671a6] 2025-04-20 08:28:53 -0700
-->
<para>
Avoid error when resetting
the <structfield>relhassubclass</structfield> flag of a temporary
table that's marked <literal>ON COMMIT DELETE ROWS</literal>
(Noah Misch)
<ulink url="&commit_baseurl;d0a049987">&sect;</ulink>
</para>
</listitem>
<listitem>
<!--
Author: Michael Paquier <michael@paquier.xyz>
Branch: master [984410b92] 2025-02-21 17:30:56 +0900
Branch: REL_17_STABLE [2e0f93d7c] 2025-02-21 17:31:01 +0900
Branch: REL_16_STABLE [0af3ae468] 2025-02-21 17:31:02 +0900
Branch: master [665cafe8a] 2025-02-21 20:37:31 +0900
Branch: REL_17_STABLE [310907aaf] 2025-02-21 20:37:36 +0900
Branch: REL_16_STABLE [514d47dfb] 2025-02-21 20:37:38 +0900
-->
<para>
Add missing deparsing of the <literal>INDENT</literal> option
of <function>XMLSERIALIZE()</function> (Jim Jones)
<ulink url="&commit_baseurl;2e0f93d7c">&sect;</ulink>
<ulink url="&commit_baseurl;310907aaf">&sect;</ulink>
</para>
<para>
Previously, views or rules
using <literal>XMLSERIALIZE(... INDENT)</literal> were dumped
without the <literal>INDENT</literal> clause, causing incorrect
results after restore.
</para>
</listitem>
<listitem>
<!--
Author: David Rowley <drowley@postgresql.org>
Branch: master [d47f92224] 2025-04-20 22:12:07 +1200
Branch: REL_17_STABLE [065ce49a1] 2025-04-20 22:12:37 +1200
Branch: REL_16_STABLE [887a23237] 2025-04-20 22:12:59 +1200
-->
<para>
Avoid premature evaluation of the arguments of an aggregate function
that has both <literal>FILTER</literal> and <literal>ORDER
BY</literal> (or <literal>DISTINCT</literal>) options (David Rowley)
<ulink url="&commit_baseurl;065ce49a1">&sect;</ulink>
</para>
<para>
If there is <literal>ORDER BY</literal>
or <literal>DISTINCT</literal>, we consider pre-sorting the
aggregate input values rather than doing the sort within the Agg
plan node. But this is problematic if the aggregate inputs include
expressions that could fail (for example, a division where some of
the input divisors could be zero) and there is
a <literal>FILTER</literal> clause that's meant to prevent such
failures. Pre-sorting would push the expression evaluations to
before the <literal>FILTER</literal> test, allowing the failures to
happen anyway. Avoid this by not pre-sorting if there's
a <literal>FILTER</literal> and the input expressions are anything
more complex than a simple Var or Const.
</para>
</listitem>
<listitem>
<!--
Author: Richard Guo <rguo@postgresql.org>
Branch: master [716a051aa] 2025-03-04 16:11:03 +0900
Branch: REL_17_STABLE [bc5a08af3] 2025-03-04 16:17:19 +0900
-->
<para>
Fix erroneous deductions from column <literal>NOT NULL</literal>
constraints in the presence of outer joins (Richard Guo)
<ulink url="&commit_baseurl;bc5a08af3">&sect;</ulink>
</para>
<para>
In some cases the planner would discard an <literal>IS NOT
NULL</literal> query condition, even though the condition applies
after an outer join and thus is not redundant.
</para>
</listitem>
<listitem>
<!--
Author: Bruce Momjian <bruce@momjian.us>
Branch: master [46b4ba533] 2025-04-07 21:33:42 -0400
Branch: REL_17_STABLE [b8b1e87b7] 2025-04-07 21:33:41 -0400
-->
<para>
Avoid incorrect optimizations based on <literal>IS [NOT]
NULL</literal> tests that are applied to composite values
(Bruce Momjian)
<ulink url="&commit_baseurl;b8b1e87b7">&sect;</ulink>
</para>
</listitem>
<listitem>
<!--
Author: David Rowley <drowley@postgresql.org>
Branch: master [b136db07c] 2025-04-02 11:56:29 +1300
Branch: REL_17_STABLE [5672a8399] 2025-04-02 11:57:27 +1300
Branch: REL_16_STABLE [5a0840b76] 2025-04-02 11:57:54 +1300
Branch: REL_15_STABLE [a7f213b11] 2025-04-02 11:58:16 +1300
Branch: REL_14_STABLE [b68f664bb] 2025-04-02 11:58:37 +1300
-->
<para>
Fix planner's failure to identify more than one hashable
ScalarArrayOpExpr subexpression within a top-level expression
(David Geier)
<ulink url="&commit_baseurl;5672a8399">&sect;</ulink>
</para>
<para>
This resulted in unnecessarily-inefficient execution of any
additional subexpressions that could have been processed with a hash
table (that is, <literal>IN</literal>, <literal>NOT IN</literal>,
or <literal>= ANY</literal> clauses with all-constant right-hand
sides).
</para>
</listitem>
<listitem>
<!--
Author: Tomas Vondra <tomas.vondra@postgresql.org>
Branch: master [9ba7bcc89] 2025-02-19 23:53:37 +0100
Branch: REL_17_STABLE [587b6aa3f] 2025-02-19 23:54:18 +0100
-->
<para>
Fix incorrect table size estimate with low fill factor (Tomas Vondra)
<ulink url="&commit_baseurl;587b6aa3f">&sect;</ulink>
</para>
<para>
When the planner estimates the number of rows in a
never-yet-analyzed table, it uses the table's fillfactor setting in
the estimation, but it neglected to clamp the result to at least one
row per page. A low fillfactor could thus result in an unreasonably
small estimate.
</para>
</listitem>
<listitem>
<!--
Author: Andres Freund <andres@anarazel.de>
Branch: master [459e7bf8e] 2025-04-02 14:54:20 -0400
Branch: REL_17_STABLE [78cb2466f] 2025-04-02 14:42:03 -0400
Branch: REL_16_STABLE [980727b84] 2025-04-02 14:46:31 -0400
Branch: REL_15_STABLE [77d90d6d6] 2025-04-02 14:50:03 -0400
Branch: REL_14_STABLE [4934d3875] 2025-04-02 14:50:44 -0400
Branch: REL_13_STABLE [b9ec8125d] 2025-04-02 14:50:49 -0400
-->
<para>
Disable <quote>skip fetch</quote> optimization in bitmap heap scan
(Matthias van de Meent)
<ulink url="&commit_baseurl;78cb2466f">&sect;</ulink>
</para>
<para>
It turns out that this optimization can result in returning dead
tuples when a concurrent vacuum marks a page all-visible.
</para>
</listitem>
<listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [0f21db36d] 2025-03-06 11:54:31 -0500
Branch: REL_17_STABLE [9094eb25b] 2025-03-06 11:54:27 -0500
Branch: REL_16_STABLE [d52221cf0] 2025-03-06 11:54:27 -0500
Branch: REL_15_STABLE [2d313375c] 2025-03-06 11:54:27 -0500
Branch: REL_14_STABLE [e2a6934a8] 2025-03-06 11:54:27 -0500
Branch: REL_13_STABLE [308d0d443] 2025-03-06 11:54:27 -0500
Branch: master [e708ffe79] 2025-04-12 12:28:02 -0400
Branch: REL_17_STABLE [8c153fcfa] 2025-04-12 12:27:46 -0400
Branch: REL_16_STABLE [4b65b085a] 2025-04-12 12:27:46 -0400
Branch: REL_15_STABLE [9a8c16aec] 2025-04-12 12:27:46 -0400
Branch: REL_14_STABLE [1b47a112a] 2025-04-12 12:27:46 -0400
Branch: REL_13_STABLE [c7597a1d3] 2025-04-12 12:27:46 -0400
-->
<para>
Fix performance issues in GIN index search startup when there are
many search keys (Tom Lane, Vinod Sridharan)
<ulink url="&commit_baseurl;9094eb25b">&sect;</ulink>
<ulink url="&commit_baseurl;8c153fcfa">&sect;</ulink>
</para>
<para>
An indexable clause with many keys (for example, <literal>jsonbcol
?| array[...]</literal> with tens of thousands of array elements)
took O(N<superscript>2</superscript>) time to start up, and was
uncancelable for that interval too.
</para>
</listitem>
<listitem>
<!--
Author: Álvaro Herrera <alvherre@alvh.no-ip.org>
Branch: master [17ce344f8] 2025-03-11 12:50:35 +0100
Branch: REL_17_STABLE [ade976f8b] 2025-03-11 12:50:35 +0100
Branch: REL_16_STABLE [e0d8f49a3] 2025-03-11 12:50:35 +0100
Branch: REL_15_STABLE [5d8c58800] 2025-03-11 12:50:35 +0100
Branch: REL_14_STABLE [5144e1f8f] 2025-03-11 12:50:35 +0100
Branch: REL_13_STABLE [f5b4a0b49] 2025-03-11 12:50:35 +0100
-->
<para>
Detect missing support procedures in a BRIN index operator class,
and report an error instead of crashing (Álvaro Herrera)
<ulink url="&commit_baseurl;ade976f8b">&sect;</ulink>
</para>
</listitem>
<listitem>
<!--
Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
Branch: master [af717317a] 2025-03-12 20:53:09 +0200
Branch: REL_17_STABLE [e731e9d5e] 2025-03-12 20:53:16 +0200
Branch: REL_16_STABLE [004dbbd72] 2025-03-12 20:53:19 +0200
Branch: REL_15_STABLE [d4d34c08c] 2025-03-12 20:53:23 +0200
Branch: REL_14_STABLE [d2fb076be] 2025-03-12 20:53:25 +0200
-->
<para>
Respond to interrupts (such as query cancel) while waiting for
asynchronous subplans of an Append plan node (Heikki Linnakangas)
<ulink url="&commit_baseurl;e731e9d5e">&sect;</ulink>
</para>
<para>
Previously, nothing would happen until one of the subplans becomes
ready.
</para>
</listitem>
<listitem>
<!--
Author: Michael Paquier <michael@paquier.xyz>
Branch: master [039549d70] 2025-04-08 07:57:19 +0900
Branch: REL_17_STABLE [5cbbe70a9] 2025-04-08 07:58:47 +0900
Branch: REL_16_STABLE [e2a82cd23] 2025-04-08 07:58:50 +0900
-->
<para>
Report the I/O statistics of active WAL senders more frequently
(Bertrand Drouvot)
<ulink url="&commit_baseurl;5cbbe70a9">&sect;</ulink>
</para>
<para>
Previously, the <structname>pg_stat_io</structname> view failed to
accumulate I/O performed by a WAL sender until that process exited.
Now such I/O will be reported after at most one second's delay.
</para>
</listitem>
<listitem>
<!--
Author: Michael Paquier <michael@paquier.xyz>
Branch: master [2e5779083] 2025-04-11 10:00:21 +0900
Branch: REL_17_STABLE [3339847cc] 2025-04-11 10:02:15 +0900
Branch: REL_16_STABLE [c922ae2c4] 2025-04-11 10:02:17 +0900
Branch: REL_15_STABLE [ec59500a1] 2025-04-11 10:02:18 +0900
Branch: REL_14_STABLE [873aff945] 2025-04-11 10:02:20 +0900
Branch: REL_13_STABLE [e2f42f812] 2025-04-11 10:02:21 +0900
-->
<para>
Fix race condition in handling
of <varname>synchronous_standby_names</varname> immediately after
startup (Melnikov Maksim, Michael Paquier)
<ulink url="&commit_baseurl;3339847cc">&sect;</ulink>
</para>
<para>
For a short period after system startup, backends might fail to wait
for synchronous commit even
though <varname>synchronous_standby_names</varname> is enabled.
</para>
</listitem>
<listitem>
<!--
Author: Thomas Munro <tmunro@postgresql.org>
Branch: master [75da2bece] 2025-03-13 15:43:34 +1300
Branch: REL_17_STABLE [e27346807] 2025-03-13 15:48:02 +1300
-->
<para>
Cope with possible intra-query changes
of <varname>io_combine_limit</varname> (Thomas Munro)
<ulink url="&commit_baseurl;e27346807">&sect;</ulink>
</para>
</listitem>
<listitem>
<!--
Author: Richard Guo <rguo@postgresql.org>
Branch: master [7c82b4f71] 2025-03-26 17:46:51 +0900
Branch: REL_17_STABLE [34fbfe1f5] 2025-03-26 17:49:57 +0900
Branch: REL_16_STABLE [de1484736] 2025-03-26 17:51:44 +0900
-->
<para>
Avoid infinite loop if <varname>scram_iterations</varname> is set to
<systemitem>INT_MAX</systemitem> (Kevin K Biju)
<ulink url="&commit_baseurl;34fbfe1f5">&sect;</ulink>
</para>
</listitem>
<listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [e33f2335a] 2025-04-05 12:13:35 -0400
Branch: REL_17_STABLE [717e8a1e5] 2025-04-05 12:13:35 -0400
Branch: REL_16_STABLE [ca54f9b70] 2025-04-05 12:13:35 -0400
-->
<para>
Avoid possible crashes due to double transformation
of <function>json_array()</function>'s subquery (Tom Lane)
<ulink url="&commit_baseurl;717e8a1e5">&sect;</ulink>
</para>
</listitem>
<listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [00d61a08c] 2025-03-01 14:22:56 -0500
Branch: REL_17_STABLE [d69c78108] 2025-03-01 14:22:56 -0500
Branch: REL_16_STABLE [5c64ece8a] 2025-03-01 14:22:56 -0500
Branch: REL_15_STABLE [c7303f01c] 2025-03-01 14:22:56 -0500
Branch: REL_14_STABLE [76fbb38ef] 2025-03-01 14:22:56 -0500
Branch: REL_13_STABLE [ebe919e95] 2025-03-01 14:22:56 -0500
-->
<para>
Fix <function>pg_strtof()</function> to not crash with null endptr
(Alexander Lakhin, Tom Lane)
<ulink url="&commit_baseurl;d69c78108">&sect;</ulink>
</para>
</listitem>
<listitem>
<!--
Author: Daniel Gustafsson <dgustafsson@postgresql.org>
Branch: master [058b5152f] 2025-03-27 22:57:34 +0100
Branch: REL_17_STABLE [8afec4ef6] 2025-03-27 22:57:34 +0100
Branch: REL_16_STABLE [8d48e84c5] 2025-03-27 22:57:34 +0100
-->
<para>
Fix crash after out-of-memory in certain GUC assignments (Daniel
Gustafsson)
<ulink url="&commit_baseurl;8afec4ef6">&sect;</ulink>
</para>
</listitem>
<listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [b464e51ab] 2025-02-18 21:13:54 -0500
Branch: REL_17_STABLE [7edd2cbc5] 2025-02-18 21:23:59 -0500
Branch: REL_16_STABLE [c0c364fa1] 2025-02-18 21:23:59 -0500
Branch: REL_15_STABLE [9c46d902b] 2025-02-18 21:23:59 -0500
Branch: REL_14_STABLE [8388cae55] 2025-02-18 21:24:12 -0500
Branch: REL_13_STABLE [197427fb3] 2025-02-18 21:24:12 -0500
-->
<para>
Avoid crash when a Snowball stemmer encounters an out-of-memory
condition (Maksim Korotkov)
<ulink url="&commit_baseurl;7edd2cbc5">&sect;</ulink>
</para>
</listitem>
<listitem>
<!--
Author: Richard Guo <rguo@postgresql.org>
Branch: master [c39392eba] 2025-02-19 10:02:32 +0900
Branch: REL_17_STABLE [727bc6ac3] 2025-02-19 10:04:44 +0900
-->
<para>
Fix over-enthusiastic freeing of SpecialJoinInfo structs during
planning (Richard Guo)
<ulink url="&commit_baseurl;727bc6ac3">&sect;</ulink>
</para>
<para>
This led to crashes during planning if partitionwise joining is
enabled.
</para>
</listitem>
<listitem>
<!--
Author: Masahiko Sawada <msawada@postgresql.org>
Branch: master [fd09c1316] 2025-04-03 10:30:00 -0700
Branch: REL_17_STABLE [a4309e85f] 2025-04-03 10:30:02 -0700
Branch: REL_16_STABLE [87e8599e0] 2025-04-03 10:30:05 -0700
-->
<para>
Disallow copying of invalidated replication slots (Shlok Kyal)
<ulink url="&commit_baseurl;a4309e85f">&sect;</ulink>
</para>
<para>
This prevents trouble when the invalid slot points to WAL that's
already been removed.
</para>
</listitem>
<listitem>
<!--
Author: Masahiko Sawada <msawada@postgresql.org>
Branch: master [48796a98d] 2025-02-24 14:03:04 -0800
Branch: REL_17_STABLE [174952ece] 2025-02-24 14:03:07 -0800
Branch: REL_16_STABLE [cc628f661] 2025-02-24 14:03:10 -0800
-->
<para>
Disallow restoring logical replication slots on standby servers that
are not in hot-standby mode (Masahiko Sawada)
<ulink url="&commit_baseurl;174952ece">&sect;</ulink>
</para>
<para>
This prevents a scenario where the slot could remain valid after
promotion even if <varname>wal_level</varname> is too low.
</para>
</listitem>
<listitem>
<!--
Author: Amit Kapila <akapila@postgresql.org>
Branch: master [aaf9e95e8] 2025-04-28 11:35:54 +0530
Branch: REL_17_STABLE [36148b22e] 2025-04-28 11:22:07 +0530
Branch: REL_16_STABLE [21a7caeeb] 2025-04-28 11:09:27 +0530
Branch: REL_15_STABLE [f6429bd7d] 2025-04-28 10:56:24 +0530
Branch: REL_14_STABLE [1f63b3626] 2025-04-28 10:34:45 +0530
Branch: REL_13_STABLE [d65485b02] 2025-04-28 11:55:00 +0530
-->
<para>
Prevent over-advancement of catalog xmin in <quote>fast
forward</quote> mode of logical decoding (Zhijie Hou)
<ulink url="&commit_baseurl;36148b22e">&sect;</ulink>
</para>
<para>
This mistake could allow deleted catalog entries to be vacuumed away
even though they were still potentially needed by the WAL-reading
process.
</para>
</listitem>
<listitem>
<!--
Author: Amit Kapila <akapila@postgresql.org>
Branch: master [4909b38af] 2025-04-10 13:14:40 +0530
Branch: REL_17_STABLE [cadaf0ac4] 2025-04-10 12:57:10 +0530
Branch: REL_16_STABLE [9a2f8b4f0] 2025-04-10 12:44:11 +0530
Branch: REL_15_STABLE [9f21be08e] 2025-04-10 12:31:14 +0530
Branch: REL_14_STABLE [0434033e8] 2025-04-10 12:22:30 +0530
Branch: REL_13_STABLE [247ee9415] 2025-04-24 10:31:40 +0530
Branch: master [50b8ad30f] 2025-04-25 12:46:02 +0530
Branch: REL_17_STABLE [d96206f25] 2025-04-25 12:32:00 +0530
Branch: REL_16_STABLE [9987c9466] 2025-04-25 12:17:40 +0530
Branch: REL_15_STABLE [90bc4523f] 2025-04-25 12:05:52 +0530
Branch: REL_14_STABLE [bb1bc9fa9] 2025-04-25 11:53:27 +0530
Branch: REL_13_STABLE [4164d6976] 2025-04-25 11:45:40 +0530
-->
<para>
Avoid data loss when DDL operations that don't take a strong lock
affect tables that are being logically replicated (Shlok Kyal,
Hayato Kuroda)
<ulink url="&commit_baseurl;cadaf0ac4">&sect;</ulink>
<ulink url="&commit_baseurl;d96206f25">&sect;</ulink>
</para>
<para>
The catalog changes caused by the DDL command were not reflected
into WAL-decoding processes, allowing them to decode subsequent
changes using stale catalog data, probably resulting in data
corruption.
</para>
</listitem>
<listitem>
<!--
Author: Amit Kapila <akapila@postgresql.org>
Branch: master [0e091ce40] 2025-04-23 11:08:24 +0530
Branch: REL_17_STABLE [05676d87e] 2025-04-23 10:52:36 +0530
Branch: REL_16_STABLE [0de091a4b] 2025-04-23 10:35:54 +0530
-->
<para>
Prevent incorrect reset of replication origin when an apply worker
encounters an error but the error is caught and does not result in
worker exit (Hayato Kuroda)
<ulink url="&commit_baseurl;05676d87e">&sect;</ulink>
</para>
<para>
This mistake could allow duplicate data to be applied.
</para>
</listitem>
<listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [9ff68679b] 2025-02-19 16:35:15 -0500
Branch: REL_17_STABLE [788baa9a2] 2025-02-19 16:35:15 -0500
-->
<para>
Fix crash in logical replication if the subscriber's partitioned
table has a BRIN index (Tom Lane)
<ulink url="&commit_baseurl;788baa9a2">&sect;</ulink>
</para>
</listitem>
<listitem>
<!--
Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
Branch: master [236750317] 2025-03-10 17:07:38 +0200
Branch: REL_17_STABLE [c1dd3a944] 2025-03-10 17:07:59 +0200
Branch: REL_16_STABLE [8171d2dae] 2025-03-10 17:08:02 +0200
Branch: REL_15_STABLE [50c589992] 2025-03-10 17:08:05 +0200
Branch: REL_14_STABLE [2ef048855] 2025-03-10 17:08:07 +0200
Branch: REL_13_STABLE [9b3914f18] 2025-03-10 17:08:10 +0200
Branch: master [f7c566a1a] 2025-03-10 18:58:10 +0200
Branch: REL_17_STABLE [f1ef111a0] 2025-03-10 19:00:08 +0200
Branch: REL_16_STABLE [324e0b656] 2025-03-10 19:01:51 +0200
Branch: REL_15_STABLE [d765226cb] 2025-03-10 19:01:58 +0200
Branch: REL_14_STABLE [136e68b46] 2025-03-10 19:02:02 +0200
Branch: REL_13_STABLE [6c1e79589] 2025-03-10 19:02:08 +0200
-->
<para>
Avoid duplicate snapshot creation in logical replication index
lookups (Heikki Linnakangas)
<ulink url="&commit_baseurl;c1dd3a944">&sect;</ulink>
<ulink url="&commit_baseurl;f1ef111a0">&sect;</ulink>
</para>
</listitem>
<listitem>
<!--
Author: Amit Kapila <akapila@postgresql.org>
Branch: master [b4e0d0c53] 2025-02-21 14:34:40 +0530
Branch: REL_17_STABLE [0ae1245e0] 2025-02-21 14:21:29 +0530
Branch: REL_16_STABLE [1c2a2354c] 2025-02-21 14:08:27 +0530
-->
<para>
Improve detection of mixed-origin subscriptions
(Hou Zhijie, Shlok Kyal)
<ulink url="&commit_baseurl;0ae1245e0">&sect;</ulink>
</para>
<para>
Subscription creation gives a warning if a subscribed-to table is
also being followed through other publications, since that could
cause duplicate data to be received. This change improves that
logic to also detect cases where a partition parent or child table
is the one being followed through another publication.
</para>
</listitem>
<listitem>
<!--
Author: Michael Paquier <michael@paquier.xyz>
Branch: master [71f17823b] 2025-02-20 10:42:20 +0900
Branch: REL_17_STABLE [29cce279b] 2025-02-20 10:43:35 +0900
Branch: REL_16_STABLE [b4969a296] 2025-02-20 10:43:38 +0900
Branch: REL_15_STABLE [62bed7bb0] 2025-02-20 10:43:40 +0900
-->
<para>
Fix wrong checkpoint details in error message about incorrect
recovery timeline choice (David Steele)
<ulink url="&commit_baseurl;29cce279b">&sect;</ulink>
</para>
<para>
If the requested recovery timeline is not reachable, the reported
checkpoint and timeline should be the values read from the
backup_label, if there is one. This message previously reported
values from the control file, which is correct when recovering from
the control file without a backup_label, but not when there is a
backup_label.
</para>
</listitem>
<listitem>
<!--
Author: Andres Freund <andres@anarazel.de>
Branch: master [499faf906] 2025-03-18 14:04:44 -0400
Branch: REL_17_STABLE [ee578921b] 2025-03-18 13:44:10 -0400
-->
<para>
Fix order of operations in <function>smgropen()</function>
(Andres Freund)
<ulink url="&commit_baseurl;ee578921b">&sect;</ulink>
</para>
<para>
Ensure that the SMgrRelation object is fully initialized before
calling the smgr_open callback, so that it can be cleaned up
properly if the callback fails.
</para>
</listitem>
<listitem>
<!--
Author: Michael Paquier <michael@paquier.xyz>
Branch: master [1f7878c33] 2025-04-23 13:53:29 +0900
Branch: REL_17_STABLE [4b6331e0f] 2025-04-23 13:54:53 +0900
Branch: REL_16_STABLE [e9ab8677b] 2025-04-23 13:54:56 +0900
Branch: REL_15_STABLE [c1201ffcf] 2025-04-23 13:54:57 +0900
-->
<para>
Remove incorrect assertion
in <function>pgstat_report_stat()</function> (Michael Paquier)
<ulink url="&commit_baseurl;4b6331e0f">&sect;</ulink>
</para>
</listitem>
<listitem>
<!--
Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
Branch: master [7afca7ede] 2025-04-04 13:49:00 +0300
Branch: REL_17_STABLE [6526d0794] 2025-04-04 13:49:21 +0300
Branch: REL_16_STABLE [419321398] 2025-04-04 13:49:51 +0300
Branch: REL_15_STABLE [3c0fe75c4] 2025-04-04 13:50:00 +0300
Branch: REL_14_STABLE [a749c6f18] 2025-04-04 13:50:12 +0300
Branch: REL_13_STABLE [b92482dc3] 2025-04-04 13:50:52 +0300
-->
<para>
Fix overly-strict assertion
in <function>gistFindCorrectParent()</function> (Heikki Linnakangas)
<ulink url="&commit_baseurl;6526d0794">&sect;</ulink>
</para>
</listitem>
<listitem>
<!--
Author: Masahiko Sawada <msawada@postgresql.org>
Branch: master [f4290f20d] 2025-03-18 16:37:02 -0700
Branch: REL_17_STABLE [a38dce3c4] 2025-03-18 16:36:59 -0700
-->
<para>
Avoid assertion failure in parallel vacuum
when <varname>maintenance_work_mem</varname> has a very small value
(Masahiko Sawada)
<ulink url="&commit_baseurl;a38dce3c4">&sect;</ulink>
</para>
</listitem>
<listitem>
<!--
Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
Branch: master [2817525f0] 2025-03-23 20:41:16 +0200
Branch: REL_17_STABLE [302ce5bd9] 2025-03-23 20:41:52 +0200
Branch: REL_16_STABLE [2f33de3cd] 2025-03-23 20:41:54 +0200
Branch: REL_15_STABLE [b30c77a0e] 2025-03-23 20:41:57 +0200
Branch: REL_14_STABLE [66235baab] 2025-03-23 20:41:59 +0200
-->
<para>
Fix rare assertion failure in standby servers when the primary is
restarted (Heikki Linnakangas)
<ulink url="&commit_baseurl;302ce5bd9">&sect;</ulink>
</para>
</listitem>
<listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [7fe312f60] 2025-03-21 11:30:42 -0400
Branch: REL_17_STABLE [1353b1161] 2025-03-21 11:30:42 -0400
Branch: REL_16_STABLE [a28c1fb61] 2025-03-21 11:30:42 -0400
Branch: REL_15_STABLE [5e56efa7c] 2025-03-21 11:30:42 -0400
Branch: REL_14_STABLE [c196c610b] 2025-03-21 11:30:42 -0400
Branch: REL_13_STABLE [0f60e1fba] 2025-03-21 11:30:42 -0400
-->
<para>
In PL/pgSQL, avoid <quote>unexpected plan node type</quote> error
when a scrollable cursor is defined on a
simple <literal>SELECT <replaceable>expression</replaceable></literal>
query (Andrei Lepikhov)
<ulink url="&commit_baseurl;1353b1161">&sect;</ulink>
</para>
</listitem>
<listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [1fc340362] 2025-04-16 13:31:59 -0400
Branch: REL_17_STABLE [3424c1075] 2025-04-16 13:31:44 -0400
Branch: REL_16_STABLE [a25f21d99] 2025-04-16 13:31:44 -0400
Branch: REL_15_STABLE [7144cd538] 2025-04-16 13:31:44 -0400
Branch: REL_14_STABLE [148cc0105] 2025-04-16 13:31:44 -0400
Branch: REL_13_STABLE [6a3e57865] 2025-04-16 13:31:44 -0400
-->
<para>
Don't try to drop individual index partitions
in <application>pg_dump</application>'s <option>--clean</option>
mode (Jian He)
<ulink url="&commit_baseurl;3424c1075">&sect;</ulink>
</para>
<para>
The server rejects such <command>DROP</command> commands. That has
no real consequences, since the partitions will go away anyway in
the subsequent <command>DROP</command>s of either their parent
tables or their partitioned index. However, the error reported for
the attempted drop causes problems when restoring
in <option>--single-transaction</option> mode.
</para>
</listitem>
<listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [29d75b25b] 2025-02-21 13:37:15 -0500
Branch: REL_17_STABLE [16eff4261] 2025-02-21 13:37:15 -0500
Branch: REL_16_STABLE [d850a6600] 2025-02-21 13:37:16 -0500
Branch: REL_15_STABLE [6df3be415] 2025-02-21 13:37:16 -0500
Branch: REL_14_STABLE [ce1475acd] 2025-02-21 13:37:16 -0500
Branch: REL_13_STABLE [5302ff95c] 2025-02-21 13:37:12 -0500
-->
<para>
In <application>pg_dumpall</application>, avoid emitting invalid
role <command>GRANT</command> commands
if <structname>pg_auth_members</structname> contains invalid role
OIDs (Tom Lane)
<ulink url="&commit_baseurl;16eff4261">&sect;</ulink>
</para>
<para>
Instead, print a warning and skip the entry. This copes better with
catalog corruption that has been seen to occur in back branches as a
result of race conditions between <command>GRANT</command>
and <command>DROP ROLE</command>.
</para>
</listitem>
<listitem>
<!--
Author: Michael Paquier <michael@paquier.xyz>
Branch: master [2a083ab80] 2025-02-28 10:15:29 +0900
Branch: REL_17_STABLE [ee78823ff] 2025-02-28 10:15:32 +0900
Branch: REL_16_STABLE [9ca2145b0] 2025-02-28 10:15:34 +0900
Author: Jeff Davis <jdavis@postgresql.org>
Branch: master [945126234] 2025-04-03 11:04:37 -0700
Branch: REL_17_STABLE [0851b6573] 2025-04-06 09:13:43 -0700
Branch: REL_16_STABLE [57467ec7b] 2025-04-06 09:14:42 -0700
Author: Michael Paquier <michael@paquier.xyz>
Branch: master [48e4ae9a0] 2025-02-27 14:05:51 +0900
Branch: REL_17_STABLE [f903d4da9] 2025-02-27 14:05:55 +0900
Branch: REL_16_STABLE [816149dc6] 2025-02-27 14:05:57 +0900
Branch: REL_15_STABLE [ec741d480] 2025-02-27 14:05:58 +0900
Branch: REL_14_STABLE [35a591a04] 2025-02-27 14:06:00 +0900
-->
<para>
In <application>pg_amcheck</application>
and <application>pg_upgrade</application>, use the correct function
to free allocations made by <application>libpq</application>
(Michael Paquier, Ranier Vilela)
<ulink url="&commit_baseurl;ee78823ff">&sect;</ulink>
<ulink url="&commit_baseurl;0851b6573">&sect;</ulink>
<ulink url="&commit_baseurl;f903d4da9">&sect;</ulink>
</para>
<para>
These oversights could result in crashes in certain Windows build
configurations, such as a debug build
of <application>libpq</application> used by a non-debug build of the
calling application.
</para>
</listitem>
<listitem>
<!--
Author: Alexander Korotkov <akorotkov@postgresql.org>
Branch: master [682c5be25] 2025-03-16 13:29:15 +0200
Branch: REL_17_STABLE [09ef2f8df] 2025-03-16 13:29:20 +0200
-->
<para>
Fix <application>reindexdb</application>'s scheduling of parallel
reindex operations (Alexander Korotkov)
<ulink url="&commit_baseurl;09ef2f8df">&sect;</ulink>
</para>
<para>
The original coding failed to achieve the expected amount of
parallelism.
</para>
</listitem>
<listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [d05996340] 2025-04-19 16:37:42 -0400
Branch: REL_17_STABLE [ecb8e5641] 2025-04-19 16:37:42 -0400
Branch: REL_16_STABLE [2d33cf7b8] 2025-04-19 16:37:42 -0400
Branch: REL_15_STABLE [90a3fd811] 2025-04-19 16:37:42 -0400
Branch: REL_14_STABLE [3c2ea65bd] 2025-04-19 16:37:43 -0400
Branch: REL_13_STABLE [3f9132ed2] 2025-04-19 16:37:43 -0400
-->
<para>
Avoid crashing with corrupt input data
in <filename>contrib/pageinspect</filename>'s
<function>heap_page_items()</function> (Dmitry Kovalenko)
<ulink url="&commit_baseurl;ecb8e5641">&sect;</ulink>
</para>
</listitem>
<listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [4623d7144] 2025-03-27 13:20:23 -0400
Branch: REL_17_STABLE [51d038da8] 2025-03-27 13:20:23 -0400
Branch: REL_16_STABLE [41ed749e4] 2025-03-27 13:20:23 -0400
Branch: REL_15_STABLE [0e86bad38] 2025-03-27 13:20:23 -0400
Branch: REL_14_STABLE [5ff827389] 2025-03-27 13:20:23 -0400
Branch: REL_13_STABLE [db8238da4] 2025-03-27 13:20:23 -0400
-->
<para>
Prevent assertion failure
in <filename>contrib/pg_freespacemap</filename>'s
<function>pg_freespacemap()</function> (Tender Wang)
<ulink url="&commit_baseurl;51d038da8">&sect;</ulink>
</para>
<para>
Applying <function>pg_freespacemap()</function> to a relation
lacking storage (such as a view) caused an assertion failure,
although there was no ill effect in non-assert builds.
Add an error check to reject that case.
</para>
</listitem>
<listitem>
<!--
Author: Alexander Korotkov <akorotkov@postgresql.org>
Branch: master [023fb5127] 2025-03-25 05:49:47 +0200
Branch: REL_17_STABLE [729fe699e] 2025-03-25 05:50:39 +0200
-->
<para>
In <filename>contrib/postgres_fdw</filename>, avoid pulling up
restriction conditions from subqueries (Alexander Pyhalov)
<ulink url="&commit_baseurl;729fe699e">&sect;</ulink>
</para>
<para>
This fix prevents rare cases of <quote>unexpected expression in
subquery output</quote> errors.
</para>
</listitem>
<listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [cb36f8ec2] 2025-03-25 20:03:56 -0400
Branch: REL_17_STABLE [f186f90e5] 2025-03-25 20:03:56 -0400
-->
<para>
Fix build failure when an old version
of <filename>libpq_fe.h</filename> is present in system include
directories (Tom Lane)
<ulink url="&commit_baseurl;f186f90e5">&sect;</ulink>
</para>
</listitem>
<listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [6da2ba1d8] 2025-04-01 16:50:09 -0400
Branch: REL_17_STABLE [915e88968] 2025-04-01 16:49:51 -0400
Branch: REL_16_STABLE [a39eb9c77] 2025-04-01 16:49:51 -0400
Branch: REL_15_STABLE [0de9560ba] 2025-04-01 16:49:51 -0400
Branch: REL_14_STABLE [71790aef1] 2025-04-01 16:49:51 -0400
Branch: REL_13_STABLE [e4440a73c] 2025-04-01 16:49:51 -0400
-->
<para>
Fix build failure on macOS 15.4 (Tom Lane, Peter Eisentraut)
<ulink url="&commit_baseurl;915e88968">&sect;</ulink>
</para>
<para>
This macOS update broke our configuration probe
for <function>strchrnul()</function>.
</para>
</listitem>
<listitem>
<!--
Author: Thomas Munro <tmunro@postgresql.org>
Branch: master [2a8a00674] 2025-02-15 13:14:03 +1300
Branch: master [2509b857c] 2025-02-18 14:44:59 +1300
Branch: REL_17_STABLE [57dca6faa] 2025-02-21 15:16:37 +1300
-->
<para>
Fix valgrind labeling of per-buffer data of read streams
(Thomas Munro)
<ulink url="&commit_baseurl;57dca6faa">&sect;</ulink>
</para>
<para>
This affects no core code in released versions
of <productname>PostgreSQL</productname>, but an extension using the
per-buffer data feature might have encountered spurious failures
when being tested under valgrind.
</para>
</listitem>
<listitem>
<!--
Author: John Naylor <john.naylor@postgresql.org>
Branch: master [0600d276d] 2025-02-24 18:03:29 +0700
Branch: REL_17_STABLE [fde7c0164] 2025-02-24 18:03:48 +0700
-->
<para>
Avoid valgrind complaints about string hashing code (John Naylor)
<ulink url="&commit_baseurl;fde7c0164">&sect;</ulink>
</para>
</listitem>
<listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [368c3fbf9] 2025-04-30 11:13:49 -0400
Branch: REL_17_STABLE [5d5970b9f] 2025-04-30 11:14:01 -0400
Branch: REL_16_STABLE [e076120d9] 2025-04-30 11:14:06 -0400
Branch: REL_15_STABLE [a144cf145] 2025-04-30 11:14:10 -0400
Branch: REL_14_STABLE [fa4244a43] 2025-04-30 11:14:15 -0400
Branch: REL_13_STABLE [9da548df3] 2025-04-30 11:14:19 -0400
-->
<para>
Update time zone data files to <application>tzdata</application>
release 2025b for DST law changes in Chile, plus historical
corrections for Iran (Tom Lane)
<ulink url="&commit_baseurl;5d5970b9f">&sect;</ulink>
</para>
<para>
There is a new time zone America/Coyhaique for Chile's Aysén Region,
to account for it changing to UTC-03 year-round and thus diverging
from America/Santiago.
</para>
</listitem>
</itemizedlist>
</sect2>
</sect1>
<sect1 id="release-17-4">
<title>Release 17.4</title>
<formalpara>
<title>Release date:</title>
<para>2025-02-20</para>
</formalpara>
<para>
This release contains a few fixes from 17.3.
For information about new features in major release 17, see
<xref linkend="release-17"/>.
</para>
<sect2 id="release-17-4-migration">
<title>Migration to Version 17.4</title>
<para>
A dump/restore is not required for those running 17.X.
</para>
<para>
However, if you are upgrading from a version earlier than 17.1,
see <xref linkend="release-17-1"/>.
</para>
</sect2>
<sect2 id="release-17-4-changes">
<title>Changes</title>
<itemizedlist>
<listitem>
<!--
Author: Andres Freund <andres@anarazel.de>
Branch: master [efdadeb22] 2025-02-14 18:09:19 -0500
Branch: REL_17_STABLE [a92db3d02] 2025-02-14 18:09:21 -0500
Branch: REL_16_STABLE [111f4dd27] 2025-02-14 18:09:23 -0500
Branch: REL_15_STABLE [22ffbbf24] 2025-02-14 18:09:24 -0500
Branch: REL_14_STABLE [985908df1] 2025-02-14 18:09:25 -0500
Branch: REL_13_STABLE [1f7a05324] 2025-02-14 18:09:27 -0500
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [9f45e6a91] 2025-02-15 16:20:21 -0500
Branch: REL_17_STABLE [3abe6e04c] 2025-02-15 16:20:21 -0500
Branch: REL_16_STABLE [991a60a9f] 2025-02-15 16:20:21 -0500
Branch: REL_15_STABLE [e782a63cc] 2025-02-15 16:20:21 -0500
Branch: REL_14_STABLE [c08309584] 2025-02-15 16:20:21 -0500
Branch: REL_13_STABLE [d6d29b213] 2025-02-15 16:20:21 -0500
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [a7f95859e] 2025-02-16 12:46:35 -0500
Branch: REL_17_STABLE [3977bd298] 2025-02-16 12:46:35 -0500
Branch: REL_16_STABLE [644b7d686] 2025-02-16 12:46:35 -0500
Branch: REL_15_STABLE [2226a2e26] 2025-02-16 12:46:35 -0500
Branch: REL_14_STABLE [f864a4cdf] 2025-02-16 12:46:35 -0500
Branch: REL_13_STABLE [9f052613e] 2025-02-16 12:46:35 -0500
-->
<para>
Improve behavior of <application>libpq</application>'s quoting
functions (Andres Freund, Tom Lane)
<ulink url="&commit_baseurl;a92db3d02">&sect;</ulink>
<ulink url="&commit_baseurl;3abe6e04c">&sect;</ulink>
<ulink url="&commit_baseurl;3977bd298">&sect;</ulink>
</para>
<para>
The changes made for CVE-2025-1094 had one serious oversight:
<function>PQescapeLiteral()</function>
and <function>PQescapeIdentifier()</function> failed to honor their
string length parameter, instead always reading to the input
string's trailing null. This resulted in including unwanted text in
the output, if the caller intended to truncate the string via the
length parameter. With very bad luck it could cause a crash due to
reading off the end of memory.
</para>
<para>
In addition, modify all these quoting functions so that when invalid
encoding is detected, an invalid sequence is substituted for just
the first byte of the presumed character, not all of it. This
reduces the risk of problems if a calling application performs
additional processing on the quoted string.
</para>
</listitem>
<listitem>
<!--
Author: Michael Paquier <michael@paquier.xyz>
Branch: master [5b94e2753] 2025-02-12 17:11:43 +0900
Branch: REL_17_STABLE [ff6d9cfcb] 2025-02-12 17:11:47 +0900
-->
<para>
Fix small memory leak
in <application>pg_createsubscriber</application> (Ranier Vilela)
<ulink url="&commit_baseurl;ff6d9cfcb">&sect;</ulink>
</para>
</listitem>
<listitem>
<!--
Author: Andres Freund <andres@anarazel.de>
Branch: master [b64d83115] 2025-02-12 08:15:53 -0500
Branch: REL_17_STABLE [c9a1d2135] 2025-02-12 08:15:53 -0500
Branch: REL_16_STABLE [01cdb98e4] 2025-02-12 08:15:54 -0500
-->
<para>
Fix meson build system to correctly detect availability of
the <filename>bsd_auth.h</filename> system header
(Nazir Bilal Yavuz)
<ulink url="&commit_baseurl;c9a1d2135">&sect;</ulink>
</para>
</listitem>
</itemizedlist>
</sect2>
</sect1>
<sect1 id="release-17-3">
<title>Release 17.3</title>
<formalpara>
<title>Release date:</title>
<para>2025-02-13</para>
</formalpara>
<para>
This release contains a variety of fixes from 17.2.
For information about new features in major release 17, see
<xref linkend="release-17"/>.
</para>
<sect2 id="release-17-3-migration">
<title>Migration to Version 17.3</title>
<para>
A dump/restore is not required for those running 17.X.
</para>
<para>
However, if you are upgrading from a version earlier than 17.1,
see <xref linkend="release-17-1"/>.
</para>
</sect2>
<sect2 id="release-17-3-changes">
<title>Changes</title>
<itemizedlist>
<listitem>
<!--
Author: Andres Freund <andres@anarazel.de>
Branch: master [5dc1e42b4] 2025-02-10 10:03:37 -0500
Branch: REL_17_STABLE [43a77239d] 2025-02-10 10:03:38 -0500
Branch: REL_16_STABLE [92e4170f4] 2025-02-10 10:03:39 -0500
Branch: REL_15_STABLE [370c94d4c] 2025-02-10 10:03:39 -0500
Branch: REL_14_STABLE [e0ef3d776] 2025-02-10 10:03:40 -0500
Branch: REL_13_STABLE [c906bfe1b] 2025-02-10 10:03:40 -0500
Branch: master [4dc289635] 2025-02-10 10:03:37 -0500
Branch: REL_17_STABLE [7d43ca6fe] 2025-02-10 10:03:38 -0500
Branch: REL_16_STABLE [6e05b195d] 2025-02-10 10:03:39 -0500
Branch: REL_15_STABLE [703b3fd5d] 2025-02-10 10:03:39 -0500
Branch: REL_14_STABLE [5bc33cbea] 2025-02-10 10:03:40 -0500
Branch: REL_13_STABLE [db3eb0e82] 2025-02-10 10:03:40 -0500
Branch: master [3e98c8ce5] 2025-02-10 10:03:37 -0500
Branch: REL_17_STABLE [61ad93cdd] 2025-02-10 10:03:38 -0500
Branch: REL_16_STABLE [56aa2dcdd] 2025-02-10 10:03:39 -0500
Branch: REL_15_STABLE [b1756da75] 2025-02-10 10:03:39 -0500
Branch: REL_14_STABLE [2ae54ae17] 2025-02-10 10:03:40 -0500
Branch: REL_13_STABLE [5df4e1632] 2025-02-10 10:03:40 -0500
Branch: master [ac00ff1c9] 2025-02-10 10:03:37 -0500
Branch: REL_17_STABLE [02d4d87ac] 2025-02-10 10:03:38 -0500
Branch: REL_16_STABLE [01784793f] 2025-02-10 10:03:39 -0500
Branch: REL_15_STABLE [de4b92f33] 2025-02-10 10:03:39 -0500
Branch: REL_14_STABLE [46ddf98df] 2025-02-10 10:03:40 -0500
Branch: REL_13_STABLE [4ea3f5ef3] 2025-02-10 10:03:40 -0500
Branch: master [979205e47] 2025-02-10 12:12:14 -0500
Branch: REL_17_STABLE [05abb0f83] 2025-02-10 12:12:53 -0500
Branch: REL_16_STABLE [41343f840] 2025-02-10 12:12:56 -0500
Branch: REL_15_STABLE [a085fa731] 2025-02-10 12:12:58 -0500
Branch: REL_14_STABLE [4a6825c76] 2025-02-10 12:12:59 -0500
Branch: REL_13_STABLE [7beb2af5e] 2025-02-10 12:13:02 -0500
Branch: REL_13_STABLE [00f1a1f66] 2025-02-10 10:03:40 -0500
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [5bf12323b] 2025-02-10 16:30:03 -0500
Branch: REL_17_STABLE [85c1fcc65] 2025-02-10 16:30:31 -0500
Branch: REL_16_STABLE [0075a5c6c] 2025-02-10 16:30:37 -0500
Branch: REL_15_STABLE [9862de917] 2025-02-10 16:30:54 -0500
Branch: REL_14_STABLE [e1f1b030d] 2025-02-10 16:31:01 -0500
Branch: REL_13_STABLE [f9fceef6e] 2025-02-10 16:31:09 -0500
-->
<para>
Harden <function>PQescapeString</function> and allied functions
against invalidly-encoded input strings (Andres Freund, Noah Misch)
<ulink url="&commit_baseurl;43a77239d">&sect;</ulink>
<ulink url="&commit_baseurl;7d43ca6fe">&sect;</ulink>
<ulink url="&commit_baseurl;61ad93cdd">&sect;</ulink>
<ulink url="&commit_baseurl;02d4d87ac">&sect;</ulink>
<ulink url="&commit_baseurl;05abb0f83">&sect;</ulink>
<ulink url="&commit_baseurl;85c1fcc65">&sect;</ulink>
</para>
<para>
Data-quoting functions supplied by <application>libpq</application>
now fully check the encoding validity of their input. If invalid
characters are detected, they report an error if possible. For the
ones that lack an error return convention, the output string is
adjusted to ensure that the server will report invalid encoding and
no intervening processing will be fooled by bytes that might happen
to match single quote, backslash, etc.
</para>
<para>
The purpose of this change is to guard against SQL-injection attacks
that are possible if one of these functions is used to quote crafted
input. There is no hazard when the resulting string is sent
directly to a <productname>PostgreSQL</productname> server (which
would check its encoding anyway), but there is a risk when it is
passed through <application>psql</application> or other client-side
code. Historically such code has not carefully vetted encoding, and
in many cases it's not clear what it should do if it did detect such
a problem.
</para>
<para>
This fix is effective only if the data-quoting function, the server,
and any intermediate processing agree on the character encoding
that's being used. Applications that insert untrusted input into
SQL commands should take special care to ensure that that's true.
</para>
<para>
Applications and drivers that quote untrusted input without using
these <application>libpq</application> functions may be at risk of
similar problems. They should first confirm the data is valid in
the encoding expected by the server.
</para>
<para>
The <productname>PostgreSQL</productname> Project thanks
Stephen Fewer for reporting this problem.
(CVE-2025-1094)
</para>
</listitem>
<listitem>
<!--
Author: Nathan Bossart <nathan@postgresql.org>
Branch: master [a0ff56e2d] 2024-12-12 15:52:04 -0600
Branch: REL_17_STABLE [d09fbf645] 2024-12-12 15:52:04 -0600
-->
<para>
Restore auto-truncation of database and user names appearing in
connection requests (Nathan Bossart)
<ulink url="&commit_baseurl;d09fbf645">&sect;</ulink>
</para>
<para>
This reverts a v17 change that proved to cause trouble for some
users. Over-length names should be truncated in an encoding-aware
fashion, but for now just return to the former behavior of blind
truncation at <literal>NAMEDATALEN-1</literal> bytes.
</para>
</listitem>
<listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [34486b609] 2024-12-28 16:08:50 -0500
Branch: REL_17_STABLE [15b4c46c3] 2024-12-28 16:08:50 -0500
Branch: REL_16_STABLE [41a252c2c] 2024-12-28 16:08:50 -0500
Branch: REL_15_STABLE [3d1ecc92a] 2024-12-28 16:08:50 -0500
Branch: REL_14_STABLE [c58b0c43d] 2024-12-28 16:08:50 -0500
Branch: REL_13_STABLE [70d067cec] 2024-12-28 16:08:50 -0500
-->
<para>
Exclude parallel workers from connection privilege checks and limits
(Tom Lane)
<ulink url="&commit_baseurl;15b4c46c3">&sect;</ulink>
</para>
<para>
Do not
check <literal>datallowconn</literal>, <literal>rolcanlogin</literal>,
and <literal>ACL_CONNECT</literal> privileges when starting a
parallel worker, instead assuming that it's enough for the leader
process to have passed similar checks originally. This avoids, for
example, unexpected failures of parallelized queries when the leader
is running as a role that lacks login privilege. In the same vein,
enforce <literal>ReservedConnections</literal>,
<literal>datconnlimit</literal>, and <literal>rolconnlimit</literal>
limits only against regular backends, and count only regular
backends while checking if the limits were already reached. Those
limits are meant to prevent excessive consumption of process slots
for regular backends --- but parallel workers and other special
processes have their own pools of process slots with their own limit
checks.
</para>
</listitem>
<listitem>
<!--
Author: Álvaro Herrera <alvherre@alvh.no-ip.org>
Branch: master [1e5ef3a2a] 2024-12-03 15:50:03 +0100
Branch: REL_17_STABLE [5ffbbcfa1] 2024-12-03 15:50:03 +0100
-->
<para>
Drop <quote>Lock</quote> suffix from LWLock wait event names
(Bertrand Drouvot)
<ulink url="&commit_baseurl;5ffbbcfa1">&sect;</ulink>
</para>
<para>
Refactoring unintentionally caused
the <structname>pg_stat_activity</structname> view to show
lock-related wait event names with a <quote>Lock</quote> suffix,
which among other things broke joining it
to <structname>pg_wait_events</structname>.
</para>
</listitem>
<listitem>
<!--
Author: Peter Geoghegan <pg@bowt.ie>
Branch: master [31b0a8f04] 2024-12-19 11:08:55 -0500
Branch: REL_17_STABLE [9e85b20da] 2024-12-19 11:08:53 -0500
-->
<para>
Fix possible failure to return all matching tuples for a btree index
scan with a ScalarArrayOp (<literal>= ANY</literal>) condition
(Peter Geoghegan)
<ulink url="&commit_baseurl;9e85b20da">&sect;</ulink>
</para>
</listitem>
<listitem>
<!--
Author: David Rowley <drowley@postgresql.org>
Branch: master [1fe5a347e] 2024-12-09 14:23:21 +1300
Branch: REL_17_STABLE [9d5ce4f1a] 2024-12-09 14:24:07 +1300
Branch: REL_16_STABLE [c1d6506ac] 2024-12-09 14:24:34 +1300
Branch: REL_15_STABLE [d54378e98] 2024-12-09 14:24:54 +1300
-->
<para>
Fix possible re-use of stale results in window aggregates (David
Rowley)
<ulink url="&commit_baseurl;9d5ce4f1a">&sect;</ulink>
</para>
<para>
A window aggregate with a <quote>run condition</quote> optimization
and a pass-by-reference result type might incorrectly return the
result from the previous partition instead of performing a fresh
calculation.
</para>
</listitem>
<listitem>
<!--
Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
Branch: master [578a7fe7b] 2024-12-21 23:42:39 +0200
Branch: REL_17_STABLE [7cfdb4d1e] 2024-12-21 23:42:52 +0200
Branch: REL_16_STABLE [9d8ab2c46] 2024-12-21 23:42:55 +0200
Branch: REL_15_STABLE [acd5c28db] 2024-12-21 23:42:57 +0200
Branch: REL_14_STABLE [41eafbb49] 2024-12-21 23:42:59 +0200
Branch: REL_13_STABLE [9c1afd344] 2024-12-21 23:45:56 +0200
-->
<para>
Keep <varname>TransactionXmin</varname> in sync
with <varname>MyProc-&gt;xmin</varname> (Heikki Linnakangas)
<ulink url="&commit_baseurl;7cfdb4d1e">&sect;</ulink>
</para>
<para>
This oversight could permit a process to try to access data that had
already been vacuumed away. One known consequence is
transient <quote>could not access status of transaction</quote>
errors.
</para>
</listitem>
<listitem>
<!--
Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
Branch: master [af8cd1639] 2025-01-14 14:28:49 +0200
Branch: REL_17_STABLE [96e61b279] 2025-01-14 14:35:11 +0200
Branch: REL_16_STABLE [91fc447c2] 2025-01-14 14:41:01 +0200
Branch: REL_15_STABLE [ce7c406f0] 2025-01-14 14:29:11 +0200
Branch: REL_14_STABLE [fce17c3a5] 2025-01-14 14:29:13 +0200
Branch: REL_13_STABLE [f217c4105] 2025-01-14 18:54:56 +0200
-->
<para>
Fix race condition that could cause failure to add a newly-inserted
catalog entry to a catalog cache list (Heikki Linnakangas)
<ulink url="&commit_baseurl;96e61b279">&sect;</ulink>
</para>
<para>
This could result, for example, in failure to use a newly-created
function within an existing session.
</para>
</listitem>
<listitem>
<!--
Author: Noah Misch <noah@leadboat.com>
Branch: master [81772a495] 2025-01-25 11:28:14 -0800
Branch: REL_17_STABLE [1587f7b9f] 2025-01-25 11:28:18 -0800
Branch: master [d28cd3e7b] 2025-01-25 11:28:14 -0800
Branch: REL_17_STABLE [f4af4515b] 2025-01-25 11:28:18 -0800
Branch: REL_16_STABLE [9311fcb86] 2025-01-25 11:28:18 -0800
Branch: REL_15_STABLE [dc02b98bd] 2025-01-25 11:28:19 -0800
Branch: REL_14_STABLE [25e99483c] 2025-01-25 11:28:19 -0800
Branch: REL_13_STABLE [8bfd2ceba] 2025-01-25 11:28:19 -0800
-->
<para>
Prevent possible catalog corruption when a system catalog is
vacuumed concurrently with an update (Noah Misch)
<ulink url="&commit_baseurl;1587f7b9f">&sect;</ulink>
<ulink url="&commit_baseurl;f4af4515b">&sect;</ulink>
</para>
</listitem>
<listitem>
<!--
Author: Thomas Munro <tmunro@postgresql.org>
Branch: master [38c579b08] 2024-12-20 23:57:02 +1300
Branch: REL_17_STABLE [0350b876b] 2024-12-20 23:57:18 +1300
Branch: REL_16_STABLE [ba02d24ba] 2024-12-20 23:57:26 +1300
Branch: REL_15_STABLE [fb540b6aa] 2024-12-20 23:57:34 +1300
Branch: REL_14_STABLE [23c743b64] 2024-12-20 23:57:53 +1300
Branch: REL_13_STABLE [228091216] 2024-12-20 23:58:08 +1300
Branch: REL_17_STABLE [66aaabe7a] 2025-01-08 10:43:40 +1300
Branch: REL_16_STABLE [c957d7444] 2025-01-08 10:46:45 +1300
Branch: REL_15_STABLE [3181befdc] 2025-01-08 10:47:43 +1300
Branch: REL_14_STABLE [f154f028d] 2025-01-08 10:48:01 +1300
Branch: REL_13_STABLE [a1d17a894] 2025-01-08 10:48:57 +1300
Branch: REL_17_STABLE [45aef9f6b] 2025-01-08 17:02:30 +1300
Branch: REL_16_STABLE [9defaaa1d] 2025-01-08 17:03:25 +1300
Branch: REL_15_STABLE [190054e61] 2025-01-08 17:03:45 +1300
Branch: REL_14_STABLE [049c8cb9a] 2025-01-08 17:04:26 +1300
Branch: REL_13_STABLE [417d41c65] 2025-01-08 17:14:15 +1300
-->
<para>
Fix data corruption when relation truncation fails (Thomas Munro)
<ulink url="&commit_baseurl;0350b876b">&sect;</ulink>
<ulink url="&commit_baseurl;66aaabe7a">&sect;</ulink>
<ulink url="&commit_baseurl;45aef9f6b">&sect;</ulink>
</para>
<para>
The filesystem calls needed to perform relation truncation could
fail, leaving inconsistent state on disk (for example, effectively
reviving deleted data). We can't really prevent that, but we can
recover by dint of making such failures into PANICs, so that
consistency is restored by replaying from WAL up to just before the
attempted truncation. This isn't a hugely desirable behavior, but
such failures are rare enough that it seems an acceptable solution.
</para>
</listitem>
<listitem>
<!--
Author: Thomas Munro <tmunro@postgresql.org>
Branch: master [75818b3af] 2024-12-03 10:12:05 +1300
Branch: REL_17_STABLE [d4ffbf47b] 2024-12-03 10:19:47 +1300
Branch: REL_16_STABLE [ad5aa7bfd] 2024-12-03 10:20:10 +1300
Branch: REL_15_STABLE [a501fe5a9] 2024-12-03 10:20:22 +1300
Branch: REL_14_STABLE [7d0b91a28] 2024-12-03 10:12:56 +1300
Branch: REL_13_STABLE [1168acbca] 2024-12-03 10:13:49 +1300
-->
<para>
Prevent checkpoints from starting during relation truncation
(Robert Haas)
<ulink url="&commit_baseurl;d4ffbf47b">&sect;</ulink>
</para>
<para>
This avoids a race condition wherein the modified file might not get
fsync'd before completing the checkpoint, creating a risk of data
corruption if the operating system crashes soon after.
</para>
</listitem>
<listitem>
<!--
Author: Noah Misch <noah@leadboat.com>
Branch: master [ff90ee614] 2024-12-28 07:16:22 -0800
Branch: REL_17_STABLE [fa6131377] 2024-12-28 07:16:26 -0800
Branch: REL_16_STABLE [5d94aa4dc] 2024-12-28 07:16:26 -0800
Branch: REL_15_STABLE [83bb52375] 2024-12-28 07:16:26 -0800
Branch: REL_14_STABLE [536acda0b] 2024-12-28 07:16:27 -0800
Branch: REL_13_STABLE [102546322] 2024-12-28 07:16:27 -0800
-->
<para>
Avoid possibly losing an update of
<structname>pg_database</structname>.<structfield>datfrozenxid</structfield>
when <command>VACUUM</command> runs concurrently with
a <command>REASSIGN OWNED</command> that changes that database's
owner (Kirill Reshke)
<ulink url="&commit_baseurl;fa6131377">&sect;</ulink>
</para>
</listitem>
<listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [ea68ea632] 2025-01-22 11:58:20 -0500
Branch: REL_17_STABLE [2b72fed2d] 2025-01-22 11:58:20 -0500
Branch: REL_16_STABLE [8c57f5485] 2025-01-22 11:58:20 -0500
Branch: REL_15_STABLE [cdeed4de7] 2025-01-22 11:58:20 -0500
Branch: REL_14_STABLE [308599305] 2025-01-22 11:58:20 -0500
Branch: REL_13_STABLE [001c09d8b] 2025-01-22 11:58:20 -0500
-->
<para>
Fix incorrect <structfield>tg_updatedcols</structfield> values
passed to <literal>AFTER UPDATE</literal> triggers (Tom Lane)
<ulink url="&commit_baseurl;2b72fed2d">&sect;</ulink>
</para>
<para>
In some cases the <structfield>tg_updatedcols</structfield> bitmap
could describe the set of columns updated by an earlier command in
the same transaction, fooling the trigger into doing the wrong
thing.
</para>
<para>
Also, prevent memory bloat caused by making too many copies of
the <structfield>tg_updatedcols</structfield> bitmap.
</para>
</listitem>
<listitem>
<!--
Author: Álvaro Herrera <alvherre@alvh.no-ip.org>
Branch: master [9b21f203d] 2025-01-21 14:53:46 +0100
Branch: REL_17_STABLE [2f30847d1] 2025-01-21 14:53:46 +0100
Branch: REL_16_STABLE [ddab512eb] 2025-01-21 14:53:46 +0100
Branch: REL_15_STABLE [1bc092519] 2025-01-21 14:53:46 +0100
-->
<para>
Fix detach of a partition that has its own foreign-key constraint
referencing a partitioned table (Amul Sul)
<ulink url="&commit_baseurl;2f30847d1">&sect;</ulink>
</para>
<para>
In common cases, foreign keys are defined on a partitioned table's
top level; but if instead one is defined on a partition and
references a partitioned table, and the referencing partition is
detached, the relevant <structname>pg_constraint</structname>
entries were updated incorrectly. This led to errors
like <quote>could not find ON INSERT check triggers of foreign key
constraint</quote>.
</para>
</listitem>
<listitem>
<!--
Author: Álvaro Herrera <alvherre@alvh.no-ip.org>
Branch: master [09d09d429] 2024-11-27 13:50:27 +0100
Branch: REL_17_STABLE [6e793582b] 2024-11-27 13:50:27 +0100
-->
<para>
Fix <function>pg_get_constraintdef</function>'s support
for <literal>NOT NULL</literal> constraints on domains
(Álvaro Herrera)
<ulink url="&commit_baseurl;6e793582b">&sect;</ulink>
</para>
</listitem>
<listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [3220ceaf7] 2024-12-07 13:12:32 -0500
Branch: REL_17_STABLE [765f76d8c] 2024-12-07 13:12:32 -0500
Branch: REL_16_STABLE [26c233b8b] 2024-12-07 13:12:32 -0500
Branch: REL_15_STABLE [d2f59497a] 2024-12-07 13:12:32 -0500
Branch: REL_14_STABLE [5882a4ba0] 2024-12-07 13:12:32 -0500
Branch: REL_13_STABLE [f2eba400b] 2024-12-07 13:12:32 -0500
-->
<para>
Fix mis-processing of <function>to_timestamp</function>'s
<literal>FF<replaceable>n</replaceable></literal> format codes
(Tom Lane)
<ulink url="&commit_baseurl;765f76d8c">&sect;</ulink>
</para>
<para>
An integer format code immediately
preceding <literal>FF<replaceable>n</replaceable></literal> would
consume all available digits, leaving none
for <literal>FF<replaceable>n</replaceable></literal>.
</para>
</listitem>
<listitem>
<!--
Author: Dean Rasheed <dean.a.rasheed@gmail.com>
Branch: master [a93e2a1e2] 2025-01-12 13:35:12 +0000
Branch: REL_17_STABLE [d037cc2af] 2025-01-12 13:36:44 +0000
-->
<para>
When deparsing a <literal>PASSING</literal> clause in a SQL/JSON
query function, ensure that variable names are double-quoted when
necessary (Dean Rasheed)
<ulink url="&commit_baseurl;d037cc2af">&sect;</ulink>
</para>
</listitem>
<listitem>
<!--
Author: Dean Rasheed <dean.a.rasheed@gmail.com>
Branch: master [d673eefd4] 2025-01-12 12:54:32 +0000
Branch: REL_17_STABLE [61b12135f] 2025-01-12 12:56:52 +0000
Branch: REL_16_STABLE [77763f3be] 2025-01-12 12:58:14 +0000
Branch: REL_15_STABLE [7c0379516] 2025-01-12 12:59:40 +0000
Branch: REL_14_STABLE [dc8cd9cd0] 2025-01-12 13:01:22 +0000
Branch: REL_13_STABLE [8f137f038] 2025-01-12 13:02:56 +0000
-->
<para>
When deparsing an <literal>XMLTABLE()</literal> expression, ensure
that XML namespace names are double-quoted when necessary (Dean
Rasheed)
<ulink url="&commit_baseurl;61b12135f">&sect;</ulink>
</para>
</listitem>
<listitem>
<!--
Author: Daniel Gustafsson <dgustafsson@postgresql.org>
Branch: master [27a1f8d10] 2025-01-10 22:02:58 +0100
Branch: REL_17_STABLE [8ed9bf0a3] 2025-01-10 22:02:58 +0100
Branch: REL_16_STABLE [c35bbdfbc] 2025-01-10 22:02:58 +0100
Branch: REL_15_STABLE [830215a4c] 2025-01-10 22:02:58 +0100
Branch: REL_14_STABLE [83ffb9f20] 2025-01-10 22:02:58 +0100
Branch: REL_13_STABLE [84b8f6d9f] 2025-01-10 22:02:58 +0100
Branch: master [97698cc51] 2025-01-12 23:44:39 +0100
Branch: REL_17_STABLE [dc24c9ad5] 2025-01-12 23:44:39 +0100
Branch: REL_16_STABLE [116036d81] 2025-01-12 23:44:39 +0100
Branch: REL_15_STABLE [9ad7a32b2] 2025-01-12 23:44:39 +0100
Branch: REL_14_STABLE [9e596a099] 2025-01-12 23:44:39 +0100
Branch: REL_13_STABLE [7b1f50d8c] 2025-01-12 23:44:39 +0100
-->
<para>
Include the <literal>ldapscheme</literal> option
in <function>pg_hba_file_rules()</function> output (Laurenz Albe)
<ulink url="&commit_baseurl;8ed9bf0a3">&sect;</ulink>
<ulink url="&commit_baseurl;dc24c9ad5">&sect;</ulink>
</para>
</listitem>
<listitem>
<!--
Author: David Rowley <drowley@postgresql.org>
Branch: master [231006451] 2025-01-10 14:30:25 +1300
Branch: REL_17_STABLE [5db9367e5] 2025-01-10 14:31:31 +1300
-->
<para>
Fix planning of pre-sorted <literal>UNION</literal> operations for
cases where the input column datatypes don't all match (David
Rowley)
<ulink url="&commit_baseurl;5db9367e5">&sect;</ulink>
</para>
<para>
This error could lead to sorting data with the wrong sort operator,
with consequences ranging from no visible problem to core dumps.
</para>
</listitem>
<listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [a43d7a8c7] 2024-11-19 18:26:19 -0500
Branch: REL_17_STABLE [c1ebef3c1] 2024-11-19 18:26:19 -0500
Branch: REL_16_STABLE [f286f64bc] 2024-11-19 18:26:19 -0500
Branch: REL_15_STABLE [fd3383ff1] 2024-11-19 18:26:19 -0500
Branch: REL_14_STABLE [44a4a521d] 2024-11-19 18:26:19 -0500
Branch: REL_13_STABLE [6b66dba3f] 2024-11-19 18:26:19 -0500
-->
<para>
Don't merge <literal>UNION</literal> operations if their column
collations aren't consistent (Tom Lane)
<ulink url="&commit_baseurl;c1ebef3c1">&sect;</ulink>
</para>
<para>
Previously we ignored collations when deciding if it's safe to
merge <literal>UNION</literal> steps into a single
N-way <literal>UNION</literal> operation. This was arguably valid
before the introduction of nondeterministic collations, but it's not
anymore, since the collation in use can affect the definition of
uniqueness.
</para>
</listitem>
<listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [5c9d8636d] 2024-11-28 17:33:16 -0500
Branch: REL_17_STABLE [72822a99d] 2024-11-28 17:33:16 -0500
Branch: REL_16_STABLE [85990e2fd] 2024-11-28 17:33:16 -0500
Branch: master [e032e4c7d] 2024-11-30 12:42:19 -0500
Branch: REL_17_STABLE [78883cd90] 2024-11-30 12:42:20 -0500
Branch: REL_16_STABLE [7b456f040] 2024-11-30 12:42:20 -0500
-->
<para>
Prevent <quote>wrong varnullingrels</quote> planner errors after
pulling up a subquery that's underneath an outer join (Tom Lane)
<ulink url="&commit_baseurl;72822a99d">&sect;</ulink>
<ulink url="&commit_baseurl;78883cd90">&sect;</ulink>
</para>
</listitem>
<listitem>
<!--
Author: Richard Guo <rguo@postgresql.org>
Branch: master [e28033fe1] 2025-01-02 18:06:00 +0900
Branch: REL_17_STABLE [297b280ab] 2025-01-02 17:59:32 +0900
Branch: REL_16_STABLE [a1a9120c7] 2025-01-02 18:02:02 +0900
-->
<para>
Ignore nulling-relation marker bits when looking up statistics
(Richard Guo)
<ulink url="&commit_baseurl;297b280ab">&sect;</ulink>
</para>
<para>
This oversight could lead to failure to use relevant statistics
about expressions, or to <quote>corrupt MVNDistinct
entry</quote> errors.
</para>
</listitem>
<listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [bf826ea06] 2025-01-16 20:40:07 -0500
Branch: REL_17_STABLE [0671a71e0] 2025-01-16 20:40:07 -0500
Branch: REL_16_STABLE [94c02bd33] 2025-01-16 20:40:07 -0500
Branch: REL_15_STABLE [724ebebb1] 2025-01-16 20:40:07 -0500
Branch: REL_14_STABLE [5f725648f] 2025-01-16 20:40:07 -0500
Branch: REL_13_STABLE [45004f527] 2025-01-16 20:40:07 -0500
-->
<para>
Fix missed expression processing for partition pruning steps
(Tom Lane)
<ulink url="&commit_baseurl;0671a71e0">&sect;</ulink>
</para>
<para>
This oversight could lead to <quote>unrecognized node type</quote>
errors, and perhaps other problems, in queries accessing partitioned
tables.
</para>
</listitem>
<listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [2bdf1b2a2] 2024-12-28 12:30:42 -0500
Branch: REL_17_STABLE [14141bbbc] 2024-12-28 12:30:42 -0500
-->
<para>
Give the slotsync worker process its own process slot (Tom Lane, Hou
Zhijie)
<ulink url="&commit_baseurl;14141bbbc">&sect;</ulink>
</para>
<para>
This was overlooked in the addition of the slotsync worker, with the
result that its process slot effectively came out of the pool meant
for regular backend processes. This could result in failure to
launch the worker, or to subsequent failures of connection requests
that should have succeeded according to the configured settings,
if the number of regular backend processes
approached <varname>max_connections</varname>.
</para>
</listitem>
<listitem>
<!--
Author: Nathan Bossart <nathan@postgresql.org>
Branch: master [84f1b0b03] 2024-12-17 15:24:45 -0600
Branch: REL_17_STABLE [18452b70a] 2024-12-17 15:24:45 -0600
Branch: REL_16_STABLE [2a7402322] 2024-12-17 15:24:45 -0600
Branch: REL_15_STABLE [9f7b7d516] 2024-12-17 15:24:45 -0600
Branch: REL_14_STABLE [84dc1303c] 2024-12-17 15:24:45 -0600
Branch: REL_13_STABLE [853cef097] 2024-12-17 15:24:45 -0600
-->
<para>
Allow dshash tables to grow past 1GB (Matthias van de Meent)
<ulink url="&commit_baseurl;18452b70a">&sect;</ulink>
</para>
<para>
This avoids errors like <quote>invalid DSA memory alloc request
size</quote>. The case can occur for example in transactions that
process several million tables.
</para>
</listitem>
<listitem>
<!--
Author: Michael Paquier <michael@paquier.xyz>
Branch: master [720e52984] 2025-01-14 15:12:56 +0900
Branch: REL_17_STABLE [e027ee990] 2025-01-14 15:13:14 +0900
Branch: REL_16_STABLE [bfda7d8dd] 2025-01-14 15:13:15 +0900
Branch: REL_15_STABLE [9e9f30139] 2025-01-14 15:13:17 +0900
Branch: REL_14_STABLE [e35ff6520] 2025-01-14 15:13:19 +0900
Branch: REL_13_STABLE [332023e2d] 2025-01-14 15:13:20 +0900
-->
<para>
Avoid possible integer overflow
in <function>bringetbitmap()</function> (James Hunter, Evgeniy
Gorbanyov)
<ulink url="&commit_baseurl;e027ee990">&sect;</ulink>
</para>
<para>
Since the result is only used for statistical purposes, the effects
of this error were mostly cosmetic.
</para>
</listitem>
<listitem>
<!--
Author: Álvaro Herrera <alvherre@alvh.no-ip.org>
Branch: master [69ab44651] 2025-01-09 07:39:05 +0100
Branch: REL_17_STABLE [ffd9b8134] 2025-01-09 07:44:30 +0100
-->
<para>
Correct miscalculation of SLRU bank numbers (Yura Sokolov)
<ulink url="&commit_baseurl;ffd9b8134">&sect;</ulink>
</para>
<para>
This error led to using a smaller number of banks than intended,
causing more contention but no functional misbehavior.
</para>
</listitem>
<listitem>
<!--
Author: Thomas Munro <tmunro@postgresql.org>
Branch: master [73f6b9a3b] 2025-01-20 16:43:29 +1300
Branch: REL_17_STABLE [44f400fbc] 2025-01-20 16:43:39 +1300
Branch: REL_16_STABLE [b4b52c911] 2025-01-20 16:55:11 +1300
-->
<para>
Ensure that an already-set process latch doesn't prevent the
postmaster from noticing socket events (Thomas Munro)
<ulink url="&commit_baseurl;44f400fbc">&sect;</ulink>
</para>
<para>
An extremely heavy workload of backends launching workers and
workers exiting could prevent the postmaster from responding to
incoming client connections in a timely fashion.
</para>
</listitem>
<listitem>
<!--
Author: Michael Paquier <michael@paquier.xyz>
Branch: master [6cf1647d8] 2025-01-20 09:29:42 +0900
Branch: REL_17_STABLE [e6767c0ed] 2025-01-20 09:30:33 +0900
Branch: REL_16_STABLE [2c2e1d4f4] 2025-01-20 09:30:36 +0900
Branch: REL_15_STABLE [26554facc] 2025-01-20 09:30:37 +0900
Branch: REL_14_STABLE [a2d4f806c] 2025-01-20 09:30:39 +0900
Branch: REL_13_STABLE [0f0431e91] 2025-01-20 09:30:40 +0900
-->
<para>
Prevent streaming standby servers from looping infinitely when
reading a WAL record that crosses pages (Kyotaro Horiguchi,
Alexander Kukushkin)
<ulink url="&commit_baseurl;e6767c0ed">&sect;</ulink>
</para>
<para>
This would happen when the record's continuation is on a page that
needs to be read from a different WAL source.
</para>
</listitem>
<listitem>
<!--
Author: Noah Misch <noah@leadboat.com>
Branch: master [8b9cbf492] 2024-12-10 13:51:59 -0800
Branch: REL_17_STABLE [4bd9de3f4] 2024-12-10 13:52:02 -0800
Branch: REL_16_STABLE [ac4a2b403] 2024-12-10 13:52:02 -0800
Branch: REL_15_STABLE [839da50bd] 2024-12-10 13:52:02 -0800
Branch: REL_14_STABLE [315264d70] 2024-12-10 13:52:02 -0800
Branch: REL_13_STABLE [6151769f6] 2024-12-10 13:52:02 -0800
-->
<para>
Fix unintended promotion of FATAL errors to PANIC during early
process startup (Noah Misch)
<ulink url="&commit_baseurl;4bd9de3f4">&sect;</ulink>
</para>
<para>
This fixes some unlikely cases that would result in <quote>PANIC:
proc_exit() called in child process</quote>.
</para>
</listitem>
<listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [3f9b96217] 2024-12-07 15:56:28 -0500
Branch: REL_17_STABLE [ec7b89cc5] 2024-12-07 15:56:28 -0500
Branch: REL_16_STABLE [be5db08ed] 2024-12-07 15:56:28 -0500
Branch: REL_15_STABLE [0e4fa06ba] 2024-12-07 15:56:28 -0500
Branch: REL_14_STABLE [1a34cf0f4] 2024-12-07 15:56:28 -0500
Branch: REL_13_STABLE [725d98102] 2024-12-07 15:56:28 -0500
Branch: master [c82003760] 2024-12-07 14:28:16 -0500
Branch: REL_17_STABLE [5b44a317a] 2024-12-07 14:28:16 -0500
Branch: REL_16_STABLE [faad01835] 2024-12-07 14:28:16 -0500
Branch: REL_15_STABLE [d40191467] 2024-12-07 14:28:16 -0500
Branch: REL_14_STABLE [d9d5e1b48] 2024-12-07 14:28:16 -0500
Branch: REL_13_STABLE [531cbd8b7] 2024-12-07 14:28:16 -0500
-->
<para>
Fix cases where an operator family member operator or support
procedure could become a dangling reference (Tom Lane)
<ulink url="&commit_baseurl;ec7b89cc5">&sect;</ulink>
<ulink url="&commit_baseurl;5b44a317a">&sect;</ulink>
</para>
<para>
In some cases a data type could be dropped while references to its
OID still remain in <structname>pg_amop</structname>
or <structname>pg_amproc</structname>. While that caused no
immediate issues, an attempt to drop the owning operator family
would fail, and <application>pg_dump</application> would produce
bogus output when dumping the operator family. This fix causes
creation and modification of operator families/classes to add
needed dependency entries so that dropping a data type will also
drop any dependent operator family elements. That does not help
vulnerable pre-existing operator families, though, so a band-aid has
also been added to <command>DROP OPERATOR FAMILY</command> to
prevent failure when dropping a family that has dangling members.
</para>
</listitem>
<listitem>
<!--
Author: Michael Paquier <michael@paquier.xyz>
Branch: master [c9b3d4909] 2024-12-30 13:33:09 +0900
Branch: REL_17_STABLE [836435424] 2024-12-30 13:33:58 +0900
Branch: REL_16_STABLE [e3a27fd06] 2024-12-30 13:33:59 +0900
Branch: REL_15_STABLE [da8bd5d42] 2024-12-30 13:34:01 +0900
Branch: REL_14_STABLE [c53d90bb4] 2025-01-08 08:47:19 +0900
Branch: REL_13_STABLE [a786cf04d] 2025-01-08 08:47:24 +0900
Author: Michael Paquier <michael@paquier.xyz>
Branch: REL_17_STABLE [bbe68c13a] 2024-12-23 12:48:06 +0900
Branch: REL_16_STABLE [4d45e7490] 2024-12-23 12:48:08 +0900
Branch: REL_15_STABLE [6c9b39754] 2024-12-23 12:48:09 +0900
Branch: REL_14_STABLE [cfd6cbcf9] 2024-12-23 12:48:10 +0900
Branch: REL_13_STABLE [ba230ce40] 2024-12-23 12:48:12 +0900
Author: Michael Paquier <michael@paquier.xyz>
Branch: master [ea792bfd9] 2024-11-21 15:14:02 +0900
Branch: REL_17_STABLE [afe9b0d9f] 2024-11-21 15:14:11 +0900
Branch: REL_16_STABLE [e749eaf46] 2024-11-21 15:14:13 +0900
Branch: REL_15_STABLE [6fc30c24c] 2024-11-21 15:14:15 +0900
-->
<para>
Fix multiple memory leaks in logical decoding output (Vignesh C,
Masahiko Sawada, Boyu Yang)
<ulink url="&commit_baseurl;836435424">&sect;</ulink>
<ulink url="&commit_baseurl;bbe68c13a">&sect;</ulink>
<ulink url="&commit_baseurl;afe9b0d9f">&sect;</ulink>
</para>
</listitem>
<listitem>
<!--
Author: Daniel Gustafsson <dgustafsson@postgresql.org>
Branch: master [73a392d23] 2024-12-09 20:58:23 +0100
Branch: REL_17_STABLE [9add1bbfa] 2024-12-09 20:58:23 +0100
Branch: REL_16_STABLE [be9dac9af] 2024-12-09 20:58:23 +0100
-->
<para>
Fix small memory leak when
updating the <varname>application_name</varname>
or <varname>cluster_name</varname> settings (Tofig Aliev)
<ulink url="&commit_baseurl;9add1bbfa">&sect;</ulink>
</para>
</listitem>
<listitem>
<!--
Author: Álvaro Herrera <alvherre@alvh.no-ip.org>
Branch: master [3c5f9f12c] 2024-12-03 17:50:57 +0100
Branch: REL_17_STABLE [9abdc1841] 2024-12-03 17:50:57 +0100
-->
<para>
Avoid crash when a background process tries to check a new value
of <varname>synchronized_standby_slots</varname> (Álvaro Herrera)
<ulink url="&commit_baseurl;9abdc1841">&sect;</ulink>
</para>
</listitem>
<listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [b9aa4166f] 2025-01-30 15:36:44 -0500
Branch: REL_17_STABLE [1e25cdb21] 2025-01-30 15:36:07 -0500
Branch: REL_16_STABLE [f7a08b6e9] 2025-01-30 15:36:07 -0500
Branch: REL_15_STABLE [b296e55b4] 2025-01-30 15:36:07 -0500
Branch: REL_14_STABLE [6a33bb35c] 2025-01-30 15:36:07 -0500
Branch: REL_13_STABLE [49a38238e] 2025-01-30 15:36:07 -0500
-->
<para>
Avoid integer overflow while
testing <varname>wal_skip_threshold</varname> condition (Tom Lane)
<ulink url="&commit_baseurl;1e25cdb21">&sect;</ulink>
</para>
<para>
A transaction that created a very large relation could mistakenly
decide to ensure durability by copying the relation into WAL instead
of fsync'ing it, thereby negating the point
of <varname>wal_skip_threshold</varname>. (This only matters
when <varname>wal_level</varname> is set
to <literal>minimal</literal>, else a WAL copy is required anyway.)
</para>
</listitem>
<listitem>
<!--
Author: Noah Misch <noah@leadboat.com>
Branch: master [4ba84de45] 2024-11-25 14:42:35 -0800
Branch: REL_17_STABLE [718af10da] 2024-11-25 14:42:38 -0800
Branch: REL_16_STABLE [c1285bbeb] 2024-11-25 14:42:39 -0800
Branch: REL_15_STABLE [941e0c0df] 2024-11-25 14:42:39 -0800
Branch: REL_14_STABLE [2690a4f5d] 2024-11-25 14:42:40 -0800
Branch: REL_13_STABLE [01745fb04] 2024-11-25 14:42:40 -0800
-->
<para>
Fix unsafe order of operations during cache lookups (Noah Misch)
<ulink url="&commit_baseurl;718af10da">&sect;</ulink>
</para>
<para>
The only known consequence was a usually-harmless <quote>you don't
own a lock of type ExclusiveLock</quote> warning
during <command>GRANT TABLESPACE</command>.
</para>
</listitem>
<listitem>
<!--
Author: John Naylor <john.naylor@postgresql.org>
Branch: master [ccc8194e4] 2024-12-04 16:58:25 +0700
Branch: REL_17_STABLE [83ce20d67] 2024-12-04 16:59:12 +0700
-->
<para>
Avoid potential use-after-free in parallel vacuum (Vallimaharajan G,
John Naylor)
<ulink url="&commit_baseurl;83ce20d67">&sect;</ulink>
</para>
<para>
This bug seems to have no consequences in standard builds, but it's
theoretically a hazard.
</para>
</listitem>
<listitem>
<!--
Author: Thomas Munro <tmunro@postgresql.org>
Branch: master [78c09bd9f] 2024-11-22 15:29:47 +1300
Branch: REL_17_STABLE [8a9a51518] 2024-11-22 15:29:28 +1300
Branch: REL_16_STABLE [6de14dbb3] 2024-11-22 15:29:18 +1300
Branch: REL_15_STABLE [15ab513fe] 2024-11-22 15:29:00 +1300
Branch: REL_14_STABLE [7ca388fd0] 2024-11-22 15:30:37 +1300
Branch: REL_13_STABLE [8aefd8b6f] 2024-11-22 15:32:02 +1300
-->
<para>
Fix possible <quote>failed to resolve name</quote> failures when
using JIT on older ARM platforms (Thomas Munro)
<ulink url="&commit_baseurl;8a9a51518">&sect;</ulink>
</para>
<para>
This could occur as a consequence of inconsistency about the default
setting of <option>-moutline-atomics</option> between gcc and clang.
At least Debian and Ubuntu are known to ship gcc and clang compilers
that target armv8-a but differ on the use of outline atomics by
default.
</para>
</listitem>
<listitem>
<!--
Author: David Rowley <drowley@postgresql.org>
Branch: master [8f4ee9626] 2024-12-19 13:11:39 +1300
Branch: REL_17_STABLE [7b8d45d27] 2024-12-19 13:12:18 +1300
Branch: REL_16_STABLE [093fc156b] 2024-12-19 13:12:41 +1300
Branch: REL_15_STABLE [ef178d38b] 2024-12-19 13:13:01 +1300
Branch: REL_14_STABLE [bdb07d241] 2024-12-19 13:13:31 +1300
Branch: REL_13_STABLE [2c7887c9d] 2024-12-19 13:13:51 +1300
-->
<para>
Fix assertion failure in <literal>WITH RECURSIVE ... UNION</literal>
queries (David Rowley)
<ulink url="&commit_baseurl;7b8d45d27">&sect;</ulink>
</para>
</listitem>
<listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [94131cd53] 2024-11-20 12:03:47 -0500
Branch: REL_17_STABLE [fea81aee8] 2024-11-20 12:03:47 -0500
Branch: REL_16_STABLE [fe084039e] 2024-11-20 12:03:47 -0500
Branch: REL_15_STABLE [9b9689e26] 2024-11-20 12:03:47 -0500
Branch: REL_14_STABLE [3eb26524c] 2024-11-20 12:03:47 -0500
Branch: REL_13_STABLE [630520c22] 2024-11-20 12:03:47 -0500
-->
<para>
Avoid assertion failure in rule deparsing if a set operation leaf
query contains set operations (Man Zeng, Tom Lane)
<ulink url="&commit_baseurl;fea81aee8">&sect;</ulink>
</para>
</listitem>
<listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [3eea7a0c9] 2024-12-09 14:38:19 -0500
Branch: REL_17_STABLE [556f7b7bc] 2024-12-09 14:38:19 -0500
Branch: REL_16_STABLE [bb649b553] 2024-12-09 14:38:19 -0500
Branch: REL_15_STABLE [4089b9bd6] 2024-12-09 14:38:19 -0500
Branch: REL_14_STABLE [8a95ad3b2] 2024-12-09 14:38:19 -0500
Branch: REL_13_STABLE [4d20bad5e] 2024-12-09 14:38:19 -0500
-->
<para>
Avoid edge-case assertion failure in parallel query startup (Tom Lane)
<ulink url="&commit_baseurl;556f7b7bc">&sect;</ulink>
</para>
</listitem>
<listitem>
<!--
Author: Michael Paquier <michael@paquier.xyz>
Branch: master [da99fedf8] 2024-12-09 10:45:28 +0900
Branch: REL_17_STABLE [dc5f90541] 2024-12-09 10:46:03 +0900
Branch: REL_16_STABLE [ae77bcc3a] 2024-12-09 10:46:09 +0900
Branch: REL_15_STABLE [1df1e1e78] 2024-12-09 10:46:10 +0900
-->
<para>
Fix assertion failure at shutdown when writing out the statistics
file (Michael Paquier)
<ulink url="&commit_baseurl;dc5f90541">&sect;</ulink>
</para>
</listitem>
<listitem>
<!--
Author: John Naylor <john.naylor@postgresql.org>
Branch: master [235328ee4] 2025-01-29 13:35:43 +0700
Branch: REL_17_STABLE [6555fe197] 2025-01-29 13:55:43 +0700
-->
<para>
Avoid valgrind complaints about string hashing code (John Naylor)
<ulink url="&commit_baseurl;6555fe197">&sect;</ulink>
</para>
</listitem>
<listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [5b8728cd7] 2024-11-25 18:09:09 -0500
Branch: REL_17_STABLE [97be02ad0] 2024-11-25 18:09:10 -0500
Branch: REL_16_STABLE [4aba56adc] 2024-11-25 18:09:10 -0500
Branch: REL_15_STABLE [80cd33bad] 2024-11-25 18:09:10 -0500
Branch: REL_14_STABLE [a1168855e] 2024-11-25 18:09:10 -0500
Branch: REL_13_STABLE [48a6cd1ae] 2024-11-25 18:09:11 -0500
-->
<para>
In <function>NULLIF()</function>, avoid passing a read-write
expanded object pointer to the data type's equality function
(Tom Lane)
<ulink url="&commit_baseurl;97be02ad0">&sect;</ulink>
</para>
<para>
The equality function could modify or delete the object if it's
given a read-write pointer, which would be bad if we decide to
return it as the <function>NULLIF()</function> result. There is
probably no problem with any built-in equality function, but it's
easy to demonstrate a failure with one coded in PL/pgSQL.
</para>
</listitem>
<listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [0da39aa76] 2025-01-29 15:31:55 -0500
Branch: REL_17_STABLE [6e41e9e5e] 2025-01-29 15:31:55 -0500
Branch: REL_16_STABLE [6655d931c] 2025-01-29 15:31:55 -0500
Branch: REL_15_STABLE [bb85d0935] 2025-01-29 15:31:55 -0500
Branch: REL_14_STABLE [c05268e6e] 2025-01-29 15:31:55 -0500
-->
<para>
Ensure that expression preprocessing is applied to a default null
value in <command>INSERT</command> (Tom Lane)
<ulink url="&commit_baseurl;6e41e9e5e">&sect;</ulink>
</para>
<para>
If the target column is of a domain type, the planner must insert a
coerce-to-domain step not just a null constant, and this expression
missed going through some required processing steps. There is no
known consequence with domains based on core data types, but in
theory an error could occur with domains based on extension types.
</para>
</listitem>
<listitem>
<!--
Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
Branch: master [ee937f040] 2024-11-22 16:28:24 +0200
Branch: REL_17_STABLE [969583553] 2024-11-22 16:29:22 +0200
-->
<para>
Avoid data loss when starting a bulk write on a relation fork that
already contains data (Matthias van de Meent)
<ulink url="&commit_baseurl;969583553">&sect;</ulink>
</para>
<para>
Any pre-existing data was overwritten with zeroes. This is not an
issue for core <productname>PostgreSQL</productname>, which never
does that. Some extensions would like to, however.
</para>
</listitem>
<listitem>
<!--
Author: Masahiko Sawada <msawada@postgresql.org>
Branch: REL_17_STABLE [9af2b3435] 2025-02-06 11:35:51 -0800
-->
<para>
Avoid crash if a server process tried to iterate over a shared radix
tree that it didn't create (Masahiko Sawada)
<ulink url="&commit_baseurl;9af2b3435">&sect;</ulink>
</para>
<para>
There is no code in core <productname>PostgreSQL</productname> that
does this, but an extension might wish to.
</para>
</listitem>
<listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [29dfffae0] 2025-01-11 11:45:56 -0500
Branch: REL_17_STABLE [e98df02df] 2025-01-11 11:45:56 -0500
Branch: REL_16_STABLE [33a4e656d] 2025-01-11 11:45:56 -0500
Branch: REL_15_STABLE [71bb9c4b2] 2025-01-11 11:45:56 -0500
Branch: REL_14_STABLE [bcb4db0d3] 2025-01-11 11:45:56 -0500
Branch: REL_13_STABLE [02a38bc84] 2025-01-11 11:45:56 -0500
-->
<para>
Repair memory leaks in PL/Python (Mat Arye, Tom Lane)
<ulink url="&commit_baseurl;e98df02df">&sect;</ulink>
</para>
<para>
Repeated use of <function>PLyPlan.execute</function>
or <function>plpy.cursor</function> resulted in memory leakage for
the duration of the calling PL/Python function.
</para>
</listitem>
<listitem>
<!--
Author: Peter Eisentraut <peter@eisentraut.org>
Branch: master [32a2aa77e] 2024-11-25 11:44:29 +0100
Branch: REL_17_STABLE [f979197eb] 2024-11-25 12:27:10 +0100
Branch: REL_16_STABLE [07c77803c] 2024-11-25 12:27:19 +0100
Branch: REL_15_STABLE [a5f9cbde9] 2024-11-25 12:27:26 +0100
Branch: REL_14_STABLE [17d081a6f] 2024-11-25 13:11:18 +0100
Branch: REL_13_STABLE [f230e27a2] 2024-11-25 13:11:49 +0100
-->
<para>
Fix PL/Tcl to compile with Tcl 9 (Peter Eisentraut)
<ulink url="&commit_baseurl;f979197eb">&sect;</ulink>
</para>
</listitem>
<listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [2f696453d] 2024-12-01 14:15:37 -0500
Branch: REL_17_STABLE [a963abd54] 2024-12-01 14:15:37 -0500
Branch: REL_16_STABLE [cca34f68c] 2024-12-01 14:15:37 -0500
Branch: REL_15_STABLE [60b47525c] 2024-12-01 14:15:37 -0500
Branch: REL_14_STABLE [52c7a44e9] 2024-12-01 14:15:37 -0500
Branch: REL_13_STABLE [e359cbb84] 2024-12-01 14:15:37 -0500
-->
<para>
In the <application>ecpg</application> preprocessor, fix possible
misprocessing of cursors that reference out-of-scope variables
(Tom Lane)
<ulink url="&commit_baseurl;a963abd54">&sect;</ulink>
</para>
</listitem>
<listitem>
<!--
Author: Fujii Masao <fujii@postgresql.org>
Branch: master [94b914f60] 2025-01-15 01:23:02 +0900
Branch: REL_17_STABLE [ba2dbedd5] 2025-01-15 01:24:24 +0900
Branch: REL_16_STABLE [5c7c34db2] 2025-01-15 01:25:05 +0900
Branch: REL_15_STABLE [71ef47cf0] 2025-01-15 01:25:19 +0900
Branch: REL_14_STABLE [d06ab3c0c] 2025-01-15 01:25:31 +0900
Branch: REL_13_STABLE [226c9048d] 2025-01-15 01:25:52 +0900
-->
<para>
In <application>ecpg</application>, fix compile-time warnings about
unsupported use of <literal>COPY ... FROM STDIN</literal> (Ryo
Kanbayashi)
<ulink url="&commit_baseurl;ba2dbedd5">&sect;</ulink>
</para>
<para>
Previously, the intended warning was not issued due to a typo.
</para>
</listitem>
<listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [6cddecdfb] 2025-01-29 14:24:36 -0500
Branch: REL_17_STABLE [0b713b94b] 2025-01-29 14:24:36 -0500
Branch: REL_16_STABLE [998c4fc7c] 2025-01-29 14:24:36 -0500
Branch: REL_15_STABLE [b17e3970c] 2025-01-29 14:24:36 -0500
Branch: REL_14_STABLE [54f9afea7] 2025-01-29 14:24:36 -0500
Branch: REL_13_STABLE [98df8bace] 2025-01-29 14:24:36 -0500
-->
<para>
Fix <application>psql</application> to safely handle file path names
that are encoded in SJIS (Tom Lane)
<ulink url="&commit_baseurl;0b713b94b">&sect;</ulink>
</para>
<para>
Some two-byte characters in SJIS have a second byte that is equal to
ASCII backslash (<literal>\</literal>). These characters were
corrupted by path name normalization, preventing access to files
whose names include such characters.
</para>
</listitem>
<listitem>
<!--
Author: Peter Eisentraut <peter@eisentraut.org>
Branch: master [25ec329af] 2024-11-28 09:14:41 +0100
Branch: REL_17_STABLE [4527b9e26] 2024-11-28 12:09:53 +0100
-->
<para>
Add <application>psql</application> tab completion for <literal>COPY
(MERGE INTO)</literal> (Jian He)
<ulink url="&commit_baseurl;4527b9e26">&sect;</ulink>
</para>
</listitem>
<listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [9a45a89c3] 2025-01-14 18:50:24 -0500
Branch: REL_17_STABLE [a0dfeae0d] 2025-01-14 18:50:24 -0500
Branch: REL_16_STABLE [b935691b8] 2025-01-14 18:50:24 -0500
Branch: REL_15_STABLE [a3b709cf7] 2025-01-14 18:50:24 -0500
Branch: REL_14_STABLE [02e69313a] 2025-01-14 18:50:24 -0500
Branch: REL_13_STABLE [cfd7aadeb] 2025-01-14 18:50:24 -0500
-->
<para>
Fix use of wrong version of <function>pqsignal()</function>
in <application>pgbench</application>
and <application>psql</application> (Fujii Masao, Tom Lane)
<ulink url="&commit_baseurl;a0dfeae0d">&sect;</ulink>
</para>
<para>
This error could lead to misbehavior when using
the <option>-T</option> option in <application>pgbench</application>
or the <command>\watch</command> command
in <application>psql</application>, due to interrupted system calls
not being resumed as expected.
</para>
</listitem>
<listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [530f89e64] 2024-12-15 14:14:14 -0500
Branch: REL_17_STABLE [ff9dc96f3] 2024-12-15 14:14:15 -0500
Branch: REL_16_STABLE [076b09123] 2024-12-15 14:14:15 -0500
Branch: REL_15_STABLE [ff88db910] 2024-12-15 14:14:15 -0500
Branch: REL_14_STABLE [2a23dbcf3] 2024-12-15 14:14:15 -0500
Branch: REL_13_STABLE [ec0dc2c59] 2024-12-15 14:14:15 -0500
-->
<para>
Fix misexecution of some nested <command>\if</command> constructs
in <application>pgbench</application> (Michail Nikolaev)
<ulink url="&commit_baseurl;ff9dc96f3">&sect;</ulink>
</para>
<para>
An <command>\if</command> command appearing within a false
(not-being-executed) <command>\if</command> branch was incorrectly
treated the same as <command>\elif</command>.
</para>
</listitem>
<listitem>
<!--
Author: Fujii Masao <fujii@postgresql.org>
Branch: master [af35fe501] 2024-11-27 23:01:53 +0900
Branch: REL_17_STABLE [adb103fca] 2024-11-27 23:03:04 +0900
Branch: REL_16_STABLE [1cf646957] 2024-11-27 23:03:44 +0900
Branch: REL_15_STABLE [1e46f7351] 2024-11-27 23:04:29 +0900
Branch: REL_14_STABLE [0f13e1a78] 2024-11-27 23:04:55 +0900
Branch: REL_13_STABLE [f1cb5e51f] 2024-11-27 23:05:24 +0900
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [fb056564e] 2025-02-07 13:41:42 -0500
Branch: REL_17_STABLE [e35d396ec] 2025-02-07 13:41:42 -0500
Branch: REL_16_STABLE [21b815f92] 2025-02-07 13:41:42 -0500
Branch: REL_15_STABLE [499d1cf55] 2025-02-07 13:41:43 -0500
Branch: REL_14_STABLE [5addea71c] 2025-02-07 13:41:43 -0500
Branch: REL_13_STABLE [b6decfc1d] 2025-02-07 13:41:43 -0500
-->
<para>
In <application>pgbench</application>, fix possible misdisplay of
progress messages during table initialization (Yushi Ogiwara, Tatsuo
Ishii, Fujii Masao)
<ulink url="&commit_baseurl;adb103fca">&sect;</ulink>
<ulink url="&commit_baseurl;e35d396ec">&sect;</ulink>
</para>
</listitem>
<listitem>
<!--
Author: Alexander Korotkov <akorotkov@postgresql.org>
Branch: master [ff1975ddd] 2025-02-05 00:45:49 +0200
Branch: REL_17_STABLE [1b8a9533f] 2025-02-05 00:45:43 +0200
Branch: REL_16_STABLE [d54d5668b] 2025-02-05 00:45:37 +0200
Branch: REL_15_STABLE [f1e0b078b] 2025-02-05 00:45:29 +0200
Branch: REL_14_STABLE [f2205448b] 2025-02-05 00:45:16 +0200
Branch: REL_13_STABLE [c24311c1f] 2025-02-05 00:46:06 +0200
-->
<para>
Make <application>pg_controldata</application> more robust against
corrupted <filename>pg_control</filename> files (Ilyasov Ian, Anton
Voloshin)
<ulink url="&commit_baseurl;1b8a9533f">&sect;</ulink>
</para>
<para>
Since <application>pg_controldata</application> will attempt to
print the contents of <filename>pg_control</filename> even if the
CRC check fails, it must take care not to misbehave for invalid
field values. This patch fixes some issues triggered by invalid
timestamps and apparently-negative WAL segment sizes.
</para>
</listitem>
<listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [7b8cb9cd6] 2024-12-13 14:21:36 -0500
Branch: REL_17_STABLE [ad950ea98] 2024-12-13 14:21:36 -0500
Branch: REL_16_STABLE [782cc1aa3] 2024-12-13 14:21:36 -0500
Branch: REL_15_STABLE [6978129b4] 2024-12-13 14:21:36 -0500
Branch: REL_14_STABLE [c7f3c414f] 2024-12-13 14:21:36 -0500
Branch: REL_13_STABLE [b6df2d6e5] 2024-12-13 14:21:36 -0500
-->
<para>
Fix possible crash in <application>pg_dump</application> with
identity sequences attached to tables that are extension members
(Tom Lane)
<ulink url="&commit_baseurl;ad950ea98">&sect;</ulink>
</para>
</listitem>
<listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [3f0632470] 2024-12-17 22:31:26 -0500
Branch: REL_17_STABLE [04b860198] 2024-12-17 22:31:26 -0500
Branch: REL_16_STABLE [8cfff087b] 2024-12-17 22:31:26 -0500
-->
<para>
Fix memory leak in <application>pg_restore</application>
with zstd-compressed data (Tom Lane)
<ulink url="&commit_baseurl;04b860198">&sect;</ulink>
</para>
<para>
The leak was per-decompression-operation, so would be most
noticeable with a dump containing many tables or large objects.
</para>
</listitem>
<listitem>
<!--
Author: Thomas Munro <tmunro@postgresql.org>
Branch: master [970b97eeb] 2025-01-09 16:04:23 +1300
Branch: REL_17_STABLE [faee3185a] 2025-01-09 16:05:01 +1300
Branch: REL_16_STABLE [be7489662] 2025-01-09 16:05:08 +1300
Branch: REL_15_STABLE [6b6901a26] 2025-01-09 16:05:16 +1300
Branch: REL_14_STABLE [8f40d4612] 2025-01-09 16:05:25 +1300
Branch: REL_13_STABLE [bd0564f61] 2025-01-09 16:05:36 +1300
Branch: master [026762dae] 2025-01-09 15:00:58 +1300
Branch: REL_17_STABLE [af109e339] 2025-01-09 15:00:23 +1300
Branch: REL_16_STABLE [0bff6f1da] 2025-01-09 14:59:47 +1300
Branch: REL_15_STABLE [70a7a3761] 2025-01-09 14:58:18 +1300
Branch: REL_14_STABLE [1636c5e56] 2025-01-09 14:57:52 +1300
Branch: REL_13_STABLE [d02486cc8] 2025-01-09 14:57:02 +1300
-->
<para>
Fix <application>pg_basebackup</application> to correctly
handle <filename>pg_wal.tar</filename> files exceeding 2GB on
Windows (Davinder Singh, Thomas Munro)
<ulink url="&commit_baseurl;faee3185a">&sect;</ulink>
<ulink url="&commit_baseurl;af109e339">&sect;</ulink>
</para>
</listitem>
<listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [969bbd0fa] 2024-12-14 16:07:18 -0500
Branch: REL_17_STABLE [3652de36e] 2024-12-14 16:07:18 -0500
Branch: REL_16_STABLE [31daa10fa] 2024-12-14 16:07:18 -0500
-->
<para>
Use SQL-standard function bodies in the declarations
of <filename>contrib/earthdistance</filename>'s SQL-language
functions (Tom Lane, Ronan Dunklau)
<ulink url="&commit_baseurl;3652de36e">&sect;</ulink>
</para>
<para>
This change allows their references
to <filename>contrib/cube</filename> to be resolved during extension
creation, reducing the risk of search-path-based failures and
possible attacks.
</para>
<para>
In particular, this restores their usability in contexts like
generated columns, for which <productname>PostgreSQL</productname>
v17 restricts the search path on security grounds. We have received
reports of databases failing to be upgraded to v17 because of that.
This patch has been included in v16 to provide a workaround:
updating the <filename>earthdistance</filename> extension to this
version beforehand should allow an upgrade to succeed.
</para>
</listitem>
<listitem>
<!--
Author: Tomas Vondra <tomas.vondra@postgresql.org>
Branch: master [957ba9ff1] 2024-12-17 17:48:55 +0100
Branch: REL_17_STABLE [3668c1d50] 2024-12-17 17:50:13 +0100
-->
<para>
Detect version mismatch
between <filename>contrib/pageinspect</filename>'s SQL declarations
and the underlying shared library (Tomas Vondra)
<ulink url="&commit_baseurl;3668c1d50">&sect;</ulink>
</para>
<para>
Previously, such a mismatch could result in a crash while
calling <function>brin_page_items()</function>. Instead throw an
error recommending updating the extension.
</para>
</listitem>
<listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [c431986de] 2024-12-23 15:14:30 -0500
Branch: REL_17_STABLE [89962bfef] 2024-12-23 15:14:30 -0500
-->
<para>
When trying to cancel a remote query
in <filename>contrib/postgres_fdw</filename>, re-issue the cancel
request a few times if it didn't seem to do anything (Tom Lane)
<ulink url="&commit_baseurl;89962bfef">&sect;</ulink>
</para>
<para>
This fixes a race condition where we might try to cancel a just-sent
query before the remote server has started to process it, so that
the initial cancel request is ignored.
</para>
</listitem>
<listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [5980f1884] 2024-11-25 12:50:17 -0500
Branch: REL_17_STABLE [e266a0ed6] 2024-11-25 12:50:17 -0500
Branch: REL_16_STABLE [1f4aadec4] 2024-11-25 12:50:17 -0500
Branch: REL_15_STABLE [851c6ff18] 2024-11-25 12:50:17 -0500
Branch: REL_14_STABLE [2fc0199a5] 2024-11-25 12:50:17 -0500
Branch: REL_13_STABLE [32057a0f7] 2024-11-25 12:50:17 -0500
-->
<para>
Update configuration probes that determine the compiler switches
needed to access ARM CRC instructions (Tom Lane)
<ulink url="&commit_baseurl;e266a0ed6">&sect;</ulink>
</para>
<para>
On ARM platforms where the baseline CPU target lacks CRC
instructions, we need to supply a <option>-march</option> switch to
persuade the compiler to compile such instructions. Recent versions
of gcc reject the value we were trying, leading to silently falling
back to software CRC.
</para>
</listitem>
<listitem>
<!--
Author: Daniel Gustafsson <dgustafsson@postgresql.org>
Branch: REL_17_STABLE [0951d4ee4] 2025-02-07 15:09:13 +0100
Branch: REL_16_STABLE [60516fc8b] 2025-02-07 15:09:13 +0100
-->
<para>
Fix meson build system to support old OpenSSL libraries on Windows
(Darek Slusarczyk)
<ulink url="&commit_baseurl;0951d4ee4">&sect;</ulink>
</para>
<para>
Add support for the legacy library
names <filename>ssleay32</filename>
and <filename>libeay32</filename>.
</para>
</listitem>
<listitem>
<!--
Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
Branch: master [2571c1d5c] 2024-12-25 18:14:18 +0200
Branch: REL_17_STABLE [c80acbc6f] 2024-12-25 18:14:26 +0200
Branch: REL_16_STABLE [4e0d71ff2] 2024-12-25 18:14:30 +0200
Branch: master [07f902bd7] 2024-12-25 19:22:25 +0200
Branch: REL_17_STABLE [d8b0c6411] 2024-12-25 19:22:33 +0200
Branch: REL_16_STABLE [643efb18b] 2024-12-25 19:22:41 +0200
-->
<para>
In Windows builds using meson, ensure all libcommon and libpgport
functions are exported (Vladlen Popolitov, Heikki Linnakangas)
<ulink url="&commit_baseurl;c80acbc6f">&sect;</ulink>
<ulink url="&commit_baseurl;d8b0c6411">&sect;</ulink>
</para>
<para>
This fixes <quote>unresolved external symbol</quote> build errors
for extensions.
</para>
</listitem>
<listitem>
<!--
Author: Andrew Dunstan <andrew@dunslane.net>
Branch: master Release: REL_17_BR [7c655a04a] 2024-05-26 17:34:45 -0400
Branch: REL_16_STABLE [1250adfdf] 2024-11-26 15:41:58 -0500
-->
<para>
Fix meson configuration process to correctly detect
OSSP's <filename>uuid.h</filename> header file under MSVC
(Andrew Dunstan)
<ulink url="&commit_baseurl;7c655a04a">&sect;</ulink>
</para>
</listitem>
<listitem>
<!--
Author: Peter Eisentraut <peter@eisentraut.org>
Branch: master [4ee130c6e] 2024-11-26 18:09:05 +0100
Branch: REL_17_STABLE [e00c1e249] 2024-11-26 18:09:14 +0100
Branch: REL_16_STABLE [766b0b40a] 2024-11-26 18:09:23 +0100
-->
<para>
When building with meson, install <filename>pgevent</filename>
in <replaceable>pkglibdir</replaceable>
not <replaceable>bindir</replaceable> (Peter Eisentraut)
<ulink url="&commit_baseurl;e00c1e249">&sect;</ulink>
</para>
<para>
This matches the behavior of the make-based build system and the old
MSVC build system.
</para>
</listitem>
<listitem>
<!--
Author: Peter Eisentraut <peter@eisentraut.org>
Branch: master [02ed3c2bd] 2025-01-24 10:26:12 +0100
Branch: REL_17_STABLE [24c5b73eb] 2025-01-24 10:26:59 +0100
Branch: REL_16_STABLE [155d6162e] 2025-01-24 10:55:24 +0100
-->
<para>
When building with meson, install <filename>sepgsql.sql</filename>
under <filename>share/contrib/</filename>
not <filename>share/extension/</filename> (Peter Eisentraut)
<ulink url="&commit_baseurl;24c5b73eb">&sect;</ulink>
</para>
<para>
This matches what the make-based build system does.
</para>
</listitem>
<listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [60c513f8f] 2025-01-20 16:49:15 -0500
Branch: REL_17_STABLE [e292ba333] 2025-01-20 16:49:15 -0500
Branch: REL_16_STABLE [d62403c51] 2025-01-20 16:49:15 -0500
Branch: REL_15_STABLE [48bc95d0d] 2025-01-20 16:49:15 -0500
Branch: REL_14_STABLE [20b4819d0] 2025-01-20 16:49:15 -0500
Branch: REL_13_STABLE [6397819c8] 2025-01-20 16:49:15 -0500
-->
<para>
Update time zone data files to <application>tzdata</application>
release 2025a for DST law changes in Paraguay, plus historical
corrections for the Philippines (Tom Lane)
<ulink url="&commit_baseurl;e292ba333">&sect;</ulink>
</para>
</listitem>
</itemizedlist>
</sect2>
</sect1>
<sect1 id="release-17-2">
<title>Release 17.2</title>
<formalpara>
<title>Release date:</title>
<para>2024-11-21</para>
</formalpara>
<para>
This release contains a few fixes from 17.1.
For information about new features in major release 17, see
<xref linkend="release-17"/>.
</para>
<sect2 id="release-17-2-migration">
<title>Migration to Version 17.2</title>
<para>
A dump/restore is not required for those running 17.X.
</para>
<para>
However, if you are upgrading from a version earlier than 17.1,
see <xref linkend="release-17-1"/>.
</para>
</sect2>
<sect2 id="release-17-2-changes">
<title>Changes</title>
<itemizedlist>
<listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: REL_17_STABLE [6bfacd368] 2024-11-16 12:58:26 -0500
Branch: REL_16_STABLE [ee33d5847] 2024-11-16 12:58:26 -0500
Branch: REL_15_STABLE [17db248f3] 2024-11-16 12:58:26 -0500
Branch: REL_14_STABLE [099e711b7] 2024-11-16 12:58:26 -0500
-->
<para>
Repair ABI break for extensions that work with
struct <structname>ResultRelInfo</structname> (Tom Lane)
<ulink url="&commit_baseurl;6bfacd368">&sect;</ulink>
</para>
<para>
Last week's minor releases unintentionally broke binary
compatibility with <application>timescaledb</application> and
several other extensions. Restore the affected structure to its
previous size, so that such extensions need not be rebuilt.
</para>
</listitem>
<listitem>
<!--
Author: Noah Misch <noah@leadboat.com>
Branch: master [7b88529f4] 2024-11-15 20:39:56 -0800
Branch: REL_17_STABLE [1c05004a8] 2024-11-15 20:39:59 -0800
Branch: REL_16_STABLE [b0918c128] 2024-11-15 20:39:59 -0800
Branch: REL_15_STABLE [edf80895f] 2024-11-15 20:39:59 -0800
Branch: REL_14_STABLE [be062bfa5] 2024-11-15 20:40:00 -0800
Branch: REL_13_STABLE [07c6e0f61] 2024-11-15 20:40:00 -0800
Branch: REL_12_STABLE [c46333865] 2024-11-15 20:40:00 -0800
-->
<para>
Restore functionality of <command>ALTER {ROLE|DATABASE} SET
role</command> (Tom Lane, Noah Misch)
<ulink url="&commit_baseurl;1c05004a8">&sect;</ulink>
</para>
<para>
The fix for CVE-2024-10978 accidentally caused settings
for <varname>role</varname> to not be applied if they come from
non-interactive sources, including previous <command>ALTER
{ROLE|DATABASE}</command> commands and
the <varname>PGOPTIONS</varname> environment variable.
</para>
</listitem>
<listitem>
<!--
Author: Masahiko Sawada <msawada@postgresql.org>
Branch: master [e5ed873b1] 2024-11-15 17:06:11 -0800
Branch: REL_17_STABLE [568e78a65] 2024-11-15 17:06:08 -0800
Branch: REL_16_STABLE [f35391133] 2024-11-15 17:06:05 -0800
Branch: REL_15_STABLE [91771b3fb] 2024-11-15 17:06:02 -0800
Branch: REL_14_STABLE [26c4e8968] 2024-11-15 17:06:00 -0800
Branch: REL_13_STABLE [15dc1abb1] 2024-11-15 17:05:57 -0800
-->
<para>
Fix cases where a logical replication
slot's <structfield>restart_lsn</structfield> could go backwards
(Masahiko Sawada)
<ulink url="&commit_baseurl;568e78a65">&sect;</ulink>
</para>
<para>
Previously, restarting logical replication could sometimes cause the
slot's restart point to be recomputed as an older value than had
previously been advertised
in <structname>pg_replication_slots</structname>. This is bad,
since for example WAL files might have been removed on the basis of
the later <structfield>restart_lsn</structfield> value, in which
case replication would fail to restart.
</para>
</listitem>
<listitem>
<!--
Author: Álvaro Herrera <alvherre@alvh.no-ip.org>
Branch: master [90bcc7c2d] 2024-11-15 12:53:12 +0100
Branch: REL_17_STABLE [cb844d66b] 2024-11-15 12:53:12 +0100
Branch: REL_16_STABLE [ea1649c35] 2024-11-15 12:53:12 +0100
Branch: REL_15_STABLE [e28cf2fbc] 2024-11-15 12:53:12 +0100
Branch: REL_14_STABLE [ba2535841] 2024-11-15 12:53:12 +0100
-->
<para>
Avoid deleting still-needed WAL files
during <application>pg_rewind</application>
(Polina Bungina, Alexander Kukushkin)
<ulink url="&commit_baseurl;cb844d66b">&sect;</ulink>
</para>
<para>
Previously, in unlucky cases, it was possible
for <application>pg_rewind</application> to remove important WAL
files from the rewound demoted primary. In particular this happens
if those files have been marked for archival (i.e.,
their <filename>.ready</filename> files were created) but not yet
archived. Then the newly promoted node no longer has such files
because of them having been recycled, but likely they are needed
for recovery in the demoted node.
If <application>pg_rewind</application> removes them, recovery is
not possible anymore.
</para>
</listitem>
<listitem>
<!--
Author: Michael Paquier <michael@paquier.xyz>
Branch: master [818119afc] 2024-11-15 11:31:58 +0900
Branch: REL_17_STABLE [1d6a03ea4] 2024-11-15 11:32:13 +0900
Branch: REL_16_STABLE [afa20845d] 2024-11-15 11:32:16 +0900
Branch: REL_15_STABLE [154c5b42a] 2024-11-15 11:32:18 +0900
-->
<para>
Fix race conditions associated with dropping shared statistics
entries (Kyotaro Horiguchi, Michael Paquier)
<ulink url="&commit_baseurl;1d6a03ea4">&sect;</ulink>
</para>
<para>
These bugs could lead to loss of statistics data, assertion
failures, or <quote>can only drop stats once</quote> errors.
</para>
</listitem>
<listitem>
<!--
Author: Peter Geoghegan <pg@bowt.ie>
Branch: master [93063e2e4] 2024-11-12 20:57:45 -0500
Branch: REL_17_STABLE [7af6d1306] 2024-11-12 20:57:43 -0500
Branch: REL_16_STABLE [05aac2e83] 2024-11-12 20:57:41 -0500
Branch: REL_15_STABLE [16a2bb079] 2024-11-12 20:57:39 -0500
Branch: REL_14_STABLE [2a30b6836] 2024-11-12 20:57:37 -0500
Branch: REL_13_STABLE [e493ea866] 2024-11-12 20:57:35 -0500
-->
<para>
Count index scans in <filename>contrib/bloom</filename> indexes in
the statistics views, such as the
<structname>pg_stat_user_indexes</structname>.<structfield>idx_scan</structfield>
counter (Masahiro Ikeda)
<ulink url="&commit_baseurl;7af6d1306">&sect;</ulink>
</para>
</listitem>
<listitem>
<!--
Author: Alexander Korotkov <akorotkov@postgresql.org>
Branch: master [db22b9002] 2024-11-12 01:44:20 +0200
Branch: REL_17_STABLE [a6fa869cf] 2024-11-12 01:51:20 +0200
Branch: REL_16_STABLE [b242aba02] 2024-11-12 01:53:40 +0200
Branch: REL_15_STABLE [713b8546a] 2024-11-12 01:54:30 +0200
Branch: REL_14_STABLE [247e7647f] 2024-11-12 01:54:35 +0200
Branch: REL_13_STABLE [5411e8213] 2024-11-12 01:54:38 +0200
-->
<para>
Fix crash when checking to see if an index's opclass options have
changed (Alexander Korotkov)
<ulink url="&commit_baseurl;a6fa869cf">&sect;</ulink>
</para>
<para>
Some forms of <command>ALTER TABLE</command> would fail if the
table has an index with non-default operator class options.
</para>
</listitem>
<listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [b69bdcee9] 2024-11-15 18:23:38 -0500
Branch: REL_17_STABLE [5f28e6ba7] 2024-11-15 18:23:38 -0500
Branch: REL_16_STABLE [b6312becc] 2024-11-15 18:23:38 -0500
Branch: REL_15_STABLE [2496c3f6f] 2024-11-15 18:23:38 -0500
Branch: REL_14_STABLE [2bdd3b248] 2024-11-15 18:23:38 -0500
-->
<para>
Avoid assertion failure caused by disconnected NFA sub-graphs in
regular expression parsing (Tom Lane)
<ulink url="&commit_baseurl;5f28e6ba7">&sect;</ulink>
</para>
<para>
This bug does not appear to have any visible consequences in
non-assert builds.
</para>
</listitem>
</itemizedlist>
</sect2>
</sect1>
<sect1 id="release-17-1">
<title>Release 17.1</title>
<formalpara>
<title>Release date:</title>
<para>2024-11-14</para>
</formalpara>
<para>
This release contains a variety of fixes from 17.0.
For information about new features in major release 17, see
<xref linkend="release-17"/>.
</para>
<sect2 id="release-17-1-migration">
<title>Migration to Version 17.1</title>
<para>
A dump/restore is not required for those running 17.X.
</para>
<para>
However, if you have ever detached a partition from a partitioned
table that has a foreign-key reference to another partitioned table,
and not dropped the former partition, then you may have catalog and/or
data corruption to repair, as detailed in the fifth changelog entry
below.
</para>
<para>
Also, in the uncommon case that a
database's <varname>LC_CTYPE</varname> setting is <literal>C</literal>
while its <varname>LC_COLLATE</varname> setting is some other locale,
indexes on textual columns should be reindexed, as described in the
sixth changelog entry below.
</para>
</sect2>
<sect2 id="release-17-1-changes">
<title>Changes</title>
<itemizedlist>
<listitem>
<!--
Author: Nathan Bossart <nathan@postgresql.org>
Branch: master [cd7ab5753] 2024-11-11 09:00:00 -0600
Branch: REL_17_STABLE [edcda9bb4] 2024-11-11 09:00:00 -0600
Branch: REL_16_STABLE [562289460] 2024-11-11 09:00:00 -0600
Branch: REL_15_STABLE [6db5ea8de] 2024-11-11 09:00:00 -0600
Branch: REL_14_STABLE [4e51030af] 2024-11-11 09:00:00 -0600
Branch: REL_13_STABLE [952ff31e2] 2024-11-11 09:00:00 -0600
Branch: REL_12_STABLE [448525e8a] 2024-11-11 09:00:00 -0600
-->
<para>
Ensure cached plans are marked as dependent on the calling role when
RLS applies to a non-top-level table reference (Nathan Bossart)
<ulink url="&commit_baseurl;edcda9bb4">&sect;</ulink>
</para>
<para>
If a CTE, subquery, sublink, security invoker view, or coercion
projection in a query references a table with row-level security
policies, we neglected to mark the resulting plan as potentially
dependent on which role is executing it. This could lead to later
query executions in the same session using the wrong plan, and then
returning or hiding rows that should have been hidden or returned
instead.
</para>
<para>
The <productname>PostgreSQL</productname> Project thanks
Wolfgang Walther for reporting this problem.
(CVE-2024-10976)
</para>
</listitem>
<listitem>
<!--
Author: Michael Paquier <michael@paquier.xyz>
Branch: master [bf8835ea9] 2024-11-11 10:19:52 +0900
Branch: REL_17_STABLE [a5cc4c667] 2024-11-11 10:19:56 +0900
Branch: REL_16_STABLE [67d28bd02] 2024-11-11 10:19:58 +0900
Branch: REL_15_STABLE [d2c3e31c1] 2024-11-11 10:19:59 +0900
Branch: REL_14_STABLE [e6c945476] 2024-11-11 10:20:01 +0900
Branch: REL_13_STABLE [7b49707b7] 2024-11-11 10:20:02 +0900
Branch: REL_12_STABLE [2a951ef0a] 2024-11-11 10:20:03 +0900
-->
<para>
Make <application>libpq</application> discard error messages
received during SSL or GSS protocol negotiation (Jacob Champion)
<ulink url="&commit_baseurl;a5cc4c667">&sect;</ulink>
</para>
<para>
An error message received before encryption negotiation is completed
might have been injected by a man-in-the-middle, rather than being
real server output. Reporting it opens the door to various security
hazards; for example, the message might spoof a query result that a
careless user could mistake for correct output. The best answer
seems to be to discard such data and rely only
on <application>libpq</application>'s own report of the connection
failure.
</para>
<para>
The <productname>PostgreSQL</productname> Project thanks
Jacob Champion for reporting this problem.
(CVE-2024-10977)
</para>
</listitem>
<listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [5a2fed911] 2024-11-11 10:29:54 -0500
Branch: REL_17_STABLE [cd82afdda] 2024-11-11 10:29:54 -0500
Branch: REL_16_STABLE [ae340d031] 2024-11-11 10:29:54 -0500
Branch: REL_15_STABLE [a5d2e6205] 2024-11-11 10:29:54 -0500
Branch: REL_14_STABLE [2a68808e2] 2024-11-11 10:29:54 -0500
Branch: REL_13_STABLE [76123ded6] 2024-11-11 10:29:54 -0500
Branch: REL_12_STABLE [4c9d96f74] 2024-11-11 10:29:54 -0500
Branch: master [73c9f91a1] 2024-11-11 17:05:53 -0500
Branch: REL_17_STABLE [f4f5d27d8] 2024-11-11 17:05:53 -0500
Branch: REL_16_STABLE [95f5a5237] 2024-11-11 17:05:53 -0500
Branch: REL_15_STABLE [109a32380] 2024-11-11 17:05:53 -0500
Branch: REL_14_STABLE [00b94e8e2] 2024-11-11 17:05:53 -0500
Branch: REL_13_STABLE [dc7378793] 2024-11-11 17:05:53 -0500
Branch: REL_12_STABLE [0edad8654] 2024-11-11 17:05:53 -0500
-->
<para>
Fix unintended interactions between <command>SET SESSION
AUTHORIZATION</command> and <command>SET ROLE</command> (Tom Lane)
<ulink url="&commit_baseurl;cd82afdda">&sect;</ulink>
<ulink url="&commit_baseurl;f4f5d27d8">&sect;</ulink>
</para>
<para>
The SQL standard mandates that <command>SET SESSION
AUTHORIZATION</command> have a side-effect of doing <command>SET
ROLE NONE</command>. Our implementation of that was flawed,
creating more interaction between the two settings than intended.
Notably, rolling back a transaction that had done <command>SET
SESSION AUTHORIZATION</command> would revert <literal>ROLE</literal>
to <literal>NONE</literal> even if that had not been the previous
state, so that the effective user ID might now be different from
what it had been before the transaction. Transiently
setting <varname>session_authorization</varname> in a
function <literal>SET</literal> clause had a similar effect.
A related bug was that if a parallel worker
inspected <literal>current_setting('role')</literal>, it
saw <literal>none</literal> even when it should see something else.
</para>
<para>
The <productname>PostgreSQL</productname> Project thanks
Tom Lane for reporting this problem.
(CVE-2024-10978)
</para>
</listitem>
<listitem>
<!--
Author: Noah Misch <noah@leadboat.com>
Branch: master [b7e3a52a8] 2024-11-11 06:23:43 -0800
Branch: REL_17_STABLE [3ebcfa54d] 2024-11-11 06:23:46 -0800
Branch: REL_16_STABLE [8fe3e697a] 2024-11-11 06:23:47 -0800
Branch: REL_15_STABLE [e530835c6] 2024-11-11 06:23:47 -0800
Branch: REL_14_STABLE [d15ec27c9] 2024-11-11 06:23:47 -0800
Branch: REL_13_STABLE [e428cd058] 2024-11-11 06:23:48 -0800
Branch: REL_12_STABLE [2ab12d860] 2024-11-11 06:23:48 -0800
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: REL_14_STABLE [f89bd92c9] 2024-11-11 10:42:32 -0500
Branch: REL_13_STABLE [6bccd7b03] 2024-11-11 10:42:32 -0500
Branch: REL_12_STABLE [b1e58defb] 2024-11-11 10:42:32 -0500
Branch: master [a34c33fd2] 2024-11-11 12:20:08 -0500
Branch: REL_17_STABLE [4cd4f3b97] 2024-11-11 12:20:08 -0500
Branch: REL_16_STABLE [88269df4d] 2024-11-11 12:20:08 -0500
Branch: REL_16_STABLE [168579e23] 2024-11-11 12:27:06 -0500
Author: Noah Misch <noah@leadboat.com>
Branch: REL_16_STABLE [c335264c9] 2024-11-11 10:55:18 -0800
Branch: REL_15_STABLE [16ed4f4d0] 2024-11-11 10:56:05 -0800
Branch: REL_14_STABLE [c1fff7b1b] 2024-11-11 10:56:09 -0800
Branch: REL_13_STABLE [9f97c31c2] 2024-11-11 10:56:12 -0800
Branch: REL_12_STABLE [1e457468f] 2024-11-11 10:56:14 -0800
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [c4252c9ef] 2024-11-11 13:57:21 -0500
Branch: REL_17_STABLE [8d19f3fea] 2024-11-11 13:57:21 -0500
Branch: REL_16_STABLE [64df88700] 2024-11-11 13:57:40 -0500
Branch: REL_15_STABLE [c834b375a] 2024-11-11 13:57:41 -0500
Branch: REL_14_STABLE [256e34653] 2024-11-11 13:57:41 -0500
Branch: REL_13_STABLE [0bd9560d9] 2024-11-11 13:57:41 -0500
Branch: REL_12_STABLE [9fc1c3a02] 2024-11-11 13:57:41 -0500
-->
<para>
Prevent trusted PL/Perl code from changing environment variables
(Andrew Dunstan, Noah Misch)
<ulink url="&commit_baseurl;3ebcfa54d">&sect;</ulink>
<ulink url="&commit_baseurl;4cd4f3b97">&sect;</ulink>
<ulink url="&commit_baseurl;8d19f3fea">&sect;</ulink>
</para>
<para>
The ability to manipulate process environment variables such
as <literal>PATH</literal> gives an attacker opportunities to
execute arbitrary code. Therefore, <quote>trusted</quote> PLs must
not offer the ability to do that. To fix <literal>plperl</literal>,
replace <varname>%ENV</varname> with a tied hash that rejects any
modification attempt with a warning.
Untrusted <literal>plperlu</literal> retains the ability to change
the environment.
</para>
<para>
The <productname>PostgreSQL</productname> Project thanks
Coby Abrams for reporting this problem.
(CVE-2024-10979)
</para>
</listitem>
<listitem>
<!--
Author: Álvaro Herrera <alvherre@alvh.no-ip.org>
Branch: master [53af9491a] 2024-10-22 16:01:18 +0200
Branch: REL_17_STABLE [5914a22f6] 2024-10-22 16:01:18 +0200
Branch: REL_16_STABLE [2aaf2a28b] 2024-10-22 16:01:18 +0200
Branch: REL_15_STABLE [5d83bad6b] 2024-10-22 16:01:18 +0200
Branch: REL_14_STABLE [46a8c27a7] 2024-10-22 16:01:18 +0200
Branch: REL_13_STABLE [d20194cea] 2024-10-22 16:01:18 +0200
Branch: master [2d5fe5140] 2024-10-30 10:54:03 +0100
Branch: REL_17_STABLE [936ab6de9] 2024-10-30 10:54:03 +0100
Branch: REL_16_STABLE [f7d510a38] 2024-10-30 10:54:03 +0100
Branch: REL_15_STABLE [1b216fcef] 2024-10-30 10:54:03 +0100
-->
<para>
Fix updates of catalog state for foreign-key constraints when
attaching or detaching table partitions (Jehan-Guillaume de
Rorthais, Tender Wang, Álvaro Herrera)
<ulink url="&commit_baseurl;5914a22f6">&sect;</ulink>
<ulink url="&commit_baseurl;936ab6de9">&sect;</ulink>
</para>
<para>
If the referenced table is partitioned, then different catalog
entries are needed for a referencing table that is stand-alone
versus one that is a partition. <literal>ATTACH/DETACH
PARTITION</literal> commands failed to perform this conversion
correctly. In particular, after <literal>DETACH</literal> the now
stand-alone table would be missing foreign-key enforcement triggers,
which could result in the table later containing rows that fail the
foreign-key constraint. A subsequent re-<literal>ATTACH</literal>
could fail with surprising errors, too.
</para>
<para>
The way to fix this is to do <command>ALTER TABLE DROP
CONSTRAINT</command> on the now stand-alone table for each faulty
constraint, and then re-add the constraint. If re-adding the
constraint fails, then some erroneous data has crept in. You will
need to manually re-establish consistency between the referencing
and referenced tables, then re-add the constraint.
</para>
<para>
This query can be used to identify broken constraints and construct
the commands needed to recreate them:
<programlisting>
SELECT conrelid::pg_catalog.regclass AS "constrained table",
conname AS constraint,
confrelid::pg_catalog.regclass AS "references",
pg_catalog.format('ALTER TABLE %s DROP CONSTRAINT %I;',
conrelid::pg_catalog.regclass, conname) AS "drop",
pg_catalog.format('ALTER TABLE %s ADD CONSTRAINT %I %s;',
conrelid::pg_catalog.regclass, conname,
pg_catalog.pg_get_constraintdef(oid)) AS "add"
FROM pg_catalog.pg_constraint c
WHERE contype = 'f' AND conparentid = 0 AND
(SELECT count(*) FROM pg_catalog.pg_constraint c2
WHERE c2.conparentid = c.oid) &lt;&gt;
((SELECT count(*) FROM pg_catalog.pg_inherits i
WHERE (i.inhparent = c.conrelid OR i.inhparent = c.confrelid) AND
EXISTS (SELECT 1 FROM pg_catalog.pg_partitioned_table
WHERE partrelid = i.inhparent)) +
CASE WHEN pg_catalog.pg_partition_root(conrelid) = confrelid THEN
(SELECT count(*) FROM pg_catalog.pg_partition_tree(confrelid)
WHERE level = 1)
ELSE 0 END);
</programlisting>
Since it is possible that one or more of the <literal>ADD
CONSTRAINT</literal> steps will fail, you should save the query's
output in a file and then attempt to perform each step.
</para>
</listitem>
<listitem>
<!--
Author: Jeff Davis <jdavis@postgresql.org>
Branch: REL_17_STABLE [8148e7124] 2024-11-06 14:44:35 -0800
-->
<para>
Fix test for <literal>C</literal> locale
when <varname>LC_COLLATE</varname> is different
from <varname>LC_CTYPE</varname> (Jeff Davis)
<ulink url="&commit_baseurl;8148e7124">&sect;</ulink>
</para>
<para>
When using <literal>libc</literal> as the default collation
provider, the test to see if <literal>C</literal> locale is in use
for collation accidentally checked <varname>LC_CTYPE</varname>
not <varname>LC_COLLATE</varname>. This has no impact in the
typical case where those settings are the same, nor if both are
not <literal>C</literal> (nor its alias <literal>POSIX</literal>).
However, if <varname>LC_CTYPE</varname> is <literal>C</literal>
while <varname>LC_COLLATE</varname> is some other locale, wrong
query answers could ensue, and corruption of indexes on strings was
possible. Users of databases with such settings should reindex
affected indexes after installing this update.
The converse case with <varname>LC_COLLATE</varname>
being <literal>C</literal> while <varname>LC_CTYPE</varname> is some
other locale would cause performance degradation, but no actual
errors.
</para>
</listitem>
<listitem>
<!--
Author: Amit Langote <amitlan@postgresql.org>
Branch: master [075acdd93] 2024-11-08 17:25:24 +0900
Branch: REL_17_STABLE [a0cdfc889] 2024-11-08 17:19:35 +0900
Branch: REL_16_STABLE [f734b6b4d] 2024-11-08 17:19:13 +0900
Branch: REL_15_STABLE [33040b171] 2024-11-08 17:18:55 +0900
Branch: REL_14_STABLE [62df5484f] 2024-11-08 17:18:38 +0900
Branch: REL_13_STABLE [054701a2b] 2024-11-08 17:18:21 +0900
Branch: REL_12_STABLE [9c4757491] 2024-11-08 17:18:04 +0900
Branch: master [90fe6251c] 2024-11-08 16:07:22 +0900
Branch: REL_17_STABLE [b6484ca95] 2024-11-08 16:07:13 +0900
Branch: REL_16_STABLE [dd2f8ebee] 2024-11-08 16:07:05 +0900
Branch: REL_15_STABLE [0a620659c] 2024-11-08 16:06:58 +0900
Branch: REL_14_STABLE [96f9b29a3] 2024-11-08 16:06:46 +0900
Branch: REL_13_STABLE [ff65f695c] 2024-11-08 16:06:12 +0900
Branch: REL_12_STABLE [46d9be5ef] 2024-11-08 16:05:33 +0900
-->
<para>
Don't use partitionwise joins or grouping if the query's collation
for the key column doesn't match the partition key's collation (Jian
He, Webbo Han)
<ulink url="&commit_baseurl;a0cdfc889">&sect;</ulink>
<ulink url="&commit_baseurl;b6484ca95">&sect;</ulink>
</para>
<para>
Such plans could produce incorrect results.
</para>
</listitem>
<listitem>
<!--
Author: Richard Guo <rguo@postgresql.org>
Branch: master [f00ab1fd1] 2024-11-08 11:21:11 +0900
Branch: REL_17_STABLE [78b1c553b] 2024-11-08 11:24:26 +0900
-->
<para>
Avoid planner failure after converting an <literal>IS NULL</literal>
test on a <literal>NOT NULL</literal> column to
constant <literal>FALSE</literal> (Richard Guo)
<ulink url="&commit_baseurl;78b1c553b">&sect;</ulink>
</para>
<para>
This bug typically led to errors such as <quote>variable not found
in subplan target lists</quote>.
</para>
</listitem>
<listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [5a4416192] 2024-10-09 17:07:53 -0400
Branch: REL_17_STABLE [a3c4a91f1] 2024-10-09 17:07:53 -0400
-->
<para>
Avoid possible planner crash while inlining a SQL function whose
arguments contain certain array-related constructs (Tom Lane, Nathan
Bossart)
<ulink url="&commit_baseurl;a3c4a91f1">&sect;</ulink>
</para>
</listitem>
<listitem>
<!--
Author: Dean Rasheed <dean.a.rasheed@gmail.com>
Branch: master [dddb5640c] 2024-10-03 12:53:03 +0100
Branch: REL_17_STABLE [d7d297f84] 2024-10-03 12:50:38 +0100
Branch: master [259a0a99f] 2024-10-03 13:48:32 +0100
Branch: REL_17_STABLE [34ae54af9] 2024-10-03 13:45:37 +0100
-->
<para>
Fix possible wrong answers or <quote>wrong varnullingrels</quote>
planner errors for <literal>MERGE ... WHEN NOT MATCHED BY
SOURCE</literal> actions (Dean Rasheed)
<ulink url="&commit_baseurl;d7d297f84">&sect;</ulink>
<ulink url="&commit_baseurl;34ae54af9">&sect;</ulink>
</para>
</listitem>
<listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [9f954177b] 2024-10-12 14:56:08 -0400
Branch: REL_17_STABLE [54889ea64] 2024-10-12 14:56:08 -0400
Branch: REL_16_STABLE [64635c8af] 2024-10-12 14:56:08 -0400
Branch: REL_15_STABLE [4f3bccbaa] 2024-10-12 14:56:08 -0400
Branch: REL_14_STABLE [4ca708eb3] 2024-10-12 14:56:08 -0400
Branch: REL_13_STABLE [76de4b182] 2024-10-12 14:56:08 -0400
-->
<para>
Fix possible <quote>could not find pathkey item to sort</quote>
error when the output of a <literal>UNION ALL</literal> member query
needs to be sorted, and the sort column is an expression (Andrei
Lepikhov, Tom Lane)
<ulink url="&commit_baseurl;54889ea64">&sect;</ulink>
</para>
</listitem>
<listitem>
<!--
Author: Peter Geoghegan <pg@bowt.ie>
Branch: master [763d65ae2] 2024-10-30 10:57:19 -0400
Branch: REL_17_STABLE [c177726ae] 2024-10-30 10:57:17 -0400
-->
<para>
Fix edge case in B-tree ScalarArrayOp index scans (Peter Geoghegan)
<ulink url="&commit_baseurl;c177726ae">&sect;</ulink>
</para>
<para>
When a scrollable cursor with a plan of this kind was backed up to its
starting point and then run forward again, wrong answers were
possible.
</para>
</listitem>
<listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [68ad9816c] 2024-10-21 15:08:22 -0400
Branch: REL_17_STABLE [3685ad618] 2024-10-21 15:08:22 -0400
Branch: REL_16_STABLE [6c3b2d204] 2024-10-21 15:08:22 -0400
Branch: REL_15_STABLE [c80a1e048] 2024-10-21 15:08:22 -0400
Branch: REL_14_STABLE [5e94f616c] 2024-10-21 15:08:22 -0400
Branch: REL_13_STABLE [beab395a4] 2024-10-21 15:08:22 -0400
Branch: REL_12_STABLE [6a57a457c] 2024-10-21 15:08:22 -0400
-->
<para>
Fix assertion failure or confusing error message for <literal>COPY
(<replaceable>query</replaceable>) TO ...</literal>, when
the <replaceable>query</replaceable> is rewritten by a <literal>DO
INSTEAD NOTIFY</literal> rule (Tender Wang, Tom Lane)
<ulink url="&commit_baseurl;3685ad618">&sect;</ulink>
</para>
</listitem>
<listitem>
<!--
Author: Michael Paquier <michael@paquier.xyz>
Branch: master [089aac631] 2024-10-17 08:44:50 +0900
Branch: REL_17_STABLE [c06a4746b] 2024-10-17 08:45:56 +0900
-->
<para>
Fix validation
of <command>COPY</command>'s <literal>FORCE_NOT_NULL</literal>
and <literal>FORCE_NULL</literal> options (Joel Jacobson)
<ulink url="&commit_baseurl;c06a4746b">&sect;</ulink>
</para>
<para>
Some incorrect usages are now rejected as they should be.
</para>
</listitem>
<listitem>
<!--
Author: Amit Langote <amitlan@postgresql.org>
Branch: master [11c87216d] 2024-10-20 12:20:55 +0900
Branch: REL_17_STABLE [7148cb3e3] 2024-10-20 12:21:12 +0900
Branch: REL_16_STABLE [fa4f11854] 2024-10-20 12:21:03 +0900
-->
<para>
Fix server crash when a <function>json_objectagg()</function> call
contains a volatile function (Amit Langote)
<ulink url="&commit_baseurl;7148cb3e3">&sect;</ulink>
</para>
</listitem>
<listitem>
<!--
Author: Thomas Munro <tmunro@postgresql.org>
Branch: master [98c7c7152] 2024-10-17 22:11:59 +1300
Branch: REL_17_STABLE [4ac5d33a8] 2024-10-17 22:10:29 +1300
Branch: REL_16_STABLE [53edc9485] 2024-10-17 22:08:13 +1300
Branch: REL_15_STABLE [1831545ca] 2024-10-17 22:04:05 +1300
Branch: REL_14_STABLE [20d948994] 2024-10-17 22:01:54 +1300
Branch: REL_13_STABLE [45329466f] 2024-10-17 22:00:38 +1300
Branch: REL_12_STABLE [4fa80a6d7] 2024-10-17 22:00:16 +1300
-->
<para>
Fix detection of skewed data during parallel hash join (Thomas
Munro)
<ulink url="&commit_baseurl;4ac5d33a8">&sect;</ulink>
</para>
<para>
After repartitioning the inner side of a hash join because one
partition has accumulated too many tuples, we check to see if all
the partition's tuples went into the same child partition, which
suggests that they all have the same hash value and further
repartitioning cannot improve matters. This check malfunctioned in
some cases, allowing repeated futile repartitioning which would
eventually end in a resource-exhaustion error.
</para>
</listitem>
<listitem>
<!--
Author: Jeff Davis <jdavis@postgresql.org>
Branch: master [a9ed7d944] 2024-10-07 17:51:14 -0700
Branch: REL_17_STABLE [2fe4167bc] 2024-10-07 17:54:19 -0700
-->
<para>
Avoid crash when <command>ALTER DATABASE SET</command> is used to
set a server parameter that requires search-path-based lookup, such
as <varname>default_text_search_config</varname> (Jeff Davis)
<ulink url="&commit_baseurl;2fe4167bc">&sect;</ulink>
</para>
</listitem>
<listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [68dfecbef] 2024-10-05 14:46:44 -0400
Branch: REL_17_STABLE [fee8cb947] 2024-10-05 14:46:44 -0400
-->
<para>
Avoid repeated lookups of opclasses and collations while creating a
new index on a partitioned table (Tom Lane)
<ulink url="&commit_baseurl;fee8cb947">&sect;</ulink>
</para>
<para>
This was problematic mainly because some of the lookups would be
done with a restricted <varname>search_path</varname>, leading to
unexpected failures if the <command>CREATE INDEX</command> command
referenced objects outside <literal>pg_catalog</literal>.
</para>
<para>
This fix also prevents comments on the parent partitioned index from
being copied to child indexes.
</para>
</listitem>
<listitem>
<!--
Author: Michael Paquier <michael@paquier.xyz>
Branch: master [49a23441c] 2024-10-29 08:41:33 +0900
Branch: REL_17_STABLE [bb584e831] 2024-10-29 08:41:53 +0900
-->
<para>
Add missing dependency from a partitioned table to a non-built-in
access method specified in <literal>CREATE TABLE ... USING</literal>
(Michael Paquier)
<ulink url="&commit_baseurl;bb584e831">&sect;</ulink>
</para>
<para>
Dropping the access method should be blocked when a table exists
that depends on it, but it was not, allowing subsequent odd
behavior. Note that this fix only prevents problems for partitioned
tables created after this update.
</para>
</listitem>
<listitem>
<!--
Author: Thomas Munro <tmunro@postgresql.org>
Branch: master [adbb27ac8] 2024-10-05 13:50:02 +1300
Branch: REL_17_STABLE [9c7acc333] 2024-10-05 13:54:35 +1300
Branch: REL_16_STABLE [ce17de580] 2024-10-05 14:01:24 +1300
-->
<para>
Disallow locale names containing non-ASCII characters (Thomas Munro)
<ulink url="&commit_baseurl;9c7acc333">&sect;</ulink>
</para>
<para>
This is only an issue on Windows, as such locale names are not used
elsewhere. They are problematic because it's quite unclear what
encoding such names are represented in (since the locale itself
defines the encoding to use). In
recent <productname>PostgreSQL</productname> releases, an abort in
the Windows runtime library could occur because of confusion about
that.
</para>
<para>
Anyone who encounters the new error message should either create a
new duplicated locale with an ASCII-only name using Windows Locale
Builder, or consider using BCP 47-compliant locale names
like <literal>tr-TR</literal>.
</para>
</listitem>
<listitem>
<!--
Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
Branch: master [1a43de5e0] 2024-10-21 09:49:21 +0300
Branch: REL_17_STABLE [234f6d09e] 2024-10-21 09:49:29 +0300
Branch: REL_16_STABLE [22665f210] 2024-10-21 09:49:32 +0300
Branch: REL_15_STABLE [d97419b85] 2024-10-21 09:49:35 +0300
Branch: REL_14_STABLE [520ec2474] 2024-10-21 09:49:38 +0300
Branch: REL_13_STABLE [8e607a5a4] 2024-10-21 09:49:41 +0300
Branch: REL_12_STABLE [e2ec3afeb] 2024-10-21 09:49:50 +0300
-->
<para>
Fix race condition in committing a serializable transaction (Heikki
Linnakangas)
<ulink url="&commit_baseurl;234f6d09e">&sect;</ulink>
</para>
<para>
Mis-processing of a recently committed transaction could lead to an
assertion failure or a <quote>could not access status of
transaction</quote> error.
</para>
</listitem>
<listitem>
<!--
Author: Michael Paquier <michael@paquier.xyz>
Branch: master [cf4401fe6] 2024-10-01 15:44:03 +0900
Branch: REL_17_STABLE [f250cb29d] 2024-10-01 15:44:07 +0900
Branch: REL_16_STABLE [7de9b64a5] 2024-10-01 15:44:09 +0900
Branch: REL_15_STABLE [41ab45680] 2024-10-01 15:44:11 +0900
Branch: REL_14_STABLE [5f1510787] 2024-10-01 15:44:12 +0900
Branch: REL_13_STABLE [7bfaa4671] 2024-10-01 15:44:14 +0900
Branch: REL_12_STABLE [34d751ba7] 2024-10-01 15:44:15 +0900
-->
<para>
Fix race condition in <command>COMMIT PREPARED</command>
that resulted in orphaned 2PC files (wuchengwen)
<ulink url="&commit_baseurl;f250cb29d">&sect;</ulink>
</para>
<para>
A concurrent <command>PREPARE TRANSACTION</command> could
cause <command>COMMIT PREPARED</command> to not remove the on-disk
two-phase state file for the completed transaction. There was no
immediate ill effect, but a subsequent crash-and-recovery could fail
with <quote>could not access status of transaction</quote>,
requiring manual removal of the orphaned file to restore service.
</para>
</listitem>
<listitem>
<!--
Author: Michael Paquier <michael@paquier.xyz>
Branch: master [09620ea09] 2024-09-27 09:40:09 +0900
Branch: REL_17_STABLE [1532599a8] 2024-09-27 09:40:14 +0900
Branch: REL_16_STABLE [afbd3dc7d] 2024-09-27 09:40:16 +0900
Branch: REL_15_STABLE [a613edc5c] 2024-09-27 09:40:18 +0900
Branch: REL_14_STABLE [6530b869c] 2024-09-27 09:40:19 +0900
Branch: REL_13_STABLE [911eda9f3] 2024-09-27 09:40:21 +0900
Branch: REL_12_STABLE [2f33e68a5] 2024-09-27 09:40:22 +0900
-->
<para>
Avoid invalid memory accesses after skipping an invalid toast index
during <command>VACUUM FULL</command> (Tender Wang)
<ulink url="&commit_baseurl;1532599a8">&sect;</ulink>
</para>
<para>
A list tracking yet-to-be-rebuilt indexes was not properly updated
in this code path, risking assertion failures or crashes later on.
</para>
</listitem>
<listitem>
<!--
Author: Noah Misch <noah@leadboat.com>
Branch: master [a07e03fd8] 2024-09-24 15:25:18 -0700
Branch: REL_17_STABLE [fd27b878c] 2024-09-24 15:25:21 -0700
Branch: REL_16_STABLE [63f019805] 2024-09-24 15:25:22 -0700
Branch: REL_15_STABLE [8590c942c] 2024-09-24 15:25:23 -0700
Branch: REL_14_STABLE [82c2d9e02] 2024-09-24 15:25:23 -0700
Branch: REL_13_STABLE [a8ad1929d] 2024-09-24 15:25:24 -0700
Branch: REL_12_STABLE [7354b680a] 2024-09-24 15:25:25 -0700
Branch: master [aac2c9b4f] 2024-09-24 15:25:18 -0700
Branch: REL_17_STABLE [3b7a689e1] 2024-09-24 15:25:22 -0700
Branch: REL_16_STABLE [51ff46de2] 2024-09-24 15:25:22 -0700
Branch: REL_15_STABLE [5c837f8fa] 2024-09-24 15:25:23 -0700
Branch: REL_14_STABLE [f51b34b3e] 2024-09-24 15:25:23 -0700
Branch: REL_13_STABLE [14c57cb63] 2024-09-24 15:25:24 -0700
Branch: REL_12_STABLE [cafcc3ad0] 2024-09-24 15:25:25 -0700
Branch: master [0d5a3d757] 2024-09-29 15:54:25 -0700
Branch: REL_17_STABLE [da99df15c] 2024-09-29 15:54:28 -0700
Branch: REL_16_STABLE [4c922821e] 2024-09-29 15:54:28 -0700
Branch: REL_15_STABLE [159bf0f31] 2024-09-29 15:54:29 -0700
Branch: REL_14_STABLE [b9ee1339b] 2024-09-29 15:54:29 -0700
Branch: REL_13_STABLE [db1992455] 2024-09-29 15:54:29 -0700
Branch: REL_12_STABLE [5a33a39a8] 2024-09-29 15:54:30 -0700
Branch: master [e947224cb] 2024-10-24 09:16:14 -0700
Branch: REL_17_STABLE [e11907682] 2024-10-24 09:16:17 -0700
Branch: REL_16_STABLE [2d63c964f] 2024-10-24 09:16:18 -0700
Branch: REL_15_STABLE [d34ffbaa1] 2024-10-24 09:16:18 -0700
Branch: REL_14_STABLE [ad24b7565] 2024-10-24 09:16:19 -0700
Branch: REL_13_STABLE [3e5ea478d] 2024-10-24 09:16:19 -0700
Branch: REL_12_STABLE [a0c0078b1] 2024-10-24 09:16:20 -0700
Branch: master [30d47ec8c] 2024-10-29 09:39:55 -0700
Branch: REL_17_STABLE [9aef6f19a] 2024-10-29 09:39:58 -0700
Branch: REL_16_STABLE [370bc7740] 2024-10-29 09:39:58 -0700
Branch: REL_15_STABLE [0fe002d0c] 2024-10-29 09:39:59 -0700
Branch: REL_14_STABLE [11e3f288f] 2024-10-29 09:39:59 -0700
Branch: REL_13_STABLE [2a912bc1a] 2024-10-29 09:40:00 -0700
Branch: REL_12_STABLE [c2139db11] 2024-10-29 09:40:00 -0700
Branch: master [b412f402d] 2024-11-02 09:04:55 -0700
Branch: REL_17_STABLE [0bcb9d079] 2024-11-02 09:05:00 -0700
Branch: REL_16_STABLE [6c837c237] 2024-11-02 09:05:02 -0700
Branch: REL_15_STABLE [6d5b4031b] 2024-11-02 09:05:04 -0700
Branch: REL_14_STABLE [bb3054297] 2024-11-02 09:05:05 -0700
Branch: REL_13_STABLE [6b01cac0b] 2024-11-02 09:05:07 -0700
Branch: REL_12_STABLE [d729f1ea5] 2024-11-02 09:05:08 -0700
Branch: master [825c72c07] 2024-11-02 19:42:52 -0700
Branch: REL_17_STABLE [54bc22fbf] 2024-11-02 19:42:55 -0700
Branch: REL_16_STABLE [f8f9110b4] 2024-11-02 19:42:56 -0700
Branch: REL_15_STABLE [d14e94ac4] 2024-11-02 19:42:56 -0700
Branch: REL_14_STABLE [803655e66] 2024-11-02 19:42:57 -0700
Branch: REL_13_STABLE [4dc0c933f] 2024-11-02 19:42:57 -0700
Branch: REL_12_STABLE [766809db3] 2024-11-02 19:42:58 -0700
-->
<para>
Fix ways in which an <quote>in place</quote> catalog update could be
lost (Noah Misch)
<ulink url="&commit_baseurl;fd27b878c">&sect;</ulink>
<ulink url="&commit_baseurl;3b7a689e1">&sect;</ulink>
<ulink url="&commit_baseurl;da99df15c">&sect;</ulink>
<ulink url="&commit_baseurl;e11907682">&sect;</ulink>
<ulink url="&commit_baseurl;9aef6f19a">&sect;</ulink>
<ulink url="&commit_baseurl;0bcb9d079">&sect;</ulink>
<ulink url="&commit_baseurl;54bc22fbf">&sect;</ulink>
</para>
<para>
Normal row updates write a new version of the row to preserve
rollback-ability of the transaction. However, certain system
catalog updates are intentionally non-transactional and are done
with an in-place update of the row. These patches fix race
conditions that could cause the effects of an in-place update to be
lost. As an example, it was possible to forget having set
<structname>pg_class</structname>.<structfield>relhasindex</structfield>
to true, preventing updates of the new index and thus causing index
corruption.
</para>
</listitem>
<listitem>
<!--
Author: Noah Misch <noah@leadboat.com>
Branch: REL_17_STABLE [a4668c99f] 2024-10-25 06:51:06 -0700
Branch: REL_16_STABLE [d36b4d8ec] 2024-10-25 06:51:06 -0700
Branch: REL_15_STABLE [3baf804b7] 2024-10-25 06:51:07 -0700
Branch: REL_14_STABLE [dca68242a] 2024-10-25 06:51:07 -0700
Branch: REL_13_STABLE [67f30c79a] 2024-10-25 06:51:08 -0700
Branch: REL_12_STABLE [da9950456] 2024-10-25 06:51:08 -0700
-->
<para>
Reset catalog caches at end of recovery (Noah Misch)
<ulink url="&commit_baseurl;a4668c99f">&sect;</ulink>
</para>
<para>
This prevents scenarios wherein an in-place catalog update could be
lost due to using stale data from a catalog cache.
</para>
</listitem>
<listitem>
<!--
Author: Noah Misch <noah@leadboat.com>
Branch: master [ac04aa84a] 2024-09-17 19:53:11 -0700
Branch: REL_17_STABLE Release: REL_17_0 [2370582ab] 2024-09-17 19:54:25 -0700
Branch: REL_16_STABLE [6f6521de9] 2024-09-17 19:54:25 -0700
Branch: REL_15_STABLE [884860bfc] 2024-09-17 19:54:26 -0700
Branch: REL_14_STABLE [5c698e898] 2024-09-17 19:54:26 -0700
Branch: REL_13_STABLE [916b8ae47] 2024-09-17 19:54:26 -0700
Branch: REL_12_STABLE [507b72bd9] 2024-09-17 19:54:26 -0700
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [b8df69049] 2024-11-08 13:42:10 -0500
Branch: REL_17_STABLE [943b65358] 2024-11-08 13:42:01 -0500
Branch: REL_16_STABLE [06424e9a2] 2024-11-08 13:42:01 -0500
Branch: REL_15_STABLE [bcbdb176e] 2024-11-08 13:42:01 -0500
Branch: REL_14_STABLE [989ccd26c] 2024-11-08 13:42:01 -0500
Branch: REL_13_STABLE [62685876f] 2024-11-08 13:42:01 -0500
Branch: REL_12_STABLE [6e39ca6e7] 2024-11-08 13:42:01 -0500
-->
<para>
Avoid using parallel query while holding off interrupts
(Francesco Degrassi, Noah Misch, Tom Lane)
<ulink url="&commit_baseurl;2370582ab">&sect;</ulink>
<ulink url="&commit_baseurl;943b65358">&sect;</ulink>
</para>
<para>
This situation cannot arise normally, but it can be reached with
test scenarios such as using a SQL-language function as B-tree
support (which would be far too slow for production usage). If it
did occur it would result in an indefinite wait.
</para>
</listitem>
<listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [f8d9a9f21] 2024-10-06 16:03:48 -0400
Branch: REL_17_STABLE [3daeb539a] 2024-10-06 16:03:48 -0400
Branch: REL_16_STABLE [5de77b609] 2024-10-06 16:03:48 -0400
Branch: REL_15_STABLE [aef75219c] 2024-10-06 16:03:48 -0400
Branch: REL_14_STABLE [3922c9e9f] 2024-10-06 16:03:48 -0400
Branch: REL_13_STABLE [4a17acd0d] 2024-10-06 16:03:48 -0400
Branch: REL_12_STABLE [5c17f5a63] 2024-10-06 16:03:48 -0400
-->
<para>
Ignore not-yet-defined Portals in
the <structname>pg_cursors</structname> view (Tom Lane)
<ulink url="&commit_baseurl;3daeb539a">&sect;</ulink>
</para>
<para>
It is possible for user-defined code that inspects this view to be
called while a new cursor is being set up, and if that happens a
null pointer dereference would ensue. Avoid the problem by defining
the view to exclude incompletely-set-up cursors.
</para>
</listitem>
<listitem>
<!--
Author: Amit Kapila <akapila@postgresql.org>
Branch: master [022564f60] 2024-10-07 15:38:45 +0530
Branch: REL_17_STABLE [918107759] 2024-10-07 15:15:05 +0530
Branch: REL_16_STABLE [0f0e253db] 2024-10-07 15:04:05 +0530
Branch: REL_15_STABLE [8175a7d11] 2024-10-07 14:53:18 +0530
Branch: REL_14_STABLE [efe706e27] 2024-10-07 14:45:39 +0530
Branch: master [d759c1a0b] 2024-10-08 12:25:52 +0530
Branch: REL_17_STABLE [c4b8a916f] 2024-10-08 12:13:28 +0530
Branch: REL_16_STABLE [0c40d9019] 2024-10-08 12:01:35 +0530
Branch: REL_15_STABLE [5ce0dcc99] 2024-10-08 11:45:58 +0530
Branch: REL_14_STABLE [581092c90] 2024-10-08 11:30:26 +0530
-->
<para>
Avoid <quote>unexpected table_index_fetch_tuple call during logical
decoding</quote> error while decoding a transaction involving
insertion of a column default value (Takeshi Ideriha, Hou Zhijie)
<ulink url="&commit_baseurl;918107759">&sect;</ulink>
<ulink url="&commit_baseurl;c4b8a916f">&sect;</ulink>
</para>
</listitem>
<listitem>
<!--
Author: Masahiko Sawada <msawada@postgresql.org>
Branch: master [1b9b6cc34] 2024-10-16 12:08:05 -0700
Branch: REL_17_STABLE [eef9cc4dc] 2024-10-16 12:08:02 -0700
Branch: REL_16_STABLE [05e982cdc] 2024-10-16 12:08:00 -0700
Branch: REL_15_STABLE [4a675f318] 2024-10-16 12:07:58 -0700
Branch: REL_14_STABLE [5c1ed0a51] 2024-10-16 12:07:55 -0700
Branch: REL_13_STABLE [cb988b04d] 2024-10-16 12:07:52 -0700
Branch: REL_12_STABLE [53fa68b3b] 2024-10-16 12:07:50 -0700
-->
<para>
Reduce memory consumption of logical decoding (Masahiko Sawada)
<ulink url="&commit_baseurl;eef9cc4dc">&sect;</ulink>
</para>
<para>
Use a smaller default block size to store tuple data received during
logical replication. This reduces memory wastage, which has been
reported to be severe while processing long-running transactions,
even leading to out-of-memory failures.
</para>
</listitem>
<listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [c96de42c4] 2024-10-16 17:36:40 -0400
Branch: REL_17_STABLE [b5eef7539] 2024-10-16 17:36:29 -0400
Branch: REL_16_STABLE [25d639eea] 2024-10-16 17:36:29 -0400
Branch: REL_15_STABLE [b35231989] 2024-10-16 17:36:29 -0400
Branch: REL_14_STABLE [ab13c46ff] 2024-10-16 17:36:30 -0400
Branch: REL_13_STABLE [0d83ced3c] 2024-10-16 17:36:30 -0400
Branch: REL_12_STABLE [cf1443d67] 2024-10-16 17:36:30 -0400
-->
<para>
Fix behavior of stable functions called from
a <command>CALL</command> statement's argument list, when
the <command>CALL</command> is within a
PL/pgSQL <literal>EXCEPTION</literal> block (Tom Lane)
<ulink url="&commit_baseurl;b5eef7539">&sect;</ulink>
</para>
<para>
As with a similar fix in our previous quarterly releases, this case
allowed such functions to be passed the wrong snapshot, causing them
to see stale values of rows modified since the start of the outer
transaction.
</para>
</listitem>
<listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [920d51979] 2024-10-02 17:30:36 -0400
Branch: REL_17_STABLE [c7a201053] 2024-10-02 17:30:36 -0400
Branch: REL_16_STABLE [65f431aff] 2024-10-02 17:30:36 -0400
Branch: REL_15_STABLE [bb8c89dbc] 2024-10-02 17:30:36 -0400
Branch: REL_14_STABLE [e7af9b52f] 2024-10-02 17:30:36 -0400
Branch: REL_13_STABLE [2120eda94] 2024-10-02 17:30:36 -0400
Branch: REL_12_STABLE [47d8a15de] 2024-10-02 17:30:36 -0400
-->
<para>
Parse <application>libpq</application>'s <literal>keepalives</literal>
connection option in the same way as other integer-valued options
(Yuto Sasaki)
<ulink url="&commit_baseurl;c7a201053">&sect;</ulink>
</para>
<para>
The coding used here rejected trailing whitespace in the option
value, unlike other cases. This turns out to be problematic
in <application>ecpg</application>'s usage, for example.
</para>
</listitem>
<listitem>
<!--
Author: Michael Paquier <michael@paquier.xyz>
Branch: master [a0bff38d1] 2024-10-23 08:33:54 +0900
Branch: REL_17_STABLE [2c37cb26f] 2024-10-23 08:35:00 +0900
Branch: REL_16_STABLE [a1e613b81] 2024-10-23 08:35:02 +0900
Branch: REL_15_STABLE [335501fb2] 2024-10-23 08:35:04 +0900
Branch: REL_14_STABLE [9a51d4af1] 2024-10-23 08:35:05 +0900
Branch: REL_13_STABLE [fcafbaadf] 2024-10-23 08:35:07 +0900
Branch: REL_12_STABLE [9ecfd8a48] 2024-10-23 08:35:08 +0900
-->
<para>
In <application>ecpglib</application>, fix out-of-bounds read when
parsing incorrect datetime input (Bruce Momjian, Pavel Nekrasov)
<ulink url="&commit_baseurl;2c37cb26f">&sect;</ulink>
</para>
<para>
It was possible to try to read the location just before the start of
a constant array. Real-world consequences seem minimal, though.
</para>
</listitem>
<listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [1591b38d1] 2024-09-24 17:21:38 -0400
Branch: REL_17_STABLE [923a71584] 2024-09-24 17:21:38 -0400
-->
<para>
Fix <application>psql</application>'s describe commands to again
work with pre-9.4 servers (Tom Lane)
<ulink url="&commit_baseurl;923a71584">&sect;</ulink>
</para>
<para>
Commands involving display of an ACL (permissions) column failed
with very old <productname>PostgreSQL</productname> servers, due to
use of a function not present in those versions.
</para>
</listitem>
<listitem>
<!--
Author: Michael Paquier <michael@paquier.xyz>
Branch: master [9f34cae14] 2024-10-14 12:27:51 +0900
Branch: REL_17_STABLE [8a6170860] 2024-10-14 12:27:57 +0900
Branch: REL_16_STABLE [6331972c7] 2024-10-14 12:28:01 +0900
-->
<para>
Avoid hanging if an interval less than 1ms is specified
in <application>psql</application>'s <literal>\watch</literal>
command (Andrey Borodin, Michael Paquier)
<ulink url="&commit_baseurl;8a6170860">&sect;</ulink>
</para>
<para>
Instead, treat this the same as an interval of zero (no wait between
executions).
</para>
</listitem>
<listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [b1008c1f0] 2024-11-04 14:36:11 -0500
Branch: REL_17_STABLE [e2a912909] 2024-11-04 14:36:04 -0500
-->
<para>
Fix failure to find replication password
in <filename>~/.pgpass</filename> (Tom Lane)
<ulink url="&commit_baseurl;e2a912909">&sect;</ulink>
</para>
<para>
<application>pg_basebackup</application>
and <application>pg_receivewal</application> failed to match an entry
in <filename>~/.pgpass</filename> that
had <literal>replication</literal> in the database name field, if
no <option>-d</option> or <option>--dbname</option> switch was
supplied. This resulted in an unexpected prompt for password.
</para>
</listitem>
<listitem>
<!--
Author: Robert Haas <rhaas@postgresql.org>
Branch: master [0b1765d95] 2024-11-04 10:11:05 -0500
Branch: REL_17_STABLE [e36711442] 2024-11-04 10:19:37 -0500
-->
<para>
In <application>pg_combinebackup</application>, throw an error if an
incremental backup file is present in a directory that is supposed to
contain a full backup (Robert Haas)
<ulink url="&commit_baseurl;e36711442">&sect;</ulink>
</para>
</listitem>
<listitem>
<!--
Author: Robert Haas <rhaas@postgresql.org>
Branch: master [6c24801b1] 2024-11-04 09:55:02 -0500
Branch: REL_17_STABLE [0d635b615] 2024-11-04 10:04:26 -0500
-->
<para>
In <application>pg_combinebackup</application>, don't construct
filenames containing double slashes (Robert Haas)
<ulink url="&commit_baseurl;0d635b615">&sect;</ulink>
</para>
<para>
This caused no functional problems, but the duplicate slashes were
visible in error messages, which could create confusion.
</para>
</listitem>
<listitem>
<!--
Author: Michael Paquier <michael@paquier.xyz>
Branch: master [1ab67c9df] 2024-09-25 14:43:16 +0900
Branch: REL_17_STABLE [85cb21df6] 2024-09-25 14:44:50 +0900
Branch: REL_16_STABLE [1ea4d9c00] 2024-09-25 14:44:53 +0900
Branch: REL_15_STABLE [74eaa0544] 2024-09-25 14:44:56 +0900
Branch: REL_14_STABLE [60c618216] 2024-09-25 14:44:57 +0900
Branch: REL_13_STABLE [9db4598c9] 2024-09-25 14:44:59 +0900
Branch: REL_12_STABLE [ef57a7135] 2024-09-25 14:45:01 +0900
Author: Fujii Masao <fujii@postgresql.org>
Branch: master [20cfec896] 2024-09-30 11:13:55 +0900
Branch: REL_17_STABLE [77f154681] 2024-09-30 11:15:56 +0900
Branch: REL_16_STABLE [653ce5b8b] 2024-09-30 11:16:15 +0900
Branch: REL_15_STABLE [92cc21d15] 2024-09-30 11:16:21 +0900
Branch: REL_14_STABLE [88e1153cb] 2024-09-30 11:16:27 +0900
Branch: REL_13_STABLE [9410f7cbf] 2024-09-30 11:17:23 +0900
Author: Nathan Bossart <nathan@postgresql.org>
Branch: master [8318f2b17] 2024-10-07 16:49:20 -0500
Branch: REL_17_STABLE [5bd26e652] 2024-10-07 16:49:20 -0500
Branch: REL_16_STABLE [eba8cc1af] 2024-10-07 16:49:20 -0500
Branch: REL_15_STABLE [6d047c6a9] 2024-10-07 16:49:20 -0500
Branch: REL_14_STABLE [ce6f27857] 2024-10-07 16:49:20 -0500
Branch: REL_13_STABLE [d4ade0baf] 2024-10-07 16:49:20 -0500
Branch: REL_12_STABLE [5e0431c32] 2024-10-07 16:49:20 -0500
-->
<para>
Avoid trying to reindex temporary tables and indexes
in <application>vacuumdb</application> and in
parallel <application>reindexdb</application> (VaibhaveS, Michael
Paquier, Fujii Masao, Nathan Bossart)
<ulink url="&commit_baseurl;85cb21df6">&sect;</ulink>
<ulink url="&commit_baseurl;77f154681">&sect;</ulink>
<ulink url="&commit_baseurl;5bd26e652">&sect;</ulink>
</para>
<para>
Reindexing other sessions' temporary tables cannot work, but the
check to skip them was missing in some code paths, leading to
unwanted failures.
</para>
</listitem>
<listitem>
<!--
Author: Thomas Munro <tmunro@postgresql.org>
Branch: master [9044fc1d4] 2024-11-06 23:17:18 +1300
Branch: REL_17_STABLE [b7467ab71] 2024-11-06 23:07:34 +1300
Branch: REL_16_STABLE [ee67b73f5] 2024-11-06 23:09:03 +1300
Branch: REL_15_STABLE [19bf81c06] 2024-11-06 23:09:28 +1300
Branch: REL_14_STABLE [0b022ddf3] 2024-11-06 23:09:50 +1300
Branch: REL_13_STABLE [e88d824a4] 2024-11-06 23:10:05 +1300
Branch: REL_12_STABLE [50c1453a3] 2024-11-06 23:10:20 +1300
-->
<para>
Fix incorrect LLVM-generated code on ARM64 platforms (Thomas
Munro, Anthonin Bonnefoy)
<ulink url="&commit_baseurl;b7467ab71">&sect;</ulink>
</para>
<para>
When using JIT compilation on ARM platforms, the generated code
could not support relocation distances exceeding 32 bits, allowing
unlucky placement of generated code to cause server crashes on
large-memory systems.
</para>
</listitem>
<listitem>
<!--
Author: Nathan Bossart <nathan@postgresql.org>
Branch: master [5d6187d2a] 2024-10-07 13:51:03 -0500
Branch: REL_17_STABLE [a356d23fd] 2024-10-07 13:51:03 -0500
Branch: REL_16_STABLE [8aaf88b63] 2024-10-07 13:51:03 -0500
Branch: REL_15_STABLE [01731eeea] 2024-10-07 13:51:03 -0500
Branch: REL_14_STABLE [5cea7168d] 2024-10-07 13:51:03 -0500
Branch: REL_13_STABLE [b255493ae] 2024-10-07 13:51:03 -0500
Branch: REL_12_STABLE [c91d0af0a] 2024-10-07 13:51:03 -0500
-->
<para>
Fix a few places that assumed that process start time (represented
as a <type>time_t</type>) will fit into a <type>long</type> value
(Max Johnson, Nathan Bossart)
<ulink url="&commit_baseurl;a356d23fd">&sect;</ulink>
</para>
<para>
On platforms where <type>long</type> is 32 bits (notably Windows),
this coding would fail after Y2038. Most of the failures appear
only cosmetic, but notably <literal>pg_ctl start</literal> would
hang.
</para>
</listitem>
<listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [502e7bf7f] 2024-10-29 11:49:38 -0400
Branch: REL_17_STABLE [cad65907e] 2024-10-29 11:49:50 -0400
Branch: REL_16_STABLE [a0c8d600b] 2024-10-29 11:49:56 -0400
Branch: REL_15_STABLE [74f70cb86] 2024-10-29 11:50:00 -0400
Branch: REL_14_STABLE [dedced73e] 2024-10-29 11:50:05 -0400
Branch: REL_13_STABLE [8a8486175] 2024-10-29 11:50:10 -0400
Branch: REL_12_STABLE [8f1759c9b] 2024-10-29 11:50:14 -0400
Branch: master [b8ea0f675] 2024-09-14 17:55:02 -0400
Branch: REL_17_STABLE Release: REL_17_0 [6283ff201] 2024-09-14 17:55:02 -0400
Branch: REL_16_STABLE [2abc88958] 2024-09-14 17:55:03 -0400
Branch: REL_15_STABLE [2b94ee58b] 2024-09-14 17:55:03 -0400
Branch: REL_14_STABLE [b27622c90] 2024-09-14 17:55:03 -0400
Branch: REL_13_STABLE [b28b9b19b] 2024-09-14 17:55:03 -0400
Branch: REL_12_STABLE [205813da4] 2024-09-14 17:55:03 -0400
-->
<para>
Update time zone data files to <application>tzdata</application>
release 2024b (Tom Lane)
<ulink url="&commit_baseurl;cad65907e">&sect;</ulink>
<ulink url="&commit_baseurl;6283ff201">&sect;</ulink>
</para>
<para>
This <application>tzdata</application> release changes the old
System-V-compatibility zone names to duplicate the corresponding
geographic zones; for example <literal>PST8PDT</literal> is now an
alias for <literal>America/Los_Angeles</literal>. The main visible
consequence is that for timestamps before the introduction of
standardized time zones, the zone is considered to represent local
mean solar time for the named location. For example,
in <literal>PST8PDT</literal>, <type>timestamptz</type> input such
as <literal>1801-01-01 00:00</literal> would previously have been
rendered as <literal>1801-01-01 00:00:00-08</literal>, but now it is
rendered as <literal>1801-01-01 00:00:00-07:52:58</literal>.
</para>
<para>
Also, historical corrections for Mexico, Mongolia, and Portugal.
Notably, <literal>Asia/Choibalsan</literal> is now an alias
for <literal>Asia/Ulaanbaatar</literal> rather than being a separate
zone, mainly because the differences between those zones were found to
be based on untrustworthy data.
</para>
</listitem>
</itemizedlist>
</sect2>
</sect1>
<sect1 id="release-17">
<title>Release 17</title>
<formalpara>
<title>Release date:</title>
<para>2024-09-26</para>
</formalpara>
<sect2 id="release-17-highlights">
<title>Overview</title>
<para>
<productname>PostgreSQL</productname> 17 contains many new features
and enhancements, including:
</para>
<itemizedlist>
<listitem>
<para>
New memory management system for <command>VACUUM</command>, which reduces
memory consumption and can improve overall vacuuming performance.
</para>
</listitem>
<listitem>
<para>
New <acronym>SQL/JSON</acronym> capabilities, including constructors,
identity functions, and the <link
linkend="functions-sqljson-table"><function>JSON_TABLE()</function></link>
function, which converts JSON data into a table representation.
</para>
</listitem>
<listitem>
<para>
Various query performance improvements, including for sequential reads
using streaming I/O, write throughput under high concurrency, and
searches over multiple values in a <link linkend="btree">btree</link>
index.
</para>
</listitem>
<listitem>
<para>
Logical replication enhancements, including:
<itemizedlist>
<listitem>
<para>
Failover control
</para>
</listitem>
<listitem>
<para>
<link
linkend="app-pgcreatesubscriber"><application>pg_createsubscriber</application></link>,
a utility that creates logical replicas from physical standbys
</para>
</listitem>
<listitem>
<para>
<link
linkend="pgupgrade"><application>pg_upgrade</application></link> now
preserves logical replication slots on publishers and full
subscription state on subscribers. This will allow upgrades
to future major versions to continue logical replication without
requiring copy to resynchronize.
</para>
</listitem>
</itemizedlist>
</para>
</listitem>
<listitem>
<para>
New client-side connection option, <link
linkend="libpq-connect-sslnegotiation"><literal>sslnegotiation=direct</literal></link>,
that performs a direct TLS handshake to avoid a round-trip negotiation.
</para>
</listitem>
<listitem>
<para>
<link
linkend="app-pgbasebackup"><application>pg_basebackup</application></link>
now supports incremental backup.
</para>
</listitem>
<listitem>
<para>
<link linkend="sql-copy"><command>COPY</command></link> adds a new option,
<literal>ON_ERROR ignore</literal>, that allows a copy operation to
continue in the event of an error.
</para>
</listitem>
</itemizedlist>
<para>
The above items and other new features of
<productname>PostgreSQL</productname> 17 are explained in more detail
in the sections below.
</para>
</sect2>
<sect2 id="release-17-migration">
<title>Migration to Version 17</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 17 contains a number of changes that may affect compatibility
with previous releases. Observe the following incompatibilities:
</para>
<itemizedlist>
<!--
Author: Jeff Davis <jdavis@postgresql.org>
2024-03-04 [2af07e2f7] Fix search_path to a safe value during maintenance opera
Author: Jeff Davis <jdavis@postgresql.org>
2024-07-16 [b4da732fd64] When creating materialized views, use REFRESH to load data.
-->
<listitem>
<para>
Change functions to use a safe <xref linkend="guc-search-path"/>
during maintenance operations (Jeff Davis)
<ulink url="&commit_baseurl;2af07e2f7">&sect;</ulink>
<ulink url="&commit_baseurl;b4da732fd64">&sect;</ulink>
</para>
<para>
This prevents maintenance operations (<command>ANALYZE</command>,
<command>CLUSTER</command>, <command>CREATE
INDEX</command>, <command>CREATE
MATERIALIZED VIEW</command>, <command>REFRESH
MATERIALIZED VIEW</command>, <command>REINDEX</command>,
or <command>VACUUM</command>) from performing unsafe access.
Functions used by expression indexes and materialized views that
need to reference non-default schemas must specify a search path
during function creation.
</para>
</listitem>
<!--
Author: Michael Paquier <michael@paquier.xyz>
2023-08-28 [165d581f1] Tighten handling of "ago" in interval values
Author: Michael Paquier <michael@paquier.xyz>
2023-08-28 [617f9b7d4] Tighten unit parsing in internal values
-->
<listitem>
<para>
Restrict <literal>ago</literal> to only appear at the end in
<type>interval</type> values (Joseph Koshakow)
<ulink url="&commit_baseurl;165d581f1">&sect;</ulink>
<ulink url="&commit_baseurl;617f9b7d4">&sect;</ulink>
</para>
<para>
Also, prevent empty interval units from appearing multiple times.
</para>
</listitem>
<!--
Author: Thomas Munro <tmunro@postgresql.org>
2023-09-05 [f691f5b80] Remove the "snapshot too old" feature.
-->
<listitem>
<para>
Remove server variable old_snapshot_threshold (Thomas Munro)
<ulink url="&commit_baseurl;f691f5b80">&sect;</ulink>
</para>
<para>
This variable allowed vacuum to remove rows that potentially could
be still visible to running transactions, causing "snapshot too
old" errors later if accessed. This feature might be re-added
to <application>PostgreSQL</application> later if an improved
implementation is found.
</para>
</listitem>
<!--
Author: Nathan Bossart <nathan@postgresql.org>
2023-07-13 [a0363ab7a] Fix privilege check for SET SESSION AUTHORIZATION.
-->
<listitem>
<para>
Change <link linkend="sql-set-session-authorization"><command>SET
SESSION AUTHORIZATION</command></link> handling of the initial
session user's superuser status (Joseph Koshakow)
<ulink url="&commit_baseurl;a0363ab7a">&sect;</ulink>
</para>
<para>
The new behavior is based on the session user's superuser status at
the time the <command>SET SESSION AUTHORIZATION</command> command
is issued, rather than their superuser status at connection time.
</para>
</listitem>
<!--
Author: Nathan Bossart <nathan@postgresql.org>
2023-07-17 [884eee5bf] Remove db_user_namespace.
-->
<listitem>
<para>
Remove feature which simulated per-database users (Nathan Bossart)
<ulink url="&commit_baseurl;884eee5bf">&sect;</ulink>
</para>
<para>
The feature, <literal>db_user_namespace</literal>, was rarely used.
</para>
</listitem>
<!--
Author: Daniel Gustafsson <dgustafsson@postgresql.org>
2024-03-04 [cc09e6549] Remove the adminpack contrib extension
-->
<listitem>
<para>
Remove <application>adminpack</application> contrib extension
(Daniel Gustafsson)
<ulink url="&commit_baseurl;cc09e6549">&sect;</ulink>
</para>
<para>
This was used by now end-of-life <productname>pgAdmin
III</productname>.
</para>
</listitem>
<!--
Author: Thomas Munro <tmunro@postgresql.org>
2023-07-14 [d0c28601e] Remove wal_sync_method=fsync_writethrough on Windows.
-->
<listitem>
<para>
Remove <xref linkend="guc-wal-sync-method"/> value
<literal>fsync_writethrough</literal> on <systemitem
class="osname">Windows</systemitem> (Thomas Munro)
<ulink url="&commit_baseurl;d0c28601e">&sect;</ulink>
</para>
<para>
This value was the same as <literal>fsync</literal> on <systemitem
class="osname">Windows</systemitem>.
</para>
</listitem>
<!--
Author: Bruce Momjian <bruce@momjian.us>
2023-11-24 [344afc776] modify segno. for pg_walfile_name() and pg_walfile_name_
-->
<listitem>
<para>
Change file boundary handling of two <acronym>WAL</acronym> file
name functions (Kyotaro Horiguchi, Andres Freund, Bruce Momjian)
<ulink url="&commit_baseurl;344afc776">&sect;</ulink>
</para>
<para>
The functions <link
linkend="functions-admin-backup-table"><function>pg_walfile_name()</function></link>
and <function>pg_walfile_name_offset()</function> used to report
the previous <acronym>LSN</acronym> segment number when the
<acronym>LSN</acronym> was on a file segment boundary; it now
returns the current <acronym>LSN</acronym> segment.
</para>
</listitem>
<!--
Author: Michael Paquier <michael@paquier.xyz>
2023-12-11 [c7a3e6b46] Remove trace_recovery_messages
-->
<listitem>
<para>
Remove server variable <literal>trace_recovery_messages</literal>
since it is no longer needed (Bharath Rupireddy)
<ulink url="&commit_baseurl;c7a3e6b46">&sect;</ulink>
</para>
</listitem>
<!--
Author: Peter Eisentraut <peter@eisentraut.org>
2023-08-16 [78806a950] Remove incorrect field from information schema
-->
<listitem>
<para>
Remove <link
linkend="information-schema">information schema</link> column
<structname>element_types</structname>.<structfield>domain_default</structfield>
(Peter Eisentraut)
<ulink url="&commit_baseurl;78806a950">&sect;</ulink>
</para>
</listitem>
<!--
Author: Bruce Momjian <bruce@momjian.us>
2023-09-26 [15d5d7405] pgrowlocks: change lock mode output labels for consiste
-->
<listitem>
<para>
Change <application><xref linkend="pgrowlocks"/></application>
lock mode output labels (Bruce Momjian)
<ulink url="&commit_baseurl;15d5d7405">&sect;</ulink>
</para>
</listitem>
<!--
Author: Michael Paquier <michael@paquier.xyz>
2023-10-27 [74604a37f] Remove buffers_backend and buffers_backend_fsync from pg
-->
<listitem>
<para>
Remove <structfield>buffers_backend</structfield> and
<structfield>buffers_backend_fsync</structfield> from <link
linkend="monitoring-pg-stat-bgwriter-view"><structname>pg_stat_bgwriter</structname></link>
(Bharath Rupireddy)
<ulink url="&commit_baseurl;74604a37f">&sect;</ulink>
</para>
<para>
These fields are considered redundant to similar columns in <link
linkend="monitoring-pg-stat-io-view"><structname>pg_stat_io</structname></link>.
</para>
</listitem>
<!--
Author: Michael Paquier <michael@paquier.xyz>
2023-10-19 [13d00729d] Rename I/O timing statistics columns to shared_blk_{read
-->
<listitem>
<para>
Rename I/O block read/write timing statistics columns of
<application><xref linkend="pgstatstatements"/></application>
(Nazir Bilal Yavuz)
<ulink url="&commit_baseurl;13d00729d">&sect;</ulink>
</para>
<para>
This renames <structfield>blk_read_time</structfield>
to <structfield>shared_blk_read_time</structfield>,
and <structfield>blk_write_time</structfield> to
<structfield>shared_blk_write_time</structfield>.
</para>
</listitem>
<!--
Author: Peter Eisentraut <peter@eisentraut.org>
2024-01-13 [4f622503d] Make attstattarget nullable
Author: Peter Eisentraut <peter@eisentraut.org>
2024-03-17 [012460ee9] Make stxstattarget nullable
-->
<listitem>
<para>
Change <link
linkend="catalog-pg-attribute"><structname>pg_attribute</structname>.<structfield>attstattarget</structfield></link>
and
<structname>pg_statistic_ext</structname>.<structfield>stxstattarget</structfield>
to represent the default statistics target as <literal>NULL</literal>
(Peter Eisentraut)
<ulink url="&commit_baseurl;4f622503d">&sect;</ulink>
<ulink url="&commit_baseurl;012460ee9">&sect;</ulink>
</para>
</listitem>
<!--
Author: Jeff Davis <jdavis@postgresql.org>
2024-03-09 [f696c0cd5] Catalog changes preparing for builtin collation provider
-->
<listitem>
<para>
Rename <link
linkend="catalog-pg-collation"><structname>pg_collation</structname>.<structfield>colliculocale</structfield></link>
to <structfield>colllocale</structfield> and
<link linkend="catalog-pg-database"><structname>pg_database</structname>.<structfield>daticulocale</structfield></link>
to <structfield>datlocale</structfield> (Jeff Davis)
<ulink url="&commit_baseurl;f696c0cd5">&sect;</ulink>
</para>
</listitem>
<!--
Author: Masahiko Sawada <msawada@postgresql.org>
2024-04-02 [667e65aac] Use TidStore for dead tuple TIDs storage during lazy vac
Author: Masahiko Sawada <msawada@postgresql.org>
2024-06-14 [f1affb670] Reintroduce dead tuple counter in pg_stat_progress_vacuu
-->
<listitem>
<para>
Rename <link
linkend="vacuum-progress-reporting"><structname>pg_stat_progress_vacuum</structname></link>
column <structfield>max_dead_tuples</structfield>
to <structfield>max_dead_tuple_bytes</structfield>,
rename <structfield>num_dead_tuples</structfield> to
<structfield>num_dead_item_ids</structfield>, and add
<structfield>dead_tuple_bytes</structfield> (Masahiko Sawada)
<ulink url="&commit_baseurl;667e65aac">&sect;</ulink>
<ulink url="&commit_baseurl;f1affb670">&sect;</ulink>
</para>
</listitem>
<!--
Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
2024-02-28 [bcdfa5f2e] Rename SLRU elements in view pg_stat_slru
-->
<listitem>
<para>
Rename <acronym>SLRU</acronym> columns in system view <link
linkend="monitoring-pg-stat-slru-view"><structname>pg_stat_slru</structname></link>
(Alvaro Herrera)
<ulink url="&commit_baseurl;bcdfa5f2e">&sect;</ulink>
</para>
<para>
The column names accepted by <link
linkend="monitoring-stats-funcs-table"><function>pg_stat_reset_slru()</function></link>
are also changed.
</para>
</listitem>
</itemizedlist>
</sect2>
<sect2 id="release-17-changes">
<title>Changes</title>
<para>
Below you will find a detailed account of the changes between
<productname>PostgreSQL</productname> 17 and the previous major
release.
</para>
<sect3 id="release-17-server">
<title>Server</title>
<sect4 id="release-17-optimizer">
<title>Optimizer</title>
<itemizedlist>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
2023-11-17 [f7816aec2] Extract column statistics from CTE references, if possib
Author: Tom Lane <tgl@sss.pgh.pa.us>
2024-03-26 [a65724dfa] Propagate pathkeys from CTEs up to the outer query.
-->
<listitem>
<para>
Allow the optimizer to improve <acronym>CTE</acronym> plans by
considering the statistics and sort order of columns referenced in earlier row
output clauses (Jian Guo, Richard Guo, Tom Lane)
<ulink url="&commit_baseurl;f7816aec2">&sect;</ulink>
<ulink url="&commit_baseurl;a65724dfa">&sect;</ulink>
</para>
</listitem>
<!--
Author: David Rowley <drowley@postgresql.org>
2024-01-23 [b262ad440] Add better handling of redundant IS [NOT] NULL quals
Author: David Rowley <drowley@postgresql.org>
2024-04-12 [3af704098] Fix IS [NOT] NULL qual optimization for inheritance tabl
-->
<listitem>
<para>
Improve optimization of <literal>IS NOT NULL</literal> and
<literal>IS NULL</literal> query restrictions (David Rowley,
Richard Guo, Andy Fan)
<ulink url="&commit_baseurl;b262ad440">&sect;</ulink>
<ulink url="&commit_baseurl;3af704098">&sect;</ulink>
</para>
<para>
Remove <literal>IS NOT NULL</literal> restrictions from queries on
<literal>NOT NULL</literal> columns and eliminate scans on
<literal>NOT NULL</literal> columns if <literal>IS NULL</literal>
is specified.
</para>
</listitem>
<!--
Author: David Rowley <drowley@postgresql.org>
2024-03-04 [07c36c133] Support partition pruning on boolcol IS [NOT] UNKNOWN
-->
<listitem>
<para>
Allow partition pruning on boolean columns on <literal>IS [NOT]
UNKNOWN</literal> conditionals (David Rowley)
<ulink url="&commit_baseurl;07c36c133">&sect;</ulink>
</para>
</listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
2024-01-20 [075df6b20] Add planner support functions for range operators &lt;@ and
-->
<listitem>
<para>
Improve optimization of range values when using containment
operators &lt;@ and @&gt; (Kim Johan Andersson, Jian He)
<ulink url="&commit_baseurl;075df6b20">&sect;</ulink>
</para>
</listitem>
<!--
Author: Alexander Korotkov <akorotkov@postgresql.org>
2024-02-15 [9f1337639] Pull up ANY-SUBLINK with the necessary lateral support.
-->
<listitem>
<para>
Allow correlated <literal>IN</literal> subqueries to be transformed
into joins (Andy Fan, Tom Lane)
<ulink url="&commit_baseurl;9f1337639">&sect;</ulink>
</para>
</listitem>
<!--
Author: David Rowley <drowley@postgresql.org>
2023-10-05 [a8a968a82] Consider cheap startup paths in add_paths_to_append_rel
-->
<listitem>
<para>
Improve optimization of the <literal>LIMIT</literal> clause
on partitioned tables, inheritance parents, and <literal>UNION
ALL</literal> queries (Andy Fan, David Rowley)
<ulink url="&commit_baseurl;a8a968a82">&sect;</ulink>
</para>
</listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
2023-07-14 [e08d74ca1] Allow plan nodes with initPlans to be considered paralle
-->
<listitem>
<para>
Allow query nodes to be run in parallel in more cases (Tom Lane)
<ulink url="&commit_baseurl;e08d74ca1">&sect;</ulink>
</para>
</listitem>
<!--
Author: Alexander Korotkov <akorotkov@postgresql.org>
2024-01-21 [0452b461b] Explore alternative orderings of group-by pathkeys durin
-->
<listitem>
<para>
Allow <literal>GROUP BY</literal> columns to be internally
ordered to match <literal>ORDER BY</literal> (Andrei Lepikhov,
Teodor Sigaev)
<ulink url="&commit_baseurl;0452b461b">&sect;</ulink>
</para>
<para>
This can be disabled using server variable
<xref linkend="guc-enable-groupby-reordering"/>.
</para>
</listitem>
<!--
Author: David Rowley <drowley@postgresql.org>
2024-03-25 [66c0185a3] Allow planner to use Merge Append to efficiently impleme
-->
<listitem>
<para>
Allow <literal>UNION</literal> (without <literal>ALL</literal>)
to use MergeAppend (David Rowley)
<ulink url="&commit_baseurl;66c0185a3">&sect;</ulink>
</para>
</listitem>
<!--
Author: David Rowley <drowley@postgresql.org>
2024-02-01 [9d1a5354f] Fix costing bug in MergeAppend
-->
<listitem>
<para>
Fix MergeAppend plans to more accurately compute the number of
rows that need to be sorted (Alexander Kuzmenkov)
<ulink url="&commit_baseurl;9d1a5354f">&sect;</ulink>
</para>
</listitem>
<!--
Author: David Rowley <drowley@postgresql.org>
2023-07-04 [625d5b3ca] Allow Incremental Sorts on GiST and SP-GiST indexes
-->
<listitem>
<para>
Allow <link linkend="gist">GiST</link> and <link
linkend="spgist">SP-GiST</link> indexes to be part of incremental
sorts (Miroslav Bendik)
<ulink url="&commit_baseurl;625d5b3ca">&sect;</ulink>
</para>
<para>
This is particularly useful for <literal>ORDER BY</literal>
clauses where the first column has a GiST and SP-GiST index,
and other columns do not.
</para>
</listitem>
<!--
Author: Alexander Korotkov <akorotkov@postgresql.org>
2023-11-27 [bc3c8db8a] Display length and bounds histograms in pg_stats
-->
<listitem>
<para>
Add columns to <link
linkend="view-pg-stats"><structname>pg_stats</structname></link>
to report range-type histogram information (Egor Rogov, Soumyadeep
Chakraborty)
<ulink url="&commit_baseurl;bc3c8db8a">&sect;</ulink>
</para>
</listitem>
</itemizedlist>
</sect4>
<sect4 id="release-17-indexes">
<title>Indexes</title>
<itemizedlist>
<!--
Author: Peter Geoghegan <pg@bowt.ie>
2024-04-06 [5bf748b86] Enhance nbtree ScalarArrayOp execution.
-->
<listitem>
<para>
Allow <link linkend="btree">btree</link> indexes to more
efficiently find a set of values, such as those supplied by
<literal>IN</literal> clauses using constants (Peter Geoghegan,
Matthias van de Meent)
<ulink url="&commit_baseurl;5bf748b86">&sect;</ulink>
</para>
</listitem>
<!--
Author: Tomas Vondra <tomas.vondra@postgresql.org>
2023-12-08 [b43757171] Allow parallel CREATE INDEX for BRIN indexes
-->
<listitem>
<para>
Allow <link linkend="brin"><acronym>BRIN</acronym></link> indexes
to be created using parallel workers (Tomas Vondra, Matthias van
de Meent)
<ulink url="&commit_baseurl;b43757171">&sect;</ulink>
</para>
</listitem>
</itemizedlist>
</sect4>
<sect4 id="release-17-performance">
<title>General Performance</title>
<itemizedlist>
<!--
Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
2024-04-03 [6dbb49026] Combine freezing and pruning steps in VACUUM
-->
<listitem>
<para>
Allow vacuum to more efficiently remove and freeze tuples (Melanie
Plageman, Heikki Linnakangas)
<ulink url="&commit_baseurl;6dbb49026">&sect;</ulink>
</para>
<para>
<acronym>WAL</acronym> traffic caused by vacuum is also more
compact.
</para>
</listitem>
<!--
Author: John Naylor <john.naylor@postgresql.org>
2024-03-07 [ee1b30f12] Add template for adaptive radix tree
Author: Masahiko Sawada <msawada@postgresql.org>
2024-03-21 [30e144287] Add TIDStore, to store sets of TIDs (ItemPointerData) ef
Author: Masahiko Sawada <msawada@postgresql.org>
2024-04-02 [667e65aac] Use TidStore for dead tuple TIDs storage during lazy vac
Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
2024-04-03 [6dbb49026] Combine freezing and pruning steps in VACUUM
-->
<listitem>
<para>
Allow vacuum to more efficiently store tuple references (Masahiko
Sawada, John Naylor)
<ulink url="&commit_baseurl;ee1b30f12">&sect;</ulink>
<ulink url="&commit_baseurl;30e144287">&sect;</ulink>
<ulink url="&commit_baseurl;667e65aac">&sect;</ulink>
<ulink url="&commit_baseurl;6dbb49026">&sect;</ulink>
</para>
<para>
Additionally, vacuum is no longer silently limited to one gigabyte
of memory when <xref linkend="guc-maintenance-work-mem"/> or <xref
linkend="guc-autovacuum-work-mem"/> are higher.
</para>
</listitem>
<!--
Author: Robert Haas <rhaas@postgresql.org>
2024-01-18 [c120550ed] Optimize vacuuming of relations with no indexes.
-->
<listitem>
<para>
Optimize vacuuming of relations with no indexes (Melanie Plageman)
<ulink url="&commit_baseurl;c120550ed">&sect;</ulink>
</para>
</listitem>
<!--
Author: Thomas Munro <tmunro@postgresql.org>
2024-04-06 [98f320eb2] Increase default vacuum_buffer_usage_limit to 2MB.
-->
<listitem>
<para>
Increase default <xref linkend="guc-vacuum-buffer-usage-limit"/>
to 2MB (Thomas Munro)
<ulink url="&commit_baseurl;98f320eb2">&sect;</ulink>
</para>
</listitem>
<!--
Author: Nathan Bossart <nathan@postgresql.org>
2024-03-26 [d365ae705] Optimize roles_is_member_of() with a Bloom filter.
-->
<listitem>
<para>
Improve performance when checking roles with many memberships
(Nathan Bossart)
<ulink url="&commit_baseurl;d365ae705">&sect;</ulink>
</para>
</listitem>
<!--
Author: Michael Paquier <michael@paquier.xyz>
2023-07-25 [71e4cc6b8] Optimize WAL insertion lock acquisition and release with
-->
<listitem>
<para>
Improve performance of heavily-contended <acronym>WAL</acronym>
writes (Bharath Rupireddy)
<ulink url="&commit_baseurl;71e4cc6b8">&sect;</ulink>
</para>
</listitem>
<!--
Author: David Rowley <drowley@postgresql.org>
2024-04-07 [c4ab7da60] Avoid needless large memcpys in libpq socket writing
-->
<listitem>
<para>
Improve performance when transferring large blocks of data to a
client (Melih Mutlu)
<ulink url="&commit_baseurl;c4ab7da60">&sect;</ulink>
</para>
</listitem>
<!--
Author: Thomas Munro <tmunro@postgresql.org>
2024-04-03 [210622c60] Provide vectored variant of ReadBuffer().
Author: Thomas Munro <tmunro@postgresql.org>
2024-04-08 [b7b0f3f27] Use streaming I/O in sequential scans.
Author: Thomas Munro <tmunro@postgresql.org>
2024-04-08 [041b96802] Use streaming I/O in ANALYZE.
-->
<listitem>
<para>
Allow the grouping of file system reads with the new system variable
<xref linkend="guc-io-combine-limit"/> (Thomas Munro, Andres Freund,
Melanie Plageman, Nazir Bilal Yavuz)
<ulink url="&commit_baseurl;210622c60">&sect;</ulink>
<ulink url="&commit_baseurl;b7b0f3f27">&sect;</ulink>
<ulink url="&commit_baseurl;041b96802">&sect;</ulink>
</para>
</listitem>
</itemizedlist>
</sect4>
<sect4 id="release-17-monitoring">
<title>Monitoring</title>
<itemizedlist>
<!--
Author: Michael Paquier <michael@paquier.xyz>
2023-10-30 [96f052613] Introduce pg_stat_checkpointer
Author: Alexander Korotkov <akorotkov@postgresql.org>
2023-12-25 [12915a58e] Enhance checkpointer restartpoint statistics
Author: Alexander Korotkov <akorotkov@postgresql.org>
2024-03-14 [e820db5b5] Improve documentation for pg_stat_checkpointer fields
-->
<listitem>
<para>
Create system view <link
linkend="monitoring-pg-stat-checkpointer-view"><structname>pg_stat_checkpointer</structname></link>
(Bharath Rupireddy, Anton A. Melnikov, Alexander Korotkov)
<ulink url="&commit_baseurl;96f052613">&sect;</ulink>
<ulink url="&commit_baseurl;12915a58e">&sect;</ulink>
<ulink url="&commit_baseurl;e820db5b5">&sect;</ulink>
</para>
<para>
Relevant columns have been removed from <link
linkend="pg-stat-bgwriter-view"><structname>pg_stat_bgwriter</structname></link>
and added to this new system view.
</para>
</listitem>
<!--
Author: Michael Paquier <michael@paquier.xyz>
2023-11-12 [23c8c0c8f] Add ability to reset all shared stats types in pg_stat_r
Author: Michael Paquier <michael@paquier.xyz>
2023-11-16 [2e8a0edc2] Add target "slru" to pg_stat_reset_shared()
Author: Michael Paquier <michael@paquier.xyz>
2023-11-14 [e5cca6288] Add support for pg_stat_reset_slru without argument
-->
<listitem>
<para>
Improve control over resetting statistics (Atsushi Torikoshi,
Bharath Rupireddy)
<ulink url="&commit_baseurl;23c8c0c8f">&sect;</ulink>
<ulink url="&commit_baseurl;2e8a0edc2">&sect;</ulink>
<ulink url="&commit_baseurl;e5cca6288">&sect;</ulink>
</para>
<para>
Allow <link
linkend="monitoring-stats-funcs-table"><function>pg_stat_reset_shared()</function></link>
(with no arguments) and
pg_stat_reset_shared(<literal>NULL</literal>) to reset all
shared statistics. Allow pg_stat_reset_shared('slru') and <link
linkend="monitoring-stats-funcs-table"><function>pg_stat_reset_slru()</function></link>
(with no arguments) to reset <acronym>SLRU</acronym> statistics,
which was already possible with pg_stat_reset_slru(NULL).
</para>
</listitem>
<!--
Author: Michael Paquier <michael@paquier.xyz>
2024-01-25 [1d35f705e] Add more LOG messages when starting and ending recovery
-->
<listitem>
<para>
Add log messages related to <acronym>WAL</acronym> recovery from
backups (Andres Freund)
<ulink url="&commit_baseurl;1d35f705e">&sect;</ulink>
</para>
</listitem>
<!--
Author: Michael Paquier <michael@paquier.xyz>
2023-08-26 [e48b19c5d] Generate new LOG for "trust" connections under log_conne
-->
<listitem>
<para>
Add <xref linkend="guc-log-connections"/> log line for
<literal>trust</literal> connections (Jacob Champion)
<ulink url="&commit_baseurl;e48b19c5d">&sect;</ulink>
</para>
</listitem>
<!--
Author: Amit Kapila <akapila@postgresql.org>
2023-11-21 [7c3fb505b] Log messages for replication slot acquisition and releas
-->
<listitem>
<para>
Add log message to report walsender acquisition and release of
replication slots (Bharath Rupireddy)
<ulink url="&commit_baseurl;7c3fb505b">&sect;</ulink>
</para>
<para>
This is enabled by the server variable <xref
linkend="guc-log-replication-commands"/>.
</para>
</listitem>
<!--
Author: Michael Paquier <michael@paquier.xyz>
2023-08-20 [1e68e43d3] Add system view pg_wait_events
-->
<listitem>
<para>
Add system view <link
linkend="view-pg-wait-events"><structname>pg_wait_events</structname></link>
that reports wait event types (Bertrand Drouvot)
<ulink url="&commit_baseurl;1e68e43d3">&sect;</ulink>
</para>
<para>
This is useful for adding descriptions
to wait events reported in <link
linkend="monitoring-pg-stat-activity-view"><structname>pg_stat_activity</structname></link>.
</para>
</listitem>
<!--
Author: Thomas Munro <tmunro@postgresql.org>
2023-10-13 [0013ba290] Add wait events for checkpoint delay mechanism.
-->
<listitem>
<para>
Add <link linkend="view-pg-wait-events">wait events</link> for
checkpoint delays (Thomas Munro)
<ulink url="&commit_baseurl;0013ba290">&sect;</ulink>
</para>
</listitem>
<!--
Author: Masahiko Sawada <msawada@postgresql.org>
2023-07-11 [46ebdfe16] Report index vacuum progress.
-->
<listitem>
<para>
Allow vacuum to report the progress of index processing (Sami
Imseih)
<ulink url="&commit_baseurl;46ebdfe16">&sect;</ulink>
</para>
<para>
This appears in system view <link
linkend="pg-stat-progress-vacuum-view"><structname>pg_stat_progress_vacuum</structname></link>
columns <structfield>indexes_total</structfield> and
<structfield>indexes_processed</structfield>.
</para>
</listitem>
</itemizedlist>
</sect4>
<sect4 id="release-17-privileges">
<title>Privileges</title>
<itemizedlist>
<!--
Author: Nathan Bossart <nathan@postgresql.org>
2024-03-13 [ecb0fd337] Reintroduce MAINTAIN privilege and pg_maintain predefine
-->
<listitem>
<para>
Allow granting the right to perform maintenance operations
(Nathan Bossart)
<ulink url="&commit_baseurl;ecb0fd337">&sect;</ulink>
</para>
<para>
The permission can be granted on a per-table basis using the <link
linkend="ddl-priv-maintain"><literal>MAINTAIN</literal></link>
privilege and on a per-role basis via the <link
linkend="predefined-roles"><literal>pg_maintain</literal></link>
predefined role. Permitted operations are
<command>VACUUM</command>, <command>ANALYZE</command>,
<command>REINDEX</command>, <command>REFRESH MATERIALIZED
VIEW</command>, <command>CLUSTER</command>, and <command>LOCK
TABLE</command>.
</para>
</listitem>
<!--
Author: Nathan Bossart <nathan@postgresql.org>
2024-02-14 [8d8afd48d] Allow pg_monitor to execute pg_current_logfile().
-->
<listitem>
<para>
Allow roles with <link
linkend="predefined-roles"><literal>pg_monitor</literal></link>
membership to execute <link
linkend="functions-info-session-table"><function>pg_current_logfile()</function></link>
(Pavlo Golub, Nathan Bossart)
<ulink url="&commit_baseurl;8d8afd48d">&sect;</ulink>
</para>
</listitem>
</itemizedlist>
</sect4>
<sect4 id="release-17-server-config">
<title>Server Configuration</title>
<itemizedlist>
<!--
Author: Robert Haas <rhaas@postgresql.org>
2024-03-29 [d3ae2a24f] Add allow_alter_system GUC.
-->
<listitem>
<para>
Add system variable <xref linkend="guc-allow-alter-system"/>
to disallow <link linkend="sql-altersystem"><command>ALTER
SYSTEM</command></link> (Jelte Fennema-Nio, Gabriele Bartolini)
<ulink url="&commit_baseurl;d3ae2a24f">&sect;</ulink>
</para>
</listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
2023-10-21 [2d870b4ae] Allow ALTER SYSTEM to set unrecognized custom GUCs.
-->
<listitem>
<para>
Allow <link linkend="sql-altersystem"><command>ALTER
SYSTEM</command></link> to set unrecognized custom server variables
(Tom Lane)
<ulink url="&commit_baseurl;2d870b4ae">&sect;</ulink>
</para>
<para>
This is also possible with <link linkend="sql-grant"><literal>GRANT
ON PARAMETER</literal></link>.
</para>
</listitem>
<!--
Author: Alexander Korotkov <akorotkov@postgresql.org>
2024-02-15 [51efe38cb] Introduce transaction_timeout
Author: Alexander Korotkov <akorotkov@postgresql.org>
2024-02-16 [bf82f4379] Followup fixes for transaction_timeout
Author: Alexander Korotkov <akorotkov@postgresql.org>
2024-02-25 [28e858c0f] Improve documentation and GUC description for transactio
-->
<listitem>
<para>
Add server variable <xref linkend="guc-transaction-timeout"/> to
restrict the duration of transactions (Andrey Borodin, Japin Li,
Junwang Zhao, Alexander Korotkov)
<ulink url="&commit_baseurl;51efe38cb">&sect;</ulink>
<ulink url="&commit_baseurl;bf82f4379">&sect;</ulink>
<ulink url="&commit_baseurl;28e858c0f">&sect;</ulink>
</para>
</listitem>
<!--
Author: Jeff Davis <jdavis@postgresql.org>
2024-03-13 [2d819a08a] Introduce "builtin" collation provider.
Author: Jeff Davis <jdavis@postgresql.org>
2024-03-18 [846311051] Address more review comments on commit 2d819a08a1.
Author: Jeff Davis <jdavis@postgresql.org>
2024-03-19 [f69319f2f] Support C.UTF-8 locale in the new builtin collation prov
Author: Jeff Davis <jdavis@postgresql.org>
2024-03-20 [9acae56ce] Inline basic UTF-8 functions.
-->
<listitem>
<para>
Add a builtin platform-independent collation provider (Jeff Davis)
<ulink url="&commit_baseurl;2d819a08a">&sect;</ulink>
<ulink url="&commit_baseurl;846311051">&sect;</ulink>
<ulink url="&commit_baseurl;f69319f2f">&sect;</ulink>
<ulink url="&commit_baseurl;9acae56ce">&sect;</ulink>
</para>
<para>
This supports <literal>C</literal> and <literal>C.UTF-8</literal>
collations.
</para>
</listitem>
<!--
Author: Michael Paquier <michael@paquier.xyz>
2023-07-06 [a14354cac] Add GUC parameter "huge_pages_status"
-->
<listitem>
<para>
Add server variable <xref linkend="guc-huge-pages-status"/> to
report the use of huge pages by Postgres (Justin Pryzby)
<ulink url="&commit_baseurl;a14354cac">&sect;</ulink>
</para>
<para>
This is useful when <xref linkend="guc-huge-pages"/> is set to
<literal>try</literal>.
</para>
</listitem>
<!--
Author: Daniel Gustafsson <dgustafsson@postgresql.org>
2023-09-25 [7750fefdb] Add GUC for temporarily disabling event triggers
-->
<listitem>
<para>
Add server variable to disable event triggers (Daniel Gustafsson)
<ulink url="&commit_baseurl;7750fefdb">&sect;</ulink>
</para>
<para>
The setting, <xref linkend="guc-event-triggers"/>, allows for the
temporary disabling of event triggers for debugging.
</para>
</listitem>
<!--
Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
2024-02-28 [53c2a97a9] Improve performance of subsystems on top of SLRU
-->
<listitem>
<para>
Allow the <link
linkend="monitoring-pg-stat-slru-view"><acronym>SLRU</acronym></link>
cache sizes to be configured (Andrey Borodin, Dilip Kumar,
Alvaro Herrera)
<ulink url="&commit_baseurl;53c2a97a9">&sect;</ulink>
</para>
<para>
The new server variables are <xref
linkend="guc-commit-timestamp-buffers"/>,
<xref linkend="guc-multixact-member-buffers"/>,
<xref linkend="guc-multixact-offset-buffers"/>,
<xref linkend="guc-notify-buffers"/>, <xref
linkend="guc-serializable-buffers"/>, <xref
linkend="guc-subtransaction-buffers"/>, and
<xref linkend="guc-transaction-buffers"/>. <xref
linkend="guc-commit-timestamp-buffers"/>, <xref
linkend="guc-transaction-buffers"/>, and <xref
linkend="guc-subtransaction-buffers"/> scale up automatically with
<xref linkend="guc-shared-buffers"/>.
</para>
</listitem>
</itemizedlist>
</sect4>
<sect4 id="release-17-replication">
<title>Streaming Replication and Recovery</title>
<itemizedlist>
<!--
Author: Robert Haas <rhaas@postgresql.org>
2023-12-20 [dc2123400] Add support for incremental backup.
Author: Tomas Vondra <tomas.vondra@postgresql.org>
2024-04-05 [f8ce4ed78] Allow copying files using clone/copy_file_range
-->
<listitem>
<para>
Add support for incremental file system backup (Robert Haas,
Jakub Wartak, Tomas Vondra)
<ulink url="&commit_baseurl;dc2123400">&sect;</ulink>
<ulink url="&commit_baseurl;f8ce4ed78">&sect;</ulink>
</para>
<para>
Incremental backups can be created using <link
linkend="app-pgbasebackup"><application>pg_basebackup</application></link>'s
new <option>--incremental</option>
option. The new application <link
linkend="app-pgcombinebackup"><application>pg_combinebackup</application></link>
allows manipulation of base and incremental file system backups.
</para>
</listitem>
<!--
Author: Robert Haas <rhaas@postgresql.org>
2023-12-20 [174c48050] Add a new WAL summarizer process.
Author: Nathan Bossart <nathan@postgresql.org>
2024-01-09 [d97ef756a] Fix documentation for wal_summary_keep_time.
Author: Robert Haas <rhaas@postgresql.org>
2024-01-09 [f896057e4] Document WAL summarization information functions.
Author: Robert Haas <rhaas@postgresql.org>
2024-01-11 [d9ef650fc] Add new function pg_get_wal_summarizer_state().
-->
<listitem>
<para>
Allow the creation of <acronym>WAL</acronym> summarization files
(Robert Haas, Nathan Bossart, Hubert Depesz Lubaczewski)
<ulink url="&commit_baseurl;174c48050">&sect;</ulink>
<ulink url="&commit_baseurl;d97ef756a">&sect;</ulink>
<ulink url="&commit_baseurl;f896057e4">&sect;</ulink>
<ulink url="&commit_baseurl;d9ef650fc">&sect;</ulink>
</para>
<para>
These files record the block numbers that have changed within an
<link linkend="datatype-pg-lsn"><acronym>LSN</acronym></link>
range and are useful for incremental file
system backups. This is controlled by the server
variables <xref linkend="guc-summarize-wal"/> and <xref
linkend="guc-wal-summary-keep-time"/>, and introspected with <link
linkend="functions-wal-summary"><function>pg_available_wal_summaries()</function></link>,
<function>pg_wal_summary_contents()</function>, and
<function>pg_get_wal_summarizer_state()</function>.
</para>
</listitem>
<!--
Author: Robert Haas <rhaas@postgresql.org>
2024-03-13 [2041bc427] Add the system identifier to backup manifests.
-->
<listitem>
<para>
Add the system identifier to file system <link
linkend="backup-manifest-format">backup manifest</link> files
(Amul Sul)
<ulink url="&commit_baseurl;2041bc427">&sect;</ulink>
</para>
<para>
This helps detect invalid <acronym>WAL</acronym> usage.
</para>
</listitem>
<!--
Author: Amit Kapila <akapila@postgresql.org>
2024-03-21 [a145f424d] Allow dbname to be written as part of connstring via pg_
-->
<listitem>
<para>
Allow connection string value
<literal>dbname</literal> to be written when <link
linkend="app-pgbasebackup"><application>pg_basebackup</application></link>
writes connection information to
<filename>postgresql.auto.conf</filename> (Vignesh C, Hayato Kuroda)
<ulink url="&commit_baseurl;a145f424d">&sect;</ulink>
</para>
</listitem>
<!--
Author: Amit Kapila <akapila@postgresql.org>
2024-01-04 [007693f2a] Track conflict_reason in pg_replication_slots.
Author: Amit Kapila <akapila@postgresql.org>
2024-03-22 [6ae701b43] Track invalidation_reason in pg_replication_slots.
-->
<listitem>
<para>
Add column <link
linkend="view-pg-replication-slots"><structname>pg_replication_slots</structname>.<structfield>invalidation_reason</structfield></link>
to report the reason for invalid slots (Shveta Malik, Bharath
Rupireddy)
<ulink url="&commit_baseurl;007693f2a">&sect;</ulink>
<ulink url="&commit_baseurl;6ae701b43">&sect;</ulink>
</para>
</listitem>
<!--
Author: Amit Kapila <akapila@postgresql.org>
2024-03-25 [a11f330b5] Track last_inactive_time in pg_replication_slots.
Author: Amit Kapila <akapila@postgresql.org>
2024-03-27 [6d49c8d4b] Change last_inactive_time to inactive_since in pg_replic
Author: Amit Kapila <akapila@postgresql.org>
2024-04-05 [6f132ed69] Allow synced slots to have their inactive_since.
-->
<listitem>
<para>
Add column <link
linkend="view-pg-replication-slots"><structname>pg_replication_slots</structname>.<structfield>inactive_since</structfield></link>
to report slot inactivity duration (Bharath Rupireddy)
<ulink url="&commit_baseurl;a11f330b5">&sect;</ulink>
<ulink url="&commit_baseurl;6d49c8d4b">&sect;</ulink>
<ulink url="&commit_baseurl;6f132ed69">&sect;</ulink>
</para>
</listitem>
<!--
Author: Amit Kapila <akapila@postgresql.org>
2024-02-14 [ddd5f4f54] Add a slot synchronization function.
Author: Amit Kapila <akapila@postgresql.org>
2024-02-16 [7a424ece4] Add more LOG and DEBUG messages for slot synchronization
-->
<listitem>
<para>
Add function <link
linkend="functions-replication-table"><function>pg_sync_replication_slots()</function></link>
to synchronize logical replication slots (Hou Zhijie, Shveta Malik,
Ajin Cherian, Peter Eisentraut)
<ulink url="&commit_baseurl;ddd5f4f54">&sect;</ulink>
<ulink url="&commit_baseurl;7a424ece4">&sect;</ulink>
</para>
</listitem>
<!--
Author: Amit Kapila <akapila@postgresql.org>
2024-01-29 [732924043] Allow setting failover property in the replication comma
-->
<listitem>
<para>
Add the <literal>failover</literal> property to the <link
linkend="protocol-replication">replication protocol</link> (Hou
Zhijie, Shveta Malik)
<ulink url="&commit_baseurl;732924043">&sect;</ulink>
</para>
</listitem>
</itemizedlist>
</sect4>
<sect4 id="release-17-logical">
<title><link linkend="logical-replication">Logical Replication</link></title>
<itemizedlist>
<!--
Author: Peter Eisentraut <peter@eisentraut.org>
2024-03-25 [d44032d01] pg_createsubscriber: creates a new logical replica from
-->
<listitem>
<para>
Add application <link
linkend="app-pgcreatesubscriber"><application>pg_createsubscriber</application></link>
to create a logical replica from a physical standby server
(Euler Taveira)
<ulink url="&commit_baseurl;d44032d01">&sect;</ulink>
</para>
</listitem>
<!--
Author: Amit Kapila <akapila@postgresql.org>
2023-10-26 [29d0a77fa] Migrate logical slots to the new node during an upgrade.
Author: Amit Kapila <akapila@postgresql.org>
2024-01-02 [9a17be1e2] Allow upgrades to preserve the full subscription's state
-->
<listitem>
<para>
Have <link
linkend="pgupgrade"><application>pg_upgrade</application></link>
migrate valid logical slots and subscriptions (Hayato Kuroda,
Hou Zhijie, Vignesh C, Julien Rouhaud, Shlok Kyal)
<ulink url="&commit_baseurl;29d0a77fa">&sect;</ulink>
<ulink url="&commit_baseurl;9a17be1e2">&sect;</ulink>
</para>
<para>
This allows logical replication to continue
quickly after the upgrade. This only works for old
<productname>PostgreSQL</productname> clusters that are version
17 or later.
</para>
</listitem>
<!--
Author: Amit Kapila <akapila@postgresql.org>
2024-01-25 [c393308b6] Allow to enable failover property for replication slots
-->
<listitem>
<para>
Enable the failover of <link
linkend="logical-replication-subscription-slot">logical slots</link>
(Hou Zhijie, Shveta Malik, Ajin Cherian)
<ulink url="&commit_baseurl;c393308b6">&sect;</ulink>
</para>
<para>
This is controlled by an optional fifth argument to <link
linkend="functions-replication-table"><function>pg_create_logical_replication_slot()</function></link>.
</para>
</listitem>
<!--
Author: Amit Kapila <akapila@postgresql.org>
2024-02-22 [93db6cbda] Add a new slot sync worker to synchronize logical slots
Author: Amit Kapila <akapila@postgresql.org>
2024-03-06 [60c07820d] Doc: Improve replication slot synchronization section.
-->
<listitem>
<para>
Add server variable <xref linkend="guc-sync-replication-slots"/>
to enable failover logical slot synchronization (Shveta Malik,
Hou Zhijie, Peter Smith)
<ulink url="&commit_baseurl;93db6cbda">&sect;</ulink>
<ulink url="&commit_baseurl;60c07820d">&sect;</ulink>
</para>
</listitem>
<!--
Author: Amit Kapila <akapila@postgresql.org>
2024-01-30 [776621a5e] Add a failover option to subscriptions.
Author: Amit Kapila <akapila@postgresql.org>
2024-02-07 [22f7e61a6] Clean-ups for 776621a5e4 and 7329240437.
-->
<listitem>
<para>
Add logical replication failover control to <link
linkend="sql-createsubscription"><literal>CREATE/ALTER
SUBSCRIPTION</literal></link> (Shveta Malik, Hou Zhijie, Ajin
Cherian)
<ulink url="&commit_baseurl;776621a5e">&sect;</ulink>
<ulink url="&commit_baseurl;22f7e61a6">&sect;</ulink>
</para>
</listitem>
<!--
Author: Amit Kapila <akapila@postgresql.org>
2023-07-14 [edca34243] Allow the use of a hash index on the subscriber during r
-->
<listitem>
<para>
Allow the application of logical replication changes to use
<link linkend="hash-index">hash</link> indexes on the subscriber
(Hayato Kuroda)
<ulink url="&commit_baseurl;edca34243">&sect;</ulink>
</para>
<para>
Previously only <link linkend="btree">btree</link> indexes could
be used for this purpose.
</para>
</listitem>
<!--
Author: Masahiko Sawada <msawada@postgresql.org>
2024-04-03 [5bec1d6bc] Improve eviction algorithm in ReorderBuffer using max-he
-->
<listitem>
<para>
Improve <link linkend="logicaldecoding">logical decoding</link>
performance in cases where there are many subtransactions
(Masahiko Sawada)
<ulink url="&commit_baseurl;5bec1d6bc">&sect;</ulink>
</para>
</listitem>
<!--
Author: Amit Kapila <akapila@postgresql.org>
2023-10-17 [79243de13] Restart the apply worker if the privileges have been rev
-->
<listitem>
<para>
Restart apply workers if subscription owner's superuser privileges
are revoked (Vignesh C)
<ulink url="&commit_baseurl;79243de13">&sect;</ulink>
</para>
<para>
This forces reauthentication.
</para>
</listitem>
<!--
Author: Michael Paquier <michael@paquier.xyz>
2023-10-18 [173b56f1e] Add flush option to pg_logical_emit_message()
-->
<listitem>
<para>
Add <literal>flush</literal> option to <link
linkend="functions-replication-table"><function>pg_logical_emit_message()</function></link>
(Michael Paquier)
<ulink url="&commit_baseurl;173b56f1e">&sect;</ulink>
</para>
<para>
This makes the message durable.
</para>
</listitem>
<!--
Author: Amit Kapila <akapila@postgresql.org>
2024-03-08 [bf279ddd1] Introduce a new GUC 'standby_slot_names'.
Author: Amit Kapila <akapila@postgresql.org>
2024-07-01 [0f934b073] Rename standby_slot_names to synchronized_standby_slots.
-->
<listitem>
<para>
Allow specification of physical standbys that must be synchronized
before they are visible to subscribers (Hou Zhijie, Shveta Malik)
<ulink url="&commit_baseurl;bf279ddd1">&sect;</ulink>
<ulink url="&commit_baseurl;0f934b073">&sect;</ulink>
</para>
<para>
The new server variable is <xref linkend="guc-synchronized-standby-slots"/>.
</para>
</listitem>
<!--
Author: Nathan Bossart <nathan@postgresql.org>
2023-09-25 [13aeaf079] Add worker type to pg_stat_subscription.
-->
<listitem>
<para>
Add worker type column to <link
linkend="monitoring-pg-stat-subscription"><structname>pg_stat_subscription</structname></link>
(Peter Smith)
<ulink url="&commit_baseurl;13aeaf079">&sect;</ulink>
</para>
</listitem>
</itemizedlist>
</sect4>
</sect3>
<sect3 id="release-17-utility">
<title>Utility Commands</title>
<itemizedlist>
<!--
Author: Alexander Korotkov <akorotkov@postgresql.org>
2024-01-16 [9e2d87011] Add new COPY option SAVE_ERROR_TO
Author: Alexander Korotkov <akorotkov@postgresql.org>
2024-01-19 [b725b7eec] Rename COPY option from SAVE_ERROR_TO to ON_ERROR
Author: Alexander Korotkov <akorotkov@postgresql.org>
2024-02-03 [40bbc8cf0] Improve documentation for COPY ... ON_ERROR ...
Author: Masahiko Sawada <msawada@postgresql.org>
2024-04-17 [a6d0fa5ef] Disallow specifying ON_ERROR option without value.
-->
<listitem>
<para>
Add new <link linkend="sql-copy"><command>COPY</command></link>
option <literal>ON_ERROR ignore</literal> to discard error rows
(Damir Belyalov, Atsushi Torikoshi, Alex Shulgin, Jian He, Yugo
Nagata)
<ulink url="&commit_baseurl;9e2d87011">&sect;</ulink>
<ulink url="&commit_baseurl;b725b7eec">&sect;</ulink>
<ulink url="&commit_baseurl;40bbc8cf0">&sect;</ulink>
<ulink url="&commit_baseurl;a6d0fa5ef">&sect;</ulink>
</para>
<para>
The default behavior is <literal>ON_ERROR stop</literal>.
</para>
</listitem>
<!--
Author: Masahiko Sawada <msawada@postgresql.org>
2024-04-01 [f5a227895] Add new COPY option LOG_VERBOSITY.
-->
<listitem>
<para>
Add new <command>COPY</command> option
<literal>LOG_VERBOSITY</literal> which reports <literal>COPY
FROM</literal> ignored error rows (Bharath Rupireddy)
<ulink url="&commit_baseurl;f5a227895">&sect;</ulink>
</para>
</listitem>
<!--
Author: Masahiko Sawada <msawada@postgresql.org>
2024-01-25 [729439607] Add progress reporting of skipped tuples during COPY FRO
-->
<listitem>
<para>
Allow <literal>COPY FROM</literal> to report the number of skipped
rows during processing (Atsushi Torikoshi)
<ulink url="&commit_baseurl;729439607">&sect;</ulink>
</para>
<para>
This appears in system view column <link
linkend="copy-progress-reporting"><structname>pg_stat_progress_copy</structname>.<structfield>tuples_skipped</structfield></link>.
</para>
</listitem>
<!--
Author: Andrew Dunstan <andrew@dunslane.net>
2023-09-30 [f6d4c9cf1] Provide FORCE_NULL * and FORCE_NOT_NULL * options for CO
-->
<listitem>
<para>
In <literal>COPY FROM</literal>, allow easy specification that all
columns should be forced null or not null (Zhang Mingli)
<ulink url="&commit_baseurl;f6d4c9cf1">&sect;</ulink>
</para>
</listitem>
<!--
Author: Peter Eisentraut <peter@eisentraut.org>
2024-01-16 [699586315] Support identity columns in partitioned tables
-->
<listitem>
<para>
Allow partitioned tables to have identity columns (Ashutosh Bapat)
<ulink url="&commit_baseurl;699586315">&sect;</ulink>
</para>
</listitem>
<!--
Author: Peter Eisentraut <peter@eisentraut.org>
2023-07-12 [8c852ba9a] Allow some exclusion constraints on partitions
-->
<listitem>
<para>
Allow <link linkend="ddl-constraints-exclusion">exclusion
constraints</link> on partitioned tables (Paul A. Jungwirth)
<ulink url="&commit_baseurl;8c852ba9a">&sect;</ulink>
</para>
<para>
As long as exclusion constraints compare partition key columns
for equality, other columns can use exclusion constraint-specific
comparisons.
</para>
</listitem>
<!--
Author: Peter Eisentraut <peter@eisentraut.org>
2024-01-13 [4f622503d] Make attstattarget nullable
-->
<listitem>
<para>
Add clearer <link linkend="sql-altertable"><command>ALTER
TABLE</command></link> method to set a column to the default
statistics target (Peter Eisentraut)
<ulink url="&commit_baseurl;4f622503d">&sect;</ulink>
</para>
<para>
The new syntax is <literal>ALTER TABLE ... SET STATISTICS
DEFAULT</literal>; using <literal>SET STATISTICS -1</literal>
is still supported.
</para>
</listitem>
<!--
Author: Peter Eisentraut <peter@eisentraut.org>
2024-01-04 [5d06e99a3] ALTER TABLE command to change generation expression
-->
<listitem>
<para>
Allow <literal>ALTER TABLE</literal> to change a column's generation
expression (Amul Sul)
<ulink url="&commit_baseurl;5d06e99a3">&sect;</ulink>
</para>
<para>
The syntax is <literal>ALTER TABLE ... ALTER COLUMN ... SET
EXPRESSION</literal>.
</para>
</listitem>
<!--
Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
2024-03-25 [374c7a229] Allow specifying an access method for partitioned tables
Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
2024-03-28 [e2395cdbe] ALTER TABLE: rework determination of access method ID
-->
<listitem>
<para>
Allow specification of <link linkend="tableam">table access
methods</link> on partitioned tables (Justin Pryzby, Soumyadeep
Chakraborty, Michael Paquier)
<ulink url="&commit_baseurl;374c7a229">&sect;</ulink>
<ulink url="&commit_baseurl;e2395cdbe">&sect;</ulink>
</para>
</listitem>
<!--
Author: Michael Paquier <michael@paquier.xyz>
2024-03-08 [d61a6cad6] Add support for DEFAULT in ALTER TABLE .. SET ACCESS MET
-->
<listitem>
<para>
Add <literal>DEFAULT</literal> setting for <literal>ALTER TABLE
.. SET ACCESS METHOD</literal> (Michael Paquier)
<ulink url="&commit_baseurl;d61a6cad6">&sect;</ulink>
</para>
</listitem>
<!--
Author: Alexander Korotkov <akorotkov@postgresql.org>
2023-10-16 [e83d1b0c4] Add support event triggers on authenticated login
-->
<listitem>
<para>
Add support for <link linkend="sql-createeventtrigger">event
triggers</link> that fire at connection time (Konstantin Knizhnik,
Mikhail Gribkov)
<ulink url="&commit_baseurl;e83d1b0c4">&sect;</ulink>
</para>
</listitem>
<!--
Author: Michael Paquier <michael@paquier.xyz>
2023-12-04 [f21848de2] Add support for REINDEX in event triggers
-->
<listitem>
<para>
Add event trigger support for <link
linkend="sql-reindex"><command>REINDEX</command></link> (Garrett
Thornburg, Jian He)
<ulink url="&commit_baseurl;f21848de2">&sect;</ulink>
</para>
</listitem>
<!--
Author: Nathan Bossart <nathan@postgresql.org>
2023-07-19 [cdaedfc96] Support parenthesized syntax for CLUSTER without a table
-->
<listitem>
<para>
Allow parenthesized syntax for <link
linkend="sql-cluster"><command>CLUSTER</command></link> options if
a table name is not specified (Nathan Bossart)
<ulink url="&commit_baseurl;cdaedfc96">&sect;</ulink>
</para>
</listitem>
</itemizedlist>
<sect4 id="release-17-explain">
<title><link linkend="sql-explain"><command>EXPLAIN</command></link></title>
<itemizedlist>
<!--
Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
2024-01-29 [5de890e36] Add EXPLAIN (MEMORY) to report planner memory consumptio
-->
<listitem>
<para>
Allow <command>EXPLAIN</command> to report
optimizer memory usage (Ashutosh Bapat)
<ulink url="&commit_baseurl;5de890e36">&sect;</ulink>
</para>
<para>
The option is called <literal>MEMORY</literal>.
</para>
</listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
2024-04-03 [06286709e] Invent SERIALIZE option for EXPLAIN.
-->
<listitem>
<para>
Add <command>EXPLAIN</command> option <literal>SERIALIZE</literal>
to report the cost of converting data for network transmission
(Stepan Rutz, Matthias van de Meent)
<ulink url="&commit_baseurl;06286709e">&sect;</ulink>
</para>
</listitem>
<!--
Author: Michael Paquier <michael@paquier.xyz>
2023-10-19 [295c36c0c] Add local_blk_{read|write}_time I/O timing statistics fo
-->
<listitem>
<para>
Add local I/O block read/write timing statistics to
<command>EXPLAIN</command>'s <literal>BUFFERS</literal> output
(Nazir Bilal Yavuz)
<ulink url="&commit_baseurl;295c36c0c">&sect;</ulink>
</para>
</listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
2024-03-19 [fd0398fcb] Improve EXPLAIN's display of SubPlan nodes and output pa
-->
<listitem>
<para>
Improve <command>EXPLAIN</command>'s display of SubPlan nodes and
output parameters (Tom Lane, Dean Rasheed)
<ulink url="&commit_baseurl;fd0398fcb">&sect;</ulink>
</para>
</listitem>
<!--
Author: Daniel Gustafsson <dgustafsson@postgresql.org>
2023-09-08 [5a3423ad8] Add JIT deform_counter
-->
<listitem>
<para>
Add <acronym>JIT</acronym> <literal>deform_counter</literal>
details to <command>EXPLAIN</command> (Dmitry Dolgov)
<ulink url="&commit_baseurl;5a3423ad8">&sect;</ulink>
</para>
</listitem>
</itemizedlist>
</sect4>
</sect3>
<sect3 id="release-17-datatypes">
<title>Data Types</title>
<itemizedlist>
<!--
Author: Dean Rasheed <dean.a.rasheed@gmail.com>
2023-11-14 [519fc1bd9] Support +/- infinity in the interval data type.
-->
<listitem>
<para>
Allow the <type>interval</type> data type to support
<literal>+/-infinity</literal> values (Joseph Koshakow, Jian He,
Ashutosh Bapat)
<ulink url="&commit_baseurl;519fc1bd9">&sect;</ulink>
</para>
</listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
2024-03-24 [af1d39584] Allow more cases to pass the unsafe-use-of-new-enum-valu
-->
<listitem>
<para>
Allow the use of an <link
linkend="datatype-enum"><type>ENUM</type></link> added via <link
linkend="sql-altertype"><command>ALTER TYPE</command></link> if
the type was created in the same transaction (Tom Lane)
<ulink url="&commit_baseurl;af1d39584">&sect;</ulink>
</para>
<para>
This was previously disallowed.
</para>
</listitem>
</itemizedlist>
</sect3>
<sect3 id="release-17-merge">
<title><link linkend="sql-merge">MERGE</link></title>
<itemizedlist>
<!--
Author: Dean Rasheed <dean.a.rasheed@gmail.com>
2024-02-29 [5f2e179bd] Support MERGE into updatable views.
-->
<listitem>
<para>
Allow <command>MERGE</command> to modify updatable views (Dean
Rasheed)
<ulink url="&commit_baseurl;5f2e179bd">&sect;</ulink>
</para>
</listitem>
<!--
Author: Dean Rasheed <dean.a.rasheed@gmail.com>
2024-03-30 [0294df2f1] Add support for MERGE ... WHEN NOT MATCHED BY SOURCE.
-->
<listitem>
<para>
Add <literal>WHEN NOT MATCHED BY SOURCE</literal> to
<command>MERGE</command> (Dean Rasheed)
<ulink url="&commit_baseurl;0294df2f1">&sect;</ulink>
</para>
<para>
<literal>WHEN NOT MATCHED</literal> on target rows was already
supported.
</para>
</listitem>
<!--
Author: Dean Rasheed <dean.a.rasheed@gmail.com>
2024-03-17 [c649fa24a] Add RETURNING support to MERGE.
-->
<listitem>
<para>
Allow <command>MERGE</command> to use the
<literal>RETURNING</literal> clause (Dean Rasheed)
<ulink url="&commit_baseurl;c649fa24a">&sect;</ulink>
</para>
<para>
The new <literal>RETURNING</literal> function
<function>merge_action()</function> reports on the
<acronym>DML</acronym> that generated the row.
</para>
</listitem>
</itemizedlist>
</sect3>
<sect3 id="release-17-functions">
<title>Functions</title>
<itemizedlist>
<!--
Author: Amit Langote <amitlan@postgresql.org>
2024-04-04 [de3600452] Add basic JSON_TABLE() functionality
Author: Amit Langote <amitlan@postgresql.org>
2024-04-08 [bb766cde6] JSON_TABLE: Add support for NESTED paths and columns
-->
<listitem>
<para>
Add function <link
linkend="functions-sqljson-table"><function>JSON_TABLE()</function></link>
to convert <type>JSON</type> data to a table representation (Nikita
Glukhov, Teodor Sigaev, Oleg Bartunov, Alexander Korotkov, Andrew
Dunstan, Amit Langote, Jian He)
<ulink url="&commit_baseurl;de3600452">&sect;</ulink>
<ulink url="&commit_baseurl;bb766cde6">&sect;</ulink>
</para>
<para>
This function can be used in the <literal>FROM</literal> clause of
<command>SELECT</command> queries as a tuple source.
</para>
</listitem>
<!--
Author: Amit Langote <amitlan@postgresql.org>
2023-07-26 [03734a7fe] Add more SQL/JSON constructor functions
-->
<listitem>
<para>
Add <acronym>SQL/JSON</acronym> constructor functions <link
linkend="functions-json-creation-table"><function>JSON()</function></link>,
<function>JSON_SCALAR()</function>, and
<function>JSON_SERIALIZE()</function> (Nikita Glukhov, Teodor Sigaev,
Oleg Bartunov, Alexander Korotkov, Andrew Dunstan, Amit Langote)
<ulink url="&commit_baseurl;03734a7fe">&sect;</ulink>
</para>
</listitem>
<!--
Author: Amit Langote <amitlan@postgresql.org>
2024-01-24 [aaaf9449e] Add soft error handling to some expression nodes
Author: Amit Langote <amitlan@postgresql.org>
2024-01-24 [1edb3b491] Adjust populate_record_field() to handle errors softly
Author: Amit Langote <amitlan@postgresql.org>
2024-03-21 [6185c9737] Add SQL/JSON query functions
Author: Amit Langote <amitlan@postgresql.org>
2024-04-18 [c0fc07518] SQL/JSON: Fix issues with DEFAULT .. ON ERROR / EMPTY
Author: Amit Langote <amitlan@postgresql.org>
2024-04-18 [ef744ebb7] SQL/JSON: Miscellaneous fixes and improvements
-->
<listitem>
<para>
Add <acronym>SQL/JSON</acronym> query functions <link
linkend="functions-sqljson-querying"><function>JSON_EXISTS()</function></link>,
<function>JSON_QUERY()</function>, and
<function>JSON_VALUE()</function> (Nikita Glukhov, Teodor Sigaev,
Oleg Bartunov, Alexander Korotkov, Andrew Dunstan, Amit Langote,
Peter Eisentraut, Jian He)
<ulink url="&commit_baseurl;aaaf9449e">&sect;</ulink>
<ulink url="&commit_baseurl;1edb3b491">&sect;</ulink>
<ulink url="&commit_baseurl;6185c9737">&sect;</ulink>
<ulink url="&commit_baseurl;c0fc07518">&sect;</ulink>
<ulink url="&commit_baseurl;ef744ebb7">&sect;</ulink>
</para>
</listitem>
<!--
Author: Andrew Dunstan <andrew@dunslane.net>
2024-01-25 [66ea94e8e] Implement various jsonpath methods
-->
<listitem>
<para>
Add <link linkend="functions-sqljson-path-operators">jsonpath</link>
methods to convert <type>JSON</type> values to other
<type>JSON</type> data types (Jeevan Chalke)
<ulink url="&commit_baseurl;66ea94e8e">&sect;</ulink>
</para>
<para>
The jsonpath methods are <function>.bigint()</function>,
<function>.boolean()</function>, <function>.date()</function>,
<function>.decimal([precision [, scale]])</function>,
<function>.integer()</function>, <function>.number()</function>,
<function>.string()</function>, <function>.time()</function>,
<function>.time_tz()</function>, <function>.timestamp()</function>,
and <function>.timestamp_tz()</function>.
</para>
</listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
2024-01-25 [8ba6fdf90] Support TZ and OF format codes in <function>to_timestamp()</function>.
-->
<listitem>
<para>
Add <link
linkend="functions-formatting-table"><function>to_timestamp()</function></link>
time zone format specifiers (Tom Lane)
<ulink url="&commit_baseurl;8ba6fdf90">&sect;</ulink>
</para>
<para>
<literal>TZ</literal> accepts time zone abbreviations or numeric
offsets, while <literal>OF</literal> accepts only numeric offsets.
</para>
</listitem>
<!--
Author: Michael Paquier <michael@paquier.xyz>
2023-10-13 [97957fdba] Add support for AT LOCAL
-->
<listitem>
<para>
Allow the session <link linkend="guc-timezone">time zone</link>
to be specified by <literal>AT LOCAL</literal> (Vik Fearing)
<ulink url="&commit_baseurl;97957fdba">&sect;</ulink>
</para>
<para>
This is useful when converting adding and removing time zones from
time stamps values, rather than specifying the literal session
time zone.
</para>
</listitem>
<!--
Author: Peter Eisentraut <peter@eisentraut.org>
2024-03-19 [794f10f6b] Add some UUID support functions
-->
<listitem>
<para>
Add functions <link
linkend="functions-uuid"><function>uuid_extract_timestamp()</function></link>
and <function>uuid_extract_version()</function> to return
<acronym>UUID</acronym> information (Andrey Borodin)
<ulink url="&commit_baseurl;794f10f6b">&sect;</ulink>
</para>
</listitem>
<!--
Author: Dean Rasheed <dean.a.rasheed@gmail.com>
2024-03-27 [e6341323a] Add functions to generate random numbers in a specified
-->
<listitem>
<para>
Add functions to generate random numbers in a specified range
(Dean Rasheed)
<ulink url="&commit_baseurl;e6341323a">&sect;</ulink>
</para>
<para>
The functions are <link
linkend="functions-math-random-table"><function>random(min,
max)</function></link> and they take values of type
<type>integer</type>, <type>bigint</type>, and <type>numeric</type>.
</para>
</listitem>
<!--
Author: Nathan Bossart <nathan@postgresql.org>
2023-08-23 [260a1f18d] Add to_bin() and to_oct().
-->
<listitem>
<para>
Add functions to convert integers to binary and octal strings
(Eric Radman, Nathan Bossart)
<ulink url="&commit_baseurl;260a1f18d">&sect;</ulink>
</para>
<para>
The functions are <link
linkend="functions-string-other"><function>to_bin()</function></link>
and <function>to_oct()</function>.
</para>
</listitem>
<!--
Author: Jeff Davis <jdavis@postgresql.org>
2023-11-01 [a02b37fc0] Additional unicode primitive functions.
-->
<listitem>
<para>
Add Unicode informational functions (Jeff Davis)
<ulink url="&commit_baseurl;a02b37fc0">&sect;</ulink>
</para>
<para>
Function <link
linkend="functions-info-version"><function>unicode_version()</function></link>
returns the Unicode version,
<function>icu_unicode_version()</function>
returns the <acronym>ICU</acronym> version, and
<function>unicode_assigned()</function> returns if the characters
are assigned Unicode codepoints.
</para>
</listitem>
<!--
Author: Daniel Gustafsson <dgustafsson@postgresql.org>
2023-11-06 [526fe0d79] Add XMLText function (SQL/XML X038)
-->
<listitem>
<para>
Add function <link
linkend="functions-producing-xml-xmltext"><function>xmltext()</function></link>
to convert text to a single <type>XML</type> text node (Jim Jones)
<ulink url="&commit_baseurl;526fe0d79">&sect;</ulink>
</para>
</listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
2024-03-20 [1218ca995] Add to_regtypemod function to extract typemod from a str
-->
<listitem>
<para>
Add function <link
linkend="functions-info-catalog-table"><function>to_regtypemod()</function></link>
to return the type modifier of a type specification (David Wheeler,
Erik Wienhold)
<ulink url="&commit_baseurl;1218ca995">&sect;</ulink>
</para>
</listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
2024-03-30 [b154d8a6d] Add pg_basetype() function to extract a domain's base ty
-->
<listitem>
<para>
Add <link
linkend="functions-info-catalog-table"><function>pg_basetype()</function></link>
function to return a domain's base type (Steve Chavez)
<ulink url="&commit_baseurl;b154d8a6d">&sect;</ulink>
</para>
</listitem>
<!--
Author: Nathan Bossart <nathan@postgresql.org>
2024-03-14 [d1162cfda] Add pg_column_toast_chunk_id().
-->
<listitem>
<para>
Add function <link
linkend="functions-admin-dbsize"><function>pg_column_toast_chunk_id()</function></link>
to return a value's <link
linkend="storage-toast"><acronym>TOAST</acronym></link> identifier
(Yugo Nagata)
<ulink url="&commit_baseurl;d1162cfda">&sect;</ulink>
</para>
<para>
This returns <literal>NULL</literal> if the value is not stored
in <acronym>TOAST</acronym>.
</para>
</listitem>
</itemizedlist>
</sect3>
<sect3 id="release-17-plpgsql">
<title><link linkend="plpgsql">PL/pgSQL</link></title>
<itemizedlist>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
2024-01-04 [5e8674dc8] In plpgsql, allow %TYPE and %ROWTYPE to be followed by a
-->
<listitem>
<para>
Allow plpgsql <link
linkend="plpgsql-declaration-type"><literal>%TYPE</literal></link>
and <literal>%ROWTYPE</literal> specifications to represent arrays
of non-array types (Quan Zongliang, Pavel Stehule)
<ulink url="&commit_baseurl;5e8674dc8">&sect;</ulink>
</para>
</listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
2024-01-05 [43b46aae1] Clean up some edge cases in plpgsql's %TYPE parsing.
-->
<listitem>
<para>
Allow plpgsql <literal>%TYPE</literal> specification to reference
composite column (Tom Lane)
<ulink url="&commit_baseurl;43b46aae1">&sect;</ulink>
</para>
</listitem>
</itemizedlist>
</sect3>
<sect3 id="release-17-libpq">
<title><link linkend="libpq">libpq</link></title>
<itemizedlist>
<!--
Author: Joe Conway <mail@joeconway.com>
2024-01-09 [a7be2a6c2] Add new function, PQchangePassword(), to libpq
-->
<listitem>
<para>
Add libpq function to change role passwords (Joe Conway)
<ulink url="&commit_baseurl;a7be2a6c2">&sect;</ulink>
</para>
<para>
The new function, <link
linkend="libpq-PQchangePassword"><function>PQchangePassword()</function></link>,
hashes the new password before sending it to the server.
</para>
</listitem>
<!--
Author: Michael Paquier <michael@paquier.xyz>
2023-07-04 [28b572656] libpq: Add support for Close on portals and statements
-->
<listitem>
<para>
Add libpq functions to close portals and prepared statements
(Jelte Fennema-Nio)
<ulink url="&commit_baseurl;28b572656">&sect;</ulink>
</para>
<para>
The functions are <link
linkend="libpq-PQclosePrepared"><function>PQclosePrepared()</function></link>,
<link
linkend="libpq-PQclosePortal"><function>PQclosePortal()</function></link>,
<link
linkend="libpq-PQsendClosePrepared"><function>PQsendClosePrepared()</function></link>,
and <link
linkend="libpq-PQsendClosePortal"><function>PQsendClosePortal()</function></link>.
</para>
</listitem>
<!--
Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
2024-03-12 [61461a300] libpq: Add encrypted and non-blocking query cancellation
-->
<listitem>
<para>
Add libpq <acronym>API</acronym> which allows for blocking and
non-blocking <link linkend="libpq-cancel">cancel requests</link>,
with encryption if already in use (Jelte Fennema-Nio)
<ulink url="&commit_baseurl;61461a300">&sect;</ulink>
</para>
<para>
Previously only blocking, unencrypted cancel requests were supported.
</para>
</listitem>
<!--
Author: Robert Haas <rhaas@postgresql.org>
2024-04-02 [f5e4dedfa] Expose PQsocketPoll via libpq
Author: Tom Lane <tgl@sss.pgh.pa.us>
2024-06-13 [105024a47] Improve the granularity of PQsocketPoll's timeout parame
-->
<listitem>
<para>
Add libpq function <link
linkend="libpq-PQsocketPoll"><function>PQsocketPoll()</function></link>
to allow polling of network sockets (Tristan Partin, Tom Lane)
<ulink url="&commit_baseurl;f5e4dedfa">&sect;</ulink>
<ulink url="&commit_baseurl;105024a47">&sect;</ulink>
</para>
</listitem>
<!--
Author: Michael Paquier <michael@paquier.xyz>
2024-01-16 [4794c2d31] libpq: Add PQsendPipelineSync()
-->
<listitem>
<para>
Add libpq function <link
linkend="libpq-PQsendPipelineSync"><function>PQsendPipelineSync()</function></link>
to send a pipeline synchronization point (Anton Kirilov)
<ulink url="&commit_baseurl;4794c2d31">&sect;</ulink>
</para>
<para>
This is similar to <link
linkend="libpq-PQpipelineSync"><function>PQpipelineSync()</function></link>
but it does not flush to the server unless the size threshold of
the output buffer is reached.
</para>
</listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
2024-04-06 [4643a2b26] Support retrieval of results in chunks with libpq.
-->
<listitem>
<para>
Add libpq function <link
linkend="libpq-PQsetChunkedRowsMode"><function>PQsetChunkedRowsMode()</function></link>
to allow retrieval of results in chunks (Daniel V&eacute;rit&eacute;)
<ulink url="&commit_baseurl;4643a2b26">&sect;</ulink>
</para>
</listitem>
<!--
Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
2024-04-08 [d39a49c1e] Support TLS handshake directly without SSLRequest negoti
Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
2024-04-08 [91044ae4b] Send ALPN in TLS handshake, require it in direct SSL con
Author: Daniel Gustafsson <dgustafsson@postgresql.org>
2024-04-24 [44e27f0a6] Support disallowing SSL renegotiation when using LibreSS
Author: Daniel Gustafsson <dgustafsson@postgresql.org>
2024-04-24 [d80f2ce29] Support SSL_R_VERSION_TOO_LOW when using LibreSSL
Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
2024-04-29 [03a0e0d4b] libpq: Enforce ALPN in direct SSL connections
Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
2024-04-29 [17a834a04] Reject SSL connection if ALPN is used but there's no com
Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
2024-05-11 [407e0b023] Change ALPN protocol ID to IANA-approved "postgresql"
Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
2024-05-16 [fb5718f35] Remove option to fall back from direct to postgres SSL n
-->
<listitem>
<para>
Allow <acronym>TLS</acronym> connections without requiring a
network round-trip negotiation (Greg Stark, Heikki Linnakangas,
Peter Eisentraut, Michael Paquier, Daniel Gustafsson)
<ulink url="&commit_baseurl;d39a49c1e">&sect;</ulink>
<ulink url="&commit_baseurl;91044ae4b">&sect;</ulink>
<ulink url="&commit_baseurl;44e27f0a6">&sect;</ulink>
<ulink url="&commit_baseurl;d80f2ce29">&sect;</ulink>
<ulink url="&commit_baseurl;03a0e0d4b">&sect;</ulink>
<ulink url="&commit_baseurl;17a834a04">&sect;</ulink>
<ulink url="&commit_baseurl;407e0b023">&sect;</ulink>
<ulink url="&commit_baseurl;fb5718f35">&sect;</ulink>
</para>
<para>
This is enabled with the client-side option <link
linkend="libpq-connect-sslnegotiation"><literal>sslnegotiation=direct</literal></link>,
requires <acronym>ALPN</acronym>, and only works on
<productname>PostgreSQL</productname> 17 and later servers.
</para>
</listitem>
</itemizedlist>
</sect3>
<sect3 id="release-17-psql">
<title><xref linkend="app-psql"/></title>
<itemizedlist>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
2023-11-13 [d1379ebf4] Improve default and empty privilege outputs in psql.
-->
<listitem>
<para>
Improve <application>psql</application> display of default and
empty privileges (Erik Wienhold, Laurenz Albe)
<ulink url="&commit_baseurl;d1379ebf4">&sect;</ulink>
</para>
<para>
Command <literal>\dp</literal> now displays <literal>(none)</literal>
for empty privileges; default still displays as empty.
</para>
</listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
2023-11-13 [d1379ebf4] Improve default and empty privilege outputs in psql.
-->
<listitem>
<para>
Have backslash commands honor <literal>\pset null</literal> (Erik
Wienhold, Laurenz Albe)
<ulink url="&commit_baseurl;d1379ebf4">&sect;</ulink>
</para>
<para>
Previously <literal>\pset null</literal> was ignored.
</para>
</listitem>
<!--
Author: Daniel Gustafsson <dgustafsson@postgresql.org>
2023-08-29 [f347ec76e] Allow \watch queries to stop on minimum rows returned
-->
<listitem>
<para>
Allow <application>psql</application>'s <literal>\watch</literal>
to stop after a minimum number of rows returned (Greg Sabino Mullane)
<ulink url="&commit_baseurl;f347ec76e">&sect;</ulink>
</para>
<para>
The parameter is <literal>min_rows</literal>.
</para>
</listitem>
<!--
Author: Robert Haas <rhaas@postgresql.org>
2024-04-02 [cafe10565] Allow SIGINT to cancel psql database reconnections.
-->
<listitem>
<para>
Allow <application>psql</application> connection attempts to be
canceled with control-C (Tristan Partin)
<ulink url="&commit_baseurl;cafe10565">&sect;</ulink>
</para>
</listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
2024-04-06 [90f517821] Re-implement psql's FETCH_COUNT feature atop libpq's chu
-->
<listitem>
<para>
Allow <application>psql</application> to honor
<literal>FETCH_COUNT</literal> for non-<command>SELECT</command>
queries (Daniel V&eacute;rit&eacute;)
<ulink url="&commit_baseurl;90f517821">&sect;</ulink>
</para>
</listitem>
<!--
Author: Michael Paquier <michael@paquier.xyz>
2023-06-30 [c951e9042] Add tab completion for CREATE SCHEMA in psql
Author: Michael Paquier <michael@paquier.xyz>
2023-10-13 [d16eb83ab] psql: Add completion support for AT [ LOCAL | TIME ZONE
Author: Dean Rasheed <dean.a.rasheed@gmail.com>
2023-11-28 [cd3424748] psql: Add tab completion for view options.
Author: Michael Paquier <michael@paquier.xyz>
2023-11-16 [816f10564] psql: Add some completion support for CREATE TABLE .. AS
Author: Alexander Korotkov <akorotkov@postgresql.org>
2024-03-16 [927332b95] psql: fix variable existence tab completion
Author: Masahiko Sawada <msawada@postgresql.org>
2024-03-28 [f1bb9284f] Improve tab completion for ALTER TABLE ALTER COLUMN SET
Author: Masahiko Sawada <msawada@postgresql.org>
2024-04-08 [304b6b1a6] Add more tab completion support for ALTER DEFAULT PRIVIL
Author: Michael Paquier <michael@paquier.xyz>
2024-05-01 [2800fbb2b] Add tab completion for EXPLAIN (MEMORY|SERIALIZE)
-->
<listitem>
<para>
Improve <application>psql</application> tab completion (Dagfinn
Ilmari Manns&aring;ker, Gilles Darold, Christoph Heiss, Steve Chavez,
Vignesh C, Pavel Borisov, Jian He)
<ulink url="&commit_baseurl;c951e9042">&sect;</ulink>
<ulink url="&commit_baseurl;d16eb83ab">&sect;</ulink>
<ulink url="&commit_baseurl;cd3424748">&sect;</ulink>
<ulink url="&commit_baseurl;816f10564">&sect;</ulink>
<ulink url="&commit_baseurl;927332b95">&sect;</ulink>
<ulink url="&commit_baseurl;f1bb9284f">&sect;</ulink>
<ulink url="&commit_baseurl;304b6b1a6">&sect;</ulink>
<ulink url="&commit_baseurl;2800fbb2b">&sect;</ulink>
</para>
</listitem>
</itemizedlist>
</sect3>
<sect3 id="release-17-server-apps">
<title>Server Applications</title>
<itemizedlist>
<!--
Author: Robert Haas <rhaas@postgresql.org>
2024-01-11 [ee1bfd168] Add new pg_walsummary tool.
-->
<listitem>
<para>
Add application <link
linkend="app-pgwalsummary"><application>pg_walsummary</application></link>
to dump <acronym>WAL</acronym> summary files (Robert Haas)
<ulink url="&commit_baseurl;ee1bfd168">&sect;</ulink>
</para>
</listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
2024-04-01 [a45c78e32] Rearrange pg_dump's handling of large objects for better
-->
<listitem>
<para>
Allow <link
linkend="app-pgdump"><application>pg_dump</application></link>'s
large objects to be restorable in batches (Tom Lane)
<ulink url="&commit_baseurl;a45c78e32">&sect;</ulink>
</para>
<para>
This allows the restoration of many large objects to avoid
transaction limits and to be restored in parallel.
</para>
</listitem>
<!--
Author: Dean Rasheed <dean.a.rasheed@gmail.com>
2024-03-20 [522ed12f7] Add "- -exclude-extension" to pg_dump's options.
-->
<listitem>
<para>
Add <application>pg_dump</application> option
<option>--exclude-extension</option> (Ayush Vatsa)
<ulink url="&commit_baseurl;522ed12f7">&sect;</ulink>
</para>
</listitem>
<!--
Author: Daniel Gustafsson <dgustafsson@postgresql.org>
2023-11-29 [a5cf808be] Read include/exclude commands for dump/restore from file
-->
<listitem>
<para>
Allow <link
linkend="app-pgdump"><application>pg_dump</application></link>, <link
linkend="app-pg-dumpall"><application>pg_dumpall</application></link>,
and <link
linkend="app-pgrestore"><application>pg_restore</application></link>
to specify include/exclude objects in a file (Pavel Stehule,
Daniel Gustafsson)
<ulink url="&commit_baseurl;a5cf808be">&sect;</ulink>
</para>
<para>
The option is called <option>--filter</option>.
</para>
</listitem>
<!--
Author: Nathan Bossart <nathan@postgresql.org>
2023-09-06 [8c16ad3b4] Allow using syncfs() in frontend utilities.
-->
<listitem>
<para>
Add the <option>--sync-method</option> parameter to several client
applications (Justin Pryzby, Nathan Bossart)
<ulink url="&commit_baseurl;8c16ad3b4">&sect;</ulink>
</para>
<para>
The applications are <link
linkend="app-initdb"><application>initdb</application></link>, <link
linkend="app-pgbasebackup"><application>pg_basebackup</application></link>,
<link
linkend="app-pgchecksums"><application>pg_checksums</application></link>,
<link linkend="app-pgdump"><application>pg_dump</application></link>,
<link linkend="app-pgrewind"><application>pg_rewind</application></link>,
and <link
linkend="pgupgrade"><application>pg_upgrade</application></link>.
</para>
</listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
2024-04-01 [959b38d77] Invent - -transaction-size option for pg_restore.
-->
<listitem>
<para>
Add <link
linkend="app-pgrestore"><application>pg_restore</application></link>
option <option>--transaction-size</option> to allow object restores
in transaction batches (Tom Lane)
<ulink url="&commit_baseurl;959b38d77">&sect;</ulink>
</para>
<para>
This allows the performance benefits of transaction batches without
the problems of excessively large transaction blocks.
</para>
</listitem>
<!--
Author: Nathan Bossart <nathan@postgresql.org>
2024-03-25 [3ff01b2b6] Adjust pgbench option for debug mode.
-->
<listitem>
<para>
Change <link
linkend="pgbench"><application>pgbench</application></link> debug
mode option from <option>-d</option> to <option>--debug</option>
(Greg Sabino Mullane)
<ulink url="&commit_baseurl;3ff01b2b6">&sect;</ulink>
</para>
<para>
Option <option>-d</option> is now used for the database name,
and the new <option>--dbname</option> option can be used as well.
</para>
</listitem>
<!--
Author: Tatsuo Ishii <ishii@postgresql.org>
2023-08-30 [3c662643c] Allow pgbench to exit immediately when any client is abo
-->
<listitem>
<para>
Add pgbench option <option>--exit-on-abort</option> to exit after
any client aborts (Yugo Nagata)
<ulink url="&commit_baseurl;3c662643c">&sect;</ulink>
</para>
</listitem>
<!--
Author: Michael Paquier <michael@paquier.xyz>
2024-01-24 [94edfe250] pgbench: Add \syncpipeline
-->
<listitem>
<para>
Add pgbench command <literal>\syncpipeline</literal> to allow
sending of sync messages (Anthonin Bonnefoy)
<ulink url="&commit_baseurl;94edfe250">&sect;</ulink>
</para>
</listitem>
<!--
Author: Michael Paquier <michael@paquier.xyz>
2023-07-19 [3f8c98d0b] pg_archivecleanup: Add - -clean-backup-history
-->
<listitem>
<para>
Allow <link
linkend="pgarchivecleanup"><application>pg_archivecleanup</application></link>
to remove backup history files (Atsushi Torikoshi)
<ulink url="&commit_baseurl;3f8c98d0b">&sect;</ulink>
</para>
<para>
The option is <option>--clean-backup-history</option>.
</para>
</listitem>
<!--
Author: Michael Paquier <michael@paquier.xyz>
2023-06-30 [dd7c60f19] Introduce long options in pg_archivecleanup
-->
<listitem>
<para>
Add some long options to <application>pg_archivecleanup</application>
(Atsushi Torikoshi)
<ulink url="&commit_baseurl;dd7c60f19">&sect;</ulink>
</para>
<para>
The long options are <option>--debug</option>,
<option>--dry-run</option>, and <option>--strip-extension</option>.
</para>
</listitem>
<!--
Author: Daniel Gustafsson <dgustafsson@postgresql.org>
2023-09-21 [cca97ce6a] Allow dbname in pg_basebackup/pg_receivewal connstring
-->
<listitem>
<para>
Allow <link
linkend="app-pgbasebackup"><application>pg_basebackup</application></link>
and <link
linkend="app-pgreceivewal"><application>pg_receivewal</application></link>
to use dbname in their connection specification (Jelte Fennema-Nio)
<ulink url="&commit_baseurl;cca97ce6a">&sect;</ulink>
</para>
<para>
This is useful for connection poolers that are sensitive to the
database name.
</para>
</listitem>
<!--
Author: Thomas Munro <tmunro@postgresql.org>
2024-03-06 [d93627bcb] Add - -copy-file-range option to pg_upgrade.
-->
<listitem>
<para>
Add <link
linkend="pgupgrade"><application>pg_upgrade</application></link>
option <option>--copy-file-range</option> (Thomas Munro)
<ulink url="&commit_baseurl;d93627bcb">&sect;</ulink>
</para>
<para>
This is supported on <systemitem class="osname">Linux</systemitem>
and <systemitem class="osname">FreeBSD</systemitem>.
</para>
</listitem>
<!--
Author: Alexander Korotkov <akorotkov@postgresql.org>
2024-03-25 [47f99a407] reindexdb: Add the index-level REINDEX with multiple job
-->
<listitem>
<para>
Allow <link
linkend="app-reindexdb"><application>reindexdb</application></link>
<option>--index</option> to process indexes from different tables
in parallel (Maxim Orlov, Svetlana Derevyanko, Alexander Korotkov)
<ulink url="&commit_baseurl;47f99a407">&sect;</ulink>
</para>
</listitem>
<!--
Author: Nathan Bossart <nathan@postgresql.org>
2024-03-11 [24c928ad9] reindexdb: Allow specifying objects to process in all da
Author: Nathan Bossart <nathan@postgresql.org>
2024-03-11 [648928c79] vacuumdb: Allow specifying objects to process in all dat
Author: Nathan Bossart <nathan@postgresql.org>
2024-03-11 [1b49d56d3] clusterdb: Allow specifying tables to process in all dat
-->
<listitem>
<para>
Allow <link linkend="app-reindexdb">reindexdb</link>,
<link linkend="app-vacuumdb">vacuumdb</link>, and <link
linkend="app-clusterdb">clusterdb</link> to process objects in all
databases matching a pattern (Nathan Bossart)
<ulink url="&commit_baseurl;24c928ad9">&sect;</ulink>
<ulink url="&commit_baseurl;648928c79">&sect;</ulink>
<ulink url="&commit_baseurl;1b49d56d3">&sect;</ulink>
</para>
<para>
The new option <option>--all</option> controls this behavior.
</para>
</listitem>
</itemizedlist>
</sect3>
<sect3 id="release-17-source-code">
<title>Source Code</title>
<itemizedlist>
<!--
Author: Michael Paquier <michael@paquier.xyz>
2023-07-03 [8e278b657] Remove support for OpenSSL 1.0.1
-->
<listitem>
<para>
Remove support for <productname>OpenSSL</productname> 1.0.1
(Michael Paquier)
<ulink url="&commit_baseurl;8e278b657">&sect;</ulink>
</para>
</listitem>
<!--
Author: Peter Eisentraut <peter@eisentraut.org>
2023-11-17 [284cbaea7] Allow tests to pass in OpenSSL FIPS mode (TAP tests)
Author: Peter Eisentraut <peter@eisentraut.org>
2023-11-17 [3c44e7d8d] Allow tests to pass in OpenSSL FIPS mode (rest)
-->
<listitem>
<para>
Allow tests to pass in <productname>OpenSSL</productname>
<acronym>FIPS</acronym> mode (Peter Eisentraut)
<ulink url="&commit_baseurl;284cbaea7">&sect;</ulink>
<ulink url="&commit_baseurl;3c44e7d8d">&sect;</ulink>
</para>
</listitem>
<!--
Author: Nathan Bossart <nathan@postgresql.org>
2024-04-06 [792752af4] Optimize pg_popcount() with AVX-512 instructions.
Author: Nathan Bossart <nathan@postgresql.org>
2024-04-06 [41c51f0c6] Optimize visibilitymap_count() with AVX-512 instructions
-->
<listitem>
<para>
Use <acronym>CPU AVX</acronym>-512 instructions for bit counting
(Paul Amonson, Nathan Bossart, Ants Aasma)
<ulink url="&commit_baseurl;792752af4">&sect;</ulink>
<ulink url="&commit_baseurl;41c51f0c6">&sect;</ulink>
</para>
</listitem>
<!--
Author: Thomas Munro <tmunro@postgresql.org>
2024-01-25 [820b5af73] jit: Require at least LLVM 10.
-->
<listitem>
<para>
Require <productname><acronym>LLVM</acronym></productname> version
10 or later (Thomas Munro)
<ulink url="&commit_baseurl;820b5af73">&sect;</ulink>
</para>
</listitem>
<!--
Author: John Naylor <john.naylor@postgresql.org>
2023-08-10 [4d14ccd6a] Use native CRC instructions on 64-bit LoongArch
-->
<listitem>
<para>
Use native <acronym>CRC</acronym> instructions on 64-bit
<productname>LoongArch</productname> CPUs (Xudong Yang)
<ulink url="&commit_baseurl;4d14ccd6a">&sect;</ulink>
</para>
</listitem>
<!--
Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
2024-02-28 [0b16bb877] Remove AIX support
-->
<listitem>
<para>
Remove <systemitem class="osname"><acronym>AIX</acronym></systemitem>
support (Heikki Linnakangas)
<ulink url="&commit_baseurl;0b16bb877">&sect;</ulink>
</para>
</listitem>
<!--
Author: Michael Paquier <michael@paquier.xyz>
2023-12-20 [1301c80b2] Remove MSVC scripts
-->
<listitem>
<para>
Remove the <productname>Microsoft Visual
Studio</productname>-specific <productname>PostgreSQL</productname>
build option (Michael Paquier)
<ulink url="&commit_baseurl;1301c80b2">&sect;</ulink>
</para>
<para>
<productname>Meson</productname> is now the only available method
for <productname>Visual Studio</productname> builds.
</para>
</listitem>
<!--
Author: Thomas Munro <tmunro@postgresql.org>
2023-07-12 [68a4b58ec] Remove - -disable-thread-safety and related code.
Author: Thomas Munro <tmunro@postgresql.org>
2023-07-12 [ce0b0fa3e] Doc: Adjust libpq docs about thread safety.
-->
<listitem>
<para>
Remove configure option <option>--disable-thread-safety</option>
(Thomas Munro, Heikki Linnakangas)
<ulink url="&commit_baseurl;68a4b58ec">&sect;</ulink>
<ulink url="&commit_baseurl;ce0b0fa3e">&sect;</ulink>
</para>
<para>
We now assume all supported platforms have sufficient thread support.
</para>
</listitem>
<!--
Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
2024-02-28 [1c1eec0f2] Remove configure - -with-CC option
-->
<listitem>
<para>
Remove <application>configure</application> option
<option>--with-CC</option> (Heikki Linnakangas)
<ulink url="&commit_baseurl;1c1eec0f2">&sect;</ulink>
</para>
<para>
Setting the <envar>CC</envar> environment variable is now the only
supported method for specifying the compiler.
</para>
</listitem>
<!--
Author: David Rowley <drowley@postgresql.org>
2023-10-26 [f0efa5aec] Introduce the concept of read-only StringInfos
-->
<listitem>
<para>
User-defined data type receive functions will no longer receive
their data null-terminated (David Rowley)
<ulink url="&commit_baseurl;f0efa5aec">&sect;</ulink>
</para>
</listitem>
<!--
Author: Andrew Dunstan <andrew@dunslane.net>
2024-04-04 [3311ea86e] Introduce a non-recursive JSON parser
-->
<listitem>
<para>
Add incremental <type>JSON</type> parser for use with huge
<type>JSON</type> documents (Andrew Dunstan)
<ulink url="&commit_baseurl;3311ea86e">&sect;</ulink>
</para>
</listitem>
<!--
Author: Nathan Bossart <nathan@postgresql.org>
2024-02-28 [363eb0599] Convert README to Markdown.
-->
<listitem>
<para>
Convert top-level <filename>README</filename> file to
<productname>Markdown</productname> (Nathan Bossart)
<ulink url="&commit_baseurl;363eb0599">&sect;</ulink>
</para>
</listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
2023-12-22 [e2b73f4a4] Stop generating plain-text INSTALL instructions.
-->
<listitem>
<para>
Remove no longer needed top-level <filename>INSTALL</filename> file
(Tom Lane)
<ulink url="&commit_baseurl;e2b73f4a4">&sect;</ulink>
</para>
</listitem>
<!--
Author: Peter Eisentraut <peter@eisentraut.org>
2023-11-06 [721856ff2] Remove distprep
-->
<listitem>
<para>
Remove <application>make</application>'s <literal>distprep</literal>
option (Peter Eisentraut)
<ulink url="&commit_baseurl;721856ff2">&sect;</ulink>
</para>
</listitem>
<!--
Author: Peter Eisentraut <peter@eisentraut.org>
2024-01-23 [79b03dbb3] Support shared libraries on Android (using make)
-->
<listitem>
<para>
Add <application>make</application> support for
<productname>Android</productname> shared libraries (Peter
Eisentraut)
<ulink url="&commit_baseurl;79b03dbb3">&sect;</ulink>
</para>
</listitem>
<!--
Author: Michael Paquier <michael@paquier.xyz>
2024-01-22 [d86d20f0b] Add backend support for injection points
Author: Michael Paquier <michael@paquier.xyz>
2024-03-04 [37b369dc6] injection_points: Add wait and wakeup of processes
Author: Michael Paquier <michael@paquier.xyz>
2024-04-08 [f587338de] injection_points: Introduce runtime conditions
Author: Noah Misch <noah@leadboat.com>
2024-06-27 [bb93640a6] Add wait event type "InjectionPoint", a custom
-->
<listitem>
<para>
Add backend support for injection points (Michael Paquier)
<ulink url="&commit_baseurl;d86d20f0b">&sect;</ulink>
<ulink url="&commit_baseurl;37b369dc6">&sect;</ulink>
<ulink url="&commit_baseurl;f587338de">&sect;</ulink>
<ulink url="&commit_baseurl;bb93640a6">&sect;</ulink>
</para>
<para>
This is used for server debugging and they must be enabled at server
compile time.
</para>
</listitem>
<!--
Author: Nathan Bossart <nathan@postgresql.org>
2024-01-19 [8b2bcf3f2] Introduce the dynamic shared memory registry.
-->
<listitem>
<para>
Add dynamic shared memory registry (Nathan Bossart)
<ulink url="&commit_baseurl;8b2bcf3f2">&sect;</ulink>
</para>
<para>
This allows shared libraries which are not initialized at startup
to coordinate dynamic shared memory access.
</para>
</listitem>
<!--
Author: Michael Paquier <michael@paquier.xyz>
2024-04-04 [2a217c371] Coordinate emit_log_hook and all log destinations to sha
-->
<listitem>
<para>
Fix <literal>emit_log_hook</literal> to use the same time value as
other log records for the same query (Kambam Vinay, Michael Paquier)
<ulink url="&commit_baseurl;2a217c371">&sect;</ulink>
</para>
</listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
2024-01-25 [7014c9a4b] Doc: improve documentation for jsonpath behavior.
-->
<listitem>
<para>
Improve documentation for using <literal>jsonpath</literal> for
predicate checks (David Wheeler)
<ulink url="&commit_baseurl;7014c9a4b">&sect;</ulink>
</para>
</listitem>
</itemizedlist>
</sect3>
<sect3 id="release-17-modules">
<title>Additional Modules</title>
<itemizedlist>
<!--
Author: Etsuro Fujita <efujita@postgresql.org>
2023-08-15 [9e9931d2b] Re-allow FDWs and custom scan providers to replace joins
-->
<listitem>
<para>
Allow joins with non-join qualifications to be pushed down to
foreign servers and custom scans (Richard Guo, Etsuro Fujita)
<ulink url="&commit_baseurl;9e9931d2b">&sect;</ulink>
</para>
<para>
Foreign data wrappers and custom scans will need to be modified to
handle these cases.
</para>
</listitem>
<!--
Author: Alexander Korotkov <akorotkov@postgresql.org>
2023-12-05 [824dbea3e] Add support for deparsing semi-joins to contrib/postgres
-->
<listitem>
<para>
Allow pushdown of <literal>EXISTS</literal> and <literal>IN</literal>
subqueries to <xref linkend="postgres-fdw"/> foreign servers
(Alexander Pyhalov)
<ulink url="&commit_baseurl;824dbea3e">&sect;</ulink>
</para>
</listitem>
<!--
Author: David Rowley <drowley@postgresql.org>
2023-11-02 [cac169d68] Increase DEFAULT_FDW_TUPLE_COST from 0.01 to 0.2
Author: John Naylor <john.naylor@postgresql.org>
2024-01-11 [f7f694b21] Update documentation of default fdw_tuple_cost
-->
<listitem>
<para>
Increase the default foreign data wrapper tuple cost (David Rowley,
Umair Shahid)
<ulink url="&commit_baseurl;cac169d68">&sect;</ulink>
<ulink url="&commit_baseurl;f7f694b21">&sect;</ulink>
</para>
<para>
This value is used by the optimizer.
</para>
</listitem>
<!--
Author: Noah Misch <noah@leadboat.com>
2024-01-08 [d3c5f37dd] Make dblink interruptible, via new libpqsrv APIs.
-->
<listitem>
<para>
Allow <link linkend="dblink"><application>dblink</application></link>
database operations to be interrupted (Noah Misch)
<ulink url="&commit_baseurl;d3c5f37dd">&sect;</ulink>
</para>
</listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
2024-03-21 [485f0aa85] Add hash support functions and hash opclass for contrib/
-->
<listitem>
<para>
Allow the creation of hash indexes on <application><xref
linkend="ltree"/></application> columns (Tommy Pavlicek)
<ulink url="&commit_baseurl;485f0aa85">&sect;</ulink>
</para>
<para>
This also enables hash join and hash aggregation on
<application>ltree</application> columns.
</para>
</listitem>
<!--
Author: Michael Paquier <michael@paquier.xyz>
2023-09-20 [59f47fb98] unaccent: Add support for quoted translated characters
-->
<listitem>
<para>
Allow <application><xref linkend="unaccent"/></application> character
translation rules to contain whitespace and quotes (Michael Paquier)
<ulink url="&commit_baseurl;59f47fb98">&sect;</ulink>
</para>
<para>
The syntax for the <filename>unaccent.rules</filename> file has
changed.
</para>
</listitem>
<!--
Author: Alexander Korotkov <akorotkov@postgresql.org>
2023-10-28 [5ae208720] Teach contrib/amcheck to check the unique constraint vio
-->
<listitem>
<para>
Allow <application><xref linkend="amcheck"/></application>
to check for unique constraint violations using new option
<option>--checkunique</option> (Anastasia Lubennikova, Pavel Borisov,
Maxim Orlov)
<ulink url="&commit_baseurl;5ae208720">&sect;</ulink>
</para>
</listitem>
<!--
Author: Peter Eisentraut <peter@eisentraut.org>
2023-11-07 [3c551ebed] citext: Allow tests to pass in OpenSSL FIPS mode
-->
<listitem>
<para>
Allow <application><xref linkend="citext"/></application> tests to
pass in OpenSSL <acronym>FIPS</acronym> mode (Peter Eisentraut)
<ulink url="&commit_baseurl;3c551ebed">&sect;</ulink>
</para>
</listitem>
<!--
Author: Peter Eisentraut <peter@eisentraut.org>
2023-11-17 [795592865] pgcrypto: Allow tests to pass in OpenSSL FIPS mode
-->
<listitem>
<para>
Allow <application><xref linkend="pgcrypto"/></application> tests
to pass in OpenSSL <acronym>FIPS</acronym> mode (Peter Eisentraut)
<ulink url="&commit_baseurl;795592865">&sect;</ulink>
</para>
</listitem>
<!--
Author: Nathan Bossart <nathan@postgresql.org>
2023-11-27 [75680c3d8] Retire a few backwards compatibility macros.
-->
<listitem>
<para>
Remove some unused <link linkend="spi"><acronym>SPI</acronym></link>
macros (Bharath Rupireddy)
<ulink url="&commit_baseurl;75680c3d8">&sect;</ulink>
</para>
</listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
2023-10-20 [2b5154bea] Extend ALTER OPERATOR to allow setting more optimization
-->
<listitem>
<para>
Allow <link linkend="sql-alteroperator"><command>ALTER
OPERATOR</command></link> to set more optimization attributes
(Tommy Pavlicek)
<ulink url="&commit_baseurl;2b5154bea">&sect;</ulink>
</para>
<para>
This is useful for extensions.
</para>
</listitem>
<!--
Author: Michael Paquier <michael@paquier.xyz>
2023-07-31 [c9af05465] Support custom wait events for wait event type "Extensio
Author: Michael Paquier <michael@paquier.xyz>
2023-10-04 [c8e318b1b] worker_spi: Rename custom wait event to "WorkerSpiMain"
Author: Michael Paquier <michael@paquier.xyz>
2023-10-05 [d61f2538a] postgres_fdw: Replace WAIT_EVENT_EXTENSION with custom w
Author: Michael Paquier <michael@paquier.xyz>
2023-10-05 [c789f0f6c] dblink: Replace WAIT_EVENT_EXTENSION with custom wait ev
-->
<listitem>
<para>
Allow extensions to define <link
linkend="xfunc-addin-wait-events">custom wait events</link>
(Masahiro Ikeda)
<ulink url="&commit_baseurl;c9af05465">&sect;</ulink>
<ulink url="&commit_baseurl;c8e318b1b">&sect;</ulink>
<ulink url="&commit_baseurl;d61f2538a">&sect;</ulink>
<ulink url="&commit_baseurl;c789f0f6c">&sect;</ulink>
</para>
<para>
Custom wait events have been added to <application><xref
linkend="postgres-fdw"/></application> and <application><xref
linkend="dblink"/></application>.
</para>
</listitem>
<!--
Author: Thomas Munro <tmunro@postgresql.org>
2024-04-08 [13453eedd] Add pg_buffercache_evict() function for testing.
-->
<listitem>
<para>
Add <application><xref linkend="pgbuffercache"/></application>
function <function>pg_buffercache_evict()</function> to allow shared
buffer eviction (Palak Chaturvedi, Thomas Munro)
<ulink url="&commit_baseurl;13453eedd">&sect;</ulink>
</para>
<para>
This is useful for testing.
</para>
</listitem>
</itemizedlist>
<sect4 id="release-17-pgstatstatements">
<title><link linkend="pgstatstatements"><application>pg_stat_statements</application></link></title>
<itemizedlist>
<!--
Author: Michael Paquier <michael@paquier.xyz>
2023-09-28 [11c34b342] Show parameters of CALL as constants in pg_stat_statemen
-->
<listitem>
<para>
Replace <link linkend="sql-call"><command>CALL</command></link>
parameters in <application>pg_stat_statements</application> with
placeholders (Sami Imseih)
<ulink url="&commit_baseurl;11c34b342">&sect;</ulink>
</para>
</listitem>
<!--
Author: Michael Paquier <michael@paquier.xyz>
2023-07-27 [31de7e60d] Show savepoint names as constants in pg_stat_statements
-->
<listitem>
<para>
Replace savepoint names stored in
<structname>pg_stat_statements</structname> with placeholders
(Greg Sabino Mullane)
<ulink url="&commit_baseurl;31de7e60d">&sect;</ulink>
</para>
<para>
This greatly reduces the number of entries needed to record <link
linkend="sql-savepoint"><command>SAVEPOINT</command></link>,
<link linkend="sql-release-savepoint"><command>RELEASE
SAVEPOINT</command></link>, and <link
linkend="sql-rollback-to"><command>ROLLBACK TO
SAVEPOINT</command></link> commands.
</para>
</listitem>
<!--
Author: Michael Paquier <michael@paquier.xyz>
2023-08-12 [638d42a3c] Show GIDs of two-phase commit commands as constants in p
-->
<listitem>
<para>
Replace the two-phase commit <acronym>GID</acronym>s stored in
<structname>pg_stat_statements</structname> with placeholders
(Michael Paquier)
<ulink url="&commit_baseurl;638d42a3c">&sect;</ulink>
</para>
<para>
This greatly reduces the number of entries needed to record
<link linkend="sql-prepare-transaction"><command>PREPARE
TRANSACTION</command></link>, <link
linkend="sql-commit-prepared"><command>COMMIT
PREPARED</command></link>, and <link
linkend="sql-rollback-prepared"><command>ROLLBACK
PREPARED</command></link>.
</para>
</listitem>
<!--
Author: Michael Paquier <michael@paquier.xyz>
2023-08-27 [bb45156f3] Show names of DEALLOCATE as constants in pg_stat_stateme
-->
<listitem>
<para>
Track <link
linkend="sql-deallocate"><command>DEALLOCATE</command></link>
in <structname>pg_stat_statements</structname> (Dagfinn Ilmari
Manns&aring;ker, Michael Paquier)
<ulink url="&commit_baseurl;bb45156f3">&sect;</ulink>
</para>
<para>
<command>DEALLOCATE</command> names are stored in
<structname>pg_stat_statements</structname> as placeholders.
</para>
</listitem>
<!--
Author: Michael Paquier <michael@paquier.xyz>
2023-10-19 [295c36c0c] Add local_blk_{read|write}_time I/O timing statistics fo
Author: Michael Paquier <michael@paquier.xyz>
2023-10-19 [5147ab1dd] pg_stat_statements: Add local_blk_{read|write}_time
-->
<listitem>
<para>
Add local I/O block read/write timing statistics columns of
<structname>pg_stat_statements</structname> (Nazir Bilal Yavuz)
<ulink url="&commit_baseurl;295c36c0c">&sect;</ulink>
<ulink url="&commit_baseurl;5147ab1dd">&sect;</ulink>
</para>
<para>
The new columns are <structfield>local_blk_read_time</structfield>
and <structfield>local_blk_write_time</structfield>.
</para>
</listitem>
<!--
Author: Daniel Gustafsson <dgustafsson@postgresql.org>
2023-09-08 [5a3423ad8] Add JIT deform_counter
-->
<listitem>
<para>
Add <acronym>JIT</acronym> deform_counter details to
<structname>pg_stat_statements</structname> (Dmitry Dolgov)
<ulink url="&commit_baseurl;5a3423ad8">&sect;</ulink>
</para>
</listitem>
<!--
Author: Alexander Korotkov <akorotkov@postgresql.org>
2023-11-27 [dc9f8a798] Track statement entry timestamp in contrib/pg_stat_state
-->
<listitem>
<para>
Add optional fourth argument (<literal>minmax_only</literal>)
to <function>pg_stat_statements_reset()</function> to allow for
the resetting of only min/max statistics (Andrei Zubkov)
<ulink url="&commit_baseurl;dc9f8a798">&sect;</ulink>
</para>
<para>
This argument defaults to <literal>false</literal>.
</para>
</listitem>
<!--
Author: Alexander Korotkov <akorotkov@postgresql.org>
2023-11-27 [dc9f8a798] Track statement entry timestamp in contrib/pg_stat_state
-->
<listitem>
<para>
Add <structname>pg_stat_statements</structname>
columns <structfield>stats_since</structfield> and
<structfield>minmax_stats_since</structfield> to track entry
creation time and last min/max reset time (Andrei Zubkov)
<ulink url="&commit_baseurl;dc9f8a798">&sect;</ulink>
</para>
</listitem>
</itemizedlist>
</sect4>
</sect3>
</sect2>
<sect2 id="release-17-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>Adnan Dautovic</member>
<member>Aidar Imamov</member>
<member>Ajin Cherian</member>
<member>Akash Shankaran</member>
<member>Akshat Jaimini</member>
<member>Alaa Attya</member>
<member>Aleksander Alekseev</member>
<member>Aleksej Orlov</member>
<member>Alena Rybakina</member>
<member>Alex Hsieh</member>
<member>Alex Malek</member>
<member>Alex Shulgin</member>
<member>Alex Work</member>
<member>Alexander Korotkov</member>
<member>Alexander Kozhemyakin</member>
<member>Alexander Kuzmenkov</member>
<member>Alexander Lakhin</member>
<member>Alexander Pyhalov</member>
<member>Alexey Palazhchenko</member>
<member>Alfons Kemper</member>
<member>Álvaro Herrera</member>
<member>Amadeo Gallardo</member>
<member>Amit Kapila</member>
<member>Amit Langote</member>
<member>Amul Sul</member>
<member>Anastasia Lubennikova</member>
<member>Anatoly Zaretsky</member>
<member>Andreas Karlsson</member>
<member>Andreas Ulbrich</member>
<member>Andrei Lepikhov</member>
<member>Andrei Zubkov</member>
<member>Andres Freund</member>
<member>Andrew Alsup</member>
<member>Andrew Atkinson</member>
<member>Andrew Bille</member>
<member>Andrew Dunstan</member>
<member>Andrew Kane</member>
<member>Andrey Borodin</member>
<member>Andrey Rachitskiy</member>
<member>Andrey Sokolov</member>
<member>Andy Fan</member>
<member>Anthonin Bonnefoy</member>
<member>Anthony Hsu</member>
<member>Anton Kirilov</member>
<member>Anton Melnikov</member>
<member>Anton Voloshin</member>
<member>Antonin Houska</member>
<member>Ants Aasma</member>
<member>Antti Lampinen</member>
<member>Aramaki Zyake</member>
<member>Artem Anisimov</member>
<member>Artur Zakirov</member>
<member>Ashutosh Bapat</member>
<member>Ashutosh Sharma</member>
<member>Atsushi Torikoshi</member>
<member>Attila Gulyás</member>
<member>Ayush Tiwari</member>
<member>Ayush Vatsa</member>
<member>Bartosz Chrol</member>
<member>Benoît Ryder</member>
<member>Bernd Helmle</member>
<member>Bertrand Drouvot</member>
<member>Bharath Rupireddy</member>
<member>Bo Andreson</member>
<member>Boshomi Phenix</member>
<member>Bowen Shi</member>
<member>Boyu Yang</member>
<member>Bruce Momjian</member>
<member>Cameron Vogt</member>
<member>Cary Huang</member>
<member>Cédric Villemain</member>
<member>Changhong Fei</member>
<member>Chantal Keller</member>
<member>Chapman Flack</member>
<member>Chengxi Sun</member>
<member>Chris Travers</member>
<member>Christian Maurer</member>
<member>Christian Stork</member>
<member>Christoph Berg</member>
<member>Christoph Heiss</member>
<member>Christophe Courtois</member>
<member>Christopher Kline</member>
<member>Claudio Freire</member>
<member>Colin Caine</member>
<member>Corey Huinker</member>
<member>Curt Kolovson</member>
<member>Dag Lem</member>
<member>Dagfinn Ilmari Mannsåker</member>
<member>Damir Belyalov</member>
<member>Daniel Fredouille</member>
<member>Daniel Gustafsson</member>
<member>Daniel Shelepanov</member>
<member>Daniel Vérité</member>
<member>Daniel Westermann</member>
<member>Darren Rush</member>
<member>Dave Cramer</member>
<member>Dave Page</member>
<member>David Christensen</member>
<member>David Cook</member>
<member>David G. Johnston</member>
<member>David Geier</member>
<member>David Hillman</member>
<member>David Perez</member>
<member>David Rowley</member>
<member>David Steele</member>
<member>David Wheeler</member>
<member>David Zhang</member>
<member>Dean Rasheed</member>
<member>Denis Erokhin</member>
<member>Denis Laxalde</member>
<member>Devrim Gündüz</member>
<member>Dilip Kumar</member>
<member>Dimitrios Apostolou</member>
<member>Dmitry Dolgov</member>
<member>Dmitry Koval</member>
<member>Dmitry Vasiliev</member>
<member>Dominique Devienne</member>
<member>Dong Wook Lee</member>
<member>Donghang Lin</member>
<member>Dongming Liu</member>
<member>Drew Callahan</member>
<member>Drew Kimball</member>
<member>Dzmitry Jachnik</member>
<member>Egor Chindyaskin</member>
<member>Egor Rogov</member>
<member>Ekaterina Kiryanova</member>
<member>Elena Indrupskaya</member>
<member>Elizabeth Christensen</member>
<member>Emre Hasegeli</member>
<member>Eric Cyr</member>
<member>Eric Mutta</member>
<member>Eric Radman</member>
<member>Eric Ridge</member>
<member>Erik Rijkers</member>
<member>Erik Wienhold</member>
<member>Erki Eessaar</member>
<member>Ethan Mertz</member>
<member>Etsuro Fujita</member>
<member>Eugen Konkov</member>
<member>Euler Taveira</member>
<member>Evan Macbeth</member>
<member>Evgeny Morozov</member>
<member>Fabien Coelho</member>
<member>Fabrízio de Royes Mello</member>
<member>Farias de Oliveira</member>
<member>Feliphe Pozzer</member>
<member>Fire Emerald</member>
<member>Flavien Guedez</member>
<member>Floris Van Nee</member>
<member>Francesco Degrassi</member>
<member>Frank Streitzig</member>
<member>Gabriele Bartolini</member>
<member>Garrett Thornburg</member>
<member>Gavin Flower</member>
<member>Gavin Panella</member>
<member>Gilles Darold</member>
<member>Gilles Parc</member>
<member>Grant Gryczan</member>
<member>Greg Nancarrow</member>
<member>Greg Sabino Mullane</member>
<member>Greg Stark</member>
<member>Gurjeet Singh</member>
<member>Haiying Tang</member>
<member>Hajime Matsunaga</member>
<member>Hal Takahara</member>
<member>Hanefi Onaldi</member>
<member>Hannu Krosing</member>
<member>Hans Buschmann</member>
<member>Hao Wu</member>
<member>Hao Zhang</member>
<member>Hayato Kuroda</member>
<member>Heikki Linnakangas</member>
<member>Hemanth Sandrana</member>
<member>Himanshu Upadhyaya</member>
<member>Hironobu Suzuki</member>
<member>Holger Reise</member>
<member>Hongxu Ma</member>
<member>Hongyu Song</member>
<member>Horst Reiterer</member>
<member>Hubert Lubaczewski</member>
<member>Hywel Carver</member>
<member>Ian Barwick</member>
<member>Ian Ilyasov</member>
<member>Ilya Nenashev</member>
<member>Isaac Morland</member>
<member>Israel Barth Rubio</member>
<member>Ivan Kartyshov</member>
<member>Ivan Kolombet</member>
<member>Ivan Lazarev</member>
<member>Ivan Panchenko</member>
<member>Ivan Trofimov</member>
<member>Jacob Champion</member>
<member>Jacob Speidel</member>
<member>Jacques Combrink</member>
<member>Jaime Casanova</member>
<member>Jakub Wartak</member>
<member>James Coleman</member>
<member>James Pang</member>
<member>Jani Rahkola</member>
<member>Japin Li</member>
<member>Jeevan Chalke</member>
<member>Jeff Davis</member>
<member>Jeff Janes</member>
<member>Jelte Fennema-Nio</member>
<member>Jeremy Schneider</member>
<member>Jian Guo</member>
<member>Jian He</member>
<member>Jim Jones</member>
<member>Jim Keener</member>
<member>Jim Nasby</member>
<member>Jingtang Zhang</member>
<member>Jingxian Li</member>
<member>Jingzhou Fu</member>
<member>Joe Conway</member>
<member>Joel Jacobson</member>
<member>John Ekins</member>
<member>John Hsu</member>
<member>John Morris</member>
<member>John Naylor</member>
<member>John Russell</member>
<member>Jonathan Katz</member>
<member>Jordi Gutiérrez</member>
<member>Joseph Koshakow</member>
<member>Josh Kupershmidt</member>
<member>Joshua D. Drake</member>
<member>Joshua Uyehara</member>
<member>Jubilee Young</member>
<member>Julien Rouhaud</member>
<member>Junwang Zhao</member>
<member>Justin Pryzby</member>
<member>Kaido Vaikla</member>
<member>Kambam Vinay</member>
<member>Karen Talarico</member>
<member>Karina Litskevich</member>
<member>Karl O. Pinc</member>
<member>Kashif Zeeshan</member>
<member>Kim Johan Andersson</member>
<member>Kirill Reshke</member>
<member>Kirk Parker</member>
<member>Kirk Wolak</member>
<member>Kisoon Kwon</member>
<member>Koen De Groote</member>
<member>Kohei KaiGai</member>
<member>Kong Man</member>
<member>Konstantin Knizhnik</member>
<member>Kouhei Sutou</member>
<member>Krishnakumar R</member>
<member>Kuntal Ghosh</member>
<member>Kurt Roeckx</member>
<member>Kyotaro Horiguchi</member>
<member>Lang Liu</member>
<member>Lars Kanis</member>
<member>Laurenz Albe</member>
<member>Lauri Laanmets</member>
<member>Legs Mansion</member>
<member>Lukas Fittl</member>
<member>Magnus Hagander</member>
<member>Mahendrakar Srinivasarao</member>
<member>Maiquel Grassi</member>
<member>Manos Emmanouilidis</member>
<member>Marcel Hofstetter</member>
<member>Marcos Pegoraro</member>
<member>Marian Krucina</member>
<member>Marina Polyakova</member>
<member>Mark Dilger</member>
<member>Mark Guertin</member>
<member>Mark Sloan</member>
<member>Markus Winand</member>
<member>Marlene Reiterer</member>
<member>Martín Marqués</member>
<member>Martin Nash</member>
<member>Martin Schlossarek</member>
<member>Masahiko Sawada</member>
<member>Masahiro Ikeda</member>
<member>Masaki Kuwamura</member>
<member>Masao Fujii</member>
<member>Mason Sharp</member>
<member>Matheus Alcantara</member>
<member>Mats Kindahl</member>
<member>Matthias Kuhn</member>
<member>Matthias van de Meent</member>
<member>Maxim Boguk</member>
<member>Maxim Orlov</member>
<member>Maxim Yablokov</member>
<member>Maxime Boyer</member>
<member>Melanie Plageman</member>
<member>Melih Mutlu</member>
<member>Merlin Moncure</member>
<member>Micah Gate</member>
<member>Michael Banck</member>
<member>Michael Bondarenko</member>
<member>Michael Paquier</member>
<member>Michael Wang</member>
<member>Michael Zhilin</member>
<member>Michail Nikolaev</member>
<member>Michal Bartak</member>
<member>Michal Kleczek</member>
<member>Mikhail Gribkov</member>
<member>Mingli Zhang</member>
<member>Miroslav Bendik</member>
<member>Mitsuru Hinata</member>
<member>Moaaz Assali</member>
<member>Muralikrishna Bandaru</member>
<member>Nathan Bossart</member>
<member>Nazir Bilal Yavuz</member>
<member>Neil Tiffin</member>
<member>Ngigi Waithaka</member>
<member>Nikhil Benesch</member>
<member>Nikhil Raj</member>
<member>Nikita Glukhov</member>
<member>Nikita Kalinin</member>
<member>Nikita Malakhov</member>
<member>Nikolay Samokhvalov</member>
<member>Nikolay Shaplov</member>
<member>Nisha Moond</member>
<member>Nishant Sharma</member>
<member>Nitin Jadhav</member>
<member>Noah Misch</member>
<member>Noriyoshi Shinoda</member>
<member>Ole Peder Brandtzæg</member>
<member>Oleg Bartunov</member>
<member>Oleg Sibiryakov</member>
<member>Oleg Tselebrovskiy</member>
<member>Olleg Samoylov</member>
<member>Onder Kalaci</member>
<member>Ondrej Navratil</member>
<member>Pablo Kharo</member>
<member>Palak Chaturvedi</member>
<member>Pantelis Theodosiou</member>
<member>Paul Amonson</member>
<member>Paul Jungwirth</member>
<member>Pavel Borisov</member>
<member>Pavel Kulakov</member>
<member>Pavel Luzanov</member>
<member>Pavel Stehule</member>
<member>Pavlo Golub</member>
<member>Pedro Gallegos</member>
<member>Pete Storer</member>
<member>Peter Eisentraut</member>
<member>Peter Geoghegan</member>
<member>Peter Smith</member>
<member>Philip Warner</member>
<member>Philipp Salvisberg</member>
<member>Pierre Ducroquet</member>
<member>Pierre Fortin</member>
<member>Przemyslaw Sztoch</member>
<member>Quynh Tran</member>
<member>Raghuveer Devulapalli</member>
<member>Ranier Vilela</member>
<member>Reid Thompson</member>
<member>Rian McGuire</member>
<member>Richard Guo</member>
<member>Richard Vesely</member>
<member>Ridvan Korkmaz</member>
<member>Robert Haas</member>
<member>Robert Scott</member>
<member>Robert Treat</member>
<member>Roberto Mello</member>
<member>Robins Tharakan</member>
<member>Roman Lozko</member>
<member>Ronan Dunklau</member>
<member>Rui Zhao</member>
<member>Ryo Matsumura</member>
<member>Ryoga Yoshida</member>
<member>Sameer Kumar</member>
<member>Sami Imseih</member>
<member>Samuel Dussault</member>
<member>Sanjay Minni</member>
<member>Satoru Koizumi</member>
<member>Sebastian Skalacki</member>
<member>Sergei Glukhov</member>
<member>Sergei Kornilov</member>
<member>Sergey Prokhorenko</member>
<member>Sergey Sargsyan</member>
<member>Sergey Shinderuk</member>
<member>Shaozhong Shi</member>
<member>Shaun Thomas</member>
<member>Shay Rojansky</member>
<member>Shihao Zhong</member>
<member>Shinya Kato</member>
<member>Shlok Kyal</member>
<member>Shruthi Gowda</member>
<member>Shubham Khanna</member>
<member>Shulin Zhou</member>
<member>Shveta Malik</member>
<member>Simon Riggs</member>
<member>Soumyadeep Chakraborty</member>
<member>Sravan Velagandula</member>
<member>Stan Hu</member>
<member>Stepan Neretin</member>
<member>Stepan Rutz</member>
<member>Stéphane Schildknecht</member>
<member>Stephane Tachoires</member>
<member>Stephen Frost</member>
<member>Steve Atkins</member>
<member>Steve Chavez</member>
<member>Suraj Khamkar</member>
<member>Suraj Kharage</member>
<member>Svante Richter</member>
<member>Svetlana Derevyanko</member>
<member>Sylvain Frandaz</member>
<member>Takayuki Tsunakawa</member>
<member>Tatsuo Ishii</member>
<member>Tatsuro Yamada</member>
<member>Tender Wang</member>
<member>Teodor Sigaev</member>
<member>Thom Brown</member>
<member>Thomas Munro</member>
<member>Tim Carey-Smith</member>
<member>Tim Needham</member>
<member>Tim Palmer</member>
<member>Tobias Bussmann</member>
<member>Tom Lane</member>
<member>Tomas Vondra</member>
<member>Tommy Pavlicek</member>
<member>Tomonari Katsumata</member>
<member>Tristan Partin</member>
<member>Tristen Raab</member>
<member>Tung Nguyen</member>
<member>Umair Shahid</member>
<member>Uwe Binder</member>
<member>Valerie Woolard</member>
<member>Vallimaharajan G</member>
<member>Vasya Boytsov</member>
<member>Victor Wagner</member>
<member>Victor Yegorov</member>
<member>Victoria Shepard</member>
<member>Vidushi Gupta</member>
<member>Vignesh C</member>
<member>Vik Fearing</member>
<member>Viktor Leis</member>
<member>Vinayak Pokale</member>
<member>Vitaly Burovoy</member>
<member>Vojtech Benes</member>
<member>Wei Sun</member>
<member>Wei Wang</member>
<member>Wenjiang Zhang</member>
<member>Will Mortensen</member>
<member>Willi Mann</member>
<member>Wolfgang Walther</member>
<member>Xiang Liu</member>
<member>Xiaoran Wang</member>
<member>Xing Guo</member>
<member>Xudong Yang</member>
<member>Yahor Yuzefovich</member>
<member>Yajun Hu</member>
<member>Yaroslav Saburov</member>
<member>Yong Li</member>
<member>Yongtao Huang</member>
<member>Yugo Nagata</member>
<member>Yuhang Qiu</member>
<member>Yuki Seino</member>
<member>Yura Sokolov</member>
<member>Yurii Rashkovskii</member>
<member>Yuuki Fujii</member>
<member>Yuya Watari</member>
<member>Yves Colin</member>
<member>Zhihong Yu</member>
<member>Zhijie Hou</member>
<member>Zongliang Quan</member>
<member>Zubeyr Eryilmaz</member>
<member>Zuming Jiang</member>
</simplelist>
</sect2>
</sect1>