blob: 95a6bfe037f0f00c4b9d835721c921bcb8d186f3 [file] [log] [blame]
<!-- doc/src/sgml/release-14.sgml -->
<!-- See header comment in release.sgml about typical markup -->
<sect1 id="release-14-4">
<title>Release 14.4</title>
<formalpara>
<title>Release date:</title>
<para>2022-06-16</para>
</formalpara>
<para>
This release contains a variety of fixes from 14.3.
For information about new features in major release 14, see
<xref linkend="release-14"/>.
</para>
<sect2>
<title>Migration to Version 14.4</title>
<para>
A dump/restore is not required for those running 14.X.
</para>
<para>
However, if you have any indexes that were created using
the <option>CONCURRENTLY</option> option under 14.X,
you should re-index them after updating.
See the first changelog entry below.
</para>
<para>
Also, if you are upgrading from a version earlier than 14.3,
see <xref linkend="release-14-3"/>.
</para>
</sect2>
<sect2>
<title>Changes</title>
<itemizedlist>
<listitem>
<!--
Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
Branch: master [e28bb8851] 2022-05-31 21:24:59 +0200
Branch: REL_14_STABLE [042b584c7] 2022-05-31 21:24:59 +0200
-->
<para>
Prevent possible corruption of indexes created or rebuilt with
the <literal>CONCURRENTLY</literal> option (&Aacute;lvaro Herrera)
</para>
<para>
An optimization added in v14 caused <command>CREATE INDEX ...
CONCURRENTLY</command> and <command>REINDEX
... CONCURRENTLY</command> to sometimes miss indexing rows that were
updated during the index build. Revert that optimization.
It is recommended that any indexes made with
the <literal>CONCURRENTLY</literal> option be rebuilt after
installing this update. (Alternatively, rebuild them
without <literal>CONCURRENTLY</literal>.)
</para>
</listitem>
<listitem>
<!--
Author: David Rowley <drowley@postgresql.org>
Branch: master [fa5185b26] 2022-06-08 12:39:09 +1200
Branch: REL_14_STABLE [cbcea3b91] 2022-06-08 12:39:44 +1200
-->
<para>
Harden Memoize plan node against non-deterministic equality
functions (David Rowley)
</para>
<para>
Memoize could crash if a data type's equality or hash functions gave
inconsistent results across different calls. Throw a runtime error
instead.
</para>
</listitem>
<listitem>
<!--
Author: David Rowley <drowley@postgresql.org>
Branch: master [1e731ed12] 2022-05-16 16:07:56 +1200
Branch: REL_14_STABLE [23c2b76a8] 2022-05-16 16:08:37 +1200
-->
<para>
Fix incorrect cost estimates for Memoize plans (David Rowley)
</para>
<para>
This mistake could lead to Memoize being used when it isn't really
the best plan, or to very long executor startup times due to
initializing an overly-large hash table for a Memoize node.
</para>
</listitem>
<listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [1218780cc] 2022-06-10 10:35:57 -0400
Branch: REL_14_STABLE [77c1d92cb] 2022-06-10 10:35:57 -0400
Branch: REL_13_STABLE [254cd7f31] 2022-06-10 10:35:57 -0400
Branch: REL_12_STABLE [d3ef5c3ef] 2022-06-10 10:35:57 -0400
Branch: REL_11_STABLE [199aac8b2] 2022-06-10 10:35:57 -0400
-->
<para>
Fix queries in which a <quote>whole-row variable</quote> references
the result of a function that returns a domain over composite type
(Tom Lane)
</para>
</listitem>
<listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [79b58c6f6] 2022-05-12 11:31:46 -0400
Branch: REL_14_STABLE [ac51c9fba] 2022-05-12 11:31:46 -0400
Branch: REL_13_STABLE [b7579b25c] 2022-05-12 11:31:46 -0400
Branch: REL_12_STABLE [301b91c56] 2022-05-12 11:31:46 -0400
Branch: REL_11_STABLE [7f7f1750d] 2022-05-12 11:31:46 -0400
Branch: REL_10_STABLE [b53442f6f] 2022-05-12 11:31:46 -0400
-->
<para>
Fix <quote>variable not found in subplan target list</quote> planner
error when pulling up a sub-<literal>SELECT</literal> that's
referenced in a <literal>GROUPING</literal> function (Richard Guo)
</para>
</listitem>
<listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [bf4717b09] 2022-06-07 15:34:30 -0400
Branch: REL_14_STABLE [5c3b5f7db] 2022-06-07 15:34:30 -0400
Branch: REL_13_STABLE [a36196972] 2022-06-07 15:34:30 -0400
Branch: REL_12_STABLE [435251b85] 2022-06-07 15:34:30 -0400
Branch: REL_11_STABLE [d628ce048] 2022-06-07 15:34:30 -0400
Branch: REL_10_STABLE [fb646cbd5] 2022-06-07 15:34:30 -0400
-->
<para>
Prevent <function>pg_stat_get_subscription()</function> from
possibly returning an extra row containing garbage values
(Kuntal Ghosh)
</para>
</listitem>
<listitem>
<!--
Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
Branch: master [fc36ac52e] 2022-05-29 23:54:25 +0300
Branch: REL_14_STABLE [f82595ac9] 2022-05-29 23:57:16 +0300
-->
<para>
Fix <command>COPY FROM</command>'s error checking in the case where
the database encoding is <literal>SQL_ASCII</literal> while the
client's encoding is a multi-byte encoding (Heikki Linnakangas)
</para>
<para>
This mistake could lead to false complaints of invalidly-encoded
input data.
</para>
</listitem>
<listitem>
<!--
Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
Branch: master [0fbf01120] 2022-05-18 20:28:31 +0200
Branch: REL_14_STABLE [94edb85d2] 2022-05-18 20:28:31 +0200
Branch: REL_13_STABLE [80656f00f] 2022-05-18 20:28:31 +0200
Branch: REL_12_STABLE [ade17703d] 2022-05-18 20:28:31 +0200
Branch: REL_11_STABLE [ba83de8ad] 2022-05-18 20:28:31 +0200
Branch: REL_10_STABLE [16cb7db34] 2022-05-18 20:28:31 +0200
Branch: master [62221ef18] 2022-05-18 23:19:53 +0200
Branch: REL_14_STABLE [e8b93c6e2] 2022-05-18 23:19:53 +0200
Branch: REL_13_STABLE [5139db556] 2022-05-18 23:19:53 +0200
Branch: REL_12_STABLE [0ebd20e20] 2022-05-18 23:19:53 +0200
Branch: REL_11_STABLE [50bf3157a] 2022-05-18 23:19:53 +0200
Branch: REL_10_STABLE [29d111518] 2022-05-18 23:19:53 +0200
-->
<para>
Avoid crashing if too many column aliases are attached to
an <literal>XMLTABLE</literal> or <literal>JSON_TABLE</literal>
construct (&Aacute;lvaro Herrera)
</para>
</listitem>
<listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [c7461fc25] 2022-05-21 14:45:58 -0400
Branch: REL_14_STABLE [6f7eec119] 2022-05-21 14:45:58 -0400
Branch: REL_13_STABLE [fefd54631] 2022-05-21 14:45:58 -0400
Branch: REL_12_STABLE [bb2c04676] 2022-05-21 14:45:58 -0400
Branch: REL_11_STABLE [f3b8d7244] 2022-05-21 14:45:58 -0400
Branch: REL_10_STABLE [7686403b4] 2022-05-21 14:45:58 -0400
-->
<para>
When decompiling a view or rule, show a <command>SELECT</command>
output column's <literal>AS "?column?"</literal> alias clause
if it could be referenced elsewhere (Tom Lane)
</para>
<para>
Previously, this auto-generated alias was always hidden; but there
are corner cases where doing so results in a non-restorable view or
rule definition.
</para>
</listitem>
<listitem>
<!--
Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
Branch: master [602986191] 2022-05-20 18:52:55 +0200
Branch: REL_14_STABLE [58b088a9b] 2022-05-20 18:52:55 +0200
Branch: REL_13_STABLE [3753a169e] 2022-05-20 18:52:55 +0200
Branch: REL_12_STABLE [4492e73a6] 2022-05-20 18:52:55 +0200
Branch: REL_11_STABLE [6c6ea6ea8] 2022-05-20 18:52:55 +0200
Branch: REL_10_STABLE [70f70d7d3] 2022-05-20 18:52:55 +0200
Branch: REL_10_STABLE [8c47622bb] 2022-05-20 19:05:55 +0200
-->
<para>
Report implicitly-created operator families to event triggers
(Masahiko Sawada)
</para>
<para>
If <command>CREATE OPERATOR CLASS</command> results in the implicit
creation of an operator family, that object was not reported to
event triggers that should capture such events.
</para>
</listitem>
<listitem>
<!--
Author: Michael Paquier <michael@paquier.xyz>
Branch: REL_14_STABLE [6dced63b4] 2022-05-16 11:26:22 +0900
Branch: REL_13_STABLE [2e9559b30] 2022-05-16 11:26:26 +0900
Branch: REL_12_STABLE [7e59b1219] 2022-05-16 11:26:30 +0900
Branch: REL_11_STABLE [4525151d4] 2022-05-16 11:26:36 +0900
Branch: REL_10_STABLE [60e956eb8] 2022-05-16 11:26:41 +0900
-->
<para>
Fix control file updates made when a restartpoint is running during
promotion of a standby server (Kyotaro Horiguchi)
</para>
<para>
Previously, when the restartpoint completed it could incorrectly
update the last-checkpoint fields of the control file, potentially
leading to PANIC and failure to restart if the server crashes before
the next normal checkpoint completes.
</para>
</listitem>
<listitem>
<!--
Author: Amit Kapila <akapila@postgresql.org>
Branch: master [f95d53ede] 2022-05-11 11:11:44 +0530
Branch: REL_14_STABLE [d6da71fa8] 2022-05-11 10:51:04 +0530
Branch: REL_13_STABLE [55558df23] 2022-05-11 10:41:24 +0530
Branch: REL_12_STABLE [f832b5007] 2022-05-11 10:25:56 +0530
Branch: REL_11_STABLE [87c1dd246] 2022-05-11 10:12:23 +0530
Branch: REL_10_STABLE [a4015ec03] 2022-05-11 10:01:35 +0530
-->
<para>
Prevent triggering of
standby's <varname>wal_receiver_timeout</varname> during logical
replication of large transactions (Wang Wei, Amit Kapila)
</para>
<para>
If a large transaction on the primary server sends no data to the
standby (perhaps because no table it changes is published), it was
possible for the standby to timeout. Fix that by ensuring we send
keepalive messages periodically in such situations.
</para>
</listitem>
<listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [16c80e7d0] 2022-05-31 14:47:44 -0400
Branch: REL_14_STABLE [c47a55852] 2022-05-31 14:47:44 -0400
Branch: REL_13_STABLE [c73748b68] 2022-05-31 14:47:44 -0400
Branch: REL_12_STABLE [a3faebd6a] 2022-05-31 14:47:44 -0400
Branch: REL_11_STABLE [ae758e603] 2022-05-31 14:47:44 -0400
Branch: REL_10_STABLE [2114910ca] 2022-05-31 14:47:44 -0400
-->
<para>
Prevent open-file leak when reading an invalid timezone abbreviation
file (Kyotaro Horiguchi)
</para>
<para>
Such cases could result in harmless warning messages.
</para>
</listitem>
<listitem>
<!--
Author: Michael Paquier <michael@paquier.xyz>
Branch: master [f1431f3bf] 2022-05-28 12:12:40 +0900
Branch: REL_14_STABLE [fe441a031] 2022-05-28 12:12:46 +0900
Branch: REL_13_STABLE [1e6802990] 2022-05-28 12:12:51 +0900
Branch: REL_12_STABLE [ae236bf66] 2022-05-28 12:12:55 +0900
Branch: REL_11_STABLE [c3db8a2e2] 2022-05-28 12:12:58 +0900
Branch: REL_10_STABLE [1b40ceea2] 2022-05-28 12:13:02 +0900
-->
<para>
Allow custom server parameters to have short descriptions that are
NULL (Steve Chavez)
</para>
<para>
Previously, although extensions could choose to create such
settings, some code paths would crash while processing them.
</para>
</listitem>
<listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [2b65de7fc] 2022-05-26 14:14:05 -0400
Branch: REL_14_STABLE [b4be4a082] 2022-05-26 14:14:05 -0400
Branch: REL_13_STABLE [9e3dbc6fd] 2022-05-26 14:14:05 -0400
Branch: REL_12_STABLE [01ab9fb7d] 2022-05-26 14:14:05 -0400
Branch: REL_11_STABLE [a44bc8b8f] 2022-05-26 14:14:05 -0400
Branch: REL_10_STABLE [ef54a6576] 2022-05-26 14:14:05 -0400
-->
<para>
Remove misguided SSL key file ownership check
in <application>libpq</application> (Tom Lane)
</para>
<para>
In the previous minor releases, we copied the server's permission
checking rules for SSL private key files into libpq. But we should
not have also copied the server's file-ownership check. While that
works in normal use-cases, it can result in an unexpected failure
for clients running as root, and perhaps in other cases.
</para>
</listitem>
<listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [6d157e7cb] 2022-06-06 11:20:21 -0400
Branch: REL_14_STABLE [a5dbca460] 2022-06-06 11:20:31 -0400
Branch: REL_13_STABLE [16d68007c] 2022-06-06 11:20:36 -0400
Branch: REL_12_STABLE [02026cadb] 2022-06-06 11:20:41 -0400
Branch: REL_11_STABLE [d82ed5b2f] 2022-06-06 11:20:46 -0400
Branch: REL_10_STABLE [89254606b] 2022-06-06 11:20:52 -0400
-->
<para>
Ensure <application>ecpg</application> reports server connection loss
sanely (Tom Lane)
</para>
<para>
Misprocessing of a libpq-generated error result, such as a report of
lost connection, would lead to printing <quote>(null)</quote>
instead of a useful error message; or in older releases it would
lead to a crash.
</para>
</listitem>
<listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [51da23159] 2022-06-06 11:26:57 -0400
Branch: REL_14_STABLE [32a85ee46] 2022-06-06 11:26:57 -0400
-->
<para>
Prevent crash after server connection loss
in <application>pg_amcheck</application> (Tom Lane)
</para>
<para>
Misprocessing of a libpq-generated error result, such as a report of
lost connection, would lead to a crash.
</para>
</listitem>
<listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [eb39610f8] 2022-06-01 16:15:47 -0400
Branch: REL_14_STABLE [1072e4c45] 2022-06-01 16:15:47 -0400
Branch: REL_13_STABLE [eeac7dd9f] 2022-06-01 16:15:47 -0400
Branch: REL_12_STABLE [c08538734] 2022-06-01 16:15:47 -0400
Branch: REL_11_STABLE [b5265196e] 2022-06-01 16:15:47 -0400
Branch: REL_10_STABLE [d5e1d5ed9] 2022-06-01 16:15:47 -0400
Branch: REL9_6_STABLE [d4c161842] 2022-06-01 16:15:47 -0400
Branch: REL9_5_STABLE [9fdeae848] 2022-06-01 16:15:47 -0400
Branch: REL9_4_STABLE [b53780e1b] 2022-06-01 16:15:47 -0400
Branch: REL9_3_STABLE [a3b685fdd] 2022-06-01 16:15:47 -0400
Branch: REL9_2_STABLE [6f9ea6cf3] 2022-06-01 16:15:47 -0400
-->
<para>
Adjust PL/Perl test case so it will work under Perl 5.36
(Dagfinn Ilmari Mannsåker)
</para>
</listitem>
<listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [aff45c879] 2022-05-10 18:42:02 -0400
Branch: REL_14_STABLE [12736e7dc] 2022-05-10 18:42:02 -0400
Branch: REL_13_STABLE [af9b96767] 2022-05-10 18:42:02 -0400
Branch: REL_12_STABLE [8ed13fb93] 2022-05-10 18:42:02 -0400
Branch: REL_11_STABLE [36d76da81] 2022-05-10 18:42:02 -0400
Branch: REL_10_STABLE [c61f36d99] 2022-05-10 18:42:02 -0400
-->
<para>
Avoid incorrectly using an
out-of-date <application>libldap_r</application> library when
multiple <productname>OpenLDAP</productname> installations are
present while building <productname>PostgreSQL</productname>
(Tom Lane)
</para>
</listitem>
</itemizedlist>
</sect2>
</sect1>
<sect1 id="release-14-3">
<title>Release 14.3</title>
<formalpara>
<title>Release date:</title>
<para>2022-05-12</para>
</formalpara>
<para>
This release contains a variety of fixes from 14.2.
For information about new features in major release 14, see
<xref linkend="release-14"/>.
</para>
<sect2>
<title>Migration to Version 14.3</title>
<para>
A dump/restore is not required for those running 14.X.
</para>
<para>
However, if you have any GiST indexes on columns of type
<type>ltree</type> (supplied by the <filename>contrib/ltree</filename>
extension), you should re-index them after updating.
See the second changelog entry below.
</para>
<para>
Also, if you are upgrading from a version earlier than 14.2,
see <xref linkend="release-14-2"/>.
</para>
</sect2>
<sect2>
<title>Changes</title>
<itemizedlist>
<listitem>
<!--
Author: Noah Misch <noah@leadboat.com>
Branch: master [a117cebd6] 2022-05-09 08:35:08 -0700
Branch: REL_14_STABLE [ab49ce7c3] 2022-05-09 08:35:12 -0700
Branch: REL_13_STABLE [35edcc0ce] 2022-05-09 08:35:12 -0700
Branch: REL_12_STABLE [7f098f7b5] 2022-05-09 08:35:12 -0700
Branch: REL_11_STABLE [48ca2904c] 2022-05-09 08:35:13 -0700
Branch: REL_10_STABLE [ef792f785] 2022-05-09 08:35:13 -0700
Author: Noah Misch <noah@leadboat.com>
Branch: master [0abc1a059] 2022-05-09 08:35:08 -0700
Branch: REL_14_STABLE [677a49478] 2022-05-09 08:35:12 -0700
Branch: REL_13_STABLE [88743d581] 2022-05-09 08:35:12 -0700
Branch: REL_12_STABLE [880511cb0] 2022-05-09 08:35:12 -0700
Branch: REL_11_STABLE [34ff15660] 2022-05-09 08:35:13 -0700
Branch: REL_10_STABLE [f26d57028] 2022-05-09 08:35:13 -0700
-->
<para>
Confine additional operations within <quote>security restricted
operation</quote> sandboxes (Sergey Shinderuk, Noah Misch)
</para>
<para>
Autovacuum, <command>CLUSTER</command>, <command>CREATE
INDEX</command>, <command>REINDEX</command>, <command>REFRESH
MATERIALIZED VIEW</command>,
and <application>pg_amcheck</application> activated
the <quote>security restricted operation</quote> protection
mechanism too late, or even not at all in some code paths.
A user having permission to create non-temporary objects within a
database could define an object that would execute arbitrary SQL
code with superuser permissions the next time that autovacuum
processed the object, or that some superuser ran one of the affected
commands against it.
</para>
<para>
The <productname>PostgreSQL</productname> Project thanks
Alexander Lakhin for reporting this problem.
(CVE-2022-1552)
</para>
</listitem>
<listitem>
<!--
Author: Alexander Korotkov <akorotkov@postgresql.org>
Branch: master [7e74aafc4] 2022-03-16 11:41:18 +0300
Branch: REL_14_STABLE [7d30f59da] 2022-03-16 11:41:30 +0300
Branch: REL_13_STABLE [bad202c61] 2022-03-16 11:41:34 +0300
-->
<para>
Fix default signature length for <literal>gist_ltree_ops</literal>
indexes (Tomas Vondra, Alexander Korotkov)
</para>
<para>
The default signature length (hash size) for GiST indexes
on <type>ltree</type> columns was accidentally changed while
upgrading that operator class to support operator class parameters.
If any operations had been done on such an index without first
upgrading the <literal>ltree</literal> extension to version 1.2,
they were done assuming that the signature length was 28 bytes
rather than the intended 8. This means it is very likely that such
indexes are now corrupt. For safety we recommend re-indexing all
GiST indexes on <type>ltree</type> columns after installing this
update. (Note that GiST indexes on <type>ltree[]</type>
columns, that is arrays of <type>ltree</type>, are not affected.)
</para>
</listitem>
<listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [ec62cb0aa] 2022-03-17 18:18:05 -0400
Branch: REL_14_STABLE [1d072bd20] 2022-03-17 18:18:05 -0400
Branch: REL_13_STABLE [5e144cc89] 2022-03-17 18:18:05 -0400
Branch: REL_12_STABLE [1f5ef5ae0] 2022-03-17 18:18:05 -0400
Branch: REL_11_STABLE [13b54d1e0] 2022-03-17 18:18:05 -0400
Branch: REL_10_STABLE [205214c8b] 2022-03-17 18:18:05 -0400
-->
<para>
Stop using query-provided column aliases for the columns of
whole-row variables that refer to plain tables (Tom Lane)
</para>
<para>
The column names in tuples produced by a whole-row variable (such
as <literal>tbl.*</literal> in contexts other than the top level of
a <literal>SELECT</literal> list) are now always those of the
associated named composite type, if there is one. We'd previously
attempted to make them track any column aliases that had been
applied to the <literal>FROM</literal> entry the variable refers to.
But that's semantically dubious, because really then the output of
the variable is not at all of the composite type it claims to be.
Previous attempts to deal with that inconsistency had bad results up
to and including storing unreadable data on disk, so just give up on
the whole idea.
</para>
<para>
In cases where it's important to be able to relabel such columns,
a workaround is to introduce an extra level of
sub-<literal>SELECT</literal>, so that the whole-row variable is
referring to the sub-<literal>SELECT</literal>'s output and not to a
plain table. Then the variable is of type <type>record</type>
to begin with and there's no issue.
</para>
</listitem>
<listitem>
<!--
Author: Peter Eisentraut <peter@eisentraut.org>
Branch: master [f2a2bf66c] 2022-04-19 21:04:52 +0200
Branch: REL_14_STABLE [7a8d8219c] 2022-04-19 21:03:27 +0200
-->
<para>
Fix incorrect roundoff when extracting epoch values from intervals
(Peter Eisentraut)
</para>
<para>
The new <type>numeric</type>-based code
for <function>EXTRACT()</function> failed to yield results
equivalent to the old <type>float</type>-based code, as a result of
accidentally truncating the <literal>DAYS_PER_YEAR</literal> value
to an integer.
</para>
</listitem>
<listitem>
<!--
Author: Andres Freund <andres@anarazel.de>
Branch: master [43a7dc96e] 2022-03-27 21:46:23 -0700
Branch: REL_14_STABLE [c1a0d7d1c] 2022-03-27 21:44:39 -0700
-->
<para>
Defend against <literal>pg_stat_get_replication_slot(NULL)</literal>
(Andres Freund)
</para>
<para>
This function should be marked strict in the catalog data, but it
was not in v14, so add a run-time check instead.
</para>
</listitem>
<listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [068739fb4] 2022-03-18 16:01:42 -0400
Branch: REL_14_STABLE [ae8ec7feb] 2022-03-18 16:01:42 -0400
Branch: REL_13_STABLE [88ae77588] 2022-03-18 16:01:42 -0400
Branch: REL_12_STABLE [840729fd1] 2022-03-18 16:01:42 -0400
Branch: REL_11_STABLE [84f3ecdaa] 2022-03-18 16:01:42 -0400
Branch: REL_10_STABLE [e6fd4a3da] 2022-03-18 16:01:42 -0400
-->
<para>
Fix incorrect output for types <type>timestamptz</type>
and <type>timetz</type> in <function>table_to_xmlschema()</function>
and allied functions (Renan Soares Lopes)
</para>
<para>
The xmlschema output for these types included a malformed regular
expression.
</para>
</listitem>
<listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [fe20afaee] 2022-05-09 14:15:37 -0400
Branch: REL_14_STABLE [ab2f78392] 2022-05-09 14:15:37 -0400
Branch: REL_13_STABLE [91a3a74c6] 2022-05-09 14:15:37 -0400
Branch: REL_12_STABLE [90e52884e] 2022-05-09 14:15:37 -0400
Branch: REL_11_STABLE [539f8c563] 2022-05-09 14:15:37 -0400
Branch: REL_10_STABLE [4eabaffca] 2022-05-09 14:15:37 -0400
-->
<para>
Avoid core dump in parser for a <literal>VALUES</literal> clause with
zero columns (Tom Lane)
</para>
</listitem>
<listitem>
<!--
Author: Etsuro Fujita <efujita@postgresql.org>
Branch: master [5c854e7a2] 2022-04-28 15:15:00 +0900
Branch: REL_14_STABLE [ebb790241] 2022-04-28 15:15:02 +0900
-->
<para>
Fix planner failure when a Result plan node appears immediately
underneath an Append node (Etsuro Fujita)
</para>
<para>
Recently-added code to support asynchronous remote queries failed to
handle this case, leading to crashes or errors about unrecognized
node types.
</para>
</listitem>
<listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [f819020d4] 2022-04-23 12:16:12 -0400
Branch: REL_14_STABLE [dff6c77fa] 2022-04-23 12:16:12 -0400
-->
<para>
Fix planner failure if a query using <literal>SEARCH</literal>
or <literal>CYCLE</literal> features contains a duplicate CTE name
(Tom Lane, Kyotaro Horiguchi)
</para>
<para>
When the name of the recursive <literal>WITH</literal> query is
re-used within itself, the planner could crash or report odd errors
such as <quote>could not find attribute 2 in subquery
targetlist</quote>.
</para>
</listitem>
<listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [2591ee8ec] 2022-03-21 17:44:29 -0400
Branch: REL_14_STABLE [48b6035f0] 2022-03-21 17:44:29 -0400
Branch: REL_13_STABLE [dfefe38fb] 2022-03-21 17:44:29 -0400
Branch: REL_12_STABLE [69c88e2fb] 2022-03-21 17:44:29 -0400
Branch: REL_11_STABLE [5de244196] 2022-03-21 17:44:29 -0400
Branch: REL_10_STABLE [2afa031ac] 2022-03-21 17:44:29 -0400
-->
<para>
Fix planner errors for <function>GROUPING()</function> constructs
that reference outer query levels (Richard Guo, Tom Lane)
</para>
</listitem>
<listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [e5691cc91] 2022-02-11 15:24:02 -0500
Branch: REL_14_STABLE [277e744ae] 2022-02-11 15:23:52 -0500
Branch: REL_13_STABLE [0778b24ce] 2022-02-11 15:23:52 -0500
Branch: REL_12_STABLE [32e801676] 2022-02-11 15:23:52 -0500
Branch: REL_11_STABLE [14ee565f3] 2022-02-11 15:23:52 -0500
Branch: REL_10_STABLE [b6f869bee] 2022-02-11 15:23:52 -0500
-->
<para>
Fix plan generation for index-only scans on indexes with
both returnable and non-returnable columns (Tom Lane)
</para>
<para>
The previous coding could try to read non-returnable columns
in addition to the returnable ones. This was fairly harmless
because it didn't actually do anything with the bogus values,
but it fell foul of a recently-added error check that rejected
such a plan.
</para>
</listitem>
<listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [7b7ed046c] 2022-04-13 13:35:07 -0400
Branch: REL_14_STABLE [c590e514a] 2022-04-13 13:35:02 -0400
Branch: REL_13_STABLE [44096c31e] 2022-04-13 13:35:02 -0400
Branch: REL_12_STABLE [e0ed20d0b] 2022-04-13 13:35:02 -0400
-->
<para>
Avoid accessing a no-longer-pinned shared buffer while attempting
to lock an outdated tuple during EvalPlanQual (Tom Lane)
</para>
<para>
The code would touch the buffer a couple more times after releasing
its pin. In theory another process could recycle the buffer (or
more likely, try to defragment its free space) as soon as the pin is
gone, probably leading to failure to find the newer version of the
tuple.
</para>
</listitem>
<listitem>
<!--
Author: Alexander Korotkov <akorotkov@postgresql.org>
Branch: master [3f74daa8d] 2022-02-14 04:17:04 +0300
Branch: REL_14_STABLE [c76665edc] 2022-02-14 03:32:31 +0300
Branch: REL_13_STABLE [ac2303aa0] 2022-02-14 03:32:34 +0300
Branch: REL_12_STABLE [7a12a9e3c] 2022-02-14 03:32:39 +0300
Branch: REL_11_STABLE [0d554775b] 2022-02-14 04:04:19 +0300
Branch: REL_10_STABLE [2e9033a54] 2022-02-14 04:04:28 +0300
-->
<para>
Fix query-lifespan memory leak in an IndexScan node that is
performing reordering (Aliaksandr Kalenik)
</para>
</listitem>
<listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [344a225cb] 2022-04-19 23:03:59 -0400
Branch: REL_14_STABLE [08a9e7a8c] 2022-04-19 23:03:59 -0400
Branch: REL_13_STABLE [f583633bc] 2022-04-19 23:03:59 -0400
Branch: REL_12_STABLE [481a99811] 2022-04-19 23:03:59 -0400
Branch: REL_11_STABLE [9130f8cbb] 2022-04-19 23:03:59 -0400
Branch: REL_10_STABLE [409bcfda6] 2022-04-19 23:03:59 -0400
-->
<para>
Fix <command>ALTER FUNCTION</command> to support changing a
function's parallelism property and
its <literal>SET</literal>-variable list in the same command (Tom
Lane)
</para>
<para>
The parallelism property change was lost if the same command also
updated the function's <literal>SET</literal> clause.
</para>
</listitem>
<listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [641f3dffc] 2022-03-11 13:47:29 -0500
Branch: REL_14_STABLE [8dcd1c356] 2022-03-11 13:47:26 -0500
-->
<para>
Tighten lookup of the index <quote>owned by</quote> a constraint
(Tom Lane, Japin Li)
</para>
<para>
Some code paths mistook the index depended on by a foreign key
constraint for one owned by a unique or primary key constraint,
resulting in odd errors during certain <command>ALTER
TABLE</command> operations on tables having foreign key constraints.
</para>
</listitem>
<listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [36d4efe77] 2022-04-18 12:16:45 -0400
Branch: REL_14_STABLE [e805735a8] 2022-04-18 12:16:45 -0400
Branch: REL_13_STABLE [69cefb3fb] 2022-04-18 12:16:45 -0400
Branch: REL_12_STABLE [0795da869] 2022-04-18 12:16:45 -0400
-->
<para>
Fix bogus errors from attempts to alter system columns of tables
(Tom Lane)
</para>
<para>
The system should just tell you that you can't do it, but sometimes
it would report <quote>no owned sequence found</quote> instead.
</para>
</listitem>
<listitem>
<!--
Author: Peter Geoghegan <pg@bowt.ie>
Branch: master [8ab0ebb9a] 2022-04-20 17:17:43 -0700
Branch: REL_14_STABLE [e4521841a] 2022-04-20 17:17:41 -0700
Branch: REL_13_STABLE [1272630a2] 2022-04-20 17:17:39 -0700
Branch: REL_12_STABLE [5487585e3] 2022-04-20 17:17:37 -0700
Branch: REL_11_STABLE [adb2d84fc] 2022-04-20 17:17:35 -0700
Branch: REL_10_STABLE [a903895b3] 2022-04-20 17:17:33 -0700
-->
<para>
Fix mis-sorting of table rows when <command>CLUSTER</command>ing
using an index whose leading key is an expression (Peter Geoghegan,
Thomas Munro)
</para>
<para>
The table would be rebuilt with the correct data, but in an order
having little to do with the index order.
</para>
</listitem>
<listitem>
<!--
Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
Branch: master [6c46e8a5d] 2022-02-24 16:15:12 +0200
Branch: REL_14_STABLE [7d80e93fb] 2022-02-24 14:34:09 +0200
-->
<para>
Prevent data loss if a system crash occurs shortly after a sorted
GiST index build (Heikki Linnakangas)
</para>
<para>
The code path for building GiST indexes using sorting neglected
to <function>fsync</function> the file upon completion. This could
result in a corrupted index if the operating system crashed shortly
later.
</para>
</listitem>
<listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [7b6ec8653] 2022-03-21 12:22:13 -0400
Branch: REL_14_STABLE [05ccf974c] 2022-03-21 12:22:13 -0400
Branch: REL_13_STABLE [2241e5ced] 2022-03-21 12:22:13 -0400
Branch: REL_12_STABLE [d8d378d51] 2022-03-21 12:22:13 -0400
Branch: REL_11_STABLE [b8ae17fd9] 2022-03-21 12:22:13 -0400
-->
<para>
Fix risk of deadlock failures while dropping a partitioned index
(Jimmy Yih, Gaurab Dey, Tom Lane)
</para>
<para>
Ensure that the required table and index locks are taken in the
standard order (parents before children, tables before indexes).
The previous coding for <command>DROP INDEX</command> did it
differently, and so could deadlock against concurrent queries taking
these locks in the standard order.
</para>
</listitem>
<listitem>
<!--
Author: Thomas Munro <tmunro@postgresql.org>
Branch: master [46d9bfb0a] 2022-03-16 17:20:24 +1300
Branch: REL_14_STABLE [26e007939] 2022-03-16 17:20:50 +1300
Branch: REL_13_STABLE [51e760e5a] 2022-03-16 17:21:19 +1300
Branch: REL_12_STABLE [c918f07dd] 2022-03-16 17:21:46 +1300
Branch: REL_11_STABLE [ca522c60a] 2022-03-16 17:38:55 +1300
Branch: REL_10_STABLE [fe197872c] 2022-03-16 17:41:31 +1300
-->
<para>
Fix race condition between <command>DROP TABLESPACE</command> and
checkpointing (Nathan Bossart)
</para>
<para>
The checkpoint forced by <command>DROP TABLESPACE</command> could
sometimes fail to remove all dead files from the tablespace's
directory, leading to a bogus <quote>tablespace is not empty</quote>
error.
</para>
</listitem>
<listitem>
<!--
Author: Robert Haas <rhaas@postgresql.org>
Branch: master [412ad7a55] 2022-03-24 14:52:28 -0400
Branch: REL_14_STABLE [bbace5697] 2022-03-24 14:32:48 -0400
Branch: REL_13_STABLE [1ce14b6b2] 2022-03-24 14:36:06 -0400
Branch: REL_12_STABLE [3821d66a7] 2022-03-24 14:38:51 -0400
Branch: REL_11_STABLE [118f1a332] 2022-03-24 14:49:08 -0400
Branch: REL_10_STABLE [57f618310] 2022-03-24 14:50:06 -0400
Author: Robert Haas <rhaas@postgresql.org>
Branch: REL_14_STABLE [10520f434] 2022-04-14 11:10:07 -0400
Branch: REL_13_STABLE [d18c913b7] 2022-04-14 11:10:11 -0400
Branch: REL_12_STABLE [68e605b9e] 2022-04-14 11:10:13 -0400
Branch: REL_11_STABLE [6270ee445] 2022-04-14 11:10:16 -0400
Branch: REL_10_STABLE [48b398943] 2022-04-14 11:10:18 -0400
-->
<para>
Fix possible trouble in crash recovery after
a <command>TRUNCATE</command> command that overlaps a checkpoint
(Kyotaro Horiguchi, Heikki Linnakangas, Robert Haas)
</para>
<para>
<command>TRUNCATE</command> must ensure that the table's disk file
is truncated before the checkpoint is allowed to complete.
Otherwise, replay starting from that checkpoint might find
unexpected data in the supposedly-removed pages, possibly causing
replay failure.
</para>
</listitem>
<listitem>
<!--
Author: Andres Freund <andres@anarazel.de>
Branch: master [7c38ef2a5] 2022-02-21 08:57:34 -0800
Branch: REL_14_STABLE [7bbfe5994] 2022-02-21 09:57:05 -0800
Branch: REL_13_STABLE [c2551483e] 2022-02-21 08:59:30 -0800
Branch: REL_12_STABLE [0033fc63f] 2022-02-21 08:59:32 -0800
Branch: REL_11_STABLE [3faa21bb7] 2022-02-21 08:59:34 -0800
Branch: REL_10_STABLE [cebc54b90] 2022-02-21 08:59:36 -0800
-->
<para>
Fix unsafe toast-data accesses during temporary object cleanup
(Andres Freund)
</para>
<para>
Temporary-object deletion during server process exit could fail
with <quote>FATAL: cannot fetch toast data without an active
snapshot</quote>. This was usually harmless since the next use of
that temporary schema would clean up successfully.
</para>
</listitem>
<listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [bd74c4037] 2022-02-23 11:10:46 -0500
Branch: REL_14_STABLE [dd7c05979] 2022-02-23 11:10:46 -0500
-->
<para>
Re-allow underscore as the first character in a custom parameter
name (Japin Li)
</para>
<para>
Such names were unintentionally disallowed in v14.
</para>
</listitem>
<listitem>
<!--
Author: Michael Paquier <michael@paquier.xyz>
Branch: master [ebf6c5249] 2022-02-22 10:22:15 +0900
Branch: REL_14_STABLE [627c79a1e] 2022-02-22 10:23:49 +0900
-->
<para>
Add <literal>regress</literal> option for
the <varname>compute_query_id</varname> parameter (Michael Paquier)
</para>
<para>
This is intended to facilitate testing, by allowing query IDs to be
computed but not shown in <command>EXPLAIN</command> output.
</para>
</listitem>
<listitem>
<!--
Author: Thomas Munro <tmunro@postgresql.org>
Branch: master [3390ef1b7] 2022-03-16 15:35:16 +1300
Branch: REL_14_STABLE [1396b5c6e] 2022-03-16 15:35:42 +1300
Branch: REL_13_STABLE [cfdb303be] 2022-03-16 15:37:15 +1300
Branch: REL_12_STABLE [368ffdeee] 2022-03-16 15:38:13 +1300
-->
<para>
Improve wait logic in RegisterSyncRequest (Thomas Munro)
</para>
<para>
If we run out of space in the checkpointer sync request queue (which
is hopefully rare on real systems, but is common when testing with a
very small buffer pool), we wait for it to drain. While waiting, we
should report that as a wait event so that users know what is going
on, and also watch for postmaster death, since otherwise the loop might
never terminate if the checkpointer has already exited.
</para>
</listitem>
<listitem>
<!--
Author: Thomas Munro <tmunro@postgresql.org>
Branch: master [5e6368b42] 2022-03-16 13:57:59 +1300
Branch: REL_14_STABLE [78c0f85e4] 2022-03-16 13:57:07 +1300
Branch: master [501c66c81] 2022-03-16 15:55:15 +1300
Branch: REL_14_STABLE [ea70f6945] 2022-03-16 15:56:41 +1300
-->
<para>
Wake up for latch events when the checkpointer is waiting between
writes (Thomas Munro)
</para>
<para>
This improves responsiveness to backends sending sync requests.
The change also creates a proper wait event class for these waits.
</para>
</listitem>
<listitem>
<!--
Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
Branch: master [9d92582ab] 2022-03-23 18:22:10 +0100
Branch: REL_14_STABLE [caaeb88ff] 2022-03-23 18:22:10 +0100
Branch: REL_13_STABLE [98eb3e06c] 2022-03-23 18:22:10 +0100
Branch: REL_12_STABLE [c714ebd0e] 2022-03-23 18:22:10 +0100
Branch: REL_11_STABLE [199cd7b59] 2022-03-23 18:22:10 +0100
Branch: REL_10_STABLE [9ade3c09a] 2022-03-23 18:22:10 +0100
-->
<para>
Fix <quote>PANIC: xlog flush request is not satisfied</quote>
failure during standby promotion when there is a missing WAL
continuation record (Sami Imseih)
</para>
</listitem>
<listitem>
<!--
Author: Andres Freund <andres@anarazel.de>
Branch: master [8f1537d10] 2022-05-02 18:25:00 -0700
Branch: REL_14_STABLE [9ab3b2bdb] 2022-05-02 18:25:59 -0700
Branch: REL_13_STABLE [57c5ad168] 2022-05-02 18:28:10 -0700
Branch: REL_12_STABLE [edfc03ec9] 2022-05-02 18:29:52 -0700
Branch: REL_11_STABLE [9cda785b4] 2022-05-02 18:30:15 -0700
Branch: REL_10_STABLE [cbc47ad7e] 2022-05-02 18:30:38 -0700
Author: Andres Freund <andres@anarazel.de>
Branch: REL_14_STABLE [f74496dd6] 2022-05-02 18:26:09 -0700
Branch: REL_13_STABLE [0446d3bf3] 2022-05-02 18:29:35 -0700
Branch: REL_12_STABLE [a5ede1391] 2022-05-02 18:29:52 -0700
Branch: REL_11_STABLE [25d5494e2] 2022-05-02 18:30:15 -0700
Branch: REL_10_STABLE [b1f35a36e] 2022-05-02 18:30:38 -0700
Author: Andres Freund <andres@anarazel.de>
Branch: REL_14_STABLE [5ab8e8014] 2022-05-02 18:09:42 -0700
Branch: REL_13_STABLE [90abe1e17] 2022-05-02 18:09:43 -0700
Branch: REL_12_STABLE [5c8b14a71] 2022-05-02 18:09:43 -0700
Branch: REL_11_STABLE [2adb8debe] 2022-05-02 18:09:44 -0700
Branch: REL_10_STABLE [e8a0cf9b2] 2022-05-02 18:09:44 -0700
-->
<para>
Fix possibility of self-deadlock in hot standby conflict handling
(Andres Freund)
</para>
<para>
With unlucky timing, the WAL-applying process could get stuck
while waiting for some other process to release a buffer lock.
</para>
</listitem>
<listitem>
<!--
Author: Tomas Vondra <tomas.vondra@postgresql.org>
Branch: master [c91f71b9d] 2022-03-16 18:05:58 +0100
Branch: REL_14_STABLE [677a1dc0c] 2022-03-16 18:06:27 +0100
Branch: REL_13_STABLE [27fafee72] 2022-03-16 18:14:33 +0100
-->
<para>
Fix possible mis-identification of the correct ancestor relation
to publish logical replication changes through (Tomas Vondra, Hou
zj, Amit Kapila)
</para>
<para>
If <varname>publish_via_partition_root</varname> is enabled, and
there are multiple publications naming different ancestors of the
currently-modified relation, the wrong ancestor might be chosen for
reporting the change.
</para>
</listitem>
<listitem>
<!--
Author: Amit Kapila <akapila@postgresql.org>
Branch: master [dd4ab6fd6] 2022-04-19 08:49:49 +0530
Branch: REL_14_STABLE [c9dea58e2] 2022-04-19 08:54:37 +0530
Branch: REL_13_STABLE [82d4a17a1] 2022-04-19 09:08:05 +0530
Branch: REL_12_STABLE [59348fbde] 2022-04-19 09:18:44 +0530
Branch: REL_11_STABLE [a90de822e] 2022-04-19 09:29:34 +0530
Branch: REL_10_STABLE [be46985be] 2022-04-19 09:38:25 +0530
-->
<para>
Ensure that logical replication apply workers can be restarted even
when we're up against
the <varname>max_sync_workers_per_subscription</varname> limit
(Amit Kapila)
</para>
<para>
Faulty coding of the limit check caused a restarted worker to exit
immediately, leaving fewer workers than there should be.
</para>
</listitem>
<listitem>
<!--
Author: Amit Kapila <akapila@postgresql.org>
Branch: master [5e01001ff] 2022-02-14 08:55:58 +0530
Branch: REL_14_STABLE [04645bbca] 2022-02-14 08:07:46 +0530
Branch: REL_13_STABLE [caa231be9] 2022-02-14 08:24:44 +0530
Branch: REL_12_STABLE [ce349cf17] 2022-02-14 08:27:56 +0530
Branch: REL_11_STABLE [1cd5802ac] 2022-02-14 08:37:23 +0530
Branch: REL_10_STABLE [b5e060473] 2022-02-14 08:45:54 +0530
-->
<para>
Include unchanged replica identity key columns in the WAL log for an
update, if they are stored out-of-line (Dilip Kumar, Amit Kapila)
</para>
<para>
Otherwise subscribers cannot see the values and will fail to
replicate the update.
</para>
</listitem>
<listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [0fb6954aa] 2022-03-27 12:57:46 -0400
Branch: REL_14_STABLE [3f7a59c59] 2022-03-27 12:57:52 -0400
Branch: REL_13_STABLE [9016a2a3d] 2022-03-27 12:57:57 -0400
-->
<para>
Cope correctly with platforms that have no support for altering the
server process's display in <application>ps(1)</application> (Andrew
Dunstan)
</para>
<para>
Few platforms are like this (the only supported one is Cygwin), so
we'd managed not to notice that refactoring introduced a potential
memory clobber.
</para>
</listitem>
<listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [d37776e45] 2022-02-10 11:52:28 -0500
Branch: REL_14_STABLE [2e211c166] 2022-02-10 11:52:20 -0500
-->
<para>
Make the server more robust against missed timer interrupts (Michael
Harris, Tom Lane)
</para>
<para>
An optimization added in v14 meant that if a server process somehow
missed a timer interrupt, it would never again ask the kernel for
another one, thus breaking timeout detection for the remainder of the
session. This seems unduly fragile, so add a recovery path.
</para>
</listitem>
<listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [638300fef] 2022-02-25 17:40:43 -0500
Branch: REL_14_STABLE [ac910bb23] 2022-02-25 17:40:43 -0500
Branch: REL_13_STABLE [9b2d762a2] 2022-02-25 17:40:44 -0500
Branch: REL_12_STABLE [0f7b62f29] 2022-02-25 17:40:45 -0500
Branch: REL_11_STABLE [31befa6be] 2022-02-25 17:40:45 -0500
Branch: REL_10_STABLE [4936747c4] 2022-02-25 17:40:21 -0500
-->
<para>
Disallow execution of SPI functions during PL/Perl function
compilation (Tom Lane)
</para>
<para>
Perl can be convinced to execute user-defined code during compilation
of a PL/Perl function. However, it's not okay for such code to try
to invoke SQL operations via SPI. That results in a crash, and if
it didn't crash it would be a security hazard, because we really
don't want code execution during function validation. Put in a
check to give a friendlier error message instead.
</para>
</listitem>
<listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [a59c79564] 2022-02-28 14:12:52 -0500
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [50f03473e] 2022-03-02 11:29:11 -0500
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: REL_14_STABLE [2a1f84636] 2022-03-02 11:57:02 -0500
Branch: REL_13_STABLE [6599d8f12] 2022-03-02 11:57:02 -0500
Branch: REL_12_STABLE [72918ea86] 2022-03-02 11:57:02 -0500
Branch: REL_11_STABLE [5bb3d91ea] 2022-03-02 11:57:02 -0500
Branch: REL_10_STABLE [9050999ef] 2022-03-02 11:57:02 -0500
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [878e64d0f] 2022-03-31 11:24:26 -0400
Branch: REL_14_STABLE [402279afe] 2022-03-31 11:24:26 -0400
Branch: REL_13_STABLE [fb1d7f451] 2022-03-31 11:24:26 -0400
Branch: REL_12_STABLE [fcaf7d725] 2022-03-31 11:24:26 -0400
Branch: REL_11_STABLE [143043191] 2022-03-31 11:24:26 -0400
Branch: REL_10_STABLE [a6bd1f0ee] 2022-03-31 11:24:26 -0400
-->
<para>
Make <application>libpq</application> accept root-owned SSL private
key files (David Steele)
</para>
<para>
This change synchronizes <application>libpq</application>'s rules
for safe ownership and permissions of SSL key files with the rules
the server has used since release 9.6. Namely, in addition to the
current rules, allow the case where the key file is owned by root
and has permissions <literal>rw-r-----</literal> or less. This is
helpful for system-wide management of key files.
</para>
</listitem>
<listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [335fa5a26] 2022-02-12 13:23:20 -0500
Branch: REL_14_STABLE [ae27b1acc] 2022-02-12 13:23:20 -0500
Branch: REL_13_STABLE [51ee561f5] 2022-02-12 13:23:20 -0500
Branch: REL_12_STABLE [c9d35dc7f] 2022-02-12 13:23:20 -0500
-->
<para>
Fix behavior of <application>libpq</application>'s
<function>PQisBusy()</function> function after a connection failure
(Tom Lane)
</para>
<para>
If we'd detected a write failure, <function>PQisBusy()</function>
would always return true, which is the wrong thing: we want input
processing to carry on normally until we've read whatever is
available from the server. The practical effect of this error is
that applications using <application>libpq</application>'s
async-query API would typically detect connection loss only
when <function>PQconsumeInput()</function> returns a hard failure.
With this fix, a connection loss will normally be reported via an
error <structname>PGresult</structname> object, which is a much
cleaner behavior for most applications.
</para>
</listitem>
<listitem>
<!--
Author: Robert Haas <rhaas@postgresql.org>
Branch: master [d2d354797] 2022-04-20 11:37:29 -0400
Branch: REL_14_STABLE [4a66300ac] 2022-04-20 11:39:44 -0400
Author: Robert Haas <rhaas@postgresql.org>
Branch: master [a66e722cc] 2022-04-22 16:19:39 -0400
Branch: REL_14_STABLE [75a006bee] 2022-04-25 09:14:19 -0400
-->
<para>
Re-allow <replaceable>database</replaceable>.<replaceable>schema</replaceable>.<replaceable>table</replaceable>
patterns
in <application>psql</application>, <application>pg_dump</application>,
and <application>pg_amcheck</application> (Mark Dilger)
</para>
<para>
Versions before v14 silently ignored all but
the <replaceable>schema</replaceable>
and <replaceable>table</replaceable> fragments of a pattern
containing more than one dot. Refactoring in v14 accidentally broke
that use-case. Reinstate it, but now complain if the first fragment
is not the name of the current database.
</para>
</listitem>
<listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [a745b9365] 2022-02-10 16:49:39 -0500
Branch: REL_14_STABLE [1e8c5cf7c] 2022-02-10 16:49:39 -0500
Branch: REL_13_STABLE [d0e1fd958] 2022-02-10 16:49:39 -0500
Branch: REL_12_STABLE [61c20a5ea] 2022-02-10 16:49:39 -0500
Branch: REL_11_STABLE [69cc15c31] 2022-02-10 16:49:39 -0500
Branch: REL_10_STABLE [34523933b] 2022-02-10 16:49:39 -0500
-->
<para>
Make <application>pg_ctl</application> recheck postmaster aliveness
while waiting for stop/restart/promote actions (Tom Lane)
</para>
<para>
<application>pg_ctl</application> would verify that the postmaster
is alive as a side-effect of sending the stop or promote signal, but
then it just naively waited to see the on-disk state change. If the
postmaster died uncleanly without having removed its PID file or
updated the control file, <application>pg_ctl</application> would
wait until timeout. Instead make it recheck every so often that the
postmaster process is still there.
</para>
</listitem>
<listitem>
<!--
Author: Andres Freund <andres@anarazel.de>
Branch: master [cd83cb953] 2022-02-25 10:30:05 -0800
Branch: REL_14_STABLE [9ff7fd906] 2022-02-25 10:31:16 -0800
Branch: REL_13_STABLE [0b1020a96] 2022-02-25 10:32:38 -0800
Branch: REL_12_STABLE [5407241a8] 2022-02-25 10:34:38 -0800
Branch: REL_11_STABLE [51c341656] 2022-02-25 10:40:32 -0800
Author: Andres Freund <andres@anarazel.de>
Branch: master [264d28492] 2022-03-27 18:13:50 -0700
Branch: REL_14_STABLE [6839aa7a6] 2022-03-27 18:15:10 -0700
Branch: REL_13_STABLE [344d89abf] 2022-03-27 18:15:14 -0700
Branch: REL_12_STABLE [5ebd262dc] 2022-03-27 18:15:15 -0700
Branch: REL_11_STABLE [7d935bdf7] 2022-03-27 18:15:17 -0700
-->
<para>
Fix error handling in <application>pg_waldump</application> (Kyotaro
Horiguchi, Andres Freund)
</para>
<para>
While trying to read a WAL file to determine the WAL segment size,
<application>pg_waldump</application> would report an incorrect
error for the case of a too-short file. In addition, the file name
reported in this and related error messages could be garbage.
</para>
</listitem>
<listitem>
<!--
Author: Michael Paquier <michael@paquier.xyz>
Branch: master [cd4868a57] 2022-04-14 15:08:03 +0900
Branch: REL_14_STABLE [df6bbe73b] 2022-04-14 15:09:26 +0900
Branch: REL_13_STABLE [2275d044d] 2022-04-14 15:09:36 +0900
Branch: REL_12_STABLE [5378d55cb] 2022-04-14 15:09:39 +0900
Branch: REL_11_STABLE [79fed072b] 2022-04-14 15:09:42 +0900
Branch: REL_10_STABLE [12d32b7bc] 2022-04-14 15:09:46 +0900
-->
<para>
Ensure that <filename>contrib/pageinspect</filename> functions cope
with all-zero pages (Michael Paquier)
</para>
<para>
This is a legitimate edge case, but the module was mostly unprepared
for it. Arrange to return nulls, or no rows, as appropriate; that
seems more useful than raising an error.
</para>
</listitem>
<listitem>
<!--
Author: Michael Paquier <michael@paquier.xyz>
Branch: master [291e517a4] 2022-03-27 17:53:40 +0900
Branch: REL_14_STABLE [27d384441] 2022-03-27 17:53:51 +0900
Branch: REL_13_STABLE [3d4d6dee0] 2022-03-27 17:53:55 +0900
Branch: REL_12_STABLE [5ca2aa2f2] 2022-03-27 17:53:59 +0900
Branch: REL_11_STABLE [1a2fdf86a] 2022-03-27 17:54:03 +0900
Branch: REL_10_STABLE [ab80b0fbb] 2022-03-27 17:54:08 +0900
Author: Michael Paquier <michael@paquier.xyz>
Branch: master [076f4d953] 2022-03-16 11:19:39 +0900
Branch: REL_14_STABLE [b61e6214c] 2022-03-16 11:20:47 +0900
Branch: REL_13_STABLE [d3a9b83c3] 2022-03-16 11:20:51 +0900
Branch: REL_12_STABLE [af8a8eb54] 2022-03-16 11:20:54 +0900
Branch: REL_11_STABLE [2389ee8dd] 2022-03-16 11:20:57 +0900
Branch: REL_10_STABLE [c42b88932] 2022-03-16 11:21:00 +0900
Author: Michael Paquier <michael@paquier.xyz>
Branch: master [4477dcb20] 2022-03-16 12:29:39 +0900
Branch: REL_14_STABLE [dc5b3bdae] 2022-03-16 12:29:47 +0900
Branch: REL_13_STABLE [028a3c6b1] 2022-03-16 12:29:55 +0900
Branch: REL_12_STABLE [5cb770210] 2022-03-16 12:29:59 +0900
Branch: REL_11_STABLE [09c97746d] 2022-03-16 12:30:02 +0900
Branch: REL_10_STABLE [07e343513] 2022-03-16 12:30:07 +0900
-->
<para>
In <filename>contrib/pageinspect</filename>, add defenses against
incorrect page <quote>special space</quote> contents, tighten checks
for correct page size, and add some missing checks that an index is
of the expected type (Michael Paquier, Justin Pryzby, Julien
Rouhaud)
</para>
<para>
These changes make it less likely that the module will crash on bad
data.
</para>
</listitem>
<listitem>
<!--
Author: Etsuro Fujita <efujita@postgresql.org>
Branch: master [4eea2202b] 2022-04-21 15:30:00 +0900
Branch: REL_14_STABLE [89d349b0a] 2022-04-21 15:30:02 +0900
-->
<para>
In <filename>contrib/postgres_fdw</filename>, disable batch
insertion when <literal>BEFORE INSERT ... FOR EACH ROW</literal>
triggers exist on the foreign table (Etsuro Fujita)
</para>
<para>
Such a trigger might query the table it's on and expect to see
previously-inserted rows. With batch insertion, those rows might
not be visible yet, so disable the feature to avoid unexpected
behavior.
</para>
</listitem>
<listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [f3dd9fe1d] 2022-03-31 14:29:48 -0400
Branch: REL_14_STABLE [9f9489aa2] 2022-03-31 14:29:24 -0400
Branch: REL_13_STABLE [79df1d20c] 2022-03-31 14:29:24 -0400
Branch: REL_12_STABLE [989d3e4a2] 2022-03-31 14:29:24 -0400
Branch: REL_11_STABLE [b9eb0412f] 2022-03-31 14:29:24 -0400
Branch: REL_10_STABLE [728fc0f9a] 2022-03-31 14:29:24 -0400
-->
<para>
In <filename>contrib/postgres_fdw</filename>, verify
that <literal>ORDER BY</literal> clauses are safe to ship before
requesting a remotely-ordered query, and include
a <literal>USING</literal> clause if necessary (Ronan Dunklau)
</para>
<para>
This fix prevents situations where the remote server might sort in a
different order than we intend. While sometimes that would be only
cosmetic, it could produce thoroughly wrong results if the remote
data is used as input for a locally-performed merge join.
</para>
</listitem>
<listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [c5f5b4dd4] 2022-02-09 14:24:54 -0500
Branch: REL_14_STABLE [c23461a22] 2022-02-09 14:24:55 -0500
-->
<para>
Fix <application>configure</application> to handle platforms that
have <filename>sys/epoll.h</filename> but
not <filename>sys/signalfd.h</filename> (Tom Lane)
</para>
</listitem>
<listitem>
<!--
Author: Thomas Munro <tmunro@postgresql.org>
Branch: master [e6a760020] 2021-09-27 10:53:20 +1300
Author: Thomas Munro <tmunro@postgresql.org>
Branch: master [807fee1a3] 2022-02-04 16:16:10 +1300
Author: Thomas Munro <tmunro@postgresql.org>
Branch: master [a56e7b660] 2022-03-16 10:30:55 +1300
Author: Thomas Munro <tmunro@postgresql.org>
Branch: REL_14_STABLE [d9f7ad54e] 2022-03-16 11:42:00 +1300
Branch: REL_13_STABLE [5610411ac] 2022-03-16 11:41:13 +1300
Branch: REL_12_STABLE [45a469eb2] 2022-03-16 11:40:43 +1300
Branch: REL_11_STABLE [986d24042] 2022-03-16 11:35:00 +1300
-->
<para>
Update <acronym>JIT</acronym> code to work with LLVM 14
(Thomas Munro)
</para>
</listitem>
<listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [46ab07ffd] 2022-03-03 18:13:24 -0500
Branch: REL_14_STABLE [b0bc196e5] 2022-03-03 18:13:24 -0500
Branch: REL_13_STABLE [1a027e6b7] 2022-03-03 18:13:24 -0500
Branch: REL_12_STABLE [f727b6ea8] 2022-03-03 18:13:24 -0500
Branch: REL_11_STABLE [f2087e26e] 2022-03-03 18:13:24 -0500
Branch: REL_10_STABLE [cfbe87bd6] 2022-03-03 18:13:24 -0500
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [0fbdfaf79] 2022-03-03 19:03:17 -0500
Branch: REL_14_STABLE [5c9d17e94] 2022-03-03 19:03:35 -0500
Branch: REL_13_STABLE [97031f440] 2022-03-03 19:03:42 -0500
Branch: REL_12_STABLE [4b0696b36] 2022-03-03 19:03:46 -0500
Branch: REL_11_STABLE [566e1c04d] 2022-03-03 19:03:50 -0500
Branch: REL_10_STABLE [18c04d157] 2022-03-03 19:03:55 -0500
Author: Andres Freund <andres@anarazel.de>
Branch: master [3ac7d0241] 2022-03-23 13:05:59 -0700
Branch: REL_14_STABLE [81045e1e1] 2022-03-23 13:18:02 -0700
Branch: REL_13_STABLE [c0f99bb52] 2022-03-23 13:18:00 -0700
Branch: REL_12_STABLE [61a007fee] 2022-03-23 13:17:59 -0700
Author: Andres Freund <andres@anarazel.de>
Branch: master [1c6bb380e] 2022-03-23 13:05:25 -0700
Branch: REL_14_STABLE [89a94c24a] 2022-03-23 13:13:18 -0700
Branch: REL_13_STABLE [8014c61eb] 2022-03-23 13:13:20 -0700
Branch: REL_12_STABLE [c5b60a68c] 2022-03-23 13:13:33 -0700
Branch: REL_11_STABLE [2121d5809] 2022-03-23 13:13:40 -0700
Branch: REL_10_STABLE [5f4615b9d] 2022-03-23 13:13:49 -0700
Author: Andres Freund <andres@anarazel.de>
Branch: master [e71c76fca] 2022-03-23 12:43:14 -0700
Branch: REL_14_STABLE [e52e9bd57] 2022-03-23 12:43:41 -0700
Branch: REL_13_STABLE [7c163aa93] 2022-03-23 12:43:40 -0700
Branch: REL_12_STABLE [6a767bc2e] 2022-03-23 12:43:38 -0700
Branch: REL_11_STABLE [a77dddb42] 2022-03-23 12:43:36 -0700
Branch: REL_10_STABLE [2a9193726] 2022-03-23 12:43:33 -0700
-->
<para>
Clean up assorted failures under <productname>clang</productname>'s
<literal>-fsanitize=undefined</literal> checks (Tom Lane, Andres
Freund, Zhihong Yu)
</para>
<para>
Most of these changes are just for pro-forma compliance with the
letter of the C and POSIX standards, and are unlikely to have any
effect on production builds.
</para>
</listitem>
<listitem>
<!--
Author: Peter Eisentraut <peter@eisentraut.org>
Branch: master [465ab2429] 2022-04-01 17:15:24 +0200
Branch: REL_14_STABLE [7a2789275] 2022-04-01 17:12:56 +0200
-->
<para>
Do not add OpenSSL dependencies to <application>libpq</application>'s
<filename>pkg-config</filename> file when building without OpenSSL
(Fabrice Fontaine)
</para>
</listitem>
<listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [d5c2a91e5] 2022-02-08 19:25:56 -0500
Branch: REL_14_STABLE [e327291e4] 2022-02-08 19:26:09 -0500
Branch: REL_13_STABLE [5ea3b99de] 2022-02-08 19:26:17 -0500
Branch: REL_12_STABLE [eba0f095c] 2022-02-08 19:26:22 -0500
Branch: REL_11_STABLE [3a6e3a890] 2022-02-08 19:26:26 -0500
Branch: REL_10_STABLE [1a8b6f055] 2022-02-08 19:26:30 -0500
-->
<para>
Fix PL/Perl so it builds on C compilers that don't support statements
nested within expressions (Tom Lane)
</para>
<para>
</para>
</listitem>
<listitem>
<!--
Author: Andres Freund <andres@anarazel.de>
Branch: master [097786fbb] 2022-03-22 08:22:02 -0700
Branch: REL_14_STABLE [2d608c960] 2022-03-22 08:28:51 -0700
Branch: REL_13_STABLE [f183e23cc] 2022-03-22 08:28:52 -0700
Branch: REL_12_STABLE [4553b960f] 2022-03-22 08:28:53 -0700
Branch: REL_11_STABLE [cd1951ba0] 2022-03-22 08:28:54 -0700
Branch: REL_10_STABLE [083031aa9] 2022-03-22 08:28:55 -0700
-->
<para>
Fix possible build failure of <application>pg_dumpall</application>
on Windows, when not using MSVC to build (Andres Freund)
</para>
</listitem>
<listitem>
<!--
Author: Andrew Dunstan <andrew@dunslane.net>
Branch: master [ea09a75e1] 2022-02-10 13:44:05 -0500
Branch: REL_14_STABLE [92f60f536] 2022-02-10 13:51:19 -0500
Branch: REL_13_STABLE [eec7c640f] 2022-02-10 13:51:40 -0500
Branch: REL_12_STABLE [64dd64807] 2022-02-10 13:51:49 -0500
Branch: REL_11_STABLE [e2d104e19] 2022-02-10 13:51:59 -0500
Branch: REL_10_STABLE [a5eef80c2] 2022-02-10 13:52:05 -0500
Branch: REL9_6_STABLE [622ab6a34] 2022-02-10 13:52:37 -0500
Branch: REL9_5_STABLE [3a5034b5e] 2022-02-10 13:53:56 -0500
Branch: REL9_4_STABLE [c76164ea0] 2022-02-10 13:56:55 -0500
-->
<para>
In Windows builds, use <application>gendef</application> instead
of <application>pexports</application> to build DEF files (Andrew
Dunstan)
</para>
<para>
This adapts the build process to work on recent MSys tool chains.
</para>
</listitem>
<listitem>
<!--
Author: Andrew Dunstan <andrew@dunslane.net>
Branch: master [b787c554c] 2022-04-25 15:47:55 -0400
Branch: REL_14_STABLE [71f394667] 2022-04-25 15:49:35 -0400
Branch: REL_13_STABLE [d9cede2c3] 2022-04-25 15:50:01 -0400
Branch: REL_12_STABLE [01f2bc5af] 2022-04-25 15:50:07 -0400
Branch: REL_11_STABLE [b90ce0dd7] 2022-04-25 15:51:27 -0400
Branch: REL_10_STABLE [58887d58c] 2022-04-25 15:51:58 -0400
-->
<para>
Prevent extra expansion of shell wildcard patterns in programs built
under MinGW (Andrew Dunstan)
</para>
<para>
For some reason the C library provided by MinGW will expand shell
wildcard characters in a program's command-line arguments by
default. This is confusing, not least because it doesn't happen
under MSVC, so turn it off.
</para>
</listitem>
<listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [ab3479bf5] 2022-05-05 14:54:53 -0400
Branch: REL_14_STABLE [77ee14ed9] 2022-05-05 14:55:03 -0400
Branch: REL_13_STABLE [e9735d1af] 2022-05-05 14:55:10 -0400
Branch: REL_12_STABLE [2bb9f7501] 2022-05-05 14:55:17 -0400
Branch: REL_11_STABLE [da72ff09b] 2022-05-05 14:55:22 -0400
Branch: REL_10_STABLE [bc334ec9f] 2022-05-05 14:55:30 -0400
-->
<para>
Update time zone data files to <application>tzdata</application>
release 2022a for DST law changes in Palestine, plus historical
corrections for Chile and Ukraine.
</para>
</listitem>
</itemizedlist>
</sect2>
</sect1>
<sect1 id="release-14-2">
<title>Release 14.2</title>
<formalpara>
<title>Release date:</title>
<para>2022-02-10</para>
</formalpara>
<para>
This release contains a variety of fixes from 14.1.
For information about new features in major release 14, see
<xref linkend="release-14"/>.
</para>
<sect2>
<title>Migration to Version 14.2</title>
<para>
A dump/restore is not required for those running 14.X.
</para>
<para>
However, some bugs have been found that may have resulted in
corrupted indexes, as explained in the first two changelog entries.
If any of those cases apply to you, it's recommended to reindex
possibly-affected indexes after updating.
</para>
<para>
Also, if you are upgrading from a version earlier than 14.1,
see <xref linkend="release-14-1"/>.
</para>
</sect2>
<sect2>
<title>Changes</title>
<itemizedlist>
<listitem>
<!--
Author: Michael Paquier <michael@paquier.xyz>
Branch: master [f99870dd8] 2021-12-08 11:01:08 +0900
Branch: REL_14_STABLE [64ab21f0e] 2021-12-08 11:01:14 +0900
Branch: REL_13_STABLE [9acea52ea] 2021-12-08 11:01:19 +0900
Branch: REL_12_STABLE [5ed74d874] 2021-12-08 11:01:23 +0900
-->
<para>
Enforce standard locking protocol for TOAST table updates, to prevent
problems with <command>REINDEX CONCURRENTLY</command> (Michael Paquier)
</para>
<para>
If applied to a TOAST table or TOAST table's index, <command>REINDEX
CONCURRENTLY</command> tended to produce a corrupted index. This
happened because sessions updating TOAST entries released
their <literal>ROW EXCLUSIVE</literal> locks immediately, rather
than holding them until transaction commit as all other updates do.
The fix is to make TOAST updates hold the table lock according to the
normal rule. Any existing corrupted indexes can be repaired by
reindexing again.
</para>
</listitem>
<listitem>
<!--
Author: Andres Freund <andres@anarazel.de>
Branch: master [18b87b201] 2022-01-13 18:13:41 -0800
Branch: REL_14_STABLE [dad1539ae] 2022-01-14 10:56:12 -0800
-->
<para>
Fix corruption of HOT chains when a RECENTLY_DEAD tuple changes
state to fully DEAD during page pruning (Andres Freund)
</para>
<para>
It was possible for <command>VACUUM</command> to remove a
recently-dead tuple while leaving behind a redirect item that
pointed to it. When the tuple's item slot is later re-used by
some new tuple, that tuple would be seen as part of the
pre-existing HOT chain, creating a form of index corruption.
If this has happened, reindexing the table should repair the
damage. However, this is an extremely low-probability scenario,
so we do not recommend reindexing just on the chance that it might
have happened.
</para>
</listitem>
<listitem>
<!--
Author: Etsuro Fujita <efujita@postgresql.org>
Branch: master [f862d5705] 2022-02-03 15:15:00 +0900
Branch: REL_14_STABLE [7b0cec2fa] 2022-02-03 15:15:01 +0900
Author: Andres Freund <andres@anarazel.de>
Branch: master [7c1aead6c] 2022-02-03 10:44:26 -0800
Branch: REL_14_STABLE [2a3958e4d] 2022-02-03 10:44:38 -0800
-->
<para>
Fix crash in EvalPlanQual rechecks for tables with a mix of local
and foreign partitions (Etsuro Fujita)
</para>
</listitem>
<listitem>
<!--
Author: Michael Paquier <michael@paquier.xyz>
Branch: master [dc084d7c7] 2022-01-29 10:22:42 +0900
Branch: REL_14_STABLE [b30282fcc] 2022-01-29 10:23:17 +0900
-->
<para>
Fix dangling pointer in <command>COPY TO</command>
(Bharath Rupireddy)
</para>
<para>
This oversight could cause an incorrect error message or a crash
after an error in <command>COPY</command>.
</para>
</listitem>
<listitem>
<!--
Author: Tomas Vondra <tomas.vondra@postgresql.org>
Branch: master [6d554e3fc] 2022-01-23 03:16:31 +0100
Branch: REL_14_STABLE [a192243c7] 2022-01-23 03:18:02 +0100
Branch: REL_13_STABLE [267ccc38b] 2022-01-23 03:20:32 +0100
-->
<para>
Avoid null-pointer crash in <command>ALTER STATISTICS</command>
when the statistics object is dropped concurrently (Tomas Vondra)
</para>
</listitem>
<listitem>
<!--
Author: Alexander Korotkov <akorotkov@postgresql.org>
Branch: master [5cc9c8374] 2021-12-13 17:17:33 +0300
Branch: REL_14_STABLE [7615edd1d] 2021-12-13 17:20:07 +0300
-->
<para>
Correctly handle alignment padding when extracting a range from a
multirange (Alexander Korotkov)
</para>
<para>
This error could cause crashes when handling multiranges over
variable-length data types.
</para>
</listitem>
<listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [647889667] 2022-01-16 16:39:26 -0500
Branch: REL_14_STABLE [17da9d4c2] 2022-01-16 16:39:26 -0500
-->
<para>
Fix over-optimistic use of hashing for
anonymous <type>RECORD</type> data types (Tom Lane)
</para>
<para>
This prevents some cases of <quote>could not identify a hash
function for type record</quote> errors.
</para>
</listitem>
<listitem>
<!--
Author: David Rowley <drowley@postgresql.org>
Branch: master [f9a74c149] 2022-01-25 21:10:03 +1300
Branch: REL_14_STABLE [357ff6615] 2022-01-25 21:14:27 +1300
Branch: REL_13_STABLE [f8807e774] 2022-01-25 21:15:00 +1300
Branch: REL_12_STABLE [2ccd8fb29] 2022-01-25 21:15:40 +1300
-->
<para>
Fix incorrect plan creation for parallel single-child Append nodes
(David Rowley)
</para>
<para>
In some cases the Append would be simplified away when it should not
be, leading to wrong query results (duplicated rows).
</para>
</listitem>
<listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [4ace45677] 2022-01-01 16:12:03 -0500
Branch: REL_14_STABLE [cabea571d] 2022-01-01 16:12:03 -0500
Branch: REL_13_STABLE [45ae42714] 2022-01-01 16:12:03 -0500
Branch: REL_12_STABLE [f789b7732] 2022-01-01 16:12:03 -0500
Branch: REL_11_STABLE [e3a4c7981] 2022-01-01 16:12:03 -0500
Branch: REL_10_STABLE [70a31a0e3] 2022-01-01 16:12:03 -0500
Branch: master [9a3ddeb51] 2022-01-03 15:42:27 -0500
Branch: REL_14_STABLE [d228af79d] 2022-01-03 15:42:27 -0500
Branch: REL_13_STABLE [20d08b2c6] 2022-01-03 15:42:27 -0500
Branch: REL_12_STABLE [9c4f38908] 2022-01-03 15:42:27 -0500
Branch: REL_11_STABLE [ec3674521] 2022-01-03 15:42:27 -0500
Branch: REL_10_STABLE [7d344f004] 2022-01-03 15:42:27 -0500
-->
<para>
Fix index-only scan plans for cases where not all index columns can
be returned (Tom Lane)
</para>
<para>
If an index has both returnable and non-returnable columns, and one
of the non-returnable columns is an expression using a table column
that appears in a returnable index column, then a query using that
expression could result in an index-only scan plan that attempts to
read the non-returnable column, instead of recomputing the
expression from the returnable column as intended. The
non-returnable column would read as NULL, resulting in wrong query
results.
</para>
</listitem>
<listitem>
<!--
Author: David Rowley <drowley@postgresql.org>
Branch: master [411137a42] 2021-11-24 23:29:14 +1300
Branch: REL_14_STABLE [c2dc7b9e1] 2021-11-24 23:29:56 +1300
-->
<para>
Fix Memoize plan nodes to handle subplans that use parameters
coming from above the Memoize (David Rowley)
</para>
</listitem>
<listitem>
<!--
Author: David Rowley <drowley@postgresql.org>
Branch: master [e502150f7] 2021-11-24 10:06:59 +1300
Branch: REL_14_STABLE [6c32c0977] 2021-11-24 10:07:38 +1300
-->
<para>
Fix Memoize plan nodes to work correctly with non-hashable join
operators (David Rowley)
</para>
</listitem>
<listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [9c356f4b2] 2021-12-16 15:36:02 -0500
Branch: REL_14_STABLE [f9a8bc9f2] 2021-12-16 15:36:02 -0500
Branch: REL_13_STABLE [da0d8a454] 2021-12-16 15:36:02 -0500
Branch: REL_12_STABLE [e1fd61c8c] 2021-12-16 15:36:02 -0500
Branch: REL_11_STABLE [c43d72b24] 2021-12-16 15:36:02 -0500
Branch: REL_10_STABLE [1acf34586] 2021-12-16 15:36:02 -0500
-->
<para>
Ensure that casting to an unspecified typmod generates a RelabelType
node rather than a length-coercion function call (Tom Lane)
</para>
<para>
While the coercion function should do the right thing (nothing),
this translation is undesirably inefficient.
</para>
</listitem>
<listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [8e2e0f758] 2022-01-29 11:41:18 -0500
Branch: REL_14_STABLE [c025067f6] 2022-01-29 11:41:18 -0500
Branch: REL_13_STABLE [5ad70564f] 2022-01-29 11:41:12 -0500
-->
<para>
Fix checking of <type>anycompatible</type>-family data type matches
(Tom Lane)
</para>
<para>
In some cases the parser would think that a function or operator
with <type>anycompatible</type>-family polymorphic parameters
matches a set of arguments that it really shouldn't match. In
reported cases, that led to matching more than one operator to a
call, leading to ambiguous-operator errors; but a failure later on
is also possible.
</para>
</listitem>
<listitem>
<!--
Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
Branch: master [44bd3ed33] 2021-11-26 11:14:27 -0300
Branch: REL_14_STABLE [d24dac954] 2021-11-26 11:14:27 -0300
Branch: REL_13_STABLE [ef41c3fd6] 2021-11-26 11:14:27 -0300
Branch: REL_12_STABLE [9c6ab1ef3] 2021-11-26 11:14:27 -0300
Branch: REL_11_STABLE [2c3fddcbb] 2021-11-26 11:14:27 -0300
Branch: REL_10_STABLE [72cf39d51] 2021-11-26 11:14:27 -0300
-->
<para>
Fix WAL replay failure when database consistency is reached exactly
at a WAL page boundary (&Aacute;lvaro Herrera)
</para>
</listitem>
<listitem>
<!--
Author: Tomas Vondra <tomas.vondra@postgresql.org>
Branch: master [f192e1bdf] 2022-01-27 20:13:55 +0100
Branch: REL_14_STABLE [fb2f8e534] 2022-01-27 20:15:37 +0100
Branch: REL_13_STABLE [e90f258ac] 2022-01-27 20:16:39 +0100
Branch: REL_12_STABLE [4b8af2bf8] 2022-01-27 20:17:36 +0100
Branch: REL_11_STABLE [5cb88648e] 2022-01-27 20:18:22 +0100
Branch: REL_10_STABLE [4ef38fbe8] 2022-01-27 20:19:39 +0100
-->
<para>
Fix startup of a physical replica to tolerate transaction ID
wraparound (Abhijit Menon-Sen, Tomas Vondra)
</para>
<para>
If a replica server is started while the set of active transactions
on the primary crosses a wraparound boundary (so that there are some
newer transactions with smaller XIDs than older ones), the replica
would fail with <quote>out-of-order XID insertion in
KnownAssignedXids</quote>. The replica would retry, but could never
get past that error.
</para>
</listitem>
<listitem>
<!--
Author: Amit Kapila <akapila@postgresql.org>
Branch: master [5e97905a2] 2021-12-09 08:36:59 +0530
Branch: REL_14_STABLE [614b77d65] 2021-12-09 08:49:50 +0530
Branch: REL_13_STABLE [3f06c00cf] 2021-12-09 09:00:35 +0530
-->
<para>
In logical replication, avoid double transmission of a child table's
data (Hou Zhijie)
</para>
<para>
If a publication includes both child and parent tables, and has
the <literal>publish_via_partition_root</literal> option set,
subscribers uselessly initiated synchronization on both child and
parent tables. Ensure that only the parent table is synchronized in
such cases.
</para>
</listitem>
<listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [6aa518614] 2022-01-24 15:33:38 -0500
Branch: REL_14_STABLE [1efcc5946] 2022-01-24 15:33:34 -0500
Branch: REL_13_STABLE [d67354d87] 2022-01-24 15:33:34 -0500
Branch: REL_12_STABLE [689f75d6e] 2022-01-24 15:33:34 -0500
Branch: REL_11_STABLE [4ec54498c] 2022-01-24 15:33:34 -0500
Branch: REL_10_STABLE [9af6d4b5a] 2022-01-24 15:33:34 -0500
Branch: master [3c06ec6d1] 2022-01-24 12:09:46 -0500
Branch: REL_14_STABLE [ef9706bbc] 2022-01-24 12:09:46 -0500
Branch: REL_13_STABLE [c94c6612d] 2022-01-24 12:09:46 -0500
Branch: REL_12_STABLE [a8ce5c8d7] 2022-01-24 12:09:46 -0500
Branch: REL_11_STABLE [449a69623] 2022-01-24 12:09:46 -0500
Branch: REL_10_STABLE [daf658982] 2022-01-24 12:09:46 -0500
-->
<para>
Remove lexical limitations for SQL commands issued on a logical
replication connection (Tom Lane)
</para>
<para>
The walsender process would fail for a SQL command containing an
unquoted semicolon, or with dollar-quoted literals containing odd
numbers of single or double quote marks, or when the SQL command
starts with a comment. Moreover, faulty error recovery could lead
to unexpected errors in later commands too.
</para>
</listitem>
<listitem>
<!--
Author: Amit Kapila <akapila@postgresql.org>
Branch: master [e464cb7af] 2021-12-08 15:18:56 +0530
Branch: REL_14_STABLE [f2e1730ee] 2021-12-08 15:21:12 +0530
-->
<para>
Ensure that replication origin timestamp is set while replicating
a <command>ROLLBACK PREPARED</command> operation (Masahiko Sawada)
</para>
</listitem>
<listitem>
<!--
Author: Michael Paquier <michael@paquier.xyz>
Branch: master [237d1f317] 2022-01-21 14:54:04 +0900
Branch: REL_14_STABLE [84db5169d] 2022-01-21 14:54:47 +0900
Branch: REL_13_STABLE [b5f634116] 2022-01-21 14:54:51 +0900
Branch: REL_12_STABLE [1c0452c48] 2022-01-21 14:54:55 +0900
Branch: REL_11_STABLE [0ffe2975c] 2022-01-21 14:54:59 +0900
Branch: REL_10_STABLE [919be95c6] 2022-01-21 14:55:04 +0900
-->
<para>
Fix possible loss of the commit timestamp for the last
subtransaction of a transaction (Alex Kingsborough, Kyotaro Horiguchi)
</para>
</listitem>
<listitem>
<!--
Author: Andres Freund <andres@anarazel.de>
Branch: master [1fabec7d7] 2022-01-21 11:22:55 -0800
Branch: REL_14_STABLE [2b7dbe4bd] 2022-01-21 11:24:12 -0800
Branch: REL_13_STABLE [fd48e5f5d] 2022-01-21 11:24:12 -0800
Branch: REL_12_STABLE [1c6d055ba] 2022-01-21 11:24:12 -0800
Branch: REL_11_STABLE [2c15b29f7] 2022-01-21 11:24:12 -0800
Branch: REL_10_STABLE [f862cc09f] 2022-01-21 11:24:12 -0800
-->
<para>
Be sure to <function>fsync</function>
the <filename>pg_logical/mappings</filename> subdirectory during
checkpoints (Nathan Bossart)
</para>
<para>
On some filesystems this oversight could lead to losing logical
rewrite status files after a system crash.
</para>
</listitem>
<listitem>
<!--
Author: Tomas Vondra <tomas.vondra@postgresql.org>
Branch: master [20b9fa308] 2022-01-15 19:06:48 +0100
Branch: REL_14_STABLE [ea212bd95] 2022-01-15 19:05:22 +0100
Branch: REL_13_STABLE [d6817032d] 2022-01-15 19:14:00 +0100
Branch: REL_12_STABLE [9d1bcf5dc] 2022-01-15 19:02:58 +0100
Branch: REL_11_STABLE [491182e52] 2022-01-15 18:32:20 +0100
Branch: REL_10_STABLE [9211c2e38] 2022-01-15 18:30:45 +0100
-->
<para>
Build extended statistics for partitioned tables (Justin Pryzby)
</para>
<para>
A previous bug fix disabled building of extended statistics for
old-style inheritance trees, but it also prevented building them for
partitioned tables, which was an unnecessary restriction.
This change allows <command>ANALYZE</command> to compute values for
statistics objects for partitioned tables. (But note that
autovacuum does not process partitioned tables as such, so you must
periodically issue manual <command>ANALYZE</command> on the
partitioned table if you want to maintain such statistics.)
</para>
</listitem>
<listitem>
<!--
Author: Tomas Vondra <tomas.vondra@postgresql.org>
Branch: master [36c4bc6e7] 2022-01-15 02:20:54 +0100
Branch: REL_14_STABLE [2cc007fd0] 2022-01-15 02:26:26 +0100
Branch: REL_13_STABLE [acfde7c58] 2022-01-15 02:30:06 +0100
Branch: REL_12_STABLE [76569ad6f] 2022-01-15 03:14:55 +0100
Branch: REL_11_STABLE [b3cac25f4] 2022-01-15 02:40:40 +0100
Branch: REL_10_STABLE [ff0e7c7e8] 2022-01-15 03:05:06 +0100
-->
<para>
Ignore extended statistics for inheritance trees (Justin Pryzby)
</para>
<para>
Currently, extended statistics values are only computed locally for
each table, not for entire inheritance trees. However the values
were mistakenly consulted when planning queries across inheritance
trees, possibly resulting in worse-than-default estimates.
</para>
</listitem>
<listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [7ead9925f] 2022-01-06 16:46:46 -0500
Branch: REL_14_STABLE [f285d9583] 2022-01-06 16:46:46 -0500
Branch: REL_13_STABLE [86d4bbb56] 2022-01-06 16:46:46 -0500
Branch: REL_12_STABLE [ccc7c3ad8] 2022-01-06 16:46:46 -0500
Branch: REL_11_STABLE [2ce113a4f] 2022-01-06 16:46:46 -0500
Branch: REL_10_STABLE [e5b044c84] 2022-01-06 16:46:46 -0500
-->
<para>
Disallow altering data type of a partitioned table's columns when
the partitioned table's row type is used as a composite type
elsewhere (Tom Lane)
</para>
<para>
This restriction has long existed for regular tables, but through an
oversight it was not checked for partitioned tables.
</para>
</listitem>
<listitem>
<!--
Author: Michael Paquier <michael@paquier.xyz>
Branch: master [f0d43947a] 2021-11-25 15:04:56 +0900
Branch: REL_14_STABLE [e415916e2] 2021-11-25 15:05:24 +0900
Branch: REL_13_STABLE [37827de43] 2021-11-25 15:05:28 +0900
Branch: REL_12_STABLE [216156fec] 2021-11-25 15:05:31 +0900
Branch: REL_11_STABLE [dffe80e55] 2021-11-25 15:05:34 +0900
Branch: REL_10_STABLE [817c469c2] 2021-11-25 15:05:37 +0900
-->
<para>
Disallow <literal>ALTER TABLE ... DROP NOT NULL</literal> for a
column that is part of a replica identity index (Haiying Tang, Hou
Zhijie)
</para>
<para>
The same prohibition already existed for primary key indexes.
</para>
</listitem>
<listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [d8fbbb925] 2022-01-22 13:32:40 -0500
Branch: REL_14_STABLE [3839e29c5] 2022-01-22 13:32:40 -0500
Branch: REL_13_STABLE [31b7b4d26] 2022-01-22 13:32:40 -0500
Branch: REL_12_STABLE [e2d53c876] 2022-01-22 13:32:40 -0500
Branch: REL_11_STABLE [26c841ed1] 2022-01-22 13:32:40 -0500
-->
<para>
Correctly update cached table state during <command>ALTER TABLE ADD
PRIMARY KEY USING INDEX</command> (Hou Zhijie)
</para>
<para>
Concurrent sessions failed to update their opinion of whether the
table has a primary key, possibly causing incorrect logical
replication behavior.
</para>
</listitem>
<listitem>
<!--
Author: Amit Kapila <akapila@postgresql.org>
Branch: master [354a1f8d2] 2021-11-16 08:10:13 +0530
Branch: REL_14_STABLE [232fd72a5] 2021-11-16 08:34:24 +0530
Branch: REL_13_STABLE [63c3eeddc] 2021-11-16 08:46:12 +0530
Branch: REL_12_STABLE [9816e2d31] 2021-11-16 09:05:51 +0530
Branch: REL_11_STABLE [40fb634b1] 2021-11-16 09:25:04 +0530
Branch: REL_10_STABLE [2c0443c59] 2021-11-16 09:44:00 +0530
-->
<para>
Correctly update cached table state when switching <literal>REPLICA
IDENTITY</literal> index (Tang Haiying, Hou Zhijie)
</para>
<para>
Concurrent sessions failed to update their opinion of which index is
the replica identity one, possibly causing incorrect logical
replication behavior.
</para>
</listitem>
<listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [f4e7ae2b8] 2021-11-20 14:29:56 -0500
Branch: REL_14_STABLE [6d07cbc50] 2021-11-20 14:29:56 -0500
-->
<para>
Fix failure of SP-GiST indexes when the indexed column's data type
is binary-compatible with the declared input type of the operator
class (Tom Lane)
</para>
<para>
Such cases should work, but failed with <quote>compress method must
be defined when leaf type is different from input type</quote>.
</para>
</listitem>
<listitem>
<!--
Author: Amit Kapila <akapila@postgresql.org>
Branch: master [0f0cfb494] 2021-11-19 09:04:40 +0530
Branch: REL_14_STABLE [ead49ebc0] 2021-11-19 09:14:09 +0530
Branch: REL_13_STABLE [33b6dd83e] 2021-11-19 09:24:00 +0530
-->
<para>
Allow parallel vacuuming and concurrent index building to be ignored
while computing oldest xmin (Masahiko Sawada)
</para>
<para>
Non-parallelized instances of these operations were already ignored,
but the logic did not work for parallelized cases. Holding back the
xmin horizon has undesirable effects such as delaying vacuum
cleanup.
</para>
</listitem>
<listitem>
<!--
Author: Peter Geoghegan <pg@bowt.ie>
Branch: master [db6736c93] 2022-01-12 15:41:04 -0800
Branch: REL_14_STABLE [41ee68a91] 2022-01-12 15:41:02 -0800
-->
<para>
Fix memory leak when updating expression indexes (Peter Geoghegan)
</para>
<para>
An <command>UPDATE</command> affecting many rows could consume
significant amounts of memory.
</para>
</listitem>
<listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [babe545ca] 2021-12-01 13:44:46 -0500
Branch: REL_14_STABLE [8f4b0200e] 2021-12-01 13:44:47 -0500
Branch: REL_13_STABLE [7413caabe] 2021-12-01 13:44:47 -0500
Branch: REL_12_STABLE [5cf08b4db] 2021-12-01 13:44:47 -0500
Branch: REL_11_STABLE [82d354411] 2021-12-01 13:44:47 -0500
Branch: REL_10_STABLE [fec187dc3] 2021-12-01 13:44:47 -0500
-->
<para>
Avoid leaking memory during <command>REASSIGN OWNED BY</command>
operations that reassign ownership of many objects (Justin Pryzby)
</para>
</listitem>
<listitem>
<!--
Author: Michael Paquier <michael@paquier.xyz>
Branch: master [6ce16088b] 2022-01-05 10:27:07 +0900
Branch: REL_14_STABLE [5ddfebded] 2022-01-05 10:27:47 +0900
Branch: REL_13_STABLE [3f8062bcf] 2022-01-05 10:27:53 +0900
-->
<para>
Improve performance of walsenders sending logical changes by
avoiding unnecessary cache accesses (Hou Zhijie)
</para>
</listitem>
<listitem>
<!--
Author: Magnus Hagander <magnus@hagander.net>
Branch: master [2dbb7b9b2] 2022-01-26 09:58:59 +0100
Branch: REL_14_STABLE [4afae689e] 2022-01-26 09:59:14 +0100
Branch: REL_13_STABLE [81596645c] 2022-01-26 09:59:19 +0100
Branch: REL_12_STABLE [aa58f5c53] 2022-01-26 09:59:23 +0100
-->
<para>
Fix display of <literal>cert</literal> authentication method's
options in <structname>pg_hba_file_rules</structname> view (Magnus
Hagander)
</para>
<para>
The <literal>cert</literal> authentication method implies
<literal>clientcert=verify-full</literal>, but the
<structname>pg_hba_file_rules</structname> view incorrectly reported
<literal>clientcert=verify-ca</literal>.
</para>
</listitem>
<listitem>
<!--
Author: Fujii Masao <fujii@postgresql.org>
Branch: master [108505d76] 2022-01-28 11:24:42 +0900
Branch: REL_14_STABLE [6e7ee55e7] 2022-01-28 11:25:45 +0900
-->
<para>
Ensure that the session targeted
by <function>pg_log_backend_memory_contexts()</function> sends its
results only to the server's log (Fujii Masao)
</para>
<para>
Previously, a sufficiently high setting
of <varname>client_min_messages</varname> could result in the log
message also being sent to the connected client. Since that client
hadn't requested it, that would be surprising (and possibly a wire
protocol violation).
</para>
</listitem>
<listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [43c217512] 2022-01-13 17:49:46 -0500
Branch: REL_14_STABLE [4aee39ddb] 2022-01-13 17:49:26 -0500
Branch: REL_13_STABLE [ca14c4184] 2022-01-13 17:49:26 -0500
Branch: REL_12_STABLE [45a3cefad] 2022-01-13 17:49:26 -0500
Branch: REL_11_STABLE [3a1bfe256] 2022-01-13 17:49:26 -0500
Branch: REL_10_STABLE [3433a1fc7] 2022-01-13 17:49:26 -0500
-->
<para>
Fix display of whole-row variables appearing
in <literal>INSERT ... VALUES</literal> rules (Tom Lane)
</para>
<para>
A whole-row variable would be printed as <quote>var.*</quote>,
but that allows it to be expanded to individual columns when
the rule is reloaded, resulting in different semantics.
Attach an explicit cast to prevent that, as we do elsewhere.
</para>
</listitem>
<listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [a8d8445a7] 2021-11-17 11:31:31 -0500
Branch: REL_14_STABLE [5d5779aea] 2021-11-17 11:31:31 -0500
-->
<para>
When reverse-listing a SQL-standard function body, display function
parameters appropriately within <command>INSERT ... SELECT</command>
(Tom Lane)
</para>
<para>
Previously, they'd come out
as <literal>$<replaceable>N</replaceable></literal> even when the
parameter had a name.
</para>
</listitem>
<listitem>
<!--
Author: Michael Paquier <michael@paquier.xyz>
Branch: master [098c13455] 2021-11-11 15:00:59 +0900
Branch: REL_14_STABLE [b609db715] 2021-11-11 15:01:45 +0900
Branch: REL_13_STABLE [13c8adf90] 2021-11-11 15:01:54 +0900
-->
<para>
Fix one-byte buffer overrun when applying Unicode string
normalization to an empty string (Michael Paquier)
</para>
<para>
The practical impact of this is limited thanks to alignment
considerations; but in debug builds, a warning was raised.
</para>
</listitem>
<listitem>
<!--
Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
Branch: master [f66885bec] 2022-01-04 13:01:05 -0300
Branch: REL_14_STABLE [f185f35a8] 2022-01-04 13:01:05 -0300
Branch: REL_13_STABLE [29f9fb8fe] 2022-01-04 13:01:05 -0300
Branch: REL_12_STABLE [6b681cd05] 2022-01-04 13:01:05 -0300
Branch: REL_11_STABLE [28cd57416] 2022-01-04 13:01:05 -0300
Branch: REL_10_STABLE [026a93727] 2022-01-04 13:01:05 -0300
Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
Branch: master [67a8cb5cb] 2022-01-04 13:21:23 -0300
Branch: REL_14_STABLE [f9db153c2] 2022-01-04 13:21:23 -0300
Branch: REL_13_STABLE [33fdd9f85] 2022-01-04 13:21:23 -0300
Branch: REL_12_STABLE [397b43948] 2022-01-04 13:21:23 -0300
Branch: REL_11_STABLE [b63851a45] 2022-01-04 13:21:23 -0300
Branch: REL_10_STABLE [4a8282425] 2022-01-04 13:21:23 -0300
Author: Michael Paquier <michael@paquier.xyz>
Branch: master [2e577c944] 2021-12-22 15:38:00 +0900
Branch: REL_14_STABLE [8a22a40b2] 2021-12-22 15:38:05 +0900
Author: Michael Paquier <michael@paquier.xyz>
Branch: master [ece8c7619] 2021-12-14 10:58:15 +0900
Branch: REL_14_STABLE [4be3e005e] 2021-12-14 10:58:25 +0900
Branch: REL_13_STABLE [3f710fc2b] 2021-12-14 10:58:29 +0900
Branch: REL_12_STABLE [65af1e842] 2021-12-14 10:58:33 +0900
Branch: REL_11_STABLE [8abb6c27e] 2021-12-14 10:58:37 +0900
-->
<para>
Fix or remove some incorrect assertions (Simon Riggs, Michael
Paquier, Alexander Lakhin)
</para>
<para>
These errors should affect only debug builds, not production.
</para>
</listitem>
<listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [1f655fdc3] 2022-01-21 15:36:27 -0500
Branch: REL_14_STABLE [f4ebf0dbe] 2022-01-21 15:36:28 -0500
Branch: REL_13_STABLE [64ebb43df] 2022-01-21 15:36:28 -0500
Branch: REL_12_STABLE [5521d8139] 2022-01-21 15:36:29 -0500
Branch: REL_11_STABLE [37f5dc8b8] 2022-01-21 15:36:29 -0500
Branch: REL_10_STABLE [0c7c94f90] 2022-01-21 15:36:30 -0500
-->
<para>
Fix race condition that could lead to failure to localize error
messages that are reported early in multi-threaded use
of <application>libpq</application>
or <application>ecpglib</application> (Tom Lane)
</para>
</listitem>
<listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [f3f467b8f] 2022-01-17 12:52:44 -0500
Branch: REL_14_STABLE [050949877] 2022-01-17 12:52:44 -0500
Branch: REL_13_STABLE [f27af7b88] 2022-01-17 12:52:44 -0500
Branch: REL_12_STABLE [38f099ef9] 2022-01-17 12:52:44 -0500
Branch: REL_11_STABLE [8b107467c] 2022-01-17 12:52:44 -0500
Branch: REL_10_STABLE [9d66c43eb] 2022-01-17 12:52:45 -0500
-->
<para>
Avoid calling <function>strerror</function>
from <application>libpq</application>'s <function>PQcancel</function>
function (Tom Lane)
</para>
<para>
<function>PQcancel</function> is supposed to be safe to call from a
signal handler, but <function>strerror</function> is not safe. The
faulty usage only occurred in the unlikely event of failure to
send the cancel message to the server, perhaps explaining the lack
of reports.
</para>
</listitem>
<listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [d6eb5a0c2] 2021-11-12 14:55:32 -0500
Branch: REL_14_STABLE [99389cb66] 2021-11-12 14:55:32 -0500
Branch: REL_13_STABLE [843925fad] 2021-11-12 14:55:32 -0500
Branch: REL_12_STABLE [523adcc12] 2021-11-12 14:55:32 -0500
Branch: REL_11_STABLE [b062ca508] 2021-11-12 14:55:32 -0500
Branch: REL_10_STABLE [3bc46e4e9] 2021-11-12 14:55:32 -0500
-->
<para>
Make <application>psql</application>'s <command>\password</command>
command default to setting the password
for <literal>CURRENT_USER</literal>, not the connection's original
user name (Tom Lane)
</para>
<para>
This agrees with the documented behavior, and avoids probable
permissions failure if <command>SET ROLE</command> or <command>SET
SESSION AUTHORIZATION</command> has been done since the session began.
To prevent confusion, the role name to be acted on is now
included in the password prompt.
</para>
</listitem>
<listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [9007d4ea7] 2022-01-17 21:19:02 -0500
Branch: REL_14_STABLE [3886785b4] 2022-01-17 21:18:49 -0500
Branch: REL_13_STABLE [90e0f9fd8] 2022-01-17 21:18:49 -0500
-->
<para>
Fix <application>psql</application> <literal>\d</literal> command's
query for identifying parent triggers (Justin Pryzby)
</para>
<para>
The previous coding failed with <quote>more than one row returned by
a subquery used as an expression</quote> if a partition had triggers
and there were unrelated statement-level triggers of the same name
on some parent partitioned table.
</para>
</listitem>
<listitem>
<!--
Author: Michael Paquier <michael@paquier.xyz>
Branch: master [fe594abf7] 2022-01-08 16:44:45 +0900
Branch: REL_14_STABLE [f5bea8360] 2022-01-08 16:45:14 +0900
-->
<para>
Make <application>psql</application>'s <literal>\d</literal> command
sort a table's extended statistics objects by name not OID (Justin
Pryzby)
</para>
</listitem>
<listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [fe7551744] 2022-01-16 14:59:20 -0500
Branch: REL_14_STABLE [d91d4338e] 2022-01-16 14:59:20 -0500
Branch: REL_13_STABLE [90a847e6d] 2022-01-16 14:59:20 -0500
-->
<para>
Fix <application>psql</application>'s tab-completion of label values
for enum types (Tom Lane)
</para>
</listitem>
<listitem>
<!--
Author: Michael Paquier <michael@paquier.xyz>
Branch: master [10260c794] 2021-11-25 12:16:21 +0900
Branch: REL_14_STABLE [d2198b459] 2021-11-25 12:17:05 +0900
Branch: master [58651d8dd] 2021-11-30 09:55:50 +0900
Branch: REL_14_STABLE [5550a9c38] 2021-11-30 09:55:56 +0900
-->
<para>
Fix failures on Windows when using the terminal as data source
or destination (Dmitry Koval, Juan José Santamaría Flecha, Michael
Paquier)
</para>
<para>
This affects <application>psql</application>'s
<command>\copy</command> command, as well
as <application>pg_recvlogical</application> with
<option>-f -</option>.
</para>
</listitem>
<listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [2131c049d] 2022-01-17 13:30:04 -0500
Branch: REL_14_STABLE [4e8726566] 2022-01-17 13:30:04 -0500
Branch: REL_13_STABLE [d18ec312f] 2022-01-17 13:30:04 -0500
Branch: REL_12_STABLE [6d1a854c1] 2022-01-17 13:30:04 -0500
Branch: REL_11_STABLE [92e6c1c9b] 2022-01-17 13:30:04 -0500
Branch: REL_10_STABLE [62bfa554b] 2022-01-17 13:30:04 -0500
-->
<para>
In <application>psql</application> and some other client programs,
avoid trying to invoke <function>gettext()</function> from a
control-C signal handler (Tom Lane)
</para>
<para>
While no reported failures have been traced to this mistake, it seems
highly unlikely to be a safe thing to do.
</para>
</listitem>
<listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [282b6d00a] 2021-11-21 14:13:35 -0500
Branch: REL_14_STABLE [3bd7556bb] 2021-11-21 14:13:35 -0500
Branch: REL_13_STABLE [33edf4a3c] 2021-11-21 14:13:35 -0500
Branch: REL_12_STABLE [93295932d] 2021-11-21 14:13:35 -0500
Branch: REL_11_STABLE [c2242d364] 2021-11-21 14:13:35 -0500
Branch: REL_10_STABLE [3ce5d0884] 2021-11-21 14:13:35 -0500
-->
<para>
Allow canceling the initial password prompt
in <application>pg_receivewal</application>
and <application>pg_recvlogical</application> (Tom Lane, Nathan
Bossart)
</para>
<para>
Previously it was impossible to terminate these programs via control-C
while they were prompting for a password.
</para>
</listitem>
<listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [b55f2b692] 2021-11-22 17:16:29 -0500
Branch: REL_14_STABLE [0fdf67476] 2021-11-22 17:16:29 -0500
Branch: REL_13_STABLE [d4f6a36d8] 2021-11-22 17:16:29 -0500
Branch: REL_12_STABLE [69949ea68] 2021-11-22 17:16:29 -0500
Branch: REL_11_STABLE [54619a25d] 2021-11-22 17:16:29 -0500
Branch: REL_10_STABLE [2b36973d9] 2021-11-22 17:16:29 -0500
-->
<para>
Fix <application>pg_dump</application>'s dump ordering for
user-defined casts (Tom Lane)
</para>
<para>
In rare cases, the output script might refer to a user-defined cast
before it had been created.
</para>
</listitem>
<listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [0b126c6a4] 2021-11-22 15:25:48 -0500
Branch: REL_14_STABLE [aedc4600d] 2021-11-22 15:25:48 -0500
Branch: REL_13_STABLE [6fc8b145e] 2021-11-22 15:25:48 -0500
Branch: REL_12_STABLE [1e7f588ad] 2021-11-22 15:25:48 -0500
Branch: master [db3a660c6] 2021-11-22 15:57:31 -0500
Branch: REL_14_STABLE [72842a575] 2021-11-22 15:57:43 -0500
Branch: REL_13_STABLE [b542e4596] 2021-11-22 15:57:52 -0500
Branch: REL_12_STABLE [72582531b] 2021-11-22 15:57:59 -0500
Branch: REL_11_STABLE [22d2b6611] 2021-11-22 15:58:05 -0500
Branch: REL_10_STABLE [b599b8f39] 2021-11-22 15:58:12 -0500
-->
<para>
Fix <application>pg_dump</application>'s <option>--inserts</option>
and <option>--column-inserts</option> modes to handle tables
containing both generated columns and dropped columns (Tom Lane)
</para>
</listitem>
<listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [248c3a937] 2021-11-17 14:16:34 -0500
Branch: REL_14_STABLE [53c4a580e] 2021-11-17 14:16:34 -0500
Branch: REL_13_STABLE [c8b5221b5] 2021-11-17 14:16:34 -0500
Branch: REL_12_STABLE [8378dad4c] 2021-11-17 14:16:34 -0500
Branch: REL_11_STABLE [a414eb850] 2021-11-17 14:16:34 -0500
Branch: REL_10_STABLE [13799bb93] 2021-11-17 14:16:34 -0500
Branch: master [3cac2c8ca] 2021-11-17 13:08:25 -0500
Branch: REL_14_STABLE [6b413b41b] 2021-11-17 13:08:25 -0500
Branch: REL_13_STABLE [bbda88c33] 2021-11-17 13:08:25 -0500
Branch: REL_12_STABLE [12bf11889] 2021-11-17 13:08:25 -0500
-->
<para>
Fix possible mis-reporting of errors
in <application>pg_dump</application>
and <application>pg_basebackup</application> (Tom Lane)
</para>
<para>
The previous code failed to check for errors from some kernel calls,
and could report the wrong errno values in other cases.
</para>
</listitem>
<listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [54b1cb7eb] 2022-01-08 14:54:39 -0500
Branch: REL_14_STABLE [043c1e1a7] 2022-01-08 14:54:39 -0500
Branch: REL_13_STABLE [823d4c7e2] 2022-01-08 14:54:39 -0500
Branch: REL_12_STABLE [3a69d45af] 2022-01-08 14:54:39 -0500
Branch: REL_11_STABLE [38cbdd22d] 2022-01-08 14:54:39 -0500
Branch: REL_10_STABLE [b21986908] 2022-01-08 14:54:39 -0500
-->
<para>
Fix results of index-only scans
on <filename>contrib/btree_gist</filename> indexes
on <type>char(<replaceable>N</replaceable>)</type> columns (Tom Lane)
</para>
<para>
Index-only scans returned column values with trailing spaces
removed, which is not the expected behavior. That happened because
that's how the data was stored in the index. This fix changes the
code to store <type>char(<replaceable>N</replaceable>)</type> values
with the expected amount of space padding.
The behavior of such an index will not change immediately unless
you <command>REINDEX</command> it; otherwise space-stripped values
will be gradually replaced over time during updates. Queries that
do not use index-only scan plans will be unaffected in any case.
</para>
</listitem>
<listitem>
<!--
Author: Etsuro Fujita <efujita@postgresql.org>
Branch: master [9e283fc85] 2022-01-27 16:15:00 +0900
Branch: REL_14_STABLE [d1cca9441] 2022-01-27 16:15:02 +0900
Author: Etsuro Fujita <efujita@postgresql.org>
Branch: master [6c07f9ebc] 2022-01-21 17:45:00 +0900
Branch: REL_14_STABLE [700e8fe6d] 2022-01-21 17:45:02 +0900
-->
<para>
Fix edge cases in <filename>postgres_fdw</filename>'s handling of
asynchronous queries (Etsuro Fujita)
</para>
<para>
These errors could lead to crashes or incorrect results when
attempting to parallelize scans of foreign tables.
</para>
</listitem>
<listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [bd233bdd8] 2022-01-25 18:52:44 -0500
Branch: REL_14_STABLE [803f0b173] 2022-02-01 19:03:41 -0500
Branch: REL_13_STABLE [4d7d196ff] 2022-02-01 19:03:41 -0500
Branch: REL_12_STABLE [aa2215d6b] 2022-02-01 19:03:41 -0500
Branch: REL_11_STABLE [e41176bd6] 2022-02-01 19:03:41 -0500
Branch: REL_10_STABLE [a72c43012] 2022-02-01 19:03:41 -0500
-->
<para>
Change <application>configure</application> to use
Python's <application>sysconfig</application> module, rather than
the deprecated <application>distutils</application> module, to
determine how to build PL/Python (Peter Eisentraut, Tom Lane, Andres
Freund)
</para>
<para>
With Python 3.10, this
avoids <application>configure</application>-time warnings
about <application>distutils</application> being deprecated and
scheduled for removal in Python 3.12. Presumably, once 3.12 is
out, <literal>configure --with-python</literal> would fail
altogether. This future-proofing does come at a
cost: <application>sysconfig</application> did not exist before
Python 2.7, nor before 3.2 in the Python 3 branch, so it is no
longer possible to build PL/Python against long-dead Python
versions.
</para>
</listitem>
<listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [b63710164] 2021-11-30 17:18:04 -0500
Branch: REL_14_STABLE [175edafd1] 2021-11-30 17:18:04 -0500
-->
<para>
Re-allow cross-compilation
without <application>OpenSSL</application> (Tom Lane)
</para>
<para>
<application>configure</application> should assume
that <filename>/dev/urandom</filename> will be available on the
target system, but it failed instead.
</para>
</listitem>
<listitem>
<!--
Author: Andres Freund <andres@anarazel.de>
Branch: master [c89f40974] 2022-01-30 16:42:14 -0800
Branch: REL_14_STABLE [8484e3812] 2022-01-30 16:42:42 -0800
Branch: REL_13_STABLE [0dc0fe7b6] 2022-01-30 16:42:45 -0800
Branch: REL_12_STABLE [f173738d5] 2022-01-30 16:42:47 -0800
Branch: REL_11_STABLE [ad95a639a] 2022-01-30 16:42:49 -0800
Branch: REL_10_STABLE [2557a03f8] 2022-01-30 16:43:07 -0800
-->
<para>
Fix PL/Perl compile failure on Windows with Perl 5.28 and later
(Victor Wagner)
</para>
</listitem>
<listitem>
<!--
Author: Peter Eisentraut <peter@eisentraut.org>
Branch: master [99e4d24a9] 2021-11-25 14:19:22 +0100
Branch: REL_14_STABLE [1cc13b83e] 2021-11-25 14:30:12 +0100
Branch: REL_13_STABLE [04875ae92] 2021-11-25 14:30:46 +0100
Branch: REL_12_STABLE [0d335cbd5] 2021-11-25 14:31:01 +0100
Branch: REL_11_STABLE [a83b1bab0] 2021-11-25 14:32:26 +0100
Branch: REL_10_STABLE [4339e10f0] 2021-11-25 14:32:43 +0100
-->
<para>
Fix PL/Python compile failure with Python 3.11 and later (Peter
Eisentraut)
</para>
</listitem>
<listitem>
<!--
Author: Michael Paquier <michael@paquier.xyz>
Branch: master [b2265d305] 2021-11-24 13:03:23 +0900
Branch: REL_14_STABLE [0e681fa45] 2021-11-24 13:03:55 +0900
Branch: REL_13_STABLE [baef657d3] 2021-11-24 13:03:59 +0900
Branch: REL_12_STABLE [420d5e40b] 2021-11-24 13:04:03 +0900
Branch: REL_11_STABLE [1061e41ff] 2021-11-24 13:04:07 +0900
Branch: REL_10_STABLE [82881a9b9] 2021-11-24 13:04:12 +0900
-->
<para>
Add support for building with Visual Studio 2022 (Hans Buschmann)
</para>
</listitem>
<listitem>
<!--
Author: Andrew Dunstan <andrew@dunslane.net>
Branch: master [c3879a7b4] 2022-01-07 16:07:45 -0500
Branch: REL_14_STABLE [a7772e874] 2022-01-07 16:14:04 -0500
Branch: REL_13_STABLE [f3ded9c46] 2022-01-07 16:14:16 -0500
Branch: REL_12_STABLE [a4cde9153] 2022-01-07 16:14:23 -0500
Branch: REL_11_STABLE [c7fa0f55d] 2022-01-07 16:14:32 -0500
Branch: REL_10_STABLE [d897361c7] 2022-01-07 16:14:40 -0500
Branch: master [f80900be0] 2022-01-20 10:13:18 -0500
Branch: REL_14_STABLE [156a846d9] 2022-01-20 10:20:40 -0500
Branch: REL_13_STABLE [31680730e] 2022-01-20 10:20:51 -0500
Branch: REL_12_STABLE [22d8c2570] 2022-01-20 10:21:02 -0500
Branch: REL_11_STABLE [0a79feeca] 2022-01-20 10:21:12 -0500
Branch: REL_10_STABLE [a5bd14d93] 2022-01-20 10:21:28 -0500
-->
<para>
Allow the <filename>.bat</filename> wrapper scripts in our MSVC
build system to be called without first changing into their
directory (Anton Voloshin, Andrew Dunstan)
</para>
</listitem>
</itemizedlist>
</sect2>
</sect1>
<sect1 id="release-14-1">
<title>Release 14.1</title>
<formalpara>
<title>Release date:</title>
<para>2021-11-11</para>
</formalpara>
<para>
This release contains a variety of fixes from 14.0.
For information about new features in major release 14, see
<xref linkend="release-14"/>.
</para>
<sect2>
<title>Migration to Version 14.1</title>
<para>
A dump/restore is not required for those running 14.X.
</para>
<para>
However, note that installations using physical replication should
update standby servers before the primary server, as explained in
the third changelog entry below.
</para>
<para>
Also, several bugs have been found that may have resulted in corrupted
indexes, as explained in the next several changelog entries. If any
of those cases apply to you, it's recommended to reindex
possibly-affected indexes after updating.
</para>
</sect2>
<sect2>
<title>Changes</title>
<itemizedlist>
<listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [28e241255] 2021-11-08 11:01:43 -0500
Branch: REL_14_STABLE [9d5a76b8d] 2021-11-08 11:01:43 -0500
Branch: REL_13_STABLE [e92ed93e8] 2021-11-08 11:01:43 -0500
Branch: REL_12_STABLE [d1bd26740] 2021-11-08 11:01:43 -0500
Branch: REL_11_STABLE [9394fb828] 2021-11-08 11:01:43 -0500
Branch: REL_10_STABLE [9ae0f1112] 2021-11-08 11:01:43 -0500
Branch: REL9_6_STABLE [046c2c846] 2021-11-08 11:01:43 -0500
-->
<para>
Make the server reject extraneous data after an SSL or GSS
encryption handshake (Tom Lane)
</para>
<para>
A man-in-the-middle with the ability to inject data into the TCP
connection could stuff some cleartext data into the start of a
supposedly encryption-protected database session.
This could be abused to send faked SQL commands to the server,
although that would only work if the server did not demand any
authentication data. (However, a server relying on SSL certificate
authentication might well not do so.)
</para>
<para>
The <productname>PostgreSQL</productname> Project thanks
Jacob Champion for reporting this problem.
(CVE-2021-23214)
</para>
</listitem>
<listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [160c02588] 2021-11-08 11:14:56 -0500
Branch: REL_14_STABLE [30547d791] 2021-11-08 11:14:56 -0500
Branch: REL_13_STABLE [844b31692] 2021-11-08 11:14:56 -0500
Branch: REL_12_STABLE [36bb95ef2] 2021-11-08 11:14:56 -0500
Branch: REL_11_STABLE [a021a1d2a] 2021-11-08 11:14:56 -0500
Branch: REL_10_STABLE [e65d9c8cd] 2021-11-08 11:14:56 -0500
Branch: REL9_6_STABLE [d83cdfdca] 2021-11-08 11:14:57 -0500
-->
<para>
Make <application>libpq</application> reject extraneous data after
an SSL or GSS encryption handshake (Tom Lane)
</para>
<para>
A man-in-the-middle with the ability to inject data into the TCP
connection could stuff some cleartext data into the start of a
supposedly encryption-protected database session.
This could probably be abused to inject faked responses to the
client's first few queries, although other details of libpq's
behavior make that harder than it sounds. A different line of
attack is to exfiltrate the client's password, or other sensitive
data that might be sent early in the session. That has been shown
to be possible with a server vulnerable to CVE-2021-23214.
</para>
<para>
The <productname>PostgreSQL</productname> Project thanks
Jacob Champion for reporting this problem.
(CVE-2021-23222)
</para>
</listitem>
<listitem>
<!--
Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
Branch: master [ff9f111bc] 2021-09-29 11:21:51 -0300
Branch: REL_14_STABLE [64a8687a6] 2021-09-29 11:41:01 -0300
Branch: REL_13_STABLE [1d97d3d08] 2021-09-29 11:21:51 -0300
Branch: REL_12_STABLE [1df0a914d] 2021-09-29 11:21:51 -0300
Branch: REL_11_STABLE [cfedb279a] 2021-09-29 11:21:51 -0300
Branch: REL_10_STABLE [d9fe2cc7d] 2021-09-29 11:21:51 -0300
Branch: REL9_6_STABLE [148c6ee3b] 2021-09-29 11:21:51 -0300
Branch: master [d03bca4d7] 2021-09-30 10:01:03 -0300
Branch: REL_14_STABLE [e3731bac5] 2021-09-30 10:01:03 -0300
Branch: master [d186d233d] 2021-10-01 18:03:11 -0300
Branch: REL_14_STABLE [0ce67bce0] 2021-10-01 18:03:11 -0300
Branch: master [010e52337] 2021-10-13 18:49:27 -0300
Branch: REL_14_STABLE [79c7fe1af] 2021-10-13 18:49:27 -0300
Branch: REL_13_STABLE [2cdf97fd1] 2021-10-13 18:49:27 -0300
Branch: REL_12_STABLE [4b7abbe48] 2021-10-13 18:49:27 -0300
Branch: REL_11_STABLE [6287b8e19] 2021-10-13 18:49:27 -0300
Branch: REL_10_STABLE [41cce2326] 2021-10-13 18:49:27 -0300
Branch: REL9_6_STABLE [5ec87619b] 2021-10-13 18:49:27 -0300
Branch: REL_14_STABLE [494ec0037] 2021-11-01 13:07:23 -0300
Branch: REL_13_STABLE [17227825c] 2021-11-01 13:07:23 -0300
Branch: REL_12_STABLE [da782bc93] 2021-11-01 13:07:23 -0300
Branch: REL_11_STABLE [5ef210047] 2021-11-01 13:07:23 -0300
Branch: REL_10_STABLE [656312c2a] 2021-11-01 13:07:23 -0300
Branch: REL9_6_STABLE [99197701e] 2021-11-01 13:07:23 -0300
-->
<para>
Fix physical replication for cases where the primary crashes
after shipping a WAL segment that ends with a partial WAL record
(&Aacute;lvaro Herrera)
</para>
<para>
If the primary did not survive long enough to finish writing the
rest of the incomplete WAL record, then the previous crash-recovery
logic had it back up and overwrite WAL starting from the beginning
of the incomplete WAL record. This is problematic since standby
servers may already have copies of that WAL segment. They will then
see an inconsistent next segment, and will not be able to recover
without manual intervention. To fix, do not back up over a WAL
segment boundary when restarting after a crash. Instead write a new
type of WAL record at the start of the next WAL segment, informing
readers that the incomplete WAL record will never be finished and
must be disregarded.
</para>
<para>
When applying this update, it's best to update standby servers
before the primary, so that they will be ready to handle this new
WAL record type if the primary happens to crash.
</para>
</listitem>
<listitem>
<!--
Author: Peter Geoghegan <pg@bowt.ie>
Branch: master [9bacec15b] 2021-11-02 12:06:17 -0700
Branch: REL_14_STABLE [61a86ed55] 2021-11-02 12:06:16 -0700
-->
<para>
Ensure that parallel <command>VACUUM</command> doesn't miss any
indexes (Peter Geoghegan, Masahiko Sawada)
</para>
<para>
A parallel <command>VACUUM</command> would fail to process indexes
that are below the <varname>min_parallel_index_scan_size</varname>
cutoff, if the table also has at least two indexes that are above
that size. This could result in those indexes becoming corrupt,
since they'd still contain references to any heap entries removed by
the <command>VACUUM</command>; subsequent queries using such indexes
would be likely to return rows they shouldn't.
This problem does not affect autovacuum, since it doesn't use
parallel vacuuming. However, it is advisable to reindex any
manually-vacuumed tables that have the right mix of index sizes.
</para>
</listitem>
<listitem>
<!--
Author: Noah Misch <noah@leadboat.com>
Branch: master [3cd9c3b92] 2021-10-23 18:36:38 -0700
Branch: REL_14_STABLE [a5b9a0000] 2021-10-23 18:36:42 -0700
Branch: REL_13_STABLE [a9d0a5409] 2021-10-23 18:36:42 -0700
Branch: REL_12_STABLE [fe5d44a1d] 2021-10-23 18:36:42 -0700
Branch: REL_11_STABLE [df6158139] 2021-10-23 18:36:43 -0700
Branch: REL_10_STABLE [560124a37] 2021-10-23 18:36:43 -0700
Branch: REL9_6_STABLE [518493243] 2021-10-23 18:36:43 -0700
-->
<para>
Fix <command>CREATE INDEX CONCURRENTLY</command> to wait for
the latest prepared transactions (Andrey Borodin)
</para>
<para>
Rows inserted by just-prepared transactions might be omitted from
the new index, causing queries relying on the index to miss such
rows. The previous fix for this type of problem failed to account
for <command>PREPARE TRANSACTION</command> commands that were still
in progress when <command>CREATE INDEX CONCURRENTLY</command>
checked for them. As before, in installations that have enabled
prepared transactions (<varname>max_prepared_transactions</varname>
&gt; 0), it's recommended to reindex any concurrently-built indexes
in case this problem occurred when they were built.
</para>
</listitem>
<listitem>
<!--
Author: Noah Misch <noah@leadboat.com>
Branch: master [fdd965d07] 2021-10-23 18:36:38 -0700
Branch: REL_14_STABLE [dde966efb] 2021-10-23 18:36:42 -0700
Branch: REL_13_STABLE [2e33b4359] 2021-10-23 18:36:42 -0700
Branch: REL_12_STABLE [0869e53d3] 2021-10-23 18:36:42 -0700
Branch: REL_11_STABLE [5141e471b] 2021-10-23 18:36:43 -0700
Branch: REL_10_STABLE [db86746fd] 2021-10-23 18:36:43 -0700
Branch: REL9_6_STABLE [e428699cb] 2021-10-23 18:36:43 -0700
-->
<para>
Avoid race condition that can cause backends to fail to add entries
for new rows to an index being built concurrently (Noah Misch,
Andrey Borodin)
</para>
<para>
While it's apparently rare in the field, this case could potentially
affect any index built or reindexed with
the <literal>CONCURRENTLY</literal> option. It is recommended to
reindex any such indexes to make sure they are correct.
</para>
</listitem>
<listitem>
<!--
Author: Michael Paquier <michael@paquier.xyz>
Branch: master [add5cf28d] 2021-11-01 11:38:23 +0900
Branch: REL_14_STABLE [f255de9a4] 2021-11-01 11:40:22 +0900
Branch: REL_13_STABLE [77f7909a4] 2021-11-01 11:40:29 +0900
-->
<para>
Fix <command>REINDEX CONCURRENTLY</command> to preserve operator
class parameters that were attached to the target index
(Michael Paquier)
</para>
</listitem>
<listitem>
<!--
Author: Michael Paquier <michael@paquier.xyz>
Branch: master [98ec35b0b] 2021-10-21 10:39:01 +0900
Branch: REL_14_STABLE [5040c9641] 2021-10-21 10:39:07 +0900
-->
<para>
Fix incorrect creation of shared dependencies when cloning a
database that contains non-builtin objects (Aleksander Alekseev)
</para>
<para>
The effects of this error are probably limited in practice. In
principle, it could allow a role to be dropped while it still owns
objects; but most installations would never want to drop a role
that had been used for objects they'd added
to <literal>template1</literal>.
</para>
</listitem>
<listitem>
<!--
Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
Branch: master [d6f1e16c8] 2021-10-18 19:08:25 -0300
Branch: REL_14_STABLE [72d064217] 2021-10-18 19:08:25 -0300
Branch: REL_13_STABLE [fe35528a5] 2021-10-18 19:08:25 -0300
Branch: REL_12_STABLE [8b26be8a3] 2021-10-18 19:08:25 -0300
Branch: REL_11_STABLE [b703b7d31] 2021-10-18 19:08:25 -0300
Branch: REL_10_STABLE [d36bdc4e9] 2021-10-18 19:08:25 -0300
-->
<para>
Ensure that the relation cache is invalidated for a table being
attached to or detached from a partitioned table (Amit Langote,
&Aacute;lvaro Herrera)
</para>
<para>
This oversight could allow misbehavior of subsequent inserts/updates
addressed directly to the partition, but only in currently-existing
sessions.
</para>
</listitem>
<listitem>
<!--
Author: Michael Paquier <michael@paquier.xyz>
Branch: master [5b0e7fe1d] 2021-10-13 16:38:07 +0900
Branch: REL_14_STABLE [922e15c47] 2021-10-13 16:38:15 +0900
-->
<para>
Fix corruption of parse tree while creating a range type (Alex
Kozhemyakin, Sergey Shinderuk)
</para>
<para>
<command>CREATE TYPE</command> incorrectly freed an element of the
parse tree, which could cause problems for a later event trigger, or
if the <command>CREATE TYPE</command> command was stored in the plan
cache and used again later.
</para>
</listitem>
<listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [3e310d837] 2021-10-19 13:54:45 -0400
Branch: REL_14_STABLE [04dae19f4] 2021-10-19 13:54:45 -0400
Branch: REL_13_STABLE [30e61a8cd] 2021-10-19 13:54:46 -0400
Branch: REL_12_STABLE [ae7b1dd59] 2021-10-19 13:54:46 -0400
Branch: REL_11_STABLE [0d08c279b] 2021-10-19 13:54:46 -0400
-->
<para>
Fix updates of element fields in arrays of domain over composite
(Tom Lane)
</para>
<para>
A command such as <literal>UPDATE tab SET fld[1].subfld =
val</literal> failed if the array's elements were domains rather
than plain composites.
</para>
</listitem>
<listitem>
<!--
Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
Branch: master [c6bc655ee] 2021-10-01 18:29:18 -0300
Branch: REL_14_STABLE [20047609d] 2021-10-01 18:29:18 -0300
Branch: REL_13_STABLE [170206e45] 2021-10-01 18:29:18 -0300
-->
<para>
Disallow the combination of <literal>FETCH FIRST WITH TIES</literal>
and <literal>FOR UPDATE SKIP LOCKED</literal> (David Christensen)
</para>
<para>
<literal>FETCH FIRST WITH TIES</literal> necessarily fetches one
more row than requested, since it cannot stop until it finds a row
that is not a tie. In our current implementation,
if <literal>FOR UPDATE</literal> is used then that row will also get
locked even though it is not returned. That results in undesirable
behavior if the <literal>SKIP LOCKED</literal> option is specified.
It's difficult to change this without introducing a different set of
undesirable behaviors, so for now, forbid the combination.
</para>
</listitem>
<listitem>
<!--
Author: Michael Paquier <michael@paquier.xyz>
Branch: master [fdd885714] 2021-10-19 11:03:52 +0900
Branch: REL_14_STABLE [b1b797ec7] 2021-10-19 11:04:00 +0900
Branch: REL_13_STABLE [85dc4292a] 2021-10-19 11:04:04 +0900
-->
<para>
Disallow <literal>ALTER INDEX index ALTER COLUMN col SET
(options)</literal> (Nathan Bossart, Michael Paquier)
</para>
<para>
While the parser accepted this, it's undocumented and doesn't
actually work.
</para>
</listitem>
<listitem>
<!--
Author: Dean Rasheed <dean.a.rasheed@gmail.com>
Branch: master [e54a758d2] 2021-10-06 13:16:51 +0100
Branch: REL_14_STABLE [8e26b868d] 2021-10-06 13:19:25 +0100
Branch: REL_13_STABLE [9ab94ccb1] 2021-10-06 13:20:23 +0100
Branch: REL_12_STABLE [676218034] 2021-10-06 13:21:27 +0100
Branch: REL_11_STABLE [b2a0f1673] 2021-10-06 13:22:33 +0100
Branch: REL_10_STABLE [4853baaac] 2021-10-06 13:23:13 +0100
Branch: REL9_6_STABLE [0de8f9bc8] 2021-10-06 13:24:22 +0100
-->
<para>
Fix corner-case loss of precision in
numeric <function>power()</function> (Dean Rasheed)
</para>
<para>
The result could be inaccurate when the first argument is very close
to 1.
</para>
</listitem>
<listitem>
<!--
Author: David Rowley <drowley@postgresql.org>
Branch: master [39a310567] 2021-11-08 14:40:33 +1300
Branch: REL_14_STABLE [1f194ed6c] 2021-11-08 14:41:13 +1300
-->
<para>
Avoid choosing the wrong hash equality operator for Memoize plans
(David Rowley)
</para>
<para>
This error could result in crashes or incorrect query results.
</para>
</listitem>
<listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [4d5f651f1] 2021-10-14 12:43:55 -0400
Branch: REL_14_STABLE [fd059ac2e] 2021-10-14 12:43:43 -0400
Branch: REL_13_STABLE [fdd6a4d8d] 2021-10-14 12:43:43 -0400
-->
<para>
Fix planner error with pulling up subquery expressions into function
rangetable entries (Tom Lane)
</para>
<para>
If a function in <literal>FROM</literal> laterally references the
output of some sub-<literal>SELECT</literal> earlier in
the <literal>FROM</literal> clause, and we are able to flatten that
sub-<literal>SELECT</literal> into the outer query, the
expression(s) copied into the function expression were not fully
processed. This could lead to crashes at execution.
</para>
</listitem>
<listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [8c1144ba7] 2021-10-01 14:59:35 -0400
Branch: REL_14_STABLE [a54509bfd] 2021-10-01 14:59:35 -0400
Branch: REL_13_STABLE [7adbe186f] 2021-10-01 14:59:35 -0400
Branch: REL_12_STABLE [334fb8c3d] 2021-10-01 14:59:35 -0400
Branch: REL_11_STABLE [5863d348a] 2021-10-01 14:59:35 -0400
Branch: REL_10_STABLE [f951ea3a2] 2021-10-01 14:59:35 -0400
-->
<para>
Avoid using MCV-only statistics to estimate the range of a column
(Tom Lane)
</para>
<para>
There are corner cases in which <command>ANALYZE</command> will
build a most-common-values (MCV) list but not a histogram, even
though the MCV list does not account for all the observed values.
In such cases, keep the planner from using the MCV list alone to
estimate the range of column values.
</para>
</listitem>
<listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [7b5d4c29e] 2021-10-01 11:10:12 -0400
Branch: REL_14_STABLE [e6adaa179] 2021-10-01 11:10:12 -0400
Branch: REL_13_STABLE [04ef2021e] 2021-10-01 11:10:12 -0400
Branch: REL_12_STABLE [cded2c460] 2021-10-01 11:10:12 -0400
Branch: REL_11_STABLE [5abbda985] 2021-10-01 11:10:12 -0400
-->
<para>
Fix restoration of a Portal's snapshot inside a subtransaction
(Bertrand Drouvot)
</para>
<para>
If a procedure commits or rolls back a transaction, and then its
next significant action is inside a new subtransaction, snapshot
management went wrong, leading to a dangling pointer and probable
crash. A typical example in PL/pgSQL is a <literal>COMMIT</literal>
immediately followed by a <literal>BEGIN ... EXCEPTION</literal>
block that performs a query.
</para>
</listitem>
<listitem>
<!--
Author: Michael Paquier <michael@paquier.xyz>
Branch: master [409f9ca44] 2021-10-18 11:55:42 +0900
Branch: REL_14_STABLE [5b353aaff] 2021-10-18 11:56:48 +0900
Branch: REL_13_STABLE [8f4fe8d7f] 2021-10-18 11:56:52 +0900
Branch: REL_12_STABLE [a207b8521] 2021-10-18 11:56:54 +0900
Branch: REL_11_STABLE [506aa1f71] 2021-10-18 11:56:57 +0900
Branch: REL_10_STABLE [d1a6a08df] 2021-10-18 11:57:02 +0900
Branch: REL9_6_STABLE [f49bf8263] 2021-10-18 11:57:07 +0900
-->
<para>
Clean up correctly if a transaction fails after exporting its
snapshot (Dilip Kumar)
</para>
<para>
This oversight would only cause a problem if the same session
attempted to export a snapshot again. The most likely scenario for
that is creation of a replication slot (followed by rollback)
and then creation of another replication slot.
</para>
</listitem>
<listitem>
<!--
Author: Alexander Korotkov <akorotkov@postgresql.org>
Branch: master [05e6e78c1] 2021-11-06 19:13:58 +0300
Branch: REL_14_STABLE [b0f6bd48f] 2021-11-06 19:13:53 +0300
Branch: REL_13_STABLE [e1fee28a0] 2021-11-06 18:34:19 +0300
Branch: REL_12_STABLE [8f779a1a3] 2021-11-06 18:34:21 +0300
Branch: REL_11_STABLE [691c0df73] 2021-11-06 18:34:23 +0300
Branch: REL_10_STABLE [774d00573] 2021-11-06 18:34:26 +0300
Branch: REL9_6_STABLE [7381b79ad] 2021-11-06 18:34:31 +0300
-->
<para>
Prevent wraparound of overflowed-subtransaction tracking on standby
servers (Kyotaro Horiguchi, Alexander Korotkov)
</para>
<para>
This oversight could cause significant performance degradation
(manifesting as excessive SubtransSLRU traffic) on standby servers.
</para>
</listitem>
<listitem>
<!--
Author: Michael Paquier <michael@paquier.xyz>
Branch: master [8a4237908] 2021-10-04 14:05:20 +0900
Branch: REL_14_STABLE [828f7f000] 2021-10-04 14:05:48 +0900
Branch: REL_13_STABLE [194e535a0] 2021-10-04 14:05:52 +0900
Branch: REL_12_STABLE [3c3f118d5] 2021-10-04 14:05:55 +0900
Branch: REL_11_STABLE [0a561d4d0] 2021-10-04 14:05:59 +0900
Branch: REL_10_STABLE [8a6a1fe07] 2021-10-04 14:06:03 +0900
Branch: REL9_6_STABLE [e2b2a9e1c] 2021-10-04 14:06:09 +0900
-->
<para>
Ensure that prepared transactions are properly accounted for during
promotion of a standby server (Michael Paquier, Andres Freund)
</para>
<para>
There was a narrow window where a prepared transaction could be
omitted from a snapshot taken by a concurrently-running session.
If that session then used the snapshot to perform data updates,
erroneous results or data corruption could occur.
</para>
</listitem>
<listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [39ae0ef85] 2021-10-11 11:56:52 -0400
Branch: REL_14_STABLE [2c25db32e] 2021-10-11 11:56:52 -0400
-->
<para>
Fix <quote>could not find RecursiveUnion</quote> error
when <command>EXPLAIN</command> tries to print a filter condition
attached to a WorkTableScan node (Tom Lane)
</para>
</listitem>
<listitem>
<!--
Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
Branch: master [c2c618ff1] 2021-10-19 19:08:45 -0300
Branch: REL_14_STABLE [3ce3fb2f7] 2021-10-19 19:08:45 -0300
Branch: REL_13_STABLE [842fe6123] 2021-10-19 19:08:45 -0300
Branch: REL_12_STABLE [6c8d1c197] 2021-10-19 19:08:45 -0300
Branch: master [cd124d205] 2021-10-20 13:05:42 -0300
Branch: REL_14_STABLE [718278855] 2021-10-20 13:05:42 -0300
Branch: REL_13_STABLE [a73a3671d] 2021-10-20 13:05:42 -0300
Branch: REL_12_STABLE [3c8c49945] 2021-10-20 13:05:42 -0300
-->
<para>
Ensure that the correct lock level is used when renaming a table
(Nathan Bossart, &Aacute;lvaro Herrera)
</para>
<para>
For historical reasons, <command>ALTER INDEX ... RENAME</command>
can be applied to any sort of relation. The lock level required to
rename an index is lower than that required to rename a table or
other kind of relation, but the code got this wrong and would use
the weaker lock level whenever the command is spelled <command>ALTER
INDEX</command>.
</para>
</listitem>
<listitem>
<!--
Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
Branch: master [d74b54b3d] 2021-11-05 12:29:35 -0300
Branch: REL_14_STABLE [02e20bb2d] 2021-11-05 12:29:35 -0300
Branch: REL_13_STABLE [bf5cdcfd5] 2021-11-05 12:29:34 -0300
Branch: REL_12_STABLE [3eff168a2] 2021-11-05 12:29:34 -0300
Branch: REL_11_STABLE [92224e470] 2021-11-05 12:29:34 -0300
Branch: REL_10_STABLE [58b600f64] 2021-11-05 12:29:34 -0300
Branch: REL9_6_STABLE [e0eaeafd6] 2021-11-05 12:29:35 -0300
-->
<para>
Avoid null-pointer-dereference crash when dropping a role that owns
objects being dropped concurrently (&Aacute;lvaro Herrera)
</para>
</listitem>
<listitem>
<!--
Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
Branch: master [6b1b405eb] 2021-11-03 10:52:38 +0200
Branch: REL_14_STABLE [4ebd740cd] 2021-11-03 10:54:33 +0200
Branch: REL_13_STABLE [07070c008] 2021-11-03 10:54:36 +0200
Branch: REL_12_STABLE [11a399f9c] 2021-11-03 10:54:39 +0200
Branch: REL_11_STABLE [6bf00da11] 2021-11-03 10:54:42 +0200
Branch: REL_10_STABLE [7b55bb892] 2021-11-03 11:09:08 +0200
Branch: REL9_6_STABLE [8f32afee0] 2021-11-03 11:15:02 +0200
Branch: master [d5ab0681b] 2021-11-03 19:38:17 +0200
Branch: REL_14_STABLE [f4e3b6271] 2021-11-03 19:41:35 +0200
Branch: REL_13_STABLE [b7299b664] 2021-11-03 19:41:38 +0200
Branch: REL_12_STABLE [7dc9a310e] 2021-11-03 19:41:41 +0200
Branch: REL_11_STABLE [b110af5f7] 2021-11-03 19:41:44 +0200
Branch: REL_10_STABLE [245799d39] 2021-11-03 19:41:46 +0200
Branch: REL9_6_STABLE [71aeaf245] 2021-11-03 19:41:49 +0200
-->
<para>
Prevent <quote>snapshot reference leak</quote> warning
when <function>lo_export()</function> or a related function fails
(Heikki Linnakangas)
</para>
</listitem>
<listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [01fc65270] 2021-11-02 13:36:47 -0400
Branch: REL_14_STABLE [16a56774f] 2021-11-02 13:36:53 -0400
Branch: REL_13_STABLE [ada667b45] 2021-11-02 13:36:57 -0400
-->
<para>
Fix inefficient code generation for CoerceToDomain expression nodes
(Ranier Vilela)
</para>
</listitem>
<listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [6301c3ada] 2021-10-31 15:31:29 -0400
Branch: REL_14_STABLE [8424dfced] 2021-10-31 15:31:38 -0400
Branch: REL_13_STABLE [df238aed1] 2021-10-31 15:31:44 -0400
Branch: master [e9d9ba2a4] 2021-11-01 16:24:39 -0400
Branch: REL_14_STABLE [ad87bf355] 2021-11-01 16:24:40 -0400
Branch: REL_13_STABLE [e477642a1] 2021-11-01 16:24:40 -0400
Branch: master [65c6cab13] 2021-11-02 11:31:54 -0400
Branch: REL_14_STABLE [08cfa5981] 2021-11-02 11:31:54 -0400
Branch: REL_13_STABLE [0151af40c] 2021-11-02 11:31:54 -0400
-->
<para>
Avoid O(N^2) behavior in some list-manipulation operations
(Nathan Bossart, Tom Lane)
</para>
<para>
These changes fix slow processing in several scenarios, including:
when a standby replays a transaction that held many exclusive locks
on the primary; when many files are due to be unlinked after a
checkpoint; when hash aggregation involves many batches; and when
<filename>pg_trgm</filename> extracts indexable conditions from a
complex regular expression. Only the first of these scenarios has
actually been reported from the field, but they all seem like
plausible consequences of inefficient list deletions.
</para>
</listitem>
<listitem>
<!--
Author: Peter Geoghegan <pg@bowt.ie>
Branch: master [a5213adf3] 2021-10-27 12:10:47 -0700
Branch: REL_14_STABLE [d078fe83d] 2021-10-27 12:10:45 -0700
Branch: REL_13_STABLE [f8cce4a3d] 2021-10-27 12:10:43 -0700
Branch: master [c2381b510] 2021-10-27 13:09:24 -0700
Branch: REL_14_STABLE [6cac34339] 2021-10-27 13:09:01 -0700
Branch: REL_13_STABLE [d5a2ffbce] 2021-10-27 13:09:00 -0700
-->
<para>
Add more defensive checks around B-tree posting list splits
(Peter Geoghegan)
</para>
<para>
This change should help detect index corruption involving duplicate
table TIDs.
</para>
</listitem>
<listitem>
<!--
Author: Tomas Vondra <tomas.vondra@postgresql.org>
Branch: master [d91353f4b] 2021-11-06 01:50:44 +0100
Branch: REL_14_STABLE [f7829feb7] 2021-11-06 01:53:36 +0100
-->
<para>
Avoid assertion failure when inserting NaN into a BRIN
float8 or float4 minmax_multi_ops index (Tomas Vondra)
</para>
<para>
In production builds, such cases would result in a somewhat
inefficient, but not actually incorrect, index.
</para>
</listitem>
<listitem>
<!--
Author: Fujii Masao <fujii@postgresql.org>
Branch: master [e3e29cec1] 2021-10-12 09:50:17 +0900
Branch: REL_14_STABLE [62e821ad2] 2021-10-12 09:51:17 +0900
-->
<para>
Allow the autovacuum launcher process to respond
to <function>pg_log_backend_memory_contexts()</function> requests
more quickly (Koyu Tanigawa)
</para>
</listitem>
<listitem>
<!--
Author: Daniel Gustafsson <dgustafsson@postgresql.org>
Branch: master [0ded7039f] 2021-10-01 22:47:05 +0200
Branch: REL_14_STABLE [a5e83ad79] 2021-10-01 22:47:05 +0200
-->
<para>
Fix memory leak in HMAC hash calculations (Sergey Shinderuk)
</para>
</listitem>
<listitem>
<!--
Author: Thomas Munro <tmunro@postgresql.org>
Branch: master [8781b0ce2] 2021-10-26 12:54:55 +1300
Branch: REL_14_STABLE [181361a0c] 2021-10-26 13:09:00 +1300
Branch: REL_13_STABLE [24b7cf8a5] 2021-10-26 13:04:40 +1300
Branch: REL_12_STABLE [8fef901e3] 2021-10-26 13:01:52 +1300
-->
<para>
Disallow setting <varname>huge_pages</varname>
to <literal>on</literal> when <varname>shared_memory_type</varname>
is <literal>sysv</literal> (Thomas Munro)
</para>
<para>
Previously, this setting was accepted, but it did nothing for lack
of any implementation.
</para>
</listitem>
<listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [a0558cfa3] 2021-10-03 13:21:20 -0400
Branch: REL_14_STABLE [e0eba586b] 2021-10-03 13:21:20 -0400
-->
<para>
Fix checking of query type in PL/pgSQL's <command>RETURN
QUERY</command> statement (Tom Lane)
</para>
<para>
<command>RETURN QUERY</command> should accept any query that can
return tuples, e.g. <command>UPDATE RETURNING</command>. v14
accidentally disallowed anything but <command>SELECT</command>;
moreover, the <command>RETURN QUERY EXECUTE</command> variant
failed to apply any query-type check at all.
</para>
</listitem>
<listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [2acc84c6f] 2021-10-22 15:22:25 -0400
Branch: REL_14_STABLE [3ad2c2455] 2021-10-22 15:22:25 -0400
Branch: REL_13_STABLE [476006023] 2021-10-22 15:22:26 -0400
Branch: REL_12_STABLE [52b927a73] 2021-10-22 15:22:26 -0400
Branch: REL_11_STABLE [871dfe4b7] 2021-10-22 15:22:26 -0400
Branch: REL_10_STABLE [10f9faf6d] 2021-10-22 15:22:26 -0400
Branch: REL9_6_STABLE [b1df061f7] 2021-10-22 15:22:26 -0400
-->
<para>
Fix <application>pg_dump</application> to dump non-global default
privileges correctly (Neil Chen, Masahiko Sawada)
</para>
<para>
If a global (unrestricted) <command>ALTER DEFAULT
PRIVILEGES</command> command revoked some present-by-default
privilege, for example <literal>EXECUTE</literal> for functions, and
then a restricted <command>ALTER DEFAULT PRIVILEGES</command>
command granted that privilege again for a selected role or
schema, <application>pg_dump</application> failed to dump the
restricted privilege grant correctly.
</para>
</listitem>
<listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [e2ff7d9a8] 2021-10-16 12:23:57 -0400
Branch: REL_14_STABLE [b5152e3ba] 2021-10-16 12:24:11 -0400
Branch: REL_13_STABLE [6a262ba8c] 2021-10-16 12:24:17 -0400
Branch: REL_12_STABLE [fd182a92a] 2021-10-16 12:24:24 -0400
Branch: REL_11_STABLE [ca7a4ce58] 2021-10-16 12:24:33 -0400
Branch: REL_10_STABLE [2e2a23283] 2021-10-16 12:24:40 -0400
-->
<para>
Make <application>pg_dump</application> acquire shared lock on
partitioned tables that are to be dumped (Tom Lane)
</para>
<para>
This oversight was usually pretty harmless, since
once <application>pg_dump</application> has locked any of the leaf
partitions, that would suffice to prevent significant DDL on the
partitioned table itself. However problems could ensue when dumping
a childless partitioned table, since no relevant lock would be held.
</para>
</listitem>
<listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [40dfac4fc] 2021-10-16 15:02:55 -0400
Branch: REL_14_STABLE [3e4c8db93] 2021-10-16 15:03:05 -0400
Branch: REL_13_STABLE [0b5f557b7] 2021-10-16 15:03:10 -0400
Branch: REL_12_STABLE [5b0b2983a] 2021-10-16 15:03:15 -0400
Branch: REL_11_STABLE [58955c84f] 2021-10-16 15:03:21 -0400
-->
<para>
Fix crash in <application>pg_dump</application> when attempting to
dump trigger definitions from a pre-8.3 server (Tom Lane)
</para>
</listitem>
<listitem>
<!--
Author: Daniel Gustafsson <dgustafsson@postgresql.org>
Branch: master [998d060f3] 2021-10-19 12:59:54 +0200
Branch: REL_14_STABLE [3e2f32b01] 2021-10-19 12:59:54 +0200
Branch: REL_13_STABLE [687fe8a9d] 2021-10-19 12:59:54 +0200
Branch: REL_12_STABLE [e788883de] 2021-10-19 12:59:54 +0200
Branch: REL_11_STABLE [038892c81] 2021-10-19 12:59:54 +0200
Branch: REL_10_STABLE [4fda03b67] 2021-10-19 12:59:54 +0200
Branch: REL9_6_STABLE [ef1f15819] 2021-10-19 12:59:54 +0200
-->
<para>
Fix incorrect filename in <application>pg_restore</application>'s
error message about an invalid large object TOC file (Daniel
Gustafsson)
</para>
</listitem>
<listitem>
<!--
Author: Fujii Masao <fujii@postgresql.org>
Branch: master [d33674708] 2021-09-29 21:46:56 +0900
Branch: REL_14_STABLE [8021334d3] 2021-09-29 21:47:25 +0900
Branch: REL_13_STABLE [3cc85d7d5] 2021-09-29 21:47:31 +0900
Branch: master [2acb7cc6b] 2021-09-29 21:48:52 +0900
Branch: REL_14_STABLE [8231c500e] 2021-09-29 21:49:29 +0900
Branch: REL_13_STABLE [8cf4f7118] 2021-09-29 21:49:36 +0900
Branch: REL_12_STABLE [c5f7e702d] 2021-09-29 21:49:40 +0900
-->
<para>
Ensure that <application>pgbench</application> exits with non-zero
status after a socket-level failure (Yugo Nagata, Fabien Coelho)
</para>
<para>
The desired behavior is to finish out the run but then exit with
status 2. Also, fix the reporting of such errors.
</para>
</listitem>
<listitem>
<!--
Author: Peter Geoghegan <pg@bowt.ie>
Branch: master [d2bf06db3] 2021-10-13 14:08:12 -0700
Branch: REL_14_STABLE [dd58194cf] 2021-10-13 14:08:11 -0700
Branch: master [cd3f429d9] 2021-10-14 14:50:26 -0700
Branch: REL_14_STABLE [5863115e4] 2021-10-14 14:50:25 -0700
-->
<para>
Prevent <application>pg_amcheck</application> from checking
temporary relations, as well as indexes that are invalid or not
ready (Mark Dilger)
</para>
<para>
This avoids unhelpful checks of relations that will almost certainly
appear inconsistent.
</para>
</listitem>
<listitem>
<!--
Author: Peter Geoghegan <pg@bowt.ie>
Branch: master [292698f15] 2021-10-11 17:21:48 -0700
Branch: REL_14_STABLE [e7712155e] 2021-10-11 17:21:46 -0700
-->
<para>
Make <filename>contrib/amcheck</filename> skip unlogged tables
when running on a standby server (Mark Dilger)
</para>
<para>
It's appropriate to do this since such tables will be empty,
and unlogged indexes were already handled similarly.
</para>
</listitem>
<listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [a667b0668] 2021-10-31 19:13:48 -0400
Branch: REL_14_STABLE [7104e0b24] 2021-10-31 19:13:48 -0400
Branch: REL_13_STABLE [3a5b313ce] 2021-10-31 19:13:48 -0400
Branch: REL_12_STABLE [16d0da5c8] 2021-10-31 19:13:48 -0400
Branch: REL_11_STABLE [5dd067430] 2021-10-31 19:13:48 -0400
Branch: REL_10_STABLE [d87d5f8d8] 2021-10-31 19:13:48 -0400
Branch: REL9_6_STABLE [fdb60ca83] 2021-10-31 19:13:48 -0400
-->
<para>
Change <filename>contrib/pg_stat_statements</filename> to read
its <quote>query texts</quote> file in units of at most 1GB
(Tom Lane)
</para>
<para>
Such large query text files are very unusual, but if they do occur,
the previous coding would fail on Windows 64 (which rejects
individual read requests of more than 2GB).
</para>
</listitem>
<listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [3071bbfe4] 2021-10-06 15:50:24 -0400
Branch: REL_14_STABLE [12ff678e1] 2021-10-06 15:50:24 -0400
Branch: REL_13_STABLE [aee83f39a] 2021-10-06 15:50:24 -0400
Branch: REL_12_STABLE [228897374] 2021-10-06 15:50:24 -0400
Branch: REL_11_STABLE [88807757d] 2021-10-06 15:50:24 -0400
Branch: REL_10_STABLE [2e33fbda1] 2021-10-06 15:50:24 -0400
Branch: REL9_6_STABLE [36c9f7d96] 2021-10-06 15:50:24 -0400
-->
<para>
Fix null-pointer crash
when <filename>contrib/postgres_fdw</filename> tries to report a
data conversion error (Tom Lane)
</para>
</listitem>
<listitem>
<!--
Author: Jeff Davis <jdavis@postgresql.org>
Branch: master [7821a0bf2] 2021-10-14 12:24:00 -0700
Branch: REL_14_STABLE [0b90f1c4c] 2021-10-14 12:24:22 -0700
Branch: REL_13_STABLE [20f785732] 2021-10-14 12:24:47 -0700
Branch: REL_12_STABLE [ab11f6e46] 2021-10-14 12:25:07 -0700
Branch: REL_11_STABLE [3f5d481ef] 2021-10-14 12:25:30 -0700
Branch: REL_10_STABLE [9364f64a2] 2021-10-14 12:25:48 -0700
Branch: REL9_6_STABLE [ae6abeb88] 2021-10-14 12:26:26 -0700
-->
<para>
Ensure that <function>GetSharedSecurityLabel()</function> can be
used in a newly-started session that has not yet built its critical
relation cache entries (Jeff Davis)
</para>
</listitem>
<listitem>
<!--
Author: Andrew Dunstan <andrew@dunslane.net>
Branch: master [f4ce6c4d3] 2021-10-22 09:49:07 -0400
Branch: REL_14_STABLE [52c0c1136] 2021-10-22 09:50:16 -0400
-->
<para>
When running a TAP test, include the module's own directory
in <envar>PATH</envar> (Andrew Dunstan)
</para>
<para>
This allows tests to find built programs that are not installed,
such as custom test drivers.
</para>
</listitem>
<listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [9b8d68cc6] 2021-10-02 16:05:42 -0400
Branch: REL_14_STABLE [fa8db4879] 2021-10-02 16:06:09 -0400
Branch: REL_13_STABLE [9c76689de] 2021-10-02 16:06:23 -0400
Branch: REL_12_STABLE [e5b25f19b] 2021-10-02 16:06:45 -0400
Branch: REL_11_STABLE [9cc919b51] 2021-10-02 16:06:55 -0400
Branch: REL_10_STABLE [e323630cd] 2021-10-02 16:07:16 -0400
Branch: REL9_6_STABLE [dbec5a2fe] 2021-10-02 16:07:37 -0400
Branch: master [ad740067a] 2021-10-02 16:05:10 -0400
Branch: REL_14_STABLE [81464999b] 2021-10-02 16:06:09 -0400
Branch: REL_13_STABLE [7ba8eb81f] 2021-10-02 16:06:23 -0400
Branch: REL_12_STABLE [4721e8aa6] 2021-10-02 16:06:45 -0400
Branch: REL_11_STABLE [bb6d42669] 2021-10-02 16:06:55 -0400
Branch: REL_10_STABLE [cb0799db0] 2021-10-02 16:07:16 -0400
Branch: REL9_6_STABLE [37cbe0f79] 2021-10-02 16:07:36 -0400
Branch: master [c1aa3b3c0] 2021-10-04 14:52:39 -0400
Branch: REL_14_STABLE [919c08d90] 2021-10-04 14:52:17 -0400
Branch: REL_13_STABLE [c53ff69e1] 2021-10-04 14:52:17 -0400
Branch: REL_12_STABLE [07873a5dc] 2021-10-04 14:52:17 -0400
Branch: REL_11_STABLE [d0b0b70dc] 2021-10-04 14:52:17 -0400
Branch: REL_10_STABLE [cd2479142] 2021-10-04 14:52:17 -0400
Branch: REL9_6_STABLE [b5f34ae08] 2021-10-04 14:52:17 -0400
-->
<para>
Use the CLDR project's data to map Windows time zone names to IANA
time zones (Tom Lane)
</para>
<para>
When running on Windows, <application>initdb</application> attempts
to set the new cluster's <varname>timezone</varname> parameter to
the IANA time zone matching the system's prevailing time zone.
We were using a mapping table that we'd generated years ago and
updated only fitfully; unsurprisingly, it contained a number of
errors as well as omissions of recently-added zones. It turns out
that CLDR has been tracking the most appropriate mappings, so start
using their data. This change will not affect any existing
installation, only newly-initialized clusters.
</para>
</listitem>
<listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [937aafd6d] 2021-10-29 11:38:18 -0400
Branch: REL_14_STABLE [0c8a40b39] 2021-10-29 11:38:32 -0400
Branch: REL_13_STABLE [4cd72add0] 2021-10-29 11:38:38 -0400
Branch: REL_12_STABLE [14b8d25d6] 2021-10-29 11:38:47 -0400
Branch: REL_11_STABLE [91455f7c6] 2021-10-29 11:38:53 -0400
Branch: REL_10_STABLE [d0fe211ce] 2021-10-29 11:38:58 -0400
Branch: REL9_6_STABLE [22a498b9b] 2021-10-29 11:39:05 -0400
-->
<para>
Update time zone data files to <application>tzdata</application>
release 2021e for DST law changes in Fiji, Jordan, Palestine, and
Samoa, plus historical corrections for Barbados, Cook Islands,
Guyana, Niue, Portugal, and Tonga.
</para>
<para>
Also, the Pacific/Enderbury zone has been renamed to Pacific/Kanton.
Also, the following zones have been merged into nearby, more-populous
zones whose clocks have agreed with them since 1970: Africa/Accra,
America/Atikokan, America/Blanc-Sablon, America/Creston,
America/Curacao, America/Nassau, America/Port_of_Spain,
Antarctica/DumontDUrville, and Antarctica/Syowa.
In all these cases, the previous zone name remains as an alias.
</para>
</listitem>
</itemizedlist>
</sect2>
</sect1>
<sect1 id="release-14">
<title>Release 14</title>
<formalpara>
<title>Release date:</title>
<para>2021-09-30</para>
</formalpara>
<sect2>
<title>Overview</title>
<para>
<productname>PostgreSQL</productname> 14 contains many new features and
enhancements, including:
</para>
<itemizedlist>
<listitem>
<para>
Stored procedures can now return data via <literal>OUT</literal>
parameters.
</para>
</listitem>
<listitem>
<para>
The SQL-standard <literal>SEARCH</literal>
and <literal>CYCLE</literal> options for common table expressions
have been implemented.
</para>
</listitem>
<listitem>
<para>
Subscripting can now be applied to any data type for which
it is a useful notation, not only arrays. In this release,
the <type>jsonb</type> and <type>hstore</type> types have gained
subscripting operators.
</para>
</listitem>
<listitem>
<para>
Range types have been extended by adding multiranges, allowing
representation of noncontiguous data ranges.
</para>
</listitem>
<listitem>
<para>
Numerous performance improvements have been made for parallel
queries, heavily-concurrent workloads, partitioned tables, logical
replication, and vacuuming.
</para>
</listitem>
<listitem>
<para>
B-tree index updates are managed more efficiently, reducing index
bloat.
</para>
</listitem>
<listitem>
<para>
<command>VACUUM</command> automatically becomes more aggressive, and
skips inessential cleanup, if the database starts to approach a
transaction ID wraparound condition.
</para>
</listitem>
<listitem>
<para>
Extended statistics can now be collected on expressions, allowing
better planning results for complex queries.
</para>
</listitem>
<listitem>
<para>
<application>libpq</application> now has the ability to pipeline
multiple queries, which can boost throughput over high-latency
connections.
</para>
</listitem>
</itemizedlist>
<para>
The above items and other new features
of <productname>PostgreSQL</productname> 14 are explained in more
detail in the sections below.
</para>
</sect2>
<sect2>
<title>Migration to Version 14</title>
<para>
A dump/restore using <xref linkend="app-pg-dumpall"/> or use of <xref
linkend="pgupgrade"/> or logical replication is required for those
wishing to migrate data from any previous release. See <xref
linkend="upgrading"/> for general information on migrating to new major
releases.
</para>
<para>
Version 14 contains a number of changes that may affect compatibility
with previous releases. Observe the following incompatibilities:
</para>
<itemizedlist>
<listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
2020-11-04 [9e38c2bb5] Declare assorted array functions using anycompatible not
-->
<para>
User-defined objects that reference certain built-in array functions
along with their argument types must be recreated (Tom Lane)
</para>
<para>
Specifically, <link
linkend="functions-array"><function>array_append()</function></link>,
<function>array_prepend()</function>,
<function>array_cat()</function>,
<function>array_position()</function>,
<function>array_positions()</function>,
<function>array_remove()</function>,
<function>array_replace()</function>, and <link
linkend="functions-math"><function>width_bucket()</function></link>
used to take <type>anyarray</type> arguments but now take
<type>anycompatiblearray</type>. Therefore, user-defined objects
like aggregates and operators that reference those array function
signatures must be dropped before upgrading, and recreated once the
upgrade completes.
</para>
</listitem>
<listitem>
<!--
Author: Peter Eisentraut <peter@eisentraut.org>
2020-11-03 [2f70fdb06] Remove deprecated containment operators for built-in typ
Author: Tom Lane <tgl@sss.pgh.pa.us>
2021-03-05 [112d411fb] Remove deprecated containment operators for contrib type
-->
<para>
Remove deprecated containment operators <literal>@</literal>
and <literal>~</literal> for built-in <link
linkend="functions-geometry">geometric data types</link> and
contrib modules <xref linkend="cube"/>, <xref linkend="hstore"/>,
<xref linkend="intarray"/>, and <xref linkend="seg"/> (Justin Pryzby)
</para>
<para>
The more consistently named <literal>&lt;@</literal>
and <literal>@&gt;</literal> have been recommended for many years.
</para>
</listitem>
<listitem>
<!--
Author: Alexander Korotkov <akorotkov@postgresql.org>
2021-01-31 [0c4f355c6] Fix parsing of complex morphs to tsquery
-->
<para>
Fix <link
linkend="functions-textsearch"><function>to_tsquery()</function></link>
and <function>websearch_to_tsquery()</function> to properly parse
query text containing discarded tokens (Alexander Korotkov)
</para>
<para>
Certain discarded tokens, like underscore, caused the output of
these functions to produce incorrect tsquery output, e.g., both
<literal>websearch_to_tsquery('"pg_class pg"')</literal> and <literal>to_tsquery('pg_class
&lt;-&gt; pg')</literal> used to output <literal>( 'pg' &amp; 'class' ) &lt;-&gt; 'pg'</literal>,
but now both output <literal>'pg' &lt;-&gt; 'class' &lt;-&gt; 'pg'</literal>.
</para>
</listitem>
<listitem>
<!--
Author: Alexander Korotkov <akorotkov@postgresql.org>
2021-05-03 [eb086056f] Make websearch_to_tsquery() parse text in quotes as a si
-->
<para>
Fix <link
linkend="functions-textsearch"><function>websearch_to_tsquery()</function></link>
to properly parse multiple adjacent discarded tokens in quotes
(Alexander Korotkov)
</para>
<para>
Previously, quoted text that contained multiple adjacent discarded
tokens was treated as multiple tokens, causing incorrect tsquery
output, e.g., <literal>websearch_to_tsquery('"aaa: bbb"')</literal> used to output
<literal>'aaa' &lt;2&gt; 'bbb'</literal>, but now outputs <literal>'aaa' &lt;-&gt; 'bbb'</literal>.
</para>
</listitem>
<listitem>
<!--
Author: Peter Eisentraut <peter@eisentraut.org>
2021-04-06 [a2da77cdb] Change return type of EXTRACT to numeric
-->
<para>
Change <link
linkend="functions-datetime"><function>EXTRACT()</function></link>
to return type <type>numeric</type> instead of <type>float8</type>
(Peter Eisentraut)
</para>
<para>
This avoids loss-of-precision issues in some usages. The old
behavior can still be obtained by using the old underlying function
<function>date_part()</function>.
</para>
<para>
Also, <function>EXTRACT(date)</function> now throws an error for units
that are not part of the <type>date</type> data type.
</para>
</listitem>
<listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
2020-06-13 [23cbeda50] Sync behavior of var_samp and stddev_samp for single NaN
-->
<para>
Change <link
linkend="functions-aggregate"><function>var_samp()</function></link>
and <function>stddev_samp()</function> with numeric parameters to
return NULL when the input is a single NaN value (Tom Lane)
</para>
<para>
Previously <literal>NaN</literal> was returned.
</para>
</listitem>
<listitem>
<!--
Author: Joe Conway <mail@joeconway.com>
2021-03-31 [b12bd4869] Fix has_column_privilege function corner case
-->
<para>
Return false for <link
linkend="functions-info"><function>has_column_privilege()</function></link>
checks on non-existent or dropped columns when using attribute
numbers (Joe Conway)
</para>
<para>
Previously such attribute numbers returned an invalid-column error.
</para>
</listitem>
<listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
2020-07-20 [a4faef8f8] Fix some corner cases for window ranges with infinite of
-->
<para>
Fix handling of infinite <link
linkend="syntax-window-functions">window function</link> ranges
(Tom Lane)
</para>
<para>
Previously window frame clauses like <literal>'inf' PRECEDING AND
'inf' FOLLOWING</literal> returned incorrect results.
</para>
</listitem>
<listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
2020-09-17 [76f412ab3] Remove factorial operators, leaving only the factorial()
-->
<para>
Remove factorial operators <literal>!</literal> and
<literal>!!</literal>, as well as function
<function>numeric_fac()</function> (Mark Dilger)
</para>
<para>
The <link
linkend="functions-math"><function>factorial()</function></link>
function is still supported.
</para>
</listitem>
<listitem>
<!--
Author: Peter Eisentraut <peter@eisentraut.org>
2020-06-18 [0a40563ea] Disallow factorial of negative numbers
-->
<para>
Disallow <function>factorial()</function> of negative numbers
(Peter Eisentraut)
</para>
<para>
Previously such cases returned 1.
</para>
</listitem>
<listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
2020-09-17 [1ed6b8956] Remove support for postfix (right-unary) operators.
-->
<para>
Remove support for <link linkend="sql-createoperator">postfix</link>
(right-unary) operators (Mark Dilger)
</para>
<para>
<application>pg_dump</application> and
<application>pg_upgrade</application> will warn if postfix operators
are being dumped.
</para>
</listitem>
<listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
2021-02-25 [7dc13a0f0] Change regex \D and \W shorthands to always match newlin
-->
<para>
Allow <literal>\D</literal> and <literal>\W</literal> shorthands to
match newlines in <link linkend="functions-posix-regexp">regular
expression</link> newline-sensitive mode (Tom Lane)
</para>
<para>
Previously they did not match newlines in this
mode, but that disagrees with the behavior of other common regular
expression engines. <literal>[^[:digit:]]</literal> or
<literal>[^[:word:]]</literal> can be used to get the old behavior.
</para>
</listitem>
<listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
2021-03-02 [4aea704a5] Fix semantics of regular expression back-references.
-->
<para>
Disregard constraints when matching regular expression <link
linkend="posix-escape-sequences">back-references</link> (Tom Lane)
</para>
<para>
For example, in <literal>(^\d+).*\1</literal>,
the <literal>^</literal> constraint should be applied at the start
of the string, but not when matching <literal>\1</literal>.
</para>
</listitem>
<listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
2021-02-25 [2a0af7fe4] Allow complemented character class escapes within regex
-->
<para>
Disallow <literal>\w</literal> as a range start or end in regular
expression character classes (Tom Lane)
</para>
<para>
This previously was allowed but produced unexpected results.
</para>
</listitem>
<listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
2021-04-07 [3db826bd5] Tighten up allowed names for custom GUC parameters.
Author: Tom Lane <tgl@sss.pgh.pa.us>
2021-04-07 [3db826bd5] Tighten up allowed names for custom GUC parameters.
-->
<para>
Require <link linkend="runtime-config-custom">custom server
parameter</link> names to use only characters that are valid in
unquoted <acronym>SQL</acronym> identifiers (Tom Lane)
</para>
</listitem>
<listitem>
<!--
Author: Peter Eisentraut <peter@eisentraut.org>
2020-06-10 [c7eab0e97] Change default of password_encryption to scram-sha-256
Author: Peter Eisentraut <peter@eisentraut.org>
2020-06-10 [c7eab0e97] Change default of password_encryption to scram-sha-256
-->
<para>
Change the default of the <xref linkend="guc-password-encryption"/>
server parameter to <literal>scram-sha-256</literal> (Peter
Eisentraut)
</para>
<para>
Previously it was <literal>md5</literal>. All new passwords will
be stored as SHA256 unless this server setting is changed or
the password is specified in MD5 format. Also, the legacy (and
undocumented) Boolean-like values which were previously synonyms
for <literal>md5</literal> are no longer accepted.
</para>
</listitem>
<listitem>
<!--
Author: Peter Geoghegan <pg@bowt.ie>
2021-03-10 [9f3665fbf] Don't consider newly inserted tuples in nbtree VACUUM.
Author: Peter Geoghegan <pg@bowt.ie>
2021-03-11 [effdd3f3b] Add back vacuum_cleanup_index_scale_factor parameter.
-->
<para>
Remove server parameter
<varname>vacuum_cleanup_index_scale_factor</varname> (Peter Geoghegan)
</para>
<para>
This setting was ignored starting in
<productname>PostgreSQL</productname> version 13.3.
</para>
</listitem>
<listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
2020-12-08 [a676386b5] Remove operator_precedence_warning.
-->
<para>
Remove server parameter <varname>operator_precedence_warning</varname>
(Tom Lane)
</para>
<para>
This setting was used for warning applications about
<productname>PostgreSQL</productname> 9.5 changes.
</para>
</listitem>
<listitem>
<!--
Author: Bruce Momjian <bruce@momjian.us>
2020-10-05 [253f1025d] Overhaul pg_hba.conf clientcert's API
-->
<para>
Overhaul the specification of <literal>clientcert</literal> in <link
linkend="auth-pg-hba-conf"><filename>pg_hba.conf</filename></link>
(Kyotaro Horiguchi)
</para>
<para>
Values
<literal>1</literal>/<literal>0</literal>/<literal>no-verify</literal>
are no longer supported; only the strings
<literal>verify-ca</literal> and <literal>verify-full</literal>
can be used. Also, disallow <literal>verify-ca</literal> if cert
authentication is enabled since cert requires
<literal>verify-full</literal> checking.
</para>
</listitem>
<listitem>
<!--
Author: Michael Paquier <michael@paquier.xyz>
2021-03-09 [f9264d152] Remove support for SSL compression
Author: Michael Paquier <michael@paquier.xyz>
2021-03-10 [0ba71107e] Revert changes for SSL compression in libpq
-->
<para>
Remove support for <link
linkend="runtime-config-connection-ssl"><acronym>SSL</acronym></link>
compression (Daniel Gustafsson, Michael Paquier)
</para>
<para>
This was already disabled by default in previous
<productname>PostgreSQL</productname> releases, and most modern
OpenSSL and <acronym>TLS</acronym> versions no longer support it.
</para>
</listitem>
<listitem>
<!--
Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
2021-03-04 [3174d69fb] Remove server and libpq support for old FE/BE protocol v
-->
<para>
Remove server and <link linkend="libpq">libpq</link> support
for the version 2 <link linkend="protocol">wire protocol</link>
(Heikki Linnakangas)
</para>
<para>
This was last used as the default in
<productname>PostgreSQL</productname> 7.3 (released in 2002).
</para>
</listitem>
<listitem>
<!--
Author: Peter Eisentraut <peter@eisentraut.org>
2020-06-11 [5333e014a] Remove deprecated syntax from CREATE/DROP LANGUAGE
-->
<para>
Disallow single-quoting of the language name in the
<link linkend="sql-createlanguage"><command>CREATE/DROP
LANGUAGE</command></link> command (Peter Eisentraut)
</para>
</listitem>
<listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
2020-07-07 [f3faf35f3] Don't create pg_type entries for sequences or toast tabl
-->
<para>
Remove the <link linkend="xfunc-sql-composite-functions">composite
types</link> that were formerly created for sequences and toast
tables (Tom Lane)
</para>
</listitem>
<listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
2020-10-22 [3dfb1942d] Avoid premature de-doubling of quote marks in ECPG strin
Author: Tom Lane <tgl@sss.pgh.pa.us>
2020-10-22 [c16a1bbcf] Add documentation and tests for quote marks in ECPG lite
-->
<para>
Process doubled quote marks in <link linkend="ecpg">ecpg</link>
<acronym>SQL</acronym> command strings correctly (Tom Lane)
</para>
<para>
Previously <literal>'abc''def'</literal> was passed to the server
as <literal>'abc'def'</literal>, and <literal>"abc""def"</literal>
was passed as <literal>"abc"def"</literal>, causing syntax errors.
</para>
</listitem>
<listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
2020-08-08 [20e7e1fe3] Remove &lt;@ from contrib/intarray's GiST operator classes.
-->
<para>
Prevent the containment operators (<literal>&lt;@</literal> and
<literal>@&gt;</literal>) for <xref linkend="intarray"/> from using
GiST indexes (Tom Lane)
</para>
<para>
Previously a full GiST index scan was required, so just avoid
that and scan the heap, which is faster. Indexes created for this
purpose should be removed.
</para>
</listitem>
<listitem>
<!--
Author: Thomas Munro <tmunro@postgresql.org>
2021-01-29 [514b411a2] Retire pg_standby.
-->
<para>
Remove contrib program <application>pg_standby</application>
(Justin Pryzby)
</para>
</listitem>
<listitem>
<!--
Author: Peter Eisentraut <peter@eisentraut.org>
2020-11-25 [f73999262] tablefunc: Reject negative number of tuples passed to no
-->
<para>
Prevent <xref linkend="tablefunc"/>'s function
<function>normal_rand()</function> from accepting negative values
(Ashutosh Bapat)
</para>
<para>
Negative values produced undesirable results.
</para>
</listitem>
</itemizedlist>
</sect2>
<sect2>
<title>Changes</title>
<para>
Below you will find a detailed account of the changes between
<productname>PostgreSQL</productname> 14 and the previous major
release.
</para>
<sect3>
<title>Server</title>
<itemizedlist>
<listitem>
<!--
Author: Stephen Frost <sfrost@snowman.net>
2021-04-05 [6c3ffd697] Add pg_read_all_data and pg_write_all_data roles
-->
<para>
Add predefined roles <link
linkend="predefined-roles"><literal>pg_read_all_data</literal></link>
and <literal>pg_write_all_data</literal> (Stephen Frost)
</para>
<para>
These non-login roles can be used to give read or write permission
to all tables, views, and sequences.
</para>
</listitem>
<listitem>
<!--
Author: Noah Misch <noah@leadboat.com>
2021-03-26 [a14a0118a] Add "pg_database_owner" default role.
-->
<para>
Add predefined role <link
linkend="predefined-roles"><literal>pg_database_owner</literal></link>
that contains only the current database's owner (Noah Misch)
</para>
<para>
This is especially useful in template databases.
</para>
</listitem>
<listitem>
<!--
Author: Tomas Vondra <tomas.vondra@postgresql.org>
2021-03-18 [cd91de0d1] Remove temporary files after backend crash
-->
<para>
Remove temporary files after backend crashes (Euler Taveira)
</para>
<para>
Previously, such files were retained for debugging purposes. If
necessary, deletion can be disabled with the new server parameter
<xref linkend="guc-remove-temp-files-after-crash"/>.
</para>
</listitem>
<listitem>
<!--
Author: Thomas Munro <tmunro@postgresql.org>
2021-04-03 [c30f54ad7] Detect POLLHUP/POLLRDHUP while running queries.
-->
<para>
Allow long-running queries to be canceled if the client disconnects
(Sergey Cherkashin, Thomas Munro)
</para>
<para>
The server parameter <xref
linkend="guc-client-connection-check-interval"/> allows control
over whether loss of connection is checked for intra-query.
(This is supported on Linux and a few other operating systems.)
</para>
</listitem>
<listitem>
<!--
Author: Magnus Hagander <magnus@hagander.net>
2021-04-08 [aaf043257] Add functions to wait for backend termination
-->
<para>
Add an optional timeout parameter to <link
linkend="functions-admin-signal"><function>pg_terminate_backend()</function></link>
(Magnus Hagander)
</para>
</listitem>
<listitem>
<!--
Author: Noah Misch <noah@leadboat.com>
2021-03-30 [0ff8bbdee] Accept slightly-filled pages for tuples larger than fill
-->
<para>
Allow wide tuples to be always added to almost-empty heap pages
(John Naylor, Floris van Nee)
</para>
<para>
Previously tuples whose insertion would have exceeded the page's
<link linkend="sql-createtable">fill factor</link> were instead
added to new pages.
</para>
</listitem>
<listitem>
<!--
Author: Peter Eisentraut <peter@eisentraut.org>
2021-04-07 [5c55dc8b4] libpq: Set Server Name Indication (SNI) for SSL connecti
-->
<para>
Add Server Name Indication (<acronym>SNI</acronym>) in
<acronym>SSL</acronym> connection packets (Peter Eisentraut)
</para>
<para>
This can be disabled by turning off client connection option <link
linkend="libpq-paramkeywords"><literal>sslsni</literal></link>.
</para>
</listitem>
</itemizedlist>
<sect4>
<title><link linkend="routine-vacuuming">Vacuuming</link></title>
<itemizedlist>
<listitem>
<!--
Author: Peter Geoghegan <pg@bowt.ie>
2021-04-07 [5100010ee] Teach VACUUM to bypass unnecessary index vacuuming.
Author: Peter Geoghegan <pg@bowt.ie>
2021-06-18 [3499df0de] Support disabling index bypassing by VACUUM.
-->
<para>
Allow vacuum to skip index vacuuming when the number of removable
index entries is insignificant (Masahiko Sawada, Peter Geoghegan)
</para>
<para>
The vacuum parameter <link
linkend="sql-vacuum"><literal>INDEX_CLEANUP</literal></link> has a
new default of <literal>auto</literal> that enables this optimization.
</para>
</listitem>
<listitem>
<!--
Author: Peter Geoghegan <pg@bowt.ie>
2021-03-21 [9dd963ae2] Recycle nbtree pages deleted during same VACUUM.
-->
<para>
Allow vacuum to more eagerly add deleted btree pages to the free
space map (Peter Geoghegan)
</para>
<para>
Previously vacuum could only add pages to the free space map
that were marked as deleted by previous vacuums.
</para>
</listitem>
<listitem>
<!--
Author: Peter Geoghegan <pg@bowt.ie>
2021-04-07 [3c3b8a4b2] Truncate line pointer array during VACUUM.
-->
<para>
Allow vacuum to reclaim space used by unused trailing heap
line pointers (Matthias van de Meent, Peter Geoghegan)
</para>
</listitem>
<listitem>
<!--
Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
2020-11-25 [c98763bf5] Avoid spurious waits in concurrent indexing
Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
2021-01-15 [f9900df5f] Avoid spurious wait in concurrent reindex
Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
2021-02-23 [d9d076222] VACUUM: ignore indexing operations with CONCURRENTLY
-->
<para>
Allow vacuum to be more aggressive in removing dead rows during
minimal-locking index operations (Álvaro Herrera)
</para>
<para>
Specifically, <command>CREATE INDEX CONCURRENTLY</command> and
<command>REINDEX CONCURRENTLY</command> no longer limit the dead
row removal of other relations.
</para>
</listitem>
<listitem>
<!--
Author: Fujii Masao <fujii@postgresql.org>
2020-12-08 [e2ac3fed3] Speed up rechecking if relation needs to be vacuumed or
-->
<para>
Speed up vacuuming of databases with many relations (Tatsuhito
Kasahara)
</para>
</listitem>
<listitem>
<!--
Author: Peter Geoghegan <pg@bowt.ie>
2021-01-27 [e19594c5c] Reduce the default value of vacuum_cost_page_miss.
-->
<para>
Reduce the default value of <xref
linkend="guc-vacuum-cost-page-miss"/> to better reflect current
hardware capabilities (Peter Geoghegan)
</para>
</listitem>
<listitem>
<!--
Author: Michael Paquier <michael@paquier.xyz>
2021-02-09 [7cb3048f3] Add option PROCESS_TOAST to VACUUM
-->
<para>
Add ability to skip vacuuming of <acronym>TOAST</acronym> tables
(Nathan Bossart)
</para>
<para>
<link linkend="sql-vacuum"><command>VACUUM</command></link> now
has a <literal>PROCESS_TOAST</literal> option which can be set to
false to disable <acronym>TOAST</acronym> processing, and <link
linkend="app-vacuumdb"><application>vacuumdb</application></link>
has a <option>--no-process-toast</option> option.
</para>
</listitem>
<listitem>
<!--
Author: Tomas Vondra <tomas.vondra@postgresql.org>
2021-01-17 [7db0cd214] Set PD_ALL_VISIBLE and visibility map bits in COPY FREEZ
-->
<para>
Have <link linkend="sql-copy"><command>COPY FREEZE</command></link>
appropriately update page visibility bits (Anastasia Lubennikova,
Pavan Deolasee, Jeff Janes)
</para>
</listitem>
<listitem>
<!--
Author: Peter Geoghegan <pg@bowt.ie>
2021-04-07 [1e55e7d17] Add wraparound failsafe to VACUUM.
-->
<para>
Cause vacuum operations to be more aggressive if the table is near
xid or multixact wraparound (Masahiko Sawada, Peter Geoghegan)
</para>
<para>
This is controlled by <xref linkend="guc-vacuum-failsafe-age"/>
and <xref linkend="guc-vacuum-multixact-failsafe-age"/>.
</para>
</listitem>
<listitem>
<!--
Author: Noah Misch <noah@leadboat.com>
2020-08-01 [cd5e82256] Change XID and mxact limits to warn at 40M and stop at 3
-->
<para>
Increase warning time and hard limit before transaction id and
multi-transaction wraparound (Noah Misch)
</para>
<para>
This should reduce the possibility of failures that occur without
having issued warnings about wraparound.
</para>
</listitem>
<listitem>
<!--
Author: Michael Paquier <michael@paquier.xyz>
2021-03-23 [5aed6a1fc] Add per-index stats information in verbose logs of autov
-->
<para>
Add per-index information to <link
linkend="guc-log-autovacuum-min-duration">autovacuum logging
output</link> (Masahiko Sawada)
</para>
</listitem>
</itemizedlist>
</sect4>
<sect4>
<title><link linkend="ddl-partitioning">Partitioning</link></title>
<itemizedlist>
<listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
2021-03-31 [86dc90056] Rework planning and execution of UPDATE and DELETE.
Author: Tom Lane <tgl@sss.pgh.pa.us>
2021-04-06 [a1115fa07] Postpone some more stuff out of ExecInitModifyTable.
Author: Tom Lane <tgl@sss.pgh.pa.us>
2021-04-06 [c5b7ba4e6] Postpone some stuff out of ExecInitModifyTable.
-->
<para>
Improve the performance of updates and deletes on partitioned tables
with many partitions (Amit Langote, Tom Lane)
</para>
<para>
This change greatly reduces the planner's overhead for such cases,
and also allows updates/deletes on partitioned tables to use
execution-time partition pruning.
</para>
</listitem>
<listitem>
<!--
Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
2021-03-25 [71f4c8c6f] ALTER TABLE ... DETACH PARTITION ... CONCURRENTLY
-->
<para>
Allow partitions to be <link
linkend="sql-altertable">detached</link> in a non-blocking manner
(Álvaro Herrera)
</para>
<para>
The syntax is <command>ALTER TABLE ... DETACH PARTITION
... CONCURRENTLY</command>, and <command>FINALIZE</command>.
</para>
</listitem>
<listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
2020-09-28 [2dfa3fea8] Remove complaints about COLLATE clauses in partition bou
-->
<para>
Ignore <literal>COLLATE</literal> clauses in partition boundary
values (Tom Lane)
</para>
<para>
Previously any such clause had to match the collation of the
partition key; but it's more consistent to consider that it's
automatically coerced to the collation of the partition key.
</para>
</listitem>
</itemizedlist>
</sect4>
<sect4>
<title>Indexes</title>
<itemizedlist>
<listitem>
<!--
Author: Peter Geoghegan <pg@bowt.ie>
2021-01-13 [9dc718bdf] Pass down "logically unchanged index" hint.
Author: Peter Geoghegan <pg@bowt.ie>
2021-01-13 [d168b6668] Enhance nbtree index tuple deletion.
-->
<para>
Allow btree index additions to <link
linkend="btree-deletion">remove expired index entries</link>
to prevent page splits (Peter Geoghegan)
</para>
<para>
This is particularly helpful for reducing index bloat on tables
whose indexed columns are frequently updated.
</para>
</listitem>
<listitem>
<!--
Author: Tomas Vondra <tomas.vondra@postgresql.org>
2021-03-26 [ab596105b] BRIN minmax-multi indexes
-->
<para>
Allow <link linkend="brin"><acronym>BRIN</acronym></link> indexes
to record multiple min/max values per range (Tomas Vondra)
</para>
<para>
This is useful if there are groups of values in each page range.
</para>
</listitem>
<listitem>
<!--
Author: Tomas Vondra <tomas.vondra@postgresql.org>
2021-03-26 [77b88cd1b] BRIN bloom indexes
-->
<para>
Allow <acronym>BRIN</acronym> indexes to use bloom filters
(Tomas Vondra)
</para>
<para>
This allows <acronym>BRIN</acronym> indexes to be used effectively
with data that is not well-localized in the heap.
</para>
</listitem>
<listitem>
<!--
Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
2020-09-17 [16fa9b2b3] Add support for building GiST index by sorting.
-->
<para>
Allow some <link linkend="gist">GiST</link> indexes to be built
by presorting the data (Andrey Borodin)
</para>
<para>
Presorting happens automatically and allows for faster index
creation and smaller indexes.
</para>
</listitem>
<listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
2021-04-05 [09c1c6ab4] Support INCLUDE'd columns in SP-GiST.
-->
<para>
Allow <link linkend="spgist">SP-GiST</link> indexes to contain
<literal>INCLUDE</literal>'d columns (Pavel Borisov)
</para>
</listitem>
</itemizedlist>
</sect4>
<sect4>
<title>Optimizer</title>
<itemizedlist>
<listitem>
<!--
Author: David Rowley <drowley@postgresql.org>
2021-04-08 [50e17ad28] Speedup ScalarArrayOpExpr evaluation
-->
<para>
Allow hash lookup for <literal>IN</literal> clauses with many
constants (James Coleman, David Rowley)
</para>
<para>
Previously the code always sequentially scanned the list
of values.
</para>
</listitem>
<listitem>
<!--
Author: Dean Rasheed <dean.a.rasheed@gmail.com>
2020-12-03 [25a9e54d2] Improve estimation of OR clauses using extended statisti
Author: Dean Rasheed <dean.a.rasheed@gmail.com>
2020-12-08 [88b0898fe] Improve estimation of OR clauses using multiple extended
Author: Dean Rasheed <dean.a.rasheed@gmail.com>
2020-12-08 [4f5760d4a] Improve estimation of ANDs under ORs using extended stat
-->
<para>
Increase the number of places <link
linkend="planner-stats-extended">extended statistics</link> can
be used for <literal>OR</literal> clause estimation (Tomas Vondra,
Dean Rasheed)
</para>
</listitem>
<listitem>
<!--
Author: Tomas Vondra <tomas.vondra@postgresql.org>
2021-03-27 [a4d75c86b] Extended statistics on expressions
-->
<para>
Allow extended statistics on expressions (Tomas Vondra)
</para>
<para>
This allows statistics on a group of expressions and columns,
rather than only columns like previously. System view <link
linkend="view-pg-stats-ext-exprs"><structname>pg_stats_ext_exprs</structname></link>
reports such statistics.
</para>
</listitem>
<listitem>
<!--
Author: David Rowley <drowley@postgresql.org>
2021-02-27 [bb437f995] Add TID Range Scans to support efficient scanning ranges
-->
<para>
Allow efficient heap scanning of a range of <link
linkend="datatype-oid-table"><type>TIDs</type></link> (Edmund
Horner, David Rowley)
</para>
<para>
Previously a sequential scan was required for non-equality
<type>TID</type> specifications.
</para>
</listitem>
<listitem>
<!--
Author: Michael Paquier <michael@paquier.xyz>
2020-12-30 [e665769e6] Sanitize IF NOT EXISTS in EXPLAIN for CTAS and matviews
-->
<para>
Fix <link linkend="sql-explain"><command>EXPLAIN CREATE TABLE
AS</command></link> and <command>EXPLAIN CREATE MATERIALIZED
VIEW</command> to honor <literal>IF NOT EXISTS</literal>
(Bharath Rupireddy)
</para>
<para>
Previously, if the object already existed,
<command>EXPLAIN</command> would fail.
</para>
</listitem>
</itemizedlist>
</sect4>
<sect4>
<title>General Performance</title>
<itemizedlist>
<listitem>
<!--
Author: Andres Freund <andres@anarazel.de>
2020-08-12 [dc7420c2c] snapshot scalability: Don't compute global horizons whil
Author: Andres Freund <andres@anarazel.de>
2020-08-13 [1f51c17c6] snapshot scalability: Move PGXACT->xmin back to PGPROC.
Author: Andres Freund <andres@anarazel.de>
2020-08-14 [941697c3c] snapshot scalability: Introduce dense array of in-progre
Author: Andres Freund <andres@anarazel.de>
2020-08-14 [5788e258b] snapshot scalability: Move PGXACT->vacuumFlags to ProcGl
Author: Andres Freund <andres@anarazel.de>
2020-08-14 [73487a60f] snapshot scalability: Move subxact info to ProcGlobal, r
Author: Andres Freund <andres@anarazel.de>
2020-08-17 [623a9ba79] snapshot scalability: cache snapshots using a xact compl
-->
<para>
Improve the speed of computing <acronym>MVCC</acronym> <link
linkend="mvcc">visibility snapshots</link> on systems with many
CPUs and high session counts (Andres Freund)
</para>
<para>
This also improves performance when there are many idle sessions.
</para>
</listitem>
<listitem>
<!--
Author: David Rowley <drowley@postgresql.org>
2021-04-02 [9eacee2e6] Add Result Cache executor node (take 2)
-->
<para>
Add executor method to memoize results from the inner side of a
nested-loop join (David Rowley)
</para>
<para>
This is useful if only a small percentage of rows is checked on
the inner side. It can be disabled via server parameter <xref
linkend="guc-enable-memoize"/>.
</para>
</listitem>
<listitem>
<!--
Author: David Rowley <drowley@postgresql.org>
2020-09-15 [62e221e1c] Allow incremental sorts for windowing functions
-->
<para>
Allow <link linkend="functions-window">window functions</link>
to perform incremental sorts (David Rowley)
</para>
</listitem>
<listitem>
<!--
Author: David Rowley <drowley@postgresql.org>
2020-07-26 [56788d215] Allocate consecutive blocks during parallel seqscans
-->
<para>
Improve the I/O performance of parallel sequential scans (Thomas
Munro, David Rowley)
</para>
<para>
This was done by allocating blocks in groups to <link
linkend="guc-max-parallel-workers">parallel workers</link>.
</para>
</listitem>
<listitem>
<!--
Author: Etsuro Fujita <efujita@postgresql.org>
2021-03-31 [27e1f1456] Add support for asynchronous execution.
-->
<para>
Allow a query referencing multiple <link
linkend="sql-createforeigntable">foreign tables</link> to perform
foreign table scans in parallel (Robert Haas, Kyotaro Horiguchi,
Thomas Munro, Etsuro Fujita)
</para>
<para>
<link
linkend="postgres-fdw"><application>postgres_fdw</application></link>
supports this type of scan if <literal>async_capable</literal>
is set.
</para>
</listitem>
<listitem>
<!--
Author: Stephen Frost <sfrost@snowman.net>
2021-03-16 [c6fc50cb4] Use pre-fetching for ANALYZE
-->
<para>
Allow <link linkend="vacuum-for-statistics">analyze</link> to do
page prefetching (Stephen Frost)
</para>
<para>
This is controlled by <xref
linkend="guc-maintenance-io-concurrency"/>.
</para>
</listitem>
<listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
2021-02-20 [08c0d6ad6] Invent "rainbow" arcs within the regex engine.
Author: Tom Lane <tgl@sss.pgh.pa.us>
2021-02-20 [824bf7190] Recognize "match-all" NFAs within the regex engine.
Author: Tom Lane <tgl@sss.pgh.pa.us>
2021-02-20 [cebc1d34e] Fix regex engine to suppress useless concatenation sub-R
Author: Tom Lane <tgl@sss.pgh.pa.us>
2021-02-20 [581043089] Convert regex engine's subre tree from binary to N-ary s
Author: Tom Lane <tgl@sss.pgh.pa.us>
2021-02-20 [ea1268f63] Avoid generating extra subre tree nodes for capturing pa
Author: Tom Lane <tgl@sss.pgh.pa.us>
2021-02-21 [190c79884] Simplify memory management for regex DFAs a little.
Author: Tom Lane <tgl@sss.pgh.pa.us>
2021-02-26 [0fc1af174] Improve memory management in regex compiler.
Author: Tom Lane <tgl@sss.pgh.pa.us>
2021-03-02 [0c3405cf1] Improve performance of regular expression back-reference
Author: Tom Lane <tgl@sss.pgh.pa.us>
2021-03-02 [4604f83fd] Suppress unnecessary regex subre nodes in a couple more
Author: Tom Lane <tgl@sss.pgh.pa.us>
2021-03-08 [6c20bdb2a] Further tweak memory management for regex DFAs.
Author: Tom Lane <tgl@sss.pgh.pa.us>
2021-05-03 [f68970e33] Fix performance issue in new regex match-all detection c
-->
<para>
Improve performance of <link
linkend="functions-posix-regexp">regular expression</link>
searches (Tom Lane)
</para>
</listitem>
<listitem>
<!--
Author: Michael Paquier <michael@paquier.xyz>
2020-10-11 [80f8eb79e] Use perfect hash for NFC and NFKC Unicode Normalization
Author: Michael Paquier <michael@paquier.xyz>
2020-10-23 [783f0cc64] Improve performance of Unicode {de,re}composition in the
-->
<para>
Dramatically improve Unicode normalization performance (John Naylor)
</para>
<para>
This speeds <link
linkend="functions-string"><function>normalize()</function></link>
and <literal>IS NORMALIZED</literal>.
</para>
</listitem>
<listitem>
<!--
Author: Robert Haas <rhaas@postgresql.org>
2021-03-19 [bbe0a81db] Allow configurable LZ4 TOAST compression.
-->
<para>
Add ability to use <link linkend="sql-createtable">LZ4
compression</link> on <acronym>TOAST</acronym> data (Dilip Kumar)
</para>
<para>
This can be set at the column level, or set as a default via server
parameter <xref linkend="guc-default-toast-compression"/>.
The server must be compiled with <link
linkend="configure-options-features"><option>--with-lz4</option></link>
to support this feature. The default setting is still pglz.
</para>
</listitem>
</itemizedlist>
</sect4>
<sect4>
<title>Monitoring</title>
<itemizedlist>
<listitem>
<!--
Author: Bruce Momjian <bruce@momjian.us>
2021-04-07 [4f0b0966c] Make use of in-core query id added by commit 5fd9dfa5f5
Author: Bruce Momjian <bruce@momjian.us>
2021-04-07 [f57a2f5e0] Add csvlog output for the new query_id value
Author: Bruce Momjian <bruce@momjian.us>
2021-04-20 [9660834dd] adjust query id feature to use pg_stat_activity.query_id
Author: Bruce Momjian <bruce@momjian.us>
2021-05-03 [f7a97b6ec] Update query_id computation
Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
2021-05-15 [cafde58b3] Allow compute_query_id to be set to 'auto' and make it d
-->
<para>
If server parameter <xref linkend="guc-compute-query-id"/>
is enabled, display the query id in <link
linkend="monitoring-pg-stat-activity-view"><structname>pg_stat_activity</structname></link>,
<link linkend="sql-explain"><command>EXPLAIN
VERBOSE</command></link>, <link
linkend="runtime-config-logging">csvlog</link>, and optionally in
<xref linkend="guc-log-line-prefix"/> (Julien Rouhaud)
</para>
<para>
A query id computed by an extension will also be displayed.
</para>
</listitem>
<listitem>
<!--
Author: Stephen Frost <sfrost@snowman.net>
2021-03-16 [94d13d474] Improve logging of auto-vacuum and auto-analyze
-->
<para>
Improve logging of <link linkend="autovacuum">auto-vacuum</link>
and auto-analyze (Stephen Frost, Jakub Wartak)
</para>
<para>
This reports I/O timings for auto-vacuum and auto-analyze if <xref
linkend="guc-track-io-timing"/> is enabled. Also, report buffer
read and dirty rates for auto-analyze.
</para>
</listitem>
<listitem>
<!--
Author: Michael Paquier <michael@paquier.xyz>
2021-04-07 [9afffcb83] Add some information about authenticated identity via lo
-->
<para>
Add information about the original user name supplied by the
client to the output of <xref linkend="guc-log-connections"/>
(Jacob Champion)
</para>
</listitem>
</itemizedlist>
</sect4>
<sect4>
<title>System Views</title>
<itemizedlist>
<listitem>
<!--
Author: Tomas Vondra <tomas.vondra@postgresql.org>
2021-01-06 [8a4f618e7] Report progress of COPY commands
Author: Michael Paquier <michael@paquier.xyz>
2021-03-09 [9d2d45700] Add support for more progress reporting in COPY
-->
<para>
Add system view <link
linkend="copy-progress-reporting"><structname>pg_stat_progress_copy</structname></link>
to report <command>COPY</command> progress (Josef Šimánek,
Matthias van de Meent)
</para>
</listitem>
<listitem>
<!--
Author: Fujii Masao <fujii@postgresql.org>
2020-10-02 [8d9a93596] Add pg_stat_wal statistics view.
Author: Fujii Masao <fujii@postgresql.org>
2020-12-02 [01469241b] Track total number of WAL records, FPIs and bytes genera
Author: Fujii Masao <fujii@postgresql.org>
2021-03-09 [ff99918c6] Track total amounts of times spent writing and syncing W
-->
<para>
Add system view <link
linkend="monitoring-pg-stat-wal-view"><structname>pg_stat_wal</structname></link>
to report <acronym>WAL</acronym> activity (Masahiro Ikeda)
</para>
</listitem>
<listitem>
<!--
Author: Amit Kapila <akapila@postgresql.org>
2020-10-08 [986816750] Track statistics for spilling of changes from ReorderBuf
Author: Amit Kapila <akapila@postgresql.org>
2020-10-20 [03d51b776] Change the attribute name in pg_stat_replication_slots v
Author: Amit Kapila <akapila@postgresql.org>
2020-10-29 [8e90ec558] Track statistics for streaming of changes from ReorderBu
Author: Amit Kapila <akapila@postgresql.org>
2021-04-16 [f5fc2f5b2] Add information of total data processed to replication s
-->
<para>
Add system view <link
linkend="monitoring-pg-stat-replication-slots-view"><structname>pg_stat_replication_slots</structname></link>
to report replication slot activity (Masahiko Sawada, Amit Kapila,
Vignesh C)
</para>
<para>
The function <link
linkend="monitoring-stats-functions"><function>pg_stat_reset_replication_slot()</function></link>
resets slot statistics.
</para>
</listitem>
<listitem>
<!--
Author: Fujii Masao <fujii@postgresql.org>
2020-08-19 [3e98c0baf] Add pg_backend_memory_contexts system view.
Author: Fujii Masao <fujii@postgresql.org>
2020-08-26 [29dd6d8bc] Prevent non-superusers from reading pg_backend_memory_co
-->
<para>
Add system view <link
linkend="view-pg-backend-memory-contexts"><structname>pg_backend_memory_contexts</structname></link>
to report session memory usage (Atsushi Torikoshi, Fujii Masao)
</para>
</listitem>
<listitem>
<!--
Author: Fujii Masao <fujii@postgresql.org>
2021-04-06 [43620e328] Add function to log the memory contexts of specified bac
-->
<para>
Add function <link
linkend="functions-admin-signal"><function>pg_log_backend_memory_contexts()</function></link>
to output the memory contexts of arbitrary backends (Atsushi
Torikoshi)
</para>
</listitem>
<listitem>
<!--
Author: Magnus Hagander <magnus@hagander.net>
2021-01-17 [960869da0] Add pg_stat_database counters for sessions and session t
-->
<para>
Add session statistics to the <link
linkend="monitoring-pg-stat-database-view"><structname>pg_stat_database</structname></link>
system view (Laurenz Albe)
</para>
</listitem>
<listitem>
<!--
Author: Fujii Masao <fujii@postgresql.org>
2020-07-20 [d05b172a7] Add generic_plans and custom_plans fields into pg_prepar
-->
<para>
Add columns to <link
linkend="view-pg-prepared-statements"><structname>pg_prepared_statements</structname></link>
to report generic and custom plan counts (Atsushi Torikoshi,
Kyotaro Horiguchi)
</para>
</listitem>
<listitem>
<!--
Author: Fujii Masao <fujii@postgresql.org>
2021-02-15 [46d6e5f56] Display the time when the process started waiting for th
-->
<para>
Add lock wait start time to <link
linkend="view-pg-locks"><structname>pg_locks</structname></link>
(Atsushi Torikoshi)
</para>
</listitem>
<listitem>
<!--
Author: Fujii Masao <fujii@postgresql.org>
2021-03-15 [d75288fb2] Make archiver process an auxiliary process.
-->
<para>
Make the archiver process visible in
<structname>pg_stat_activity</structname> (Kyotaro Horiguchi)
</para>
</listitem>
<listitem>
<!--
Author: Fujii Masao <fujii@postgresql.org>
2021-03-24 [84007043f] Rename wait event WalrcvExit to WalReceiverExit.
-->
<para>
Add wait event <link
linkend="monitoring-pg-stat-activity-view"><literal>WalReceiverExit</literal></link>
to report <acronym>WAL</acronym> receiver exit wait time (Fujii
Masao)
</para>
</listitem>
<listitem>
<!--
Author: Peter Eisentraut <peter@eisentraut.org>
2021-02-17 [f40c6969d] Routine usage information schema tables
-->
<para>
Implement information schema view <link
linkend="infoschema-routine-column-usage"><structname>routine_column_usage</structname></link>
to track columns referenced by function and procedure default
expressions (Peter Eisentraut)
</para>
</listitem>
</itemizedlist>
</sect4>
<sect4>
<title>Authentication</title>
<itemizedlist>
<listitem>
<!--
Author: Andrew Dunstan <andrew@dunslane.net>
2021-03-29 [6d7a6feac] Allow matching the DN of a client certificate for authen
-->
<para>
Allow an SSL certificate's distinguished name (<acronym>DN</acronym>)
to be matched for client certificate authentication (Andrew
Dunstan)
</para>
<para>
The new <link
linkend="auth-pg-hba-conf"><filename>pg_hba.conf</filename></link>
option <literal>clientname=DN</literal> allows comparison with
certificate attributes beyond the <literal>CN</literal> and can
be combined with ident maps.
</para>
</listitem>
<listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
2020-09-03 [8f8154a50] Allow records to span multiple lines in pg_hba.conf and
-->
<para>
Allow <filename>pg_hba.conf</filename> and <link
linkend="auth-username-maps"><filename>pg_ident.conf</filename></link>
records to span multiple lines (Fabien Coelho)
</para>
<para>
A backslash at the end of a line allows record contents to be
continued on the next line.
</para>
</listitem>
<listitem>
<!--
Author: Peter Eisentraut <peter@eisentraut.org>
2021-02-18 [f5465fade] Allow specifying CRL directory
-->
<para>
Allow the specification of a certificate revocation list
(<acronym>CRL</acronym>) directory (Kyotaro Horiguchi)
</para>
<para>
This is controlled by server parameter <xref
linkend="guc-ssl-crl-dir"/> and libpq connection option
<xref linkend='libpq-connect-sslcrldir'/>. Previously only
single <acronym>CRL</acronym> files could be specified.
</para>
</listitem>
<listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
2020-09-03 [67a472d71] Remove arbitrary restrictions on password length.
-->
<para>
Allow passwords of an arbitrary length (Tom Lane, Nathan Bossart)
</para>
</listitem>
</itemizedlist>
</sect4>
<sect4>
<title>Server Configuration</title>
<itemizedlist>
<listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
2021-01-06 [9877374be] Add idle_session_timeout.
-->
<para>
Add server parameter <xref linkend="guc-idle-session-timeout"/>
to close idle sessions (Li Japin)
</para>
<para>
This is similar to <xref
linkend="guc-idle-in-transaction-session-timeout"/>.
</para>
</listitem>
<listitem>
<!--
Author: Stephen Frost <sfrost@snowman.net>
2021-03-24 [bbcc4eb2e] Change checkpoint_completion_target default to 0.9
-->
<para>
Change <xref linkend="guc-checkpoint-completion-target"/> default
to 0.9 (Stephen Frost)
</para>
<para>
The previous default was 0.5.
</para>
</listitem>
<listitem>
<!--
Author: Michael Paquier <michael@paquier.xyz>
2020-08-03 [b8fdee7d0] Add %P to log_line_prefix for parallel group leader
-->
<para>
Allow <literal>%P</literal>
in <xref linkend="guc-log-line-prefix"/> to report the
parallel group leader's PID for a parallel worker (Justin Pryzby)
</para>
</listitem>
<listitem>
<!--
Author: Michael Paquier <michael@paquier.xyz>
2020-11-07 [a05dbf477] Add GUC_LIST_INPUT and GUC_LIST_QUOTE to unix_socket_dir
-->
<para>
Allow <xref linkend="guc-unix-socket-directories"/> to specify
paths as individual, comma-separated quoted strings (Ian Lawrence
Barwick)
</para>
<para>
Previously all the paths had to be in a single quoted string.
</para>
</listitem>
<listitem>
<!--
Author: Thomas Munro <tmunro@postgresql.org>
2020-07-31 [84b1c63ad] Preallocate some DSM space at startup.
-->
<para>
Allow startup allocation of dynamic shared memory (Thomas Munro)
</para>
<para>
This is controlled by <xref
linkend="guc-min-dynamic-shared-memory"/>. This allows more
use of huge pages.
</para>
</listitem>
<listitem>
<!--
Author: Thomas Munro <tmunro@postgresql.org>
2020-07-17 [d2bddc250] Add huge_page_size setting for use on Linux.
-->
<para>
Add server parameter <xref linkend="guc-huge-page-size"/> to
control the size of huge pages used on Linux (Odin Ugedal)
</para>
</listitem>
</itemizedlist>
</sect4>
</sect3>
<sect3>
<title>Streaming Replication and Recovery</title>
<itemizedlist>
<listitem>
<!--
Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
2020-11-12 [9c4f5192f] Allow pg_rewind to use a standby server as the source sy
-->
<para>
Allow standby servers to be rewound via <link
linkend="app-pgrewind"><application>pg_rewind</application></link>
(Heikki Linnakangas)
</para>
</listitem>
<listitem>
<!--
Author: Fujii Masao <fujii@postgresql.org>
2020-12-02 [942305a36] Allow restore_command parameter to be changed with reloa
-->
<para>
Allow the <xref linkend="guc-restore-command"/> setting to be changed
during a server reload (Sergei Kornilov)
</para>
<para>
You can also set <varname>restore_command</varname> to an empty
string and reload to force recovery to only read from the <link
linkend="storage-file-layout"><filename>pg_wal</filename></link>
directory.
</para>
</listitem>
<listitem>
<!--
Author: Fujii Masao <fujii@postgresql.org>
2021-01-08 [0650ff230] Add GUC to log long wait times on recovery conflicts.
Author: Fujii Masao <fujii@postgresql.org>
2021-01-13 [39b03690b] Log long wait time on recovery conflict when it's resolv
-->
<para>
Add server parameter <xref
linkend="guc-log-recovery-conflict-waits"/> to report long recovery
conflict wait times (Bertrand Drouvot, Masahiko Sawada)
</para>
</listitem>
<listitem>
<!--
Author: Peter Eisentraut <peter@eisentraut.org>
2021-01-18 [15251c0a6] Pause recovery for insufficient parameter settings
-->
<para>
Pause recovery on a hot standby server if the primary changes its
parameters in a way that prevents replay on the standby (Peter
Eisentraut)
</para>
<para>
Previously the standby would shut down immediately.
</para>
</listitem>
<listitem>
<!--
Author: Robert Haas <rhaas@postgresql.org>
2021-03-11 [32fd2b57d] Be clear about whether a recovery pause has taken effect
-->
<para>
Add function <link
linkend="functions-recovery-control"><function>pg_get_wal_replay_pause_state()</function></link>
to report the recovery state (Dilip Kumar)
</para>
<para>
It gives more detailed information than <link
linkend="functions-recovery-control"><function>pg_is_wal_replay_paused()</function></link>,
which still exists.
</para>
</listitem>
<listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
2021-01-05 [bf8a662c9] Introduce a new GUC_REPORT setting "in_hot_standby".
-->
<para>
Add new read-only server parameter <xref linkend="guc-in-hot-standby"/>
(Haribabu Kommi, Greg Nancarrow, Tom Lane)
</para>
<para>
This allows clients to easily detect whether they are connected to
a hot standby server.
</para>
</listitem>
<listitem>
<!--
Author: Amit Kapila <akapila@postgresql.org>
2021-01-12 [d6ad34f34] Optimize DropRelFileNodeBuffers() for recovery.
-->
<para>
Speed truncation of small tables during recovery on clusters with
a large number of shared buffers (Kirk Jamison)
</para>
</listitem>
<listitem>
<!--
Author: Thomas Munro <tmunro@postgresql.org>
2021-03-20 [61752afb2] Provide recovery_init_sync_method=syncfs.
-->
<para>
Allow file system sync at the start of crash recovery on Linux
(Thomas Munro)
</para>
<para>
By default, <productname>PostgreSQL</productname>
opens and fsyncs each data file in the database cluster at the
start of crash recovery. A new setting, <xref
linkend="guc-recovery-init-sync-method"/><literal>=syncfs</literal>,
instead syncs each filesystem used by the cluster.
This allows for faster recovery on systems with many database files.
</para>
</listitem>
<listitem>
<!--
Author: Michael Paquier <michael@paquier.xyz>
2020-07-12 [b1e48bbe6] Include replication origins in SQL functions for commit
-->
<para>
Add function <link
linkend="functions-info"><function>pg_xact_commit_timestamp_origin()</function></link>
to return the commit timestamp and replication origin of the
specified transaction (Movead Li)
</para>
</listitem>
<listitem>
<!--
Author: Michael Paquier <michael@paquier.xyz>
2020-07-12 [b1e48bbe6] Include replication origins in SQL functions for commit
-->
<para>
Add the replication origin to the record returned by <link
linkend="functions-info"><function>pg_last_committed_xact()</function></link>
(Movead Li)
</para>
</listitem>
<listitem>
<!--
Author: Michael Paquier <michael@paquier.xyz>
2020-06-14 [cc072641d] Replace superuser check by ACLs for replication origin f
-->
<para>
Allow replication <link linkend="functions-replication">origin
functions</link> to be controlled using standard function permission
controls (Martín Marqués)
</para>
<para>
Previously these functions could only be executed by superusers,
and this is still the default.
</para>
</listitem>
</itemizedlist>
<sect4>
<title><link linkend="logical-replication">Logical Replication</link></title>
<itemizedlist>
<listitem>
<!--
Author: Amit Kapila <akapila@postgresql.org>
2020-09-03 [464824323] Add support for streaming to built-in logical replicatio
Author: Amit Kapila <akapila@postgresql.org>
2020-12-30 [0aa8a01d0] Extend the output plugin API to allow decoding of prepar
Author: Amit Kapila <akapila@postgresql.org>
2021-01-04 [a271a1b50] Allow decoding at prepare time in ReorderBuffer.
Author: Amit Kapila <akapila@postgresql.org>
2020-08-08 [7259736a6] Implement streaming mode in ReorderBuffer.
-->
<para>
Allow logical replication to stream long in-progress transactions
to subscribers (Dilip Kumar, Amit Kapila, Ajin
Cherian, Tomas Vondra, Nikhil Sontakke, Stas Kelvich)
</para>
<para>
Previously transactions that exceeded <xref
linkend="guc-logical-decoding-work-mem"/> were written to disk
until the transaction completed.
</para>
</listitem>
<listitem>
<!--
Author: Amit Kapila <akapila@postgresql.org>
2020-07-28 [45fdc9738] Extend the logical decoding output plugin API with strea
-->
<para>
Enhance the logical replication <acronym>API</acronym> to allow
streaming large in-progress transactions (Tomas Vondra, Dilip
Kumar, Amit Kapila)
</para>
<para>
The output functions begin with <link
linkend="logicaldecoding-output-plugin-stream-start"><literal>stream</literal></link>.
<application>test_decoding</application> also supports these.
</para>
</listitem>
<listitem>
<!--
Author: Amit Kapila <akapila@postgresql.org>
2021-02-12 [ce0fdbfe9] Allow multiple xacts during table sync in logical replic
-->
<para>
Allow multiple transactions during table sync in logical
replication (Peter Smith, Amit Kapila, Takamichi Osumi)
</para>
</listitem>
<listitem>
<!--
Author: Amit Kapila <akapila@postgresql.org>
2020-07-20 [0bead9af4] Immediately WAL-log subtransaction and top-level XID ass
-->
<para>
Immediately <acronym>WAL</acronym>-log subtransaction and top-level
<type>XID</type> association (Tomas Vondra, Dilip Kumar, Amit
Kapila)
</para>
<para>
This is useful for logical decoding.
</para>
</listitem>
<listitem>
<!--
Author: Amit Kapila <akapila@postgresql.org>
2020-12-30 [0aa8a01d0] Extend the output plugin API to allow decoding of prepar
Author: Amit Kapila <akapila@postgresql.org>
2021-01-04 [a271a1b50] Allow decoding at prepare time in ReorderBuffer.
Author: Amit Kapila <akapila@postgresql.org>
2021-03-03 [19890a064] Add option to enable two_phase commits via pg_create_log
-->
<para>
Enhance logical decoding APIs to handle two-phase commits (Ajin
Cherian, Amit Kapila, Nikhil Sontakke, Stas Kelvich)
</para>
<para>
This is controlled via <link
linkend="functions-replication"><function>pg_create_logical_replication_slot()</function></link>.
</para>
</listitem>
<listitem>
<!--
Author: Amit Kapila <akapila@postgresql.org>
2020-07-23 [c55040ccd] WAL Log invalidations at command end with wal_level=logi
-->
<para>
Add cache invalidation messages to the <acronym>WAL</acronym>
during command completion when using logical replication (Dilip
Kumar, Tomas Vondra, Amit Kapila)
</para>
<para>
This allows logical streaming of in-progress transactions.
When logical replication is disabled, invalidation messages are
generated only at transaction completion.
</para>
</listitem>
<listitem>
<!--
Author: Amit Kapila <akapila@postgresql.org>
2020-10-15 [d7eb52d71] Execute invalidation messages for each XLOG_XACT_INVALID
-->
<para>
Allow logical decoding to more efficiently process cache
invalidation messages (Dilip Kumar)
</para>
<para>
This allows <link linkend="logicaldecoding">logical decoding</link>
to work efficiently in presence of a large amount of
<acronym>DDL</acronym>.
</para>
</listitem>
<listitem>
<!--
Author: Amit Kapila <akapila@postgresql.org>
2021-04-06 [ac4645c01] Allow pgoutput to send logical decoding messages.
-->
<para>
Allow control over whether logical decoding messages are sent to
the replication stream (David Pirotte, Euler Taveira)
</para>
</listitem>
<listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
2020-07-18 [9de77b545] Allow logical replication to transfer data in binary for
-->
<para>
Allow logical replication subscriptions to use binary transfer mode
(Dave Cramer)
</para>
<para>
This is faster than text mode, but slightly less robust.
</para>
</listitem>
<listitem>
<!--
Author: Amit Kapila <akapila@postgresql.org>
2021-03-30 [f64ea6dc5] Add a xid argument to the filter_prepare callback for ou
-->
<para>
Allow logical decoding to be filtered by xid (Markus Wanner)
</para>
</listitem>
</itemizedlist>
</sect4>
</sect3>
<sect3>
<title><link linkend="sql-select"><command>SELECT</command></link>, <link linkend="sql-insert"><command>INSERT</command></link></title>
<itemizedlist>
<listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
2020-09-18 [06a7c3154] Allow most keywords to be used as column labels without
-->
<para>
Reduce the number of keywords that can't be used as column labels
without <literal>AS</literal> (Mark Dilger)
</para>
<para>
There are now 90% fewer restricted keywords.
</para>
</listitem>
<listitem>
<!--
Author: Peter Eisentraut <peter@eisentraut.org>
2021-03-31 [055fee7eb] Allow an alias to be attached to a <literal>JOIN ... USING</literal>
-->
<para>
Allow an alias to be specified for <literal>JOIN</literal>'s
<literal>USING</literal> clause (Peter Eisentraut)
</para>
<para>
The alias is created by writing <literal>AS</literal> after the
<literal>USING</literal> clause. It can be used as a table
qualification for the merged <literal>USING</literal> columns.
</para>
</listitem>
<listitem>
<!--
Author: Tomas Vondra <tomas.vondra@postgresql.org>
2021-03-18 [be45be9c3] Implement GROUP BY DISTINCT
-->
<para>
Allow <literal>DISTINCT</literal> to be added to <literal>GROUP
BY</literal> to remove duplicate <literal>GROUPING SET</literal>
combinations (Vik Fearing)
</para>
<para>
For example, <literal>GROUP BY CUBE (a,b), CUBE (b,c)</literal>
will generate duplicate grouping combinations without
<literal>DISTINCT</literal>.
</para>
</listitem>
<listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
2020-11-22 [17958972f] Allow a multi-row <command>INSERT</command> to specify DEFAULTs for a gener
-->
<para>
Properly handle <literal>DEFAULT</literal> entries in multi-row
<literal>VALUES</literal> lists in <command>INSERT</command>
(Dean Rasheed)
</para>
<para>
Such cases used to throw an error.
</para>
</listitem>
<listitem>
<!--
Author: Peter Eisentraut <peter@eisentraut.org>
2021-02-01 [3696a600e] SEARCH and CYCLE clauses
Author: Peter Eisentraut <peter@eisentraut.org>
2021-02-27 [f4adc41c4] Enhanced cycle mark values
-->
<para>
Add <acronym>SQL</acronym>-standard <literal>SEARCH</literal>
and <literal>CYCLE</literal> clauses for <link
linkend="queries-with">common table expressions</link> (Peter
Eisentraut)
</para>
<para>
The same results could be accomplished using existing syntax, but
much less conveniently.
</para>
</listitem>
<listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
2021-04-13 [6c0373ab7] Allow table-qualified variable names in ON CONFLICT ...
-->
<para>
Allow column names in the <literal>WHERE</literal> clause
of <literal>ON CONFLICT</literal> to be table-qualified (Tom Lane)
</para>
<para>
Only the target table can be referenced, however.
</para>
</listitem>
</itemizedlist>
</sect3>
<sect3>
<title>Utility Commands</title>
<itemizedlist>
<listitem>
<!--
Author: Thomas Munro <tmunro@postgresql.org>
2021-03-17 [9e7ccd9ef] Enable parallelism in REFRESH MATERIALIZED VIEW.
-->
<para>
Allow <link linkend="sql-refreshmaterializedview"><command>REFRESH
MATERIALIZED VIEW</command></link> to use parallelism (Bharath
Rupireddy)
</para>
</listitem>
<listitem>
<!--
Author: Michael Paquier <michael@paquier.xyz>
2021-02-04 [c5b286047] Add TABLESPACE option to REINDEX
Author: Michael Paquier <michael@paquier.xyz>
2021-03-03 [57e6db706] Add - -tablespace option to reindexdb
-->
<para>
Allow <link linkend="sql-reindex"><command>REINDEX</command></link>
to change the tablespace of the new index (Alexey Kondratov,
Michael Paquier, Justin Pryzby)
</para>
<para>
This is done by specifying a <literal>TABLESPACE</literal> clause.
A <option>--tablespace</option> option was also added to <link
linkend="app-reindexdb"><application>reindexdb</application></link>
to control this.
</para>
</listitem>
<listitem>
<!--
Author: Michael Paquier <michael@paquier.xyz>
2020-09-08 [a6642b3ae] Add support for partitioned tables and indexes in REINDE
-->
<para>
Allow <command>REINDEX</command> to process all child tables or
indexes of a partitioned relation (Justin Pryzby, Michael Paquier)
</para>
</listitem>
<listitem>
<!--
Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
2020-11-25 [c98763bf5] Avoid spurious waits in concurrent indexing
Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
2021-01-15 [f9900df5f] Avoid spurious wait in concurrent reindex
Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
2021-02-23 [d9d076222] VACUUM: ignore indexing operations with CONCURRENTLY
-->
<para>
Allow index commands using <command>CONCURRENTLY</command> to
avoid waiting for the completion of other operations using
<command>CONCURRENTLY</command> (Álvaro Herrera)
</para>
</listitem>
<listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
2020-07-25 [0a0727ccf] Improve performance of binary COPY FROM through better b
-->
<para>
Improve the performance of <link linkend="sql-copy"><command>COPY
FROM</command></link> in binary mode (Bharath Rupireddy, Amit
Langote)
</para>
</listitem>
<listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
2020-11-04 [40c24bfef] Improve our ability to regurgitate SQL-syntax function c
-->
<para>
Preserve <acronym>SQL</acronym> standard syntax for SQL-defined
functions in <link linkend="sql-createview">view definitions</link>
(Tom Lane)
</para>
<para>
Previously, calls to SQL-standard functions such as <link
linkend="functions-datetime-extract"><function>EXTRACT()</function></link>
were shown in plain function-call syntax. The original syntax
is now preserved when displaying a view or rule.
</para>
</listitem>
<listitem>
<!--
Author: Peter Eisentraut <peter@eisentraut.org>
2021-01-30 [6aaaa76bb] Allow GRANTED BY clause in normal GRANT and REVOKE state
-->
<para>
Add the <acronym>SQL</acronym>-standard
clause <literal>GRANTED BY</literal> to <link
linkend="sql-grant"><command>GRANT</command></link> and <link
linkend="sql-revoke"><command>REVOKE</command></link> (Peter
Eisentraut)
</para>
</listitem>
<listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
2020-11-14 [92bf7e2d0] Provide the OR REPLACE option for CREATE TRIGGER.
-->
<para>
Add <literal>OR REPLACE</literal> option for <link
linkend="sql-createtrigger"><command>CREATE TRIGGER</command></link>
(Takamichi Osumi)
</para>
<para>
This allows pre-existing triggers to be conditionally replaced.
</para>
</listitem>
<listitem>
<!--
Author: Fujii Masao <fujii@postgresql.org>
2021-04-08 [8ff1c9464] Allow TRUNCATE command to truncate foreign tables.
-->
<para>
Allow <link
linkend="sql-truncate"><command>TRUNCATE</command></link> to
operate on foreign tables (Kazutaka Onishi, Kohei KaiGai)
</para>
<para>
The <link
linkend="postgres-fdw"><application>postgres_fdw</application></link>
module also now supports this.
</para>
</listitem>
<listitem>
<!--
Author: Peter Eisentraut <peter@eisentraut.org>
2021-04-06 [82ed7748b] ALTER SUBSCRIPTION ... ADD/DROP PUBLICATION
-->
<para>
Allow publications to be more easily added to and removed from a
subscription (Japin Li)
</para>
<para>
The new syntax is <link
linkend="sql-altersubscription"><command>ALTER SUBSCRIPTION
... ADD/DROP PUBLICATION</command></link>. This avoids having to
specify all publications to add/remove entries.
</para>
</listitem>
<listitem>
<!--
Author: Peter Eisentraut <peter@eisentraut.org>
2021-01-30 [dfb75e478] Add primary keys and unique constraints to system catalo
Author: Tom Lane <tgl@sss.pgh.pa.us>
2021-02-02 [62f34097c] Build in some knowledge about foreign-key relationships
-->
<para>
Add primary keys, unique constraints, and foreign keys to <link
linkend="catalogs">system catalogs</link> (Peter Eisentraut)
</para>
<para>
These changes help <acronym>GUI</acronym> tools analyze the system
catalogs. The existing unique indexes of catalogs now have
associated <literal>UNIQUE</literal> or <literal>PRIMARY
KEY</literal> constraints. Foreign key relationships are not
actually stored or implemented as constraints, but can be obtained
for display from the
function <link linkend="functions-info-catalog-table">pg_get_catalog_foreign_keys()</link>.
</para>
</listitem>
<listitem>
<!--
Author: Peter Eisentraut <peter@eisentraut.org>
2020-09-17 [45b980570] Allow CURRENT_ROLE where CURRENT_USER is accepted
-->
<para>
Allow <link
linkend="functions-info"><literal>CURRENT_ROLE</literal></link>
every place <literal>CURRENT_USER</literal> is accepted (Peter
Eisentraut)
</para>
</listitem>
</itemizedlist>
</sect3>
<sect3>
<title>Data Types</title>
<itemizedlist>
<listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
2020-12-09 [c7aba7c14] Support subscripting of arbitrary types, not only arrays
-->
<para>
Allow extensions and built-in data types to implement <link
linkend="sql-altertype">subscripting</link> (Dmitry Dolgov)
</para>
<para>
Previously subscript handling was hard-coded into the server, so
that subscripting could only be applied to array types. This change
allows subscript notation to be used to extract or assign portions
of a value of any type for which the concept makes sense.
</para>
</listitem>
<listitem>
<!--
Author: Alexander Korotkov <akorotkov@postgresql.org>
2021-01-31 [676887a3b] Implementation of subscripting for jsonb
Author: Alexander Korotkov <akorotkov@postgresql.org>
2021-01-31 [81fcc72e6] Filling array gaps during jsonb subscripting
Author: Alexander Korotkov <akorotkov@postgresql.org>
2021-01-31 [aa6e46daf] Throw error when assigning jsonb scalar instead of a com
-->
<para>
Allow subscripting of <link
linkend="datatype-json"><type>JSONB</type></link> (Dmitry Dolgov)
</para>
<para>
<type>JSONB</type> subscripting can be used to extract and assign
to portions of <type>JSONB</type> documents.
</para>
</listitem>
<listitem>
<!--
Author: Author: Alexander Korotkov <akorotkov@postgresql.org>
2020-12-20 [6df7a9698] Multirange datatypes
Author: Alexander Korotkov <akorotkov@postgresql.org>
2020-12-29 [db6335b5b] Add support of multirange matching to the existing range
Author: Alexander Korotkov <akorotkov@postgresql.org>
2020-12-30 [62097a4cc] Fix selectivity estimation @&gt; (anymultirange, anyrange)
Author: Alexander Korotkov <akorotkov@postgresql.org>
2021-07-18 [244ad5415] Support for unnest(multirange)
-->
<para>
Add support for <link linkend="rangetypes">multirange data
types</link> (Paul Jungwirth, Alexander Korotkov)
</para>
<para>
These are like range data types, but they allow the specification
of multiple, ordered, non-overlapping ranges. An associated
multirange type is automatically created for every range type.
</para>
</listitem>
<listitem>
<!--
Author: Peter Eisentraut <peter@eisentraut.org>
2020-06-08 [cbcc8726b] Update snowball
Author: Peter Eisentraut <peter@eisentraut.org>
2020-06-08 [c2e71cb35] Update documentation for snowball update
Author: Peter Eisentraut <peter@eisentraut.org>
2021-02-19 [678d0e239] Update snowball
-->
<para>
Add support for the <link
linkend="textsearch-snowball-dictionary">stemming</link> of
languages Armenian, Basque, Catalan, Hindi, Serbian, and Yiddish
(Peter Eisentraut)
</para>
</listitem>
<listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
2020-09-23 [83b61319a] Improve behavior of tsearch_readline(), and remove t_rea
-->
<para>
Allow <link linkend="textsearch-intro-configurations">tsearch data
files</link> to have unlimited line lengths (Tom Lane)
</para>
<para>
The previous limit was 4K bytes. Also remove function
<function>t_readline()</function>.
</para>
</listitem>
<listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
2020-07-22 [a57d312a7] Support infinity and -infinity in the numeric data type.
-->
<para>
Add support for <literal>Infinity</literal> and
<literal>-Infinity</literal> values in the <link
linkend="datatype-numeric">numeric data type</link> (Tom Lane)
</para>
<para>
Floating-point data types already supported these.
</para>
</listitem>
<listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
2020-11-23 [0cc993278] Rename the "point is strictly above/below point" compari
-->
<para>
Add <link linkend="functions-geometry">point operators</link>
<literal>&lt;&lt;|</literal> and <literal>|&gt;&gt;</literal>
representing strictly above/below tests (Emre Hasegeli)
</para>
<para>
Previously these were called <literal>&gt;^</literal>
and <literal>&lt;^</literal>, but that naming is inconsistent with
other geometric data types. The old names remain available,
but may someday be removed.
</para>
</listitem>
<listitem>
<!--
Author: Fujii Masao <fujii@postgresql.org>
2020-06-30 [9bae7e4cd] Add +(pg_lsn,numeric) and -(pg_lsn,numeric) operators.
-->
<para>
Add operators to add and subtract <link
linkend="datatype-pg-lsn"><type>LSN</type></link> and numeric
(byte) values (Fujii Masao)
</para>
</listitem>
<listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
2020-07-21 [670c0a1d4] Weaken type-OID-matching checks in array_recv and record
-->
<para>
Allow <link linkend="protocol-format-codes">binary data
transfer</link> to be more forgiving of array and record
<type>OID</type> mismatches (Tom Lane)
</para>
</listitem>
<listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
2020-07-06 [f7f70d5e2] Create composite array types for initdb-created relation
-->
<para>
Create composite array types for system catalogs (Wenjing Zeng)
</para>
<para>
User-defined relations have long had composite types associated
with them, and also array types over those composite types.
System catalogs now do as well. This change also fixes an
inconsistency that creating a user-defined table in single-user
mode would fail to create a composite array type.
</para>
</listitem>
</itemizedlist>
</sect3>
<sect3>
<title>Functions</title>
<itemizedlist>
<listitem>
<!--
Author: Peter Eisentraut <peter@eisentraut.org>
2021-04-07 [e717a9a18] SQL-standard function body
-->
<para>
Allow <acronym>SQL</acronym>-language <link
linkend="sql-createfunction">functions</link> and <link
linkend="sql-createprocedure">procedures</link> to use
<acronym>SQL</acronym>-standard function bodies (Peter Eisentraut)
</para>
<para>
Previously only string-literal function bodies were supported.
When writing a function or procedure in SQL-standard syntax,
the body is parsed immediately and stored as a parse tree.
This allows better tracking of function dependencies, and can have
security benefits.
</para>
</listitem>
<listitem>
<!--
Author: Peter Eisentraut <peter@eisentraut.org>
2020-10-05 [2453ea142] Support for OUT parameters in procedures
Author: Peter Eisentraut <peter@eisentraut.org>
2020-10-27 [9213462c5] Make procedure OUT parameters work with JDBC
-->
<para>
Allow <link linkend="sql-createprocedure">procedures</link> to have
<literal>OUT</literal> parameters (Peter Eisentraut)
</para>
</listitem>
<listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
2020-11-04 [9e38c2bb5] Declare assorted array functions using anycompatible not
-->
<para>
Allow some array functions to operate on a mix of compatible data
types (Tom Lane)
</para>
<para>
The functions <link
linkend="functions-array"><function>array_append()</function></link>,
<function>array_prepend()</function>,
<function>array_cat()</function>,
<function>array_position()</function>,
<function>array_positions()</function>,
<function>array_remove()</function>,
<function>array_replace()</function>, and <link
linkend="functions-math"><function>width_bucket()</function></link>
now take <type>anycompatiblearray</type> instead
of <type>anyarray</type> arguments. This makes them less fussy
about exact matches of argument types.
</para>
</listitem>
<listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
2021-03-03 [0a687c8f1] Add trim_array() function.
-->
<para>
Add <acronym>SQL</acronym>-standard <link
linkend="functions-array"><function>trim_array()</function></link>
function (Vik Fearing)
</para>
<para>
This could already be done with array slices, but less easily.
</para>
</listitem>
<listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
2021-01-18 [a6cf3df4e] Add bytea equivalents of ltrim() and rtrim().
-->
<para>
Add <type>bytea</type> equivalents of <link
linkend="functions-binarystring"><function>ltrim()</function></link>
and <function>rtrim()</function> (Joel Jacobson)
</para>
</listitem>
<listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
2020-11-13 [ec0294fb2] Support negative indexes in split_part().
-->
<para>
Support negative indexes in <link
linkend="functions-string"><function>split_part()</function></link>
(Nikhil Benesch)
</para>
<para>
Negative values start from the last field and count backward.
</para>
</listitem>
<listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
2020-09-02 [66f163068] Add string_to_table() function.
-->
<para>
Add <link
linkend="functions-string"><function>string_to_table()</function></link>
function to split a string on delimiters (Pavel Stehule)
</para>
<para>
This is similar to the <link
linkend="functions-string"><function>regexp_split_to_table()</function></link>
function.
</para>
</listitem>
<listitem>
<!--
Author: Peter Eisentraut <peter@eisentraut.org>
2021-03-29 [f37fec837] Add unistr function
-->
<para>
Add <link
linkend="functions-string"><function>unistr()</function></link>
function to allow Unicode characters to be specified as
backslash-hex escapes in strings (Pavel Stehule)
</para>
<para>
This is similar to how Unicode can be specified in literal strings.
</para>
</listitem>
<listitem>
<!--
Author: Peter Eisentraut <peter@eisentraut.org>
2021-03-06 [f9a0392e1] Add bit_xor aggregate function
-->
<para>
Add <link
linkend="functions-aggregate"><function>bit_xor()</function></link>
XOR aggregate function (Alexey Bashtanov)
</para>
</listitem>
<listitem>
<!--
Author: Peter Eisentraut <peter@eisentraut.org>
2021-03-23 [a6715af1e] Add bit_count SQL function
-->
<para>
Add function <link
linkend="functions-binarystring"><function>bit_count()</function></link>
to return the number of bits set in a bit or byte string (David
Fetter)
</para>
</listitem>
<listitem>
<!--
Author: Peter Eisentraut <peter@eisentraut.org>
2021-03-24 [49ab61f0b] Add date_bin function
Author: Peter Eisentraut <peter@eisentraut.org>
2021-04-10 [496e58bb0] Improve behavior of date_bin with origin in the future
-->
<para>
Add <link
linkend="functions-datetime-bin"><function>date_bin()</function></link>
function (John Naylor)
</para>
<para>
This function <quote>bins</quote> input timestamps, grouping them
into intervals of a uniform length aligned with a specified origin.
</para>
</listitem>
<listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
2020-09-29 [a094c8ff5] Fix make_timestamp[tz] to accept negative years as meani
-->
<para>
Allow <link
linkend="functions-datetime"><function>make_timestamp()</function></link>/<function>make_timestamptz()</function>
to accept negative years (Peter Eisentraut)
</para>
<para>
Negative values are interpreted as <literal>BC</literal> years.
</para>
</listitem>
<listitem>
<!--
Author: Peter Eisentraut <peter@eisentraut.org>
2020-06-29 [78c887679] Add current substring regular expression syntax
-->
<para>
Add newer regular expression <link
linkend="functions-string"><function>substring()</function></link>
syntax (Peter Eisentraut)
</para>
<para>
The new SQL-standard syntax is <literal>SUBSTRING(text SIMILAR
pattern ESCAPE escapechar)</literal>. The previous standard syntax was
<literal>SUBSTRING(text FROM pattern FOR escapechar)</literal>,
which is still accepted by <productname>PostgreSQL</productname>.
</para>
</listitem>
<listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
2021-02-25 [2a0af7fe4] Allow complemented character class escapes within regex
-->
<para>
Allow complemented character class escapes <link
linkend="posix-escape-sequences">\D</link>, <literal>\S</literal>,
and <literal>\W</literal> within regular expression brackets (Tom Lane)
</para>
</listitem>
<listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
2021-02-25 [2a0af7fe4] Allow complemented character class escapes within regex
-->
<para>
Add <link
linkend="posix-bracket-expressions"><literal>[[:word:]]</literal></link>
as a regular expression character class, equivalent
to <literal>\w</literal> (Tom Lane)
</para>
</listitem>
<listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
2020-11-04 [5c292e6b9] Declare lead() and lag() using anycompatible not anyelem
-->
<para>
Allow more flexible data types for default values of <link
linkend="functions-window"><function>lead()</function></link>
and <function>lag()</function> window functions (Vik Fearing)
</para>
</listitem>
<listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
2020-11-04 [fac83dbd6] Remove underflow error in float division with infinite d
-->
<para>
Make non-zero <link linkend="datatype-float">floating-point values</link>
divided by infinity return zero (Kyotaro Horiguchi)
</para>
<para>
Previously such operations produced underflow errors.
</para>
</listitem>
<listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
2020-07-20 [4fb6aeb4f] Make floating-point "NaN / 0" return NaN instead of rais
-->
<para>
Make floating-point division of NaN by zero return NaN
(Tom Lane)
</para>
<para>
Previously this returned an error.
</para>
</listitem>
<listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
2020-06-14 [decbe2bfb] Fix behavior of exp() and power() for infinity inputs.
Author: Tom Lane <tgl@sss.pgh.pa.us>
2020-06-15 [e532b1d57] Fix power() for infinity inputs some more.
Author: Tom Lane <tgl@sss.pgh.pa.us>
2020-06-15 [5674eb987] Fix power() for large inputs yet more.
-->
<para>
Cause <link
linkend="functions-math"><function>exp()</function></link> and
<function>power()</function> for negative-infinity exponents to
return zero (Tom Lane)
</para>
<para>
Previously they often returned underflow errors.
</para>
</listitem>
<listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
2020-11-21 [8597a48d0] Fix FPeq() and friends to get the right answers for infi
-->
<para>
Improve the accuracy of geometric computations involving
infinity (Tom Lane)
</para>
</listitem>
<listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
2020-07-25 [8a37951ee] Mark built-in coercion functions as leakproof where poss
-->
<para>
Mark built-in type coercion functions as leakproof where possible
(Tom Lane)
</para>
<para>
This allows more use of functions that require type conversion in
security-sensitive situations.
</para>
</listitem>
<listitem>
<!--
Author: Michael Paquier <michael@paquier.xyz>
2020-07-15 [2a10fdc43] Eliminate cache lookup errors in SQL functions for objec
-->
<para>
Change <link
linkend="functions-info"><function>pg_describe_object()</function></link>,
<function>pg_identify_object()</function>, and
<function>pg_identify_object_as_address()</function> to always report
helpful error messages for non-existent objects (Michael Paquier)
</para>
</listitem>
</itemizedlist>
</sect3>
<sect3>
<title><link linkend="plpgsql">PL/pgSQL</link></title>
<itemizedlist>
<listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
2021-01-04 [c9d529848] Re-implement pl/pgsql's expression and assignment parsin
-->
<para>
Improve PL/pgSQL's <link
linkend="plpgsql-expressions">expression</link> and <link
linkend="plpgsql-statements-assignment">assignment</link> parsing
(Tom Lane)
</para>
<para>
This change allows assignment to array slices and nested record
fields.
</para>
</listitem>
<listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
2020-06-12 [2f48ede08] Avoid using a cursor in plpgsql's RETURN QUERY statement
-->
<para>
Allow plpgsql's <link
linkend="plpgsql-control-structures"><literal>RETURN
QUERY</literal></link> to execute its query using parallelism
(Tom Lane)
</para>
</listitem>
<listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
2021-01-25 [ee895a655] Improve performance of repeated CALLs within plpgsql pro
-->
<para>
Improve performance of repeated <link
linkend="plpgsql-transactions">CALL</link>s within plpgsql
procedures (Pavel Stehule, Tom Lane)
</para>
</listitem>
</itemizedlist>
</sect3>
<sect3>
<title>Client Interfaces</title>
<itemizedlist>
<listitem>
<!--
Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
2021-03-15 [acb7e4eb6] Implement pipeline mode in libpq
-->
<para>
Add <link linkend="libpq-pipeline-sending">pipeline</link> mode
to libpq (Craig Ringer, Matthieu Garrigues, Álvaro Herrera)
</para>
<para>
This allows multiple queries to be sent, only waiting for completion
when a specific synchronization message is sent.
</para>
</listitem>
<listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
2021-03-02 [d16f8c8e4] Mark default_transaction_read_only as GUC_REPORT.
Author: Tom Lane <tgl@sss.pgh.pa.us>
2021-03-02 [ee28cacf6] Extend the abilities of libpq's target_session_attrs par
-->
<para>
Enhance libpq's <link
linkend="libpq-paramkeywords"><option>target_session_attrs</option></link>
parameter options (Haribabu Kommi, Greg Nancarrow, Vignesh C,
Tom Lane)
</para>
<para>
The new options are <literal>read-only</literal>,
<literal>primary</literal>, <literal>standby</literal>, and
<literal>prefer-standby</literal>.
</para>
</listitem>
<listitem>
<!--
Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
2021-03-30 [198b3716d] Improve PQtrace() output format
-->
<para>
Improve the output format of libpq's <link
linkend="libpq-control"><function>PQtrace()</function></link>
(Aya Iwata, Álvaro Herrera)
</para>
</listitem>
<listitem>
<!--
Author: Michael Meskes <meskes@postgresql.org>
2021-03-24 [ad8305a43] Add DECLARE STATEMENT command to ECPG
-->
<para>
Allow an ECPG SQL identifier to be linked to
a specific connection (Hayato Kuroda)
</para>
<para>
This is done via <link
linkend="ecpg-sql-declare-statement"><literal>DECLARE
... STATEMENT</literal></link>.
</para>
</listitem>
</itemizedlist>
</sect3>
<sect3>
<title>Client Applications</title>
<itemizedlist>
<listitem>
<!--
Author: Michael Paquier <michael@paquier.xyz>
2020-06-22 [9550ea302] Add - -no-index-cleanup and - -no-truncate to vacuumdb.
-->
<para>
Allow <link
linkend="app-vacuumdb"><application>vacuumdb</application></link>
to skip index cleanup and truncation (Nathan Bossart)
</para>
<para>
The options are <option>--no-index-cleanup</option> and
<option>--no-truncate</option>.
</para>
</listitem>
<listitem>
<!--
Author: Michael Paquier <michael@paquier.xyz>
2021-03-31 [6568cef26] Add support for - -extension in pg_dump
-->
<para>
Allow <link
linkend="app-pgdump"><application>pg_dump</application></link>
to dump only certain extensions (Guillaume Lelarge)
</para>
<para>
This is controlled by option <option>--extension</option>.
</para>
</listitem>
<listitem>
<!--
Author: Dean Rasheed <dean.a.rasheed@gmail.com>
2021-04-06 [6b258e3d6] pgbench: Function to generate random permutations.
-->
<para>
Add <link
linkend="pgbench"><application>pgbench</application></link>
<function>permute()</function> function to randomly shuffle values
(Fabien Coelho, Hironobu Suzuki, Dean Rasheed)
</para>
</listitem>
<listitem>
<!--
Author: Fujii Masao <fujii@postgresql.org>
2021-09-01 [d760d942c] pgbench: Fix bug in measurement of disconnection delays.
-->
<para>
Include disconnection times in the reconnection overhead measured
by <application>pgbench</application> with <option>-C</option>
(Yugo Nagata)
</para>
</listitem>
<listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
2020-09-17 [99175141c] Improve common/logging.c's support for multiple verbosit
-->
<para>
Allow multiple verbose option specifications (<option>-v</option>)
to increase the logging verbosity (Tom Lane)
</para>
<para>
This behavior is supported by <link
linkend="app-pgdump"><application>pg_dump</application></link>,
<link
linkend="app-pg-dumpall"><application>pg_dumpall</application></link>,
and <link
linkend="app-pgrestore"><application>pg_restore</application></link>.
</para>
</listitem>
</itemizedlist>
<sect4>
<title><xref linkend="app-psql"/></title>
<itemizedlist>
<listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
2021-04-07 [a3027e1e7] Allow psql's \df and \do commands to specify argument ty
-->
<para>
Allow <application>psql</application>'s <literal>\df</literal>
and <literal>\do</literal> commands to specify function and
operator argument types (Greg Sabino Mullane, Tom Lane)
</para>
<para>
This helps reduce the number of matches printed for overloaded names.
</para>
</listitem>
<listitem>
<!--
Author: Michael Paquier <michael@paquier.xyz>
2020-09-02 [07f386ede] Add access method names to \d[i|m|t]+ in psql
-->
<para>
Add an access method column to <application>psql</application>'s
<literal>\d[i|m|t]+</literal> output (Georgios Kokolatos)
</para>
</listitem>
<listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
2021-01-05 [7d80441d2] Allow psql's \dt and \di to show TOAST tables and their
-->
<para>
Allow <application>psql</application>'s <literal>\dt</literal>
and <literal>\di</literal> to show <acronym>TOAST</acronym>
tables and their indexes (Justin Pryzby)
</para>
</listitem>
<listitem>
<!--
Author: Tomas Vondra <tomas.vondra@postgresql.org>
2021-01-20 [ad600bba0] psql \dX: list extended statistics objects
-->
<para>
Add <application>psql</application> command <literal>\dX</literal>
to list extended statistics objects (Tatsuro Yamada)
</para>
</listitem>
<listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
2021-04-07 [a3027e1e7] Allow psql's \df and \do commands to specify argument ty
-->
<para>
Fix <application>psql</application>'s <literal>\dT</literal> to
understand array syntax and backend grammar aliases,
like <literal>int</literal> for <literal>integer</literal>
(Greg Sabino Mullane, Tom Lane)
</para>
</listitem>
<listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
2021-04-03 [55873a00e] Improve psql's behavior when the editor is exited withou
-->
<para>
When editing the previous query or a file with
<application>psql</application>'s <literal>\e</literal>, or using
<literal>\ef</literal> and <literal>\ev</literal>, ignore the
results if the editor exits without saving (Laurenz Albe)
</para>
<para>
Previously, such edits would load the previous query into
the query buffer, and typically execute it immediately. This was
deemed to be probably not what the user wants.
</para>
</listitem>
<listitem>
<!--
Author: Michael Paquier <michael@paquier.xyz>
2020-07-21 [c273d9d8c] Rework tab completion of COPY and \copy in psql
Author: Michael Paquier <michael@paquier.xyz>
2020-07-30 [f1af75c5f] Include partitioned tables for tab completion of VACUUM
Author: Michael Paquier <michael@paquier.xyz>
2020-08-11 [1f75b4541] Improve tab completion of REINDEX in psql
Author: Michael Paquier <michael@paquier.xyz>
2020-09-17 [7307df16a] Improve tab completion of IMPORT FOREIGN SCHEMA in psql
Author: Fujii Masao <fujii@postgresql.org>
2020-09-28 [0baf82fa0] Improve tab-completion for DEALLOCATE.
Author: Michael Paquier <michael@paquier.xyz>
2020-10-24 [0b46e82c0] Add tab completion for ALTER TABLE .. FORCE ROW LEVEL SE
Author: Michael Paquier <michael@paquier.xyz>
2020-11-18 [bf0aa7c4b] Add tab completion for CREATE [OR REPLACE] TRIGGER in ps
Author: Fujii Masao <fujii@postgresql.org>
2021-01-14 [3f238b882] Improve tab-completion for CLOSE, DECLARE, FETCH and MOV
Author: Thomas Munro <tmunro@postgresql.org>
2021-02-05 [e1c02d92a] Tab-complete CREATE DATABASE ... LOCALE.
Author: Michael Paquier <michael@paquier.xyz>
2021-02-17 [e6b8e83b9] Add psql completion for [ NO ] DEPENDS ON EXTENSION
Author: Thomas Munro <tmunro@postgresql.org>
2021-02-23 [5bc09a747] Tab-complete CREATE COLLATION.
Author: Fujii Masao <fujii@postgresql.org>
2021-02-25 [6b40d9bdb] Improve tab-completion for TRUNCATE.
Author: Michael Paquier <michael@paquier.xyz>
2021-03-19 [5b2266e33] Improve tab completion of IMPORT FOREIGN SCHEMA with \h
Author: Tom Lane <tgl@sss.pgh.pa.us>
2021-04-08 [d1fcbde57] Add support for tab-completion of type arguments in \df,
Author: Fujii Masao <fujii@postgresql.org>
2021-04-12 [81e094bdf] Support tab-complete for TRUNCATE on foreign tables.
Author: Michael Paquier <michael@paquier.xyz>
2021-04-21 [22b2dec31] Add CURRENT_ROLE to list of roles for tab completion of
Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
2021-04-26 [6dd1042ed] psql: tab-complete ALTER ... DETACH CONCURRENTLY / FINAL
Author: Michael Paquier <michael@paquier.xyz>
2021-05-13 [1906cc07d] Make saner the tab completion of INSERT and DELETE in ps
-->
<para>
Improve tab completion (Vignesh C, Michael Paquier, Justin Pryzby,
Georgios Kokolatos, Julien Rouhaud)
</para>
</listitem>
</itemizedlist>
</sect4>
</sect3>
<sect3>
<title>Server Applications</title>
<itemizedlist>
<listitem>
<!--
Author: Robert Haas <rhaas@postgresql.org>
2021-03-12 [970609283] Add pg_amcheck, a CLI for contrib/amcheck.
-->
<para>
Add command-line utility <link
linkend="app-pgamcheck"><application>pg_amcheck</application></link>
to simplify running <filename>contrib/amcheck</filename>
tests on many relations
(Mark Dilger)
</para>
</listitem>
<listitem>
<!--
Author: Magnus Hagander <magnus@hagander.net>
2021-01-17 [e09155bd6] Add - -no-instructions parameter to initdb
-->
<para>
Add <option>--no-instructions</option> option to <link
linkend="app-initdb"><application>initdb</application></link>
(Magnus Hagander)
</para>
<para>
This suppresses the server startup instructions that are normally
printed.
</para>
</listitem>
<listitem>
<!--
Author: Magnus Hagander <magnus@hagander.net>
2020-11-09 [8f113698b] Remove analyze_new_cluster script from pg_upgrade
-->
<para>
Stop <link
linkend="pgupgrade"><application>pg_upgrade</application></link>
from creating <filename>analyze_new_cluster</filename> script
(Magnus Hagander)
</para>
<para>
Instead, give comparable <link
linkend="app-vacuumdb"><application>vacuumdb</application></link>
instructions.
</para>
</listitem>
<listitem>
<!--
Author: Magnus Hagander <magnus@hagander.net>
2020-11-10 [d2e4bf688] Remove -o option to postmaster
-->
<para>
Remove support for the <link
linkend="app-postgres"><application>postmaster</application></link>
<option>-o</option> option (Magnus Hagander)
</para>
<para>
This option was unnecessary since all passed options could already
be specified directly.
</para>
</listitem>
</itemizedlist>
</sect3>
<sect3>
<title>Documentation</title>
<itemizedlist>
<listitem>
<!--
Author: Stephen Frost <sfrost@snowman.net>
2021-04-01 [c9c41c7a3] Rename Default Roles to Predefined Roles
-->
<para>
Rename "Default Roles" to <link
linkend="predefined-roles">"Predefined Roles"</link> (Bruce Momjian,
Stephen Frost)
</para>
</listitem>
<listitem>
<!--
Author: Peter Eisentraut <peter@eisentraut.org>
2020-06-16 [4c5cf5431] doc: Document factorial function
-->
<para>
Add documentation for the <link
linkend="function-factorial"><function>factorial()</function></link>
function (Peter Eisentraut)
</para>
<para>
With the removal of the ! operator in this release,
<function>factorial()</function> is the only built-in way to compute
a factorial.
</para>
</listitem>
</itemizedlist>
</sect3>
<sect3>
<title>Source Code</title>
<itemizedlist>
<listitem>
<!--
Author: Michael Paquier <michael@paquier.xyz>
2021-02-01 [fe61df7f8] Introduce - -with-ssl={openssl} as a configure option
-->
<para>
Add configure option <link
linkend="configure-options-features"><literal>--with-ssl={openssl}</literal></link>
to allow future choice of the SSL library to use (Daniel Gustafsson,
Michael Paquier)
</para>
<para>
The spelling <option>--with-openssl</option> is kept for
compatibility.
</para>
</listitem>
<listitem>
<!--
Author: Peter Eisentraut <peter@eisentraut.org>
2020-11-25 [c9f0624bc] Add support for abstract Unix-domain sockets
-->
<para>
Add support for <link linkend="guc-unix-socket-directories">abstract
Unix-domain sockets</link> (Peter Eisentraut)
</para>
<para>
This is currently supported on <productname>Linux</productname>
and <productname>Windows</productname>.
</para>
</listitem>
<listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
2020-10-09 [bed90759f] Fix our Windows stat() emulation to handle file sizes >
-->
<para>
Allow Windows to properly handle files larger than four gigabytes
(Juan José Santamaría Flecha)
</para>
<para>
For example this allows <link
linkend="sql-copy"><command>COPY,</command></link> <link
linkend="configure-options-misc"><acronym>WAL</acronym></link>
files, and relation segment files to be larger than four gigabytes.
</para>
</listitem>
<listitem>
<!--
Author: Peter Eisentraut <peter@eisentraut.org>
2021-01-06 [4656e3d66] Replace CLOBBER_CACHE_ALWAYS with run-time GUC
Author: Tom Lane <tgl@sss.pgh.pa.us>
2021-07-01 [d04770801] Add - -clobber-cache option to initdb, for CCA testing.
Author: Tom Lane <tgl@sss.pgh.pa.us>
2021-07-13 [6201fa3c1] Rename debug_invalidate_system_caches_always to debug_di
-->
<para>
Add server parameter <xref linkend="guc-debug-discard-caches"/>
to control cache flushing for test purposes (Craig Ringer)
</para>
<para>
Previously this behavior could only be set at compile time.
To invoke it during <application>initdb</application>, use the new
option <option>--discard-caches</option>.
</para>
</listitem>
<listitem>
<!--
Author: Peter Geoghegan <pg@bowt.ie>
2020-07-17 [1e0dfd166] Add Valgrind buffer access instrumentation.
Author: Peter Geoghegan <pg@bowt.ie>
2020-07-19 [46ef520b9] Mark buffers as defined to Valgrind consistently.
Author: Peter Geoghegan <pg@bowt.ie>
2020-07-19 [a766d6ca2] Avoid harmless Valgrind no-buffer-pin errors.
-->
<para>
Various improvements in <productname>valgrind</productname>
error detection ability (Álvaro Herrera, Peter Geoghegan)
</para>
</listitem>
<listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
2021-01-06 [ca8217c10] Add a test module for the regular expression package.
-->
<para>
Add a test module for the regular expression package (Tom Lane)
</para>
</listitem>
<listitem>
<!--
Author: Andres Freund <andres@anarazel.de>
2020-11-09 [6c57f2ed1] jit: Add support for LLVM 12.
-->
<para>
Add support for <productname>LLVM</productname> version 12
(Andres Freund)
</para>
</listitem>
<listitem>
<!--
Author: Michael Paquier <michael@paquier.xyz>
2020-12-04 [4f48a6fbe] Change SHA2 implementation based on OpenSSL to use EVP d
Author: Michael Paquier <michael@paquier.xyz>
2020-12-10 [b67b57a96] Refactor MD5 implementations according to new cryptohash
Author: Michael Paquier <michael@paquier.xyz>
2021-01-23 [a8ed6bb8f] Introduce SHA1 implementations in the cryptohash infrast
Author: Michael Paquier <michael@paquier.xyz>
2021-04-03 [e6bdfd970] Refactor HMAC implementations
-->
<para>
Change SHA1, SHA2, and MD5 hash computations to use the
<productname>OpenSSL</productname> <acronym>EVP API</acronym>
(Michael Paquier)
</para>
<para>
This is more modern and supports <acronym>FIPS</acronym> mode.
</para>
</listitem>
<listitem>
<!--
Author: Magnus Hagander <magnus@hagander.net>
2020-11-20 [16f96c74d] Remove ability to independently select random number gen
-->
<para>
Remove separate build-time control over the choice of random number
generator (Daniel Gustafsson)
</para>
<para>
This is now always determined by the choice of SSL library.
</para>
</listitem>
<listitem>
<!--
Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
2021-01-28 [6c5576075] Add direct conversion routines between EUC_TW and Big5.
-->
<para>
Add direct conversion routines between EUC_TW and Big5 encodings
(Heikki Linnakangas)
</para>
</listitem>
<listitem>
<!--
Author: Thomas Munro <tmunro@postgresql.org>
2020-11-20 [ca051d8b1] Add collation versions for FreeBSD.
-->
<para>
Add collation version support for <productname>FreeBSD</productname>
(Thomas Munro)
</para>
</listitem>
<listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
2020-08-01 [9f9682783] Invent "amadjustmembers" AM method for validating opclas
-->
<para>
Add <link
linkend="index-api"><structfield>amadjustmembers</structfield></link>
to the index access method <acronym>API</acronym> (Tom Lane)
</para>
<para>
This allows an index access method to provide validity checking
during creation of a new operator class or family.
</para>
</listitem>
<listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
2021-06-19 [6991e774e] Provide feature-test macros for libpq features added in
-->
<para>
Provide feature-test macros in <filename>libpq-fe.h</filename>
for recently-added <application>libpq</application> features
(Tom Lane, Álvaro Herrera)
</para>
<para>
Historically, applications have usually used compile-time checks
of <literal>PG_VERSION_NUM</literal> to test whether a feature is
available. But that's normally the server version, which might
not be a good guide to <application>libpq</application>'s
version. <filename>libpq-fe.h</filename> now
offers <literal>#define</literal> symbols denoting
application-visible features added in v14; the intent is to keep
adding symbols for such features in future versions.
</para>
</listitem>
</itemizedlist>
</sect3>
<sect3>
<title>Additional Modules</title>
<itemizedlist>
<listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
2020-12-11 [0ec5f7e78] Allow subscripting of hstore values.
-->
<para>
Allow subscripting of <link
linkend="hstore"><application>hstore</application></link> values
(Tom Lane, Dmitry Dolgov)
</para>
</listitem>
<listitem>
<!--
Author: Alexander Korotkov <akorotkov@postgresql.org>
2020-11-15 [935f66665] Handle equality operator in contrib/pg_trgm
-->
<para>
Allow GiST/GIN <link
linkend="pgtrgm"><application>pg_trgm</application></link> indexes
to do equality lookups (Julien Rouhaud)
</para>
<para>
This is similar to <literal>LIKE</literal> except no wildcards
are honored.
</para>
</listitem>
<listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
2021-03-06 [1265a9c8f] Add binary I/O capability for cube datatype.
-->
<para>
Allow the <link
linkend="cube"><application>cube</application></link> data type
to be transferred in binary mode (KaiGai Kohei)
</para>
</listitem>
<listitem>
<!--
Author: Peter Eisentraut <peter@eisentraut.org>
2020-06-30 [ee0202d55] pgstattuple: Have pgstattuple_approx accept TOAST tables
-->
<para>
Allow <link
linkend="pgstattuple"><function>pgstattuple_approx()</function></link>
to report on <acronym>TOAST</acronym> tables (Peter Eisentraut)
</para>
</listitem>
<listitem>
<!--
Author: Robert Haas <rhaas@postgresql.org>
2020-09-10 [34a947ca1] New contrib module, pg_surgery, with heap surgery functi
-->
<para>
Add contrib module <link
linkend="pgsurgery"><application>pg_surgery</application></link>
which allows changes to row visibility (Ashutosh Sharma)
</para>
<para>
This is useful for correcting database corruption.
</para>
</listitem>
<listitem>
<!--
Author: Robert Haas <rhaas@postgresql.org>
2020-09-24 [aecf5ee2b] Add new 'old_snapshot' contrib module.
-->
<para>
Add contrib module <link
linkend="oldsnapshot"><application>old_snapshot</application></link>
to report the <type>XID</type>/time mapping used by an active
<xref linkend="guc-old-snapshot-threshold"/> (Robert Haas)
</para>
</listitem>
<listitem>
<!--
Author: Robert Haas <rhaas@postgresql.org>
2020-10-22 [866e24d47] Extend amcheck to check heap pages.
-->
<para>
Allow <link
linkend="amcheck"><application>amcheck</application></link> to
also check heap pages (Mark Dilger)
</para>
<para>
Previously it only checked B-Tree index pages.
</para>
</listitem>
<listitem>
<!--
Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
2021-01-13 [756ab2912] Add functions to 'pageinspect' to inspect GiST indexes.
Author: Peter Geoghegan <pg@bowt.ie>
2021-02-14 [9e596b65f] Add "LP_DEAD item?" column to GiST pageinspect functions
-->
<para>
Allow <link
linkend="pageinspect"><application>pageinspect</application></link>
to inspect GiST indexes (Andrey Borodin, Heikki Linnakangas)
</para>
</listitem>
<listitem>
<!--
Author: Peter Eisentraut <peter@eisentraut.org>
2021-01-19 [f18aa1b20] pageinspect: Change block number arguments to bigint
-->
<para>
Change <application>pageinspect</application> block numbers
to be <link linkend="datatype-int"><type>bigints</type></link>
(Peter Eisentraut)
</para>
</listitem>
<listitem>
<!--
Author: Alexander Korotkov <akorotkov@postgresql.org>
2020-07-20 [d98c08cdc] Update btree_gist extension for parallel query
-->
<para>
Mark <link
linkend="btree-gist"><application>btree_gist</application></link>
functions as parallel safe (Steven Winfield)
</para>
</listitem>
</itemizedlist>
<sect4>
<title><link linkend="pgstatstatements">pg_stat_statements</link></title>
<itemizedlist>
<listitem>
<!--
Author: Bruce Momjian <bruce@momjian.us>
2021-04-07 [5fd9dfa5f] Move pg_stat_statements query jumbling to core.
-->
<para>
Move query hash computation from
<application>pg_stat_statements</application> to the core server
(Julien Rouhaud)
</para>
<para>
The new server parameter <xref linkend="guc-compute-query-id"/>'s
default of <literal>auto</literal> will automatically enable query
id computation when this extension is loaded.
</para>
</listitem>
<listitem>
<!--
Author: Magnus Hagander <magnus@hagander.net>
2021-04-08 [6b4d23fee] Track identical top vs nested queries independently in p
-->
<para>
Cause <application>pg_stat_statements</application> to track top
and nested statements separately (Julien Rohaud)
</para>
<para>
Previously, when tracking all statements, identical top and nested
statements were tracked as a single entry; but it seems more useful
to separate such usages.
</para>
</listitem>
<listitem>
<!--
Author: Fujii Masao <fujii@postgresql.org>
2020-07-29 [6023b7ea7] pg_stat_statements: track number of rows processed by so
Author: Fujii Masao <fujii@postgresql.org>
2020-11-12 [b62e6056a] pg_stat_statements: track number of rows processed by RE
-->
<para>
Add row counts for utility commands to
<application>pg_stat_statements</application> (Fujii Masao, Katsuragi
Yuta, Seino Yuki)
</para>
</listitem>
<listitem>
<!--
Author: Fujii Masao <fujii@postgresql.org>
2020-11-26 [9fbc3f318] pg_stat_statements: Track number of times pgss entries w
Author: Fujii Masao <fujii@postgresql.org>
2020-12-18 [2e0fedf03] pg_stat_statements: Track time at which all statistics w
-->
<para>
Add <structname>pg_stat_statements_info</structname> system view
to show <application>pg_stat_statements</application> activity
(Katsuragi Yuta, Yuki Seino, Naoki Nakamichi)
</para>
</listitem>
</itemizedlist>
</sect4>
<sect4>
<title><link linkend="postgres-fdw"><application>postgres_fdw</application></link></title>
<itemizedlist>
<listitem>
<!--
Author: Tomas Vondra <tomas.vondra@postgresql.org>
2021-01-20 [b663a4136] Implement support for bulk inserts in postgres_fdw
Author: Tomas Vondra <tomas.vondra@postgresql.org>
2021-02-18 [927f453a9] Fix tuple routing to initialize batching only for insert
-->
<para>
Allow <application>postgres_fdw</application> to
<command>INSERT</command> rows in bulk (Takayuki Tsunakawa, Tomas
Vondra, Amit Langote)
</para>
</listitem>
<listitem>
<!--
Author: Fujii Masao <fujii@postgresql.org>
2021-04-07 [a3740c48e] postgres_fdw: Allow partitions specified in LIMIT TO to
-->
<para>
Allow <application>postgres_fdw</application>
to import table partitions if specified by <link
linkend="sql-importforeignschema"><command>IMPORT FOREIGN SCHEMA
... LIMIT TO</command></link> (Matthias van de Meent)
</para>
<para>
By default, only the root of a partitioned table is imported.
</para>
</listitem>
<listitem>
<!--
Author: Fujii Masao <fujii@postgresql.org>
2021-01-18 [708d165dd] postgres_fdw: Add function to list cached connections to
-->
<para>
Add <application>postgres_fdw</application> function
<function>postgres_fdw_get_connections()</function> to report open
foreign server connections (Bharath Rupireddy)
</para>
</listitem>
<listitem>
<!--
Author: Fujii Masao <fujii@postgresql.org>
2021-04-02 [b1be3074a] postgres_fdw: Add option to control whether to keep conn
-->
<para>
Allow control over whether foreign servers keep connections open
after transaction completion (Bharath Rupireddy)
</para>
<para>
This is controlled by <varname>keep_connections</varname> and
defaults to on.
</para>
</listitem>
<listitem>
<!--
Author: Fujii Masao <fujii@postgresql.org>
2020-10-06 [32a9c0bdf] postgres_fdw: reestablish new connection if cached one i
Author: Fujii Masao <fujii@postgresql.org>
2020-10-16 [7fc1a81e4] postgres_fdw: Restructure connection retry logic.
-->
<para>
Allow <application>postgres_fdw</application> to reestablish
foreign server connections if necessary (Bharath Rupireddy)
</para>
<para>
Previously foreign server restarts could cause foreign table
access errors.
</para>
</listitem>
<listitem>
<!--
Author: Fujii Masao <fujii@postgresql.org>
2021-01-26 [411ae6499] postgres_fdw: Add functions to discard cached connection
-->
<para>
Add <application>postgres_fdw</application> functions to discard
cached connections (Bharath Rupireddy)
</para>
</listitem>
</itemizedlist>
</sect4>
</sect3>
</sect2>
<sect2 id="release-14-acknowledgements">
<title>Acknowledgments</title>
<para>
The following individuals (in alphabetical order) have contributed
to this release as patch authors, committers, reviewers, testers,
or reporters of issues.
</para>
<simplelist>
<member>Abhijit Menon-Sen</member>
<member>Ádám Balogh</member>
<member>Adrian Ho</member>
<member>Ahsan Hadi</member>
<member>Ajin Cherian</member>
<member>Aleksander Alekseev</member>
<member>Alessandro Gherardi</member>
<member>Alex Kozhemyakin</member>
<member>Alexander Korotkov</member>
<member>Alexander Lakhin</member>
<member>Alexander Nawratil</member>
<member>Alexander Pyhalov</member>
<member>Alexandra Wang</member>
<member>Alexey Bashtanov</member>
<member>Alexey Bulgakov</member>
<member>Alexey Kondratov</member>
<member>Álvaro Herrera</member>
<member>Amit Kapila</member>
<member>Amit Khandekar</member>
<member>Amit Langote</member>
<member>Amul Sul</member>
<member>Anastasia Lubennikova</member>
<member>Andreas Grob</member>
<member>Andreas Kretschmer</member>
<member>Andreas Seltenreich</member>
<member>Andreas Wicht</member>
<member>Andres Freund</member>
<member>Andrew Bille</member>
<member>Andrew Dunstan</member>
<member>Andrew Gierth</member>
<member>Andrey Borodin</member>
<member>Andrey Lepikhov</member>
<member>Andy Fan</member>
<member>Anton Voloshin</member>
<member>Antonin Houska</member>
<member>Arne Roland</member>
<member>Arseny Sher</member>
<member>Arthur Nascimento</member>
<member>Arthur Zakirov</member>
<member>Ashutosh Bapat</member>
<member>Ashutosh Sharma</member>
<member>Ashwin Agrawal</member>
<member>Asif Rehman</member>
<member>Asim Praveen</member>
<member>Atsushi Torikoshi</member>
<member>Aya Iwata</member>
<member>Barry Pederson</member>
<member>Bas Poot</member>
<member>Bauyrzhan Sakhariyev</member>
<member>Beena Emerson</member>
<member>Benoît Lobréau</member>
<member>Bernd Helmle</member>
<member>Bernhard M. Wiedemann</member>
<member>Bertrand Drouvot</member>
<member>Bharath Rupireddy</member>
<member>Boris Kolpackov</member>
<member>Brar Piening</member>
<member>Brian Ye</member>
<member>Bruce Momjian</member>
<member>Bryn Llewellyn</member>
<member>Cameron Daniel</member>
<member>Chapman Flack</member>
<member>Charles Samborski</member>
<member>Charlie Hornsby</member>
<member>Chen Jiaoqian</member>
<member>Chris Wilson</member>
<member>Christian Quest</member>
<member>Christoph Berg</member>
<member>Christophe Courtois</member>
<member>Corey Huinker</member>
<member>Craig Ringer</member>
<member>Dagfinn Ilmari Mannsåker</member>
<member>Dana Burd</member>
<member>Daniel Cherniy</member>
<member>Daniel Gustafsson</member>
<member>Daniel Vérité</member>
<member>Daniel Westermann</member>
<member>Daniele Varrazzo</member>
<member>Dar Alathar-Yemen</member>
<member>Darafei Praliaskouski</member>
<member>Dave Cramer</member>
<member>David Christensen</member>
<member>David Fetter</member>
<member>David G. Johnston</member>
<member>David Geier</member>
<member>David Gilman</member>
<member>David Pirotte</member>
<member>David Rowley</member>
<member>David Steele</member>
<member>David Turon</member>
<member>David Zhang</member>
<member>Dean Rasheed</member>
<member>Denis Patron</member>
<member>Dian Fay</member>
<member>Dilip Kumar</member>
<member>Dimitri Nüscheler</member>
<member>Dmitriy Kuzmin</member>
<member>Dmitry Dolgov</member>
<member>Dmitry Marakasov</member>
<member>Domagoj Smoljanovic</member>
<member>Dong Wook</member>
<member>Douglas Doole</member>
<member>Duncan Sands</member>
<member>Edmund Horner</member>
<member>Edson Richter</member>
<member>Egor Rogov</member>
<member>Ekaterina Kiryanova</member>
<member>Elena Indrupskaya</member>
<member>Emil Iggland</member>
<member>Emre Hasegeli</member>
<member>Eric Thinnes</member>
<member>Erik Rijkers</member>
<member>Erwin Brandstetter</member>
<member>Etienne Stalmans</member>
<member>Etsuro Fujita</member>
<member>Eugen Konkov</member>
<member>Euler Taveira</member>
<member>Fabien Coelho</member>
<member>Fabrízio de Royes Mello</member>
<member>Federico Caselli</member>
<member>Felix Lechner</member>
<member>Filip Gospodinov</member>
<member>Floris Van Nee</member>
<member>Frank Gagnepain</member>
<member>Frits Jalvingh</member>
<member>Georgios Kokolatos</member>
<member>Greg Nancarrow</member>
<member>Greg Rychlewski</member>
<member>Greg Sabino Mullane</member>
<member>Gregory Smith</member>
<member>Grigory Smolkin</member>
<member>Guillaume Lelarge</member>
<member>Guy Burgess</member>
<member>Guyren Howe</member>
<member>Haiying Tang</member>
<member>Hamid Akhtar</member>
<member>Hans Buschmann</member>
<member>Hao Wu</member>
<member>Haribabu Kommi</member>
<member>Harisai Hari</member>
<member>Hayato Kuroda</member>
<member>Heath Lord</member>
<member>Heikki Linnakangas</member>
<member>Henry Hinze</member>
<member>Herwig Goemans</member>
<member>Himanshu Upadhyaya</member>
<member>Hironobu Suzuki</member>
<member>Hiroshi Inoue</member>
<member>Hisanori Kobayashi</member>
<member>Honza Horak</member>
<member>Hou Zhijie</member>
<member>Hubert Lubaczewski</member>
<member>Hubert Zhang</member>
<member>Ian Barwick</member>
<member>Ibrar Ahmed</member>
<member>Ildus Kurbangaliev</member>
<member>Isaac Morland</member>
<member>Israel Barth</member>
<member>Itamar Gafni</member>
<member>Jacob Champion</member>
<member>Jaime Casanova</member>
<member>Jaime Soler</member>
<member>Jakub Wartak</member>
<member>James Coleman</member>
<member>James Hilliard</member>
<member>James Hunter</member>
<member>James Inform</member>
<member>Jan Mussler</member>
<member>Japin Li</member>
<member>Jasen Betts</member>
<member>Jason Harvey</member>
<member>Jason Kim</member>
<member>Jeevan Ladhe</member>
<member>Jeff Davis</member>
<member>Jeff Janes</member>
<member>Jelte Fennema</member>
<member>Jeremy Evans</member>
<member>Jeremy Finzel</member>
<member>Jeremy Smith</member>
<member>Jesse Kinkead</member>
<member>Jesse Zhang</member>
<member>Jie Zhang</member>
<member>Jim Doty</member>
<member>Jim Nasby</member>
<member>Jimmy Angelakos</member>
<member>Jimmy Yih</member>
<member>Jiri Fejfar</member>
<member>Joe Conway</member>
<member>Joel Jacobson</member>
<member>John Naylor</member>
<member>John Thompson</member>
<member>Jonathan Katz</member>
<member>Josef Šimánek</member>
<member>Joseph Nahmias</member>
<member>Josh Berkus</member>
<member>Juan José Santamaría Flecha</member>
<member>Julien Rouhaud</member>
<member>Junfeng Yang</member>
<member>Jürgen Purtz</member>
<member>Justin Pryzby</member>
<member>Kazutaka Onishi</member>
<member>Keisuke Kuroda</member>
<member>Kelly Min</member>
<member>Kensuke Okamura</member>
<member>Kevin Sweet</member>
<member>Kevin Yeap</member>
<member>Kirk Jamison</member>
<member>Kohei KaiGai</member>
<member>Konstantin Knizhnik</member>
<member>Kota Miyake</member>
<member>Krzysztof Gradek</member>
<member>Kuntal Ghosh</member>
<member>Kyle Kingsbury</member>
<member>Kyotaro Horiguchi</member>
<member>Laurent Hasson</member>
<member>Laurenz Albe</member>
<member>Lee Dong Wook</member>
<member>Li Japin</member>
<member>Liu Huailing</member>
<member>Luc Vlaming</member>
<member>Ludovic Kuty</member>
<member>Luis Roberto</member>
<member>Lukas Eder</member>
<member>Ma Liangzhu</member>
<member>Maciek Sakrejda</member>
<member>Madan Kumar</member>
<member>Magnus Hagander</member>
<member>Mahendra Singh Thalor</member>
<member>Maksim Milyutin</member>
<member>Marc Boeren</member>
<member>Marcin Krupowicz</member>
<member>Marco Atzeri</member>
<member>Marek Szuba</member>
<member>Marina Polyakova</member>
<member>Mario Emmenlauer</member>
<member>Mark Dilger</member>
<member>Mark Wong</member>
<member>Mark Zhao</member>
<member>Markus Wanner</member>
<member>Martín Marqués</member>
<member>Martin Visser</member>
<member>Masahiko Sawada</member>
<member>Masahiro Ikeda</member>
<member>Masao Fujii</member>
<member>Mathis Rudolf</member>
<member>Matthias van de Meent</member>
<member>Matthieu Garrigues</member>
<member>Matthijs van der Vleuten</member>
<member>Maxim Orlov</member>
<member>Melanie Plageman</member>
<member>Merlin Moncure</member>
<member>Michael Banck</member>
<member>Michael Brown</member>
<member>Michael Meskes</member>
<member>Michael Paquier</member>
<member>Michael Paul Killian</member>
<member>Michael Powers</member>
<member>Michael Vastola</member>
<member>Michail Nikolaev</member>
<member>Michal Albrycht</member>
<member>Mikael Gustavsson</member>
<member>Movead Li</member>
<member>Muhammad Usama</member>
<member>Nagaraj Raj</member>
<member>Naoki Nakamichi</member>
<member>Nathan Bossart</member>
<member>Nathan Long</member>
<member>Nazli Ugur Koyluoglu</member>
<member>Neha Sharma</member>
<member>Neil Chen</member>
<member>Nick Cleaton</member>
<member>Nico Williams</member>
<member>Nikhil Benesch</member>
<member>Nikhil Sontakke</member>
<member>Nikita Glukhov</member>
<member>Nikita Konev</member>
<member>Nikolai Berkoff</member>
<member>Nikolay Samokhvalov</member>
<member>Nikolay Shaplov</member>
<member>Nitin Jadhav</member>
<member>Noah Misch</member>
<member>Noriyoshi Shinoda</member>
<member>Odin Ugedal</member>
<member>Oleg Bartunov</member>
<member>Oleg Samoilov</member>
<member>Önder Kalaci</member>
<member>Pascal Legrand</member>
<member>Paul Förster</member>
<member>Paul Guo</member>
<member>Paul Jungwirth</member>
<member>Paul Martinez</member>
<member>Paul Sivash</member>
<member>Pavan Deolasee</member>
<member>Pavel Boev</member>
<member>Pavel Borisov</member>
<member>Pavel Luzanov</member>
<member>Pavel Stehule</member>
<member>Pengcheng Liu</member>
<member>Peter Eisentraut</member>
<member>Peter Geoghegan</member>
<member>Peter Smith</member>
<member>Peter Vandivier</member>
<member>Petr Fedorov</member>
<member>Petr Jelínek</member>
<member>Phil Krylov</member>
<member>Philipp Gramzow</member>
<member>Philippe Beaudoin</member>
<member>Phillip Menke</member>
<member>Pierre Giraud</member>
<member>Prabhat Sahu</member>
<member>Quan Zongliang</member>
<member>Rafi Shamim</member>
<member>Rahila Syed</member>
<member>Rajkumar Raghuwanshi</member>
<member>Ranier Vilela</member>
<member>Regina Obe</member>
<member>Rémi Lapeyre</member>
<member>Robert Foggia</member>
<member>Robert Grange</member>
<member>Robert Haas</member>
<member>Robert Kahlert</member>
<member>Robert Sosinski</member>
<member>Robert Treat</member>
<member>Robin Abbi</member>
<member>Robins Tharakan</member>
<member>Roger Mason</member>
<member>Rohit Bhogate</member>
<member>Roman Zharkov</member>
<member>Ron L. Johnson</member>
<member>Ronan Dunklau</member>
<member>Ryan Lambert</member>
<member>Ryo Matsumura</member>
<member>Saeed Hubaishan</member>
<member>Sait Talha Nisanci</member>
<member>Sandro Mani</member>
<member>Santosh Udupi</member>
<member>Scott Ribe</member>
<member>Sehrope Sarkuni</member>
<member>Sergei Kornilov</member>
<member>Sergey Bernikov</member>
<member>Sergey Cherkashin</member>
<member>Sergey Koposov</member>
<member>Sergey Shinderuk</member>
<member>Sergey Zubkovsky</member>
<member>Shawn Wang</member>
<member>Shay Rojansky</member>
<member>Shi Yu</member>
<member>Shinya Kato</member>
<member>Shinya Okano</member>
<member>Sigrid Ehrenreich</member>
<member>Simon Norris</member>
<member>Simon Riggs</member>
<member>Sofoklis Papasofokli</member>
<member>Soumyadeep Chakraborty</member>
<member>Stas Kelvich</member>
<member>Stephan Springl</member>
<member>Stéphane Lorek</member>
<member>Stephen Frost</member>
<member>Steven Winfield</member>
<member>Surafel Temesgen</member>
<member>Suraj Kharage</member>
<member>Sven Klemm</member>
<member>Takamichi Osumi</member>
<member>Takashi Menjo</member>
<member>Takayuki Tsunakawa</member>
<member>Tang Haiying</member>
<member>Tatsuhito Kasahara</member>
<member>Tatsuo Ishii</member>
<member>Tatsuro Yamada</member>
<member>Theodor Arsenij Larionov-Trichkin</member>
<member>Thomas Kellerer</member>
<member>Thomas Munro</member>
<member>Thomas Trenz</member>
<member>Tijs van Dam</member>
<member>Tom Ellis</member>
<member>Tom Gottfried</member>
<member>Tom Lane</member>
<member>Tom Vijlbrief</member>
<member>Tomas Barton</member>
<member>Tomas Vondra</member>
<member>Tomohiro Hiramitsu</member>
<member>Tony Reix</member>
<member>Vaishnavi Prabakaran</member>
<member>Valentin Gatien-Baron</member>
<member>Victor Wagner</member>
<member>Victor Yegorov</member>
<member>Vignesh C</member>
<member>Vik Fearing</member>
<member>Vitaly Ustinov</member>
<member>Vladimir Sitnikov</member>
<member>Vyacheslav Shablistyy</member>
<member>Wang Shenhao</member>
<member>Wei Wang</member>
<member>Wells Oliver</member>
<member>Wenjing Zeng</member>
<member>Wolfgang Walther</member>
<member>Yang Lin</member>
<member>Yanliang Lei</member>
<member>Yaoguang Chen</member>
<member>Yaroslav Pashinsky</member>
<member>Yaroslav Schekin</member>
<member>Yasushi Yamashita</member>
<member>Yoran Heling</member>
<member>YoungHwan Joo</member>
<member>Yugo Nagata</member>
<member>Yuki Seino</member>
<member>Yukun Wang</member>
<member>Yulin Pei</member>
<member>Yura Sokolov</member>
<member>Yuta Katsuragi</member>
<member>Yuta Kondo</member>
<member>Yuzuko Hosoya</member>
<member>Zhihong Yu</member>
<member>Zhiyong Wu</member>
<member>Zsolt Ero</member>
</simplelist>
</sect2>
</sect1>