<!-- doc/src/sgml/release-9.6.sgml -->
<!-- See header comment in release.sgml about typical markup -->
+ <sect1 id="release-9-6-22">
+ <title>Release 9.6.22</title>
+
+ <formalpara>
+ <title>Release date:</title>
+ <para>2021-05-13</para>
+ </formalpara>
+
+ <para>
+ This release contains a variety of fixes from 9.6.21.
+ For information about new features in the 9.6 major release, see
+ <xref linkend="release-9-6">.
+ </para>
+
+ <para>
+ The <productname>PostgreSQL</productname> community will stop
+ releasing updates for the 9.6.X release series in November 2021.
+ Users are encouraged to update to a newer release branch soon.
+ </para>
+
+ <sect2>
+ <title>Migration to Version 9.6.22</title>
+
+ <para>
+ A dump/restore is not required for those running 9.6.X.
+ </para>
+
+ <para>
+ However, if you are upgrading from a version earlier than 9.6.21,
+ see <xref linkend="release-9-6-21">.
+ </para>
+ </sect2>
+
+ <sect2>
+ <title>Changes</title>
+
+ <itemizedlist>
+
+ <listitem>
+<!--
+Branch: master [69d5ca484] 2021-04-13 15:10:18 -0400
+Branch: REL_13_STABLE [c39aa1e87] 2021-04-13 15:10:18 -0400
+Branch: REL_12_STABLE [a7fcb6285] 2021-04-13 15:10:18 -0400
+Branch: REL_11_STABLE [c7f0275fb] 2021-04-13 15:10:18 -0400
+Branch: REL_10_STABLE [46b6635b7] 2021-04-13 15:10:18 -0400
+Branch: REL9_6_STABLE [041f4efd2] 2021-04-13 15:10:18 -0400
+-->
+ <para>
+ Allow <literal>ALTER ROLE/DATABASE ... SET</literal> to set
+ the <varname>role</varname>, <varname>session_authorization</varname>,
+ and <varname>temp_buffers</varname> parameters (Tom Lane)
+ </para>
+
+ <para>
+ Previously, over-eager validity checks might reject these commands,
+ even if the values would have worked when used later. This created
+ a command ordering hazard for dump/reload and upgrade scenarios.
+ </para>
+ </listitem>
+
+ <listitem>
+<!--
+Branch: master [c402b02b9] 2021-04-12 14:37:49 -0400
+Branch: REL_13_STABLE [8a7bd1e6c] 2021-04-12 14:37:22 -0400
+Branch: REL_12_STABLE [27011bcff] 2021-04-12 14:37:22 -0400
+Branch: REL_11_STABLE [fb2cca828] 2021-04-12 14:37:22 -0400
+Branch: REL_10_STABLE [4b0aecee8] 2021-04-12 14:37:22 -0400
+Branch: REL9_6_STABLE [a6158a4d9] 2021-04-12 14:37:22 -0400
+-->
+ <para>
+ Fix bug with coercing the result of a <literal>COLLATE</literal>
+ expression to a non-collatable type (Tom Lane)
+ </para>
+
+ <para>
+ This led to a parse tree in which the <literal>COLLATE</literal>
+ appears to be applied to a non-collatable value. While that
+ normally has no real impact (since <literal>COLLATE</literal> has no
+ effect at runtime), it was possible to construct views that would be
+ rejected during dump/reload.
+ </para>
+ </listitem>
+
+ <listitem>
+<!--
+Branch: master [2efcd502e] 2021-04-30 14:10:26 -0400
+Branch: REL_13_STABLE [4d225ba0e] 2021-04-30 14:10:26 -0400
+Branch: REL_12_STABLE [89768ee69] 2021-04-30 14:10:26 -0400
+Branch: REL_11_STABLE [ebc2ff076] 2021-04-30 14:10:26 -0400
+Branch: REL_10_STABLE [0627f3630] 2021-04-30 14:10:26 -0400
+Branch: REL9_6_STABLE [73bad52a9] 2021-04-30 14:10:26 -0400
+-->
+ <para>
+ Disallow calling window functions and procedures via
+ the <quote>fast path</quote> wire protocol message (Tom Lane)
+ </para>
+
+ <para>
+ Only plain functions are supported here. While trying to call
+ an aggregate function failed already, calling a window function
+ would crash, and calling a procedure would work only if the
+ procedure did no transaction control.
+ </para>
+ </listitem>
+
+ <listitem>
+<!--
+Branch: master [f7aab36d6] 2021-04-28 11:17:58 +0900
+Branch: REL_13_STABLE [f3c453787] 2021-04-28 11:18:17 +0900
+Branch: REL_12_STABLE [7e76cb1d8] 2021-04-28 11:18:20 +0900
+Branch: REL_11_STABLE [5b717e13c] 2021-04-28 11:18:24 +0900
+Branch: REL_10_STABLE [90c9bad30] 2021-04-28 11:18:28 +0900
+Branch: REL9_6_STABLE [6e41ff056] 2021-04-28 11:18:33 +0900
+Branch: master [f93f0b5b2] 2021-04-28 11:58:08 +0900
+Branch: REL_13_STABLE [a928297bc] 2021-04-28 11:58:43 +0900
+Branch: REL_12_STABLE [85a3e0be1] 2021-04-28 11:58:46 +0900
+Branch: REL_11_STABLE [669f73666] 2021-04-28 11:58:50 +0900
+Branch: REL_10_STABLE [b797918d2] 2021-04-28 11:58:55 +0900
+Branch: REL9_6_STABLE [0d05a3a1d] 2021-04-28 11:59:00 +0900
+-->
+ <para>
+ Extend <function>pg_identify_object_as_address()</function>
+ to support event triggers (Joel Jacobson)
+ </para>
+ </listitem>
+
+ <listitem>
+<!--
+Branch: master [7a3972597] 2021-04-12 11:30:50 +0900
+Branch: REL_13_STABLE [be79debd9] 2021-04-12 11:31:26 +0900
+Branch: REL_12_STABLE [82dd5706e] 2021-04-12 11:31:30 +0900
+Branch: REL_11_STABLE [5656f2c3d] 2021-04-12 11:31:35 +0900
+Branch: REL_10_STABLE [1cc110f68] 2021-04-12 11:31:40 +0900
+Branch: REL9_6_STABLE [6540322fa] 2021-04-12 11:31:46 +0900
+-->
+ <para>
+ Fix <function>to_char()</function>'s handling of Roman-numeral month
+ format codes with negative intervals (Julien Rouhaud)
+ </para>
+
+ <para>
+ Previously, such cases would usually cause a crash.
+ </para>
+ </listitem>
+
+ <listitem>
+<!--
+Branch: master [b5a66e735] 2021-02-18 22:38:55 -0500
+Branch: REL_13_STABLE [bf9d3a5f8] 2021-02-18 22:38:55 -0500
+Branch: REL_12_STABLE [e7cddb5f2] 2021-02-18 22:38:55 -0500
+Branch: REL_11_STABLE [6e6fecf49] 2021-02-18 22:38:55 -0500
+Branch: REL_10_STABLE [b06450979] 2021-02-18 22:38:55 -0500
+Branch: REL9_6_STABLE [ab208421e] 2021-02-18 22:38:55 -0500
+-->
+ <para>
+ Fix use of uninitialized value while parsing an
+ <literal>\{<replaceable>m</replaceable>,<replaceable>n</replaceable>\}</literal>
+ quantifier in a BRE-mode regular expression (Tom Lane)
+ </para>
+
+ <para>
+ This error could cause the quantifier to act non-greedy, that is
+ behave like an
+ <literal>{<replaceable>m</replaceable>,<replaceable>n</replaceable>}?</literal>
+ quantifier would do in full regular expressions.
+ </para>
+ </listitem>
+
+ <listitem>
+<!--
+Branch: master [ae4867ec7] 2021-02-12 16:26:47 -0500
+Branch: REL_13_STABLE [3a02d68a9] 2021-02-12 16:26:47 -0500
+Branch: REL_12_STABLE [0347470b3] 2021-02-12 16:26:47 -0500
+Branch: REL_11_STABLE [a28df6fa3] 2021-02-12 16:26:47 -0500
+Branch: REL_10_STABLE [374f1cefe] 2021-02-12 16:26:47 -0500
+Branch: REL9_6_STABLE [f4d781dae] 2021-02-12 16:26:47 -0500
+-->
+ <para>
+ Avoid divide-by-zero when estimating selectivity of a regular
+ expression with a very long fixed prefix (Tom Lane)
+ </para>
+
+ <para>
+ This typically led to a <literal>NaN</literal> selectivity value,
+ causing assertion failures or strange planner behavior.
+ </para>
+ </listitem>
+
+ <listitem>
+<!--
+Branch: master [23607a815] 2021-04-07 15:58:36 +0200
+Branch: REL_13_STABLE [1aad1d181] 2021-04-07 15:59:30 +0200
+Branch: REL_12_STABLE [847612fda] 2021-04-07 16:01:27 +0200
+Branch: REL_11_STABLE [7d3a53461] 2021-04-07 16:02:51 +0200
+Branch: REL_10_STABLE [e4f251be7] 2021-04-07 16:04:05 +0200
+Branch: REL9_6_STABLE [df97ee6ea] 2021-04-07 16:05:21 +0200
+-->
+ <para>
+ Fix access-off-the-end-of-the-table error in BRIN index bitmap scans
+ (Tomas Vondra)
+ </para>
+
+ <para>
+ If the page range size used by a BRIN index isn't a power of two,
+ there were corner cases in which a bitmap scan could try to fetch
+ pages past the actual end of the table, leading to <quote>could not
+ open file</quote> errors.
+ </para>
+ </listitem>
+
+ <listitem>
+<!--
+Branch: master [ad8b67492] 2021-04-06 02:25:37 +0900
+Branch: REL_13_STABLE [e7bcfd717] 2021-04-06 02:27:11 +0900
+Branch: REL_12_STABLE [dd5b7e486] 2021-04-06 02:27:22 +0900
+Branch: REL_11_STABLE [b59d3abaf] 2021-04-06 02:27:30 +0900
+Branch: REL_10_STABLE [b9cf9d7d3] 2021-04-06 02:27:39 +0900
+Branch: REL9_6_STABLE [e3bf96216] 2021-04-06 02:27:48 +0900
+-->
+ <para>
+ Ensure that locks are released while shutting down a standby
+ server's startup process (Fujii Masao)
+ </para>
+
+ <para>
+ When a standby server is shut down while still in recovery, some
+ locks might be left held. This causes assertion failures in debug
+ builds; it's unclear whether any serious consequence could occur
+ in production builds.
+ </para>
+ </listitem>
+
+ <listitem>
+<!--
+Branch: master [f900a79ec] 2021-02-15 16:04:59 +1300
+Branch: REL_13_STABLE [6c23e5ae9] 2021-02-15 16:05:42 +1300
+Branch: REL_12_STABLE [a27f3a7f4] 2021-02-15 16:06:18 +1300
+Branch: REL_11_STABLE [1fefe8879] 2021-02-15 16:06:25 +1300
+Branch: REL_10_STABLE [800131df7] 2021-02-15 16:08:24 +1300
+Branch: REL9_6_STABLE [09a3b19e3] 2021-02-15 16:09:14 +1300
+-->
+ <para>
+ Ensure we default to <varname>wal_sync_method</varname>
+ = <literal>fdatasync</literal> on recent FreeBSD (Thomas Munro)
+ </para>
+
+ <para>
+ FreeBSD 13 supports <literal>open_datasync</literal>, which would
+ normally become the default choice. However, it's unclear whether
+ that is actually an improvement for Postgres, so preserve the
+ existing default for now.
+ </para>
+ </listitem>
+
+ <listitem>
+<!--
+Branch: master [637668fb1] 2021-02-15 14:27:33 +1300
+Branch: REL_13_STABLE [9fe40913c] 2021-02-15 14:20:42 +1300
+Branch: REL_12_STABLE [840eda04e] 2021-02-15 14:20:52 +1300
+Branch: REL_11_STABLE [acafdd9ed] 2021-02-15 14:21:01 +1300
+Branch: REL_10_STABLE [4b426f77c] 2021-02-15 14:22:08 +1300
+Branch: REL9_6_STABLE [8a07e5bd8] 2021-02-15 14:22:19 +1300
+-->
+ <para>
+ Ensure we finish cleaning up when interrupted while detaching a DSM
+ segment (Thomas Munro)
+ </para>
+
+ <para>
+ This error could result in temporary files not being cleaned up
+ promptly after a parallel query.
+ </para>
+ </listitem>
+
+ <listitem>
+<!--
+Branch: master [377b7a830] 2021-03-18 22:22:47 -0400
+Branch: REL_13_STABLE [642b0b69b] 2021-03-18 22:09:41 -0400
+Branch: REL_12_STABLE [fc552f868] 2021-03-18 22:09:41 -0400
+Branch: REL_11_STABLE [26a3ae06d] 2021-03-18 22:09:41 -0400
+Branch: REL_10_STABLE [5058e95a6] 2021-03-18 22:09:41 -0400
+Branch: REL9_6_STABLE [7e2521770] 2021-03-18 22:09:41 -0400
+Branch: master [d303849b0] 2021-03-18 22:22:47 -0400
+Branch: REL_13_STABLE [eba939551] 2021-03-18 21:44:43 -0400
+Branch: REL_12_STABLE [92bc14a10] 2021-03-18 21:44:43 -0400
+Branch: REL_11_STABLE [099d2914f] 2021-03-18 21:44:43 -0400
+Branch: REL_10_STABLE [0b618ddf8] 2021-03-18 21:44:43 -0400
+Branch: REL9_6_STABLE [09e961929] 2021-03-18 21:44:43 -0400
+-->
+ <para>
+ Fix assorted minor memory leaks in the server (Tom Lane, Andres Freund)
+ </para>
+ </listitem>
+
+ <listitem>
+<!--
+Branch: master [51c54bb60] 2021-03-11 14:43:45 -0500
+Branch: REL_13_STABLE [3580b4a0c] 2021-03-11 14:43:45 -0500
+Branch: REL_12_STABLE [56defbdd0] 2021-03-11 14:43:45 -0500
+Branch: REL_11_STABLE [d3a557894] 2021-03-11 14:43:45 -0500
+Branch: REL_10_STABLE [d2be6cdc5] 2021-03-11 14:43:45 -0500
+Branch: REL9_6_STABLE [a98e53e10] 2021-03-11 14:43:45 -0500
+-->
+ <para>
+ Prevent infinite loop in <application>libpq</application>
+ if a ParameterDescription message with a corrupt length is received
+ (Tom Lane)
+ </para>
+ </listitem>
+
+ <listitem>
+<!--
+Branch: master [ea8013854] 2021-03-23 14:27:50 -0400
+Branch: REL_13_STABLE [c6eac71a8] 2021-03-23 14:27:50 -0400
+Branch: REL_12_STABLE [beac4bd65] 2021-03-23 14:27:50 -0400
+Branch: REL_11_STABLE [d75edab42] 2021-03-23 14:27:50 -0400
+Branch: REL_10_STABLE [d5a905ed5] 2021-03-23 14:27:50 -0400
+Branch: REL9_6_STABLE [4f670c64e] 2021-03-23 14:27:50 -0400
+-->
+ <para>
+ Fix <application>psql</application> to restore the previous behavior
+ of <literal>\connect
+ service=<replaceable>something</replaceable></literal> (Tom Lane)
+ </para>
+
+ <para>
+ A previous bug fix caused environment variables (such
+ as <varname>PGPORT</varname>) to override entries in the service
+ file in this context. Restore the previous behavior, in which the
+ priority is the other way around.
+ </para>
+ </listitem>
+
+ <listitem>
+<!--
+Branch: master [48d67fd89] 2021-03-12 12:20:15 -0500
+Branch: REL_13_STABLE [6ed059933] 2021-03-12 12:20:15 -0500
+Branch: REL_12_STABLE [60e5c2b14] 2021-03-12 12:20:15 -0500
+Branch: REL_11_STABLE [33aa7d13d] 2021-03-12 12:20:15 -0500
+Branch: REL_10_STABLE [8915e7906] 2021-03-12 12:20:15 -0500
+Branch: REL9_6_STABLE [a42c4438b] 2021-03-12 12:20:15 -0500
+-->
+ <para>
+ Fix race condition in detection of file modification by
+ <application>psql</application>'s <literal>\e</literal> and related
+ commands (Laurenz Albe)
+ </para>
+
+ <para>
+ A very fast typist could fool the code's file-timestamp-based
+ detection of whether the temporary edit file was changed.
+ </para>
+ </listitem>
+
+ <listitem>
+<!--
+Branch: master [ec03f2df1] 2021-04-01 13:34:16 -0400
+Branch: REL_13_STABLE [35421a470] 2021-04-01 13:34:16 -0400
+Branch: REL_12_STABLE [84c5e0dd2] 2021-04-01 13:34:16 -0400
+Branch: REL_11_STABLE [25fe401d5] 2021-04-01 13:34:16 -0400
+Branch: REL_10_STABLE [1b6961c8f] 2021-04-01 13:34:16 -0400
+Branch: REL9_6_STABLE [2c9b857af] 2021-04-01 13:34:16 -0400
+-->
+ <para>
+ Fix missed file version check
+ in <application>pg_restore</application> (Tom Lane)
+ </para>
+
+ <para>
+ When reading a custom-format archive from a non-seekable source,
+ <application>pg_restore</application> neglected to check the
+ archive version. If it was fed a newer archive version than it
+ can support, it would fail messily later on.
+ </para>
+ </listitem>
+
+ <listitem>
+<!--
+Branch: master [57c081de0] 2021-04-29 15:24:37 -0400
+Branch: REL_13_STABLE [bbcfee0e5] 2021-04-29 15:24:37 -0400
+Branch: REL_12_STABLE [ba86371b9] 2021-04-29 15:24:37 -0400
+Branch: REL_11_STABLE [404946d40] 2021-04-29 15:24:37 -0400
+Branch: REL_10_STABLE [d5722c927] 2021-04-29 15:24:37 -0400
+Branch: REL9_6_STABLE [54a233071] 2021-04-29 15:24:38 -0400
+-->
+ <para>
+ Add some more checks to <application>pg_upgrade</application> for
+ user tables containing non-upgradable data types (Tom Lane)
+ </para>
+
+ <para>
+ Fix detection of some cases where a non-upgradable data type is
+ embedded within a container type (such as an array or range).
+ Also disallow upgrading when user tables contain columns of
+ system-defined composite types, since those types' OIDs are not
+ stable across versions.
+ </para>
+ </listitem>
+
+ <listitem>
+<!--
+Branch: master [51893c846] 2021-03-23 09:53:08 +0900
+Branch: REL_13_STABLE [34279fd4f] 2021-03-23 09:54:38 +0900
+Branch: REL_12_STABLE [4220e06f4] 2021-03-23 09:54:59 +0900
+Branch: REL_11_STABLE [4a2627c41] 2021-03-23 09:55:21 +0900
+Branch: REL_10_STABLE [5386a8506] 2021-03-23 09:55:33 +0900
+Branch: REL9_6_STABLE [e73068b07] 2021-03-23 09:55:49 +0900
+-->
+ <para>
+ Fix <application>pg_waldump</application> to
+ count <literal>XACT</literal> records correctly when generating
+ per-record statistics (Kyotaro Horiguchi)
+ </para>
+ </listitem>
+
+ <listitem>
+<!--
+Branch: master [8deb6b38d] 2021-02-23 17:30:21 -0300
+Branch: REL_13_STABLE [28f4b6108] 2021-02-23 17:30:21 -0300
+Branch: REL_12_STABLE [2796ae2ad] 2021-02-23 17:30:21 -0300
+Branch: REL_11_STABLE [258391707] 2021-02-23 17:30:21 -0300
+Branch: REL_10_STABLE [bf518fefa] 2021-02-23 17:30:21 -0300
+Branch: REL9_6_STABLE [0ccebe779] 2021-02-23 17:30:21 -0300
+-->
+ <para>
+ Fix <filename>contrib/amcheck</filename> to not complain about the
+ tuple flags <literal>HEAP_XMAX_LOCK_ONLY</literal>
+ and <literal>HEAP_KEYS_UPDATED</literal> both being set
+ (Julien Rouhaud)
+ </para>
+
+ <para>
+ This is a valid state after <literal>SELECT FOR UPDATE</literal>.
+ </para>
+ </listitem>
+
+ <listitem>
+<!--
+Branch: master [455dbc010] 2021-04-12 19:24:41 -0700
+Branch: REL_13_STABLE [13881199e] 2021-04-12 19:24:58 -0700
+Branch: REL_12_STABLE [4749c7ff4] 2021-04-12 19:27:09 -0700
+Branch: REL_11_STABLE [c8da16ba1] 2021-04-12 19:27:31 -0700
+Branch: REL_10_STABLE [fb9812b6c] 2021-04-12 19:27:36 -0700
+Branch: REL9_6_STABLE [f488d19f3] 2021-04-12 19:27:38 -0700
+-->
+ <para>
+ Adjust VPATH build rules to support recent Oracle Developer Studio
+ compiler versions (Noah Misch)
+ </para>
+ </listitem>
+
+ <listitem>
+<!--
+Branch: master [c3556f6fa] 2021-04-12 19:24:21 -0700
+Branch: REL_13_STABLE [766c8fce5] 2021-04-12 19:24:24 -0700
+Branch: REL_12_STABLE [e3ac7d176] 2021-04-12 19:24:25 -0700
+Branch: REL_11_STABLE [4a3de4092] 2021-04-12 19:24:25 -0700
+Branch: REL_10_STABLE [72a9bd047] 2021-04-12 19:24:25 -0700
+Branch: REL9_6_STABLE [14652a19f] 2021-04-12 19:24:26 -0700
+-->
+ <para>
+ Fix testing of PL/Python for Python 3 on Solaris (Noah Misch)
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ </sect2>
+ </sect1>
+
<sect1 id="release-9-6-21">
<title>Release 9.6.21</title>