<!-- doc/src/sgml/release-13.sgml -->
<!-- See header comment in release.sgml about typical markup -->

 <sect1 id="release-13">
  <title>Release 13</title>

  <formalpara>
   <title>Release date:</title>
   <para>2020-XX-XX, CURRENT AS OF 2020-05-03</para>
  </formalpara>

  <sect2>
   <title>Overview</title>

   <para>
    Major enhancements in <productname>PostgreSQL</productname> 13 include:
   </para>

   <!-- Items in this list summarize one or more items below -->

   <itemizedlist>

    <listitem>
    <para></para>
    </listitem>

   </itemizedlist>

   <para>
    The above items are explained in more detail in the sections below.
   </para>

  </sect2>

  <sect2>

  <title>Migration to Version 13</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 13 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>
    2019-09-07 [ca70bdaef] Fix issues around strictness of SIMILAR TO.
    -->

    <para>
     Change <link linkend="functions-similarto-regexp"><command>SIMILAR
     TO ... ESCAPE NULL</command></link> to return <literal>NULL</literal>
     (Tom Lane)
    </para>

    <para>
     This new behavior matches the <acronym>SQL</acronym> specification.
     Previously this caused the escape to be set to the default backslash
     character.  The previous behavior has been retained in old views
     by keeping the original function unchanged.  This also applies to
     <command>substring(text FROM pattern ESCAPE text)</command>.
    </para>

    </listitem>

    <listitem>
    <!--
    Author: Tom Lane <tgl@sss.pgh.pa.us>
    2020-01-31 [870ad6a59] Fix not-quite-right string comparison in parse_jsonb_ind
    -->

    <para>
     Have <link
     linkend="textsearch-functions-table"><function>jsonb_to_tsvector()</function></link>
     properly check "string" parameter (Dominik Czarnota)
    </para>

    </listitem>

    <listitem>
    <!--
    Author: Tom Lane <tgl@sss.pgh.pa.us>
    2020-03-28 [9950c8aad] Fix lquery's behavior for consecutive '*' items.
    -->

    <para>
     In <xref linkend="ltree"/>, when using adjacent asterisks with braces,
     e.g. ".*{2}.*{3}", properly interpret that as ".*{5}" (Nikita Glukhov)
    </para>

    </listitem>

    <listitem>
    <!--
    Author: Thomas Munro <tmunro@postgresql.org>
    2020-03-16 [b09ff5366] Simplify the effective_io_concurrency setting.
    -->

    <para>
     Change the way non-default <xref
     linkend="guc-effective-io-concurrency"/> values affect concurrency
     (Thomas Munro)
    </para>

    <para>
     Previously, this value was adjusted before effecting the number of
     concurrent requests.  This value is now used directly.  Conversion of
     old values to new ones can be done using:
    </para>

    <programlisting>
    SELECT round(sum(OLD / n::float)) FROM generate_series(1, OLD) s(n);
    </programlisting>

    </listitem>

    <listitem>
    <!--
    Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
    2019-11-12 [5c46e7d82] pg_stat_{ssl,gssapi}: Show only processes with connectio
    -->

    <para>
     Prevent display of auxiliary processes in <xref
     linkend="pg-stat-ssl-view"/> and <xref linkend="pg-stat-gssapi-view"/>
     system views (Euler Taveira)
    </para>

    <para>
     Queries that join these views to <xref
     linkend="pg-stat-activity-view"/> and wish to see auxiliary processes
     will need to use left joins.
    </para>

    </listitem>

    <listitem>
    <!--
    Author: Peter Geoghegan <pg@bowt.ie>
    2020-03-07 [691e8b2e1] pageinspect: Fix types used for bt_metap() columns.
    -->

    <para>
     Fix <xref linkend="pageinspect"/>'s <function>bt_metap()</function>
     to return more appropriate data types that are less likely to overflow
     (Peter Geoghegan)
    </para>

    </listitem>

    <listitem>
    <!--
    Author: Fujii Masao <fujii@postgresql.org>
    2020-03-19 [1d253bae5] Rename the recovery-related wait events.
    -->

    <para>
     Rename some recovery-related <link linkend="wait-event-table">wait
     events</link> (Fujii Masao)
    </para>

    <para>
     Rename <literal>RecoveryWalAll</literal>
     to <literal>RecoveryWalStream</literal>
     and <literal>RecoveryWalStream</literal> to
     <literal>RecoveryRetrieveRetryInterval</literal>.
    </para>

    </listitem>

    <listitem>
    <!--
    Author: Fujii Masao <fujii@postgresql.org>
    2019-11-06 [979766c0a] Correct the command tags for ALTER ... RENAME COLUMN.
    -->

    <para>
     Fix <link linkend="sql-alterforeigntable"><command>ALTER FOREIGN
     TABLE ... RENAME COLUMN</command></link> to return a more appropriate
     command tag (Fujii Masao)
    </para>

    <para>
     Previously it returned <command>ALTER TABLE</command>, but now returns
     <command>ALTER FOREIGN TABLE</command>.
    </para>

    </listitem>

    <listitem>
    <!--
    Author: Fujii Masao <fujii@postgresql.org>
    2019-11-06 [979766c0a] Correct the command tags for ALTER ... RENAME COLUMN.
    -->

    <para>
     Fix <link linkend="sql-altermaterializedview"><command>ALTER
     MATERIALIZED VIEW ... RENAME COLUMN</command></link> to return a more
     appropriate command tag (Fujii Masao)
    </para>

    <para>
     Previously it returned <command>ALTER TABLE</command>, but now returns
     <command>ALTER MATERIALIZED VIEW</command>.
    </para>

    </listitem>

    <listitem>
    <!--
    Author: Tom Lane <tgl@sss.pgh.pa.us>
    2020-03-05 [84eca14bc] Remove ancient hacks to ignore certain opclass names in 
    -->

    <para>
     Remove support for defining <link linkend="sql-createopclass">operator
     classes</link> using pre-<productname>PostgresSQL</productname>
     8.0 syntax (Daniel Gustafsson)
    </para>

    </listitem>

    <listitem>
    <!--
    Author: Tom Lane <tgl@sss.pgh.pa.us>
    2020-03-05 [e58a59975] Remove ancient support for upgrading pre-7.3 foreign key
    -->

    <para>
     Remove support for defining <link linkend="sql-altertable">foreign key
     constraints</link> using pre-<productname>PostgresSQL</productname>
     7.3 syntax (Daniel Gustafsson)
    </para>

    </listitem>

    <listitem>
    <!--
    Author: Tom Lane <tgl@sss.pgh.pa.us>
    2020-03-05 [bb03010b9] Remove the "opaque" pseudo-type and associated compatibi
    -->

    <para>
     Remove support for "opaque" <link
     linkend="sql-createtype">pseudo-types</link> used by
     pre-<productname>PostgresSQL</productname> 7.3 servers (Daniel
     Gustafsson)
    </para>

    </listitem>

   </itemizedlist>

  </sect2>

  <sect2>
   <title>Changes</title>

    <para>
      Below you will find a detailed account of the changes between
      <productname>PostgreSQL</productname> 13 and the previous major
      release.
    </para>

   <sect3>
    <title>Server</title>

    <sect4>
     <title><link linkend="ddl-partitioning">Partitioning</link></title>

     <itemizedlist>

    <listitem>
    <!--
    Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
    2019-08-07 [4e85642d9] Apply constraint exclusion more generally in partitionin
    Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
    2019-08-13 [815ef2f56] Don't constraint-exclude partitioned tables as much
    -->

    <para>
     Improve cases where <link
     linkend="ddl-partition-pruning">pruning</link> of partitions can happen
     (Yuzuko Hosoya, Amit Langote, &Aacute;lvaro Herrera)
    </para>

    </listitem>

    <listitem>
    <!--
    Author: Etsuro Fujita <efujita@postgresql.org>
    2020-04-08 [c8434d64c] Allow partitionwise joins in more cases.
    Author: Tom Lane <tgl@sss.pgh.pa.us>
    2020-04-07 [981643dcd] Allow partitionwise join to handle nested FULL JOIN USIN
    -->

    <para>
     Allow <link linkend="guc-enable-partitionwise-join">partitionwise
     joins</link> to happen in more cases (Ashutosh Bapat, Etsuro Fujita,
     Amit Langote, Tom Lane)
    </para>

    <para>
     For example, partitionwise joins can now happen between partitioned
     tables even when their partition bounds do not match exactly.
    </para>
    </listitem>

    <listitem>
    <!--
    Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
    2020-03-18 [487e9861d] Enable BEFORE row-level triggers for partitioned tables
    -->

    <para>
     Allow <literal>BEFORE</literal> row-level <link
     linkend="triggers">triggers</link> on partitioned tables (&Aacute;lvaro
     Herrera)
    </para>

    <para>
     These triggers cannot change which partition is the destination.
    </para>

    </listitem>

    <listitem>
    <!--
    Author: Peter Eisentraut <peter@eisentraut.org>
    2020-03-10 [17b9e7f9f] Support adding partitioned tables to publication
    Author: Peter Eisentraut <peter@eisentraut.org>
    2020-04-08 [83fd4532a] Allow publishing partition changes via ancestors
    -->

    <para>
     Allow partitioned tables to be logically replicated via <link
     linkend="sql-createpublication">publications</link> (Amit Langote)
    </para>

    <para>
     Previously, partitions had to be replicated individually.  Now
     partitioned tables can be published explicitly causing all partitions
     to be automatically published.  Addition/removal of partitions from
     partitioned tables are automatically added/removed from publications.
     The <link linkend="sql-createpublication"><command>CREATE
     PUBLICATION</command></link> option
     <literal>publish_via_partition_root</literal> controls whether changes
     to partitions are published as their own or their ancestor's.
    </para>

    </listitem>

    <listitem>
    <!--
    Author: Peter Eisentraut <peter@eisentraut.org>
    2020-04-06 [f1ac27bfd] Add logical replication support to replicate into partit
    -->

    <para>
     Allow logical replication into partitioned tables on subscribers
     (Amit Langote)
    </para>

    <para>
     Previously, subscribers could only receive rows into non-partitioned
     tables.
    </para>
    </listitem>

    <listitem>
    <!--
    Author: Tom Lane <tgl@sss.pgh.pa.us>
    2019-12-25 [bb4114a4e] Allow whole-row Vars to be used in partitioning expressi
    -->

    <para>
     Allow <link linkend="rowtypes"><literal>ROW</literal> values</link>
     to be used as partitioning expressions (Amit Langote)
    </para>

    </listitem>

     </itemizedlist>

    </sect4>

    <sect4>
     <title>Indexes</title>

     <itemizedlist>

    <listitem>
    <!--
    Author: Peter Geoghegan <pg@bowt.ie>
    2020-02-26 [0d861bbb7] Add deduplication to nbtree.
    -->

    <para>
     More efficiently store <link
     linkend="btree-deduplication">duplicates</link> in btree indexes
     (Anastasia Lubennikova, Peter Geoghegan)
    </para>

    <para>
     This allows efficient btree indexing of low cardinality columns
     by storing duplicate keys only once.  Users upgrading with <link
     linkend="pgupgrade"><application>pg_upgrade</application></link>
     will need to use <link
     linkend="sql-reindex"><command>REINDEX</command></link> to make use
     of this feature.
    </para>

    </listitem>

    <listitem>
    <!--
    Author: Alexander Korotkov <akorotkov@postgresql.org>
    2019-07-14 [c085e1c1c] Add support for <-> (box, point) operator to GiST box_op
    Author: Alexander Korotkov <akorotkov@postgresql.org>
    2019-07-14 [075f0a880] Add support for <-> (box, point) operator to SP-GiST box
    -->

    <para>
     Allow <link linkend="gist">GiST</link> and <link
     linkend="spgist">SP-GiST</link> indexes for <link
     linkend="datatype-line">box</link>/point distance lookups (Nikita
     Glukhov)
    </para>

    </listitem>

    <listitem>
    <!--
    Author: Alexander Korotkov <akorotkov@postgresql.org>
    2020-01-18 [4b754d6c1] Avoid full scan of GIN indexes when possible
    -->

    <para>
     Allow <link linkend="gin"><acronym>GIN</acronym></link> indexes to
     more efficiently handle <literal>NOT</literal> restrictions (Nikita
     Glukhov, Alexander Korotkov, Tom Lane, Julien Rouhaud)
    </para>

    </listitem>

    <listitem>
    <!--
    Author: Alexander Korotkov <akorotkov@postgresql.org>
    2020-03-30 [911e70207] Implement operator class parameters
    -->

    <para>
     Allow <link linkend="sql-createindex">index operator classes</link>
     to take parameters (Nikita Glukhov)
    </para>

    </listitem>

    <listitem>
    <!--
    Author: Alexander Korotkov <akorotkov@postgresql.org>
    2020-03-30 [911e70207] Implement operator class parameters
    -->

    <para>
     Allow <command>CREATE INDEX</command> to specify the GiST signature
     length and maximum number of integer ranges (Nikita Glukhov)
    </para>

    <para>
     Indexes created on four and eight-byte <link linkend="intarray">integer
     array</link>, <link linkend="textsearch">tsvector</link>,
     <xref linkend="pgtrgm"/>, <xref linkend="ltree"/>, and <xref
     linkend="hstore"/> columns can now control these GiST index parameters,
     rather than using the defaults.
    </para>

    </listitem>

    <listitem>
    <!--
    Author: Tom Lane <tgl@sss.pgh.pa.us>
    2019-12-06 [fbbf68094] Disallow non-default collation in ADD PRIMARY KEY/UNIQUE
    -->

    <para>
     Prevent indexes that use non-default collations from being <link
     linkend="sql-altertable">added</link> as a table's unique or primary
     key constraint (Tom Lane)
    </para>

    <para>
     The index and column collations must now match so the index's
     uniqueness matches the column's uniqueness.
    </para>

    </listitem>


     </itemizedlist>

    </sect4>

    <sect4>
     <title>Optimizer</title>

     <itemizedlist>

    <listitem>
    <!--
    Author: Tom Lane <tgl@sss.pgh.pa.us>
    2020-04-01 [a80818605] Improve selectivity estimation for assorted match-style 
    -->

    <para>
     Improve the optimizer's <link
     linkend="planner-stats-details">selectivity</link> estimation for
     containment/match operators (Tom Lane)
    </para>

    </listitem>

    <listitem>
    <!--
    Author: Tomas Vondra <tomas.vondra@postgresql.org>
    2019-09-11 [d06215d03] Allow setting statistics target for extended statistics
    -->

    <para>
     Allow setting <link linkend="sql-altertable">statistics target</link>
     for <link linkend="sql-createstatistics">extended statistics</link>
     (Tomas Vondra)
    </para>

    <para>
     This is controlled with the new command option <command>ALTER
     STATISTICS ... SET STATISTICS</command>.  Previously this was computed
     based on more general statistics target settings.
    </para>

    </listitem>

    <listitem>
    <!--
    Author: Tomas Vondra <tomas.vondra@postgresql.org>
    2020-01-13 [aaa676187] Apply all available functional dependencies
    Author: Tomas Vondra <tomas.vondra@postgresql.org>
    2020-01-13 [eae056c19] Apply multiple multivariate MCV lists when possible
    -->

    <para>
     Allow use of multiple extended statistics objects in a single query
     (Tomas Vondra)
    </para>

    </listitem>

    <listitem>
    <!--
    Author: Tomas Vondra <tomas.vondra@postgresql.org>
    2020-03-14 [8f321bd16] Use functional dependencies to estimate ScalarArrayOpExp
    Author: Tomas Vondra <tomas.vondra@postgresql.org>
    2020-03-14 [e83daa7e3] Use multi-variate MCV lists to estimate ScalarArrayOpExp
    Author: Tomas Vondra <tomas.vondra@postgresql.org>
    2020-03-18 [ccaa3569f] Recognize some OR clauses as compatible with functional 
    -->

    <para>
     Allow use of extended statistics objects for OR clauses and <link
     linkend="functions-subquery">IN</link>/<literal>ANY</literal> constant
     lists (Pierre Ducroquet, Tomas Vondra)
    </para>

    </listitem>

    <listitem>
    <!--
    Author: Tom Lane <tgl@sss.pgh.pa.us>
    2019-08-01 [7266d0997] Allow functions-in-FROM to be pulled up if they reduce t
    Author: Tom Lane <tgl@sss.pgh.pa.us>
    2019-09-24 [a9ae99d01] Prevent bogus pullup of constant-valued functions return
    -->

    <para>
     Allow functions in <literal>FROM</literal> clauses to be moved to their
     reference sites if they evaluate to constants (Alexander Kuzmenkov,
     Aleksandr Parfenov)
    </para>

    </listitem>


     </itemizedlist>

    </sect4>

    <sect4>
     <title>General Performance</title>

     <itemizedlist>

    <listitem>
    <!--
    Author: Tomas Vondra <tomas.vondra@postgresql.org>
    2020-04-06 [d2d8a229b] Implement Incremental Sort
    -->

    <para>
     Implement <link linkend="guc-enable-incrementalsort">incremental
     sorting</link> (James Coleman, Alexander Korotkov, Tomas Vondra)
    </para>

    <para>
     If a result is already sorted by several leading keys, this
     allows for batch sorting of additional trailing keys because the
     previous keys are already equal.  This is controlled by <xref
     linkend="guc-enable-incrementalsort"/>.
    </para>

    </listitem>

    <listitem>
    <!--
    Author: Peter Geoghegan <pg@bowt.ie>
    2019-08-01 [71dcd7438] Add sort support routine for the inet data type.
    -->

    <para>
     Improve the performance of sorting <link
     linkend="datatype-inet">inet</link> values (Brandur Leach)
    </para>

    </listitem>

    <listitem>
    <!--
    Author: Jeff Davis <jdavis@postgresql.org>
    2020-03-18 [1f39bce02] Disk-based Hash Aggregation.
    Author: Jeff Davis <jdavis@postgresql.org>
    2020-03-24 [dd8e19132] Consider disk-based hash aggregation to implement DISTIN
    -->

    <para>
     Allow <link linkend="guc-enable-hashagg">hash aggregation</link>
     to use disk storage for large aggregation result sets (Jeff Davis)
    </para>

    <para>
     Previously, hash aggregation was avoided if it was expected to use
     more than <xref linkend="guc-work-mem"/> memory.  This is controlled
     by <xref linkend="guc-enable-hashagg-disk"/>.
    </para>

    </listitem>

    <listitem>
    <!--
    Author: Jeff Davis <jdavis@postgresql.org>
    2020-03-18 [1f39bce02] Disk-based Hash Aggregation.
    -->

    <para>
     Allow <link linkend="queries-grouping-sets">grouping sets</link> to
     use hash aggregation with disk storage for large grouping set results
     (Jeff Davis)
    </para>

    <para>
     Previously, hash aggregation was avoided if it was expected to use
     more than <xref linkend="guc-work-mem"/> memory.  This is controlled
     by <xref linkend="guc-enable-hashagg-disk"/>.
    </para>

    </listitem>

    <listitem>
    <!--
    Author: David Rowley <drowley@postgresql.org>
    2020-03-28 [b07642dbc] Trigger autovacuum based on number of INSERTs
    -->

    <para>
     Allow inserts to trigger <link linkend="autovacuum">autovacuum</link>
     activity (Laurenz Albe, Darafei Praliaskouski)
    </para>

    <para>
     This new behavior reduces the work necessary when the table needs to
     be frozen and allows pages to be set as all-visible.  All-visible pages
     allow index-only scans to access fewer heap rows.
    </para>

    </listitem>

    <listitem>
    <!--
    Author: Thomas Munro <tmunro@postgresql.org>
    2020-03-16 [fc34b0d9d] Introduce a maintenance_io_concurrency setting.
    -->

    <para>
     Add <xref linkend="guc-maintenance-io-concurrency"/> to control I/O
     concurrency for maintenance operations (Thomas Munro)
    </para>

    </listitem>

    <listitem>
    <!--
    Author: Noah Misch <noah@leadboat.com>
    2020-04-04 [c6b92041d] Skip WAL for new relfilenodes, under wal_level=minimal.
    -->

    <para>
     Allow skipping of <acronym>WAL</acronym> for <link
     linkend="guc-full-page-writes">full table writes</link> if <xref
     linkend="guc-wal-level"/> is <literal>minimal</literal> (Kyotaro
     Horiguchi)
    </para>

    <para>
     Relations larger than <xref linkend="guc-wal-skip-threshold"/>
     will have their files fsync'ed rather than generating
     <acronym>WAL</acronym>.  Previously this was done only for
     <command>COPY</command> operations, but the implementation had a bug
     that could cause data loss during crash recovery.
 
    </para>

    </listitem>

    <listitem>
    <!--
    Author: Peter Eisentraut <peter@eisentraut.org>
    2020-03-28 [8f3ec75de] Enable Unix-domain sockets support on Windows
    -->

    <para>
     Enable <link linkend="client-authentication">Unix-domain sockets</link>
     support on Windows (Peter Eisentraut)
    </para>

    </listitem>

    <listitem>
    <!--
    Author: Fujii Masao <fujii@postgresql.org>
    2019-11-21 [e6d806952] Make DROP DATABASE command generate less WAL records.
    -->

    <para>
     Improve the performance when replaying <link
     linkend="sql-dropdatabase"><command>DROP DATABASE</command></link>
     commands when many tablespaces are in use (Fujii Masao)
    </para>

    </listitem>

    <listitem>
    <!--
    Author: Fujii Masao <fujii@postgresql.org>
    2019-09-24 [6d05086c0] Speedup truncations of relation forks.
    -->

    <para>
     Improve performance for <link linkend="sql-truncate">truncation</link>
     of very large relations (Kirk Jamison)
    </para>

    </listitem>

    <listitem>
    <!--
    Author: Tomas Vondra <tomas.vondra@postgresql.org>
    2019-10-01 [11a078cf8] Optimize partial TOAST decompression
    -->

    <para>
     Improve speed of <link
     linkend="storage-toast"><acronym>TOAST</acronym></link> decompression
     and the retrieval of only the leading bytes of <acronym>TOAST</acronym>
     values (Binguo Bao, Andrey Borodin)
    </para>

    <para>
     Previously, <acronym>TOAST</acronym> values were fully fetched and
     only the requested leading bytes were decompressed and returned.
     Now, only the requested bytes are fetched.
    </para>

    </listitem>

    <listitem>
    <!--
    Author: Tom Lane <tgl@sss.pgh.pa.us>
    2019-09-10 [bca6e6435] Reduce overhead of scanning the backend[] array in LISTE
    Author: Tom Lane <tgl@sss.pgh.pa.us>
    2019-09-22 [51004c717] Make some efficiency improvements in LISTEN/NOTIFY.
    -->

    <para>
     Improve performance of <link
     linkend="sql-listen"><command>LISTEN</command></link>/<command>NOTIFY</command>
     (Martijn van Oosterhout)
    </para>

    </listitem>

    <listitem>
    <!--
    Author: Tom Lane <tgl@sss.pgh.pa.us>
    2019-08-15 [bb5ae8f6c] Use a hash table to de-duplicate NOTIFY events faster.
    -->

    <para>
     Improve the efficiency of removing duplicate <link
     linkend="sql-notify"><command>NOTIFY</command></link> events (Tom Lane)
    </para>

    </listitem>

    <listitem>
    <!--
    Author: Andrew Gierth <rhodiumtoad@postgresql.org>
    2020-02-01 [1fd687a03] Optimizations for integer to decimal output.
    -->

    <para>
     Use lookup tables to speed up integer to text conversion (David Fetter)
    </para>

    </listitem>

    <listitem>
    <!--
    Author: Tom Lane <tgl@sss.pgh.pa.us>
    2019-07-10 [b5810de3f] Reduce memory consumption for multi-statement query stri
    -->

    <para>
     Reduce memory usage for query strings that contain multiple
     <acronym>SQL</acronym> statements (Amit Langote)
    </para>

    </listitem>


     </itemizedlist>

    </sect4>

    <sect4>
     <title>Monitoring</title>

     <itemizedlist>

    <listitem>
    <!--
    Author: Amit Kapila <akapila@postgresql.org>
    2020-04-05 [6b466bf5f] Allow pg_stat_statements to track WAL usage statistics.
    Author: Amit Kapila <akapila@postgresql.org>
    2020-04-06 [33e05f89c] Add the option to report WAL usage in EXPLAIN and auto_e
    Author: Amit Kapila <akapila@postgresql.org>
    2020-04-06 [b7ce6de93] Allow autovacuum to log WAL usage statistics.
    -->

    <para>
     Allow <link linkend="sql-explain"><command>EXPLAIN</command></link>,
     <xref linkend="auto-explain"/>, <link
     linkend="autovacuum">autovacuum</link>, and <xref
     linkend="pgstatstatements"/> to track <acronym>WAL</acronym> usage
     statistics (Kirill Bychik, Julien Rouhaud)
    </para>

    </listitem>

    <listitem>
    <!--
    Author: Tomas Vondra <tomas.vondra@postgresql.org>
    2019-11-06 [6e3e6cc0e] Allow sampling of statements depending on duration
    -->

    <para>
     Allow a sample of statements to be logged (Adrien Nayrat)
    </para>

    <para>
     A <xref linkend="guc-log-statement-sample-rate"/> ratio of statements
     taking over <xref linkend="guc-log-min-duration-sample"/> duration
     will be logged.
    </para>

    </listitem>

    <listitem>
    <!--
    Author: Peter Eisentraut <peter@eisentraut.org>
    2020-03-15 [70a7b4776] Add backend type to csvlog and optionally log_line_prefi
    -->

    <para>
     Add the backend type to <link
     linkend="runtime-config-logging">csvlog</link> and optionally <xref
     linkend="guc-log-line-prefix"/> log output (Peter Eisentraut)
    </para>

    </listitem>

    <listitem>
    <!--
    Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
    2019-12-11 [ba79cb5dc] Emit parameter values during query bind/execute errors
    Author: Tom Lane <tgl@sss.pgh.pa.us>
    2020-04-02 [0b34e7d30] Improve user control over truncation of logged bind-para
    -->

    <para>
     Improve control of prepared statement parameter logging (Alexey
     Bashtanov, &Aacute;lvaro Herrera)
    </para>

    <para>
     The <acronym>GUC</acronym> setting <xref
     linkend="guc-log-parameter-max-length"/> controls the maximum length
     of parameter values output during statement non-error logging, and
     <xref linkend="guc-log-parameter-max-length-on-error"/> does the
     same for error statement logging.  Previously, prepared statement
     parameters were not logged during errors.  error.
    </para>

    </listitem>

    <listitem>
    <!--
    Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
    2020-02-05 [15d13e829] Make vacuum buffer counters 64 bits wide
    -->

    <para>
     Make <link linkend="sql-vacuum">vacuum</link> buffer counters 64-bits
     wide to avoid overflow (&Aacute;lvaro Herrera)
    </para>

    </listitem>

    <listitem>
    <!--
    Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
    2019-11-08 [71a8a4f6e] Add backtrace support for error reporting
    -->

    <para>
     Allow function call backtraces of errors to be logged (Peter
     Eisentraut, &Aacute;lvaro Herrera)
    </para>

    <para>
     Server variable <xref linkend="guc-backtrace-functions"/> specifies
     which C functions should generate backtraces on error.
    </para>

    </listitem>

    <listitem>
    <!--
    Author: Michael Paquier <michael@paquier.xyz>
    2019-07-05 [313f87a17] Add min() and max() aggregates for pg_lsn
    -->

    <para>
     Add <function>min()</function> and
     <function>max()</function> aggregates for <link
     linkend="datatype-pg-lsn"><type>pg_lsn</type></link> (Fabr&iacute;zio
     de Royes Mello)
    </para>

    <para>
     This is useful for monitoring queries.
    </para>

    </listitem>

     </itemizedlist>

    </sect4>

    <sect4>
     <title>System Views</title>

     <itemizedlist>

    <listitem>
    <!--
    Author: Michael Paquier <michael@paquier.xyz>
    2020-02-06 [b025f32e0] Add leader_pid to pg_stat_activity
    -->

    <para>
     Add <structfield>leader_pid</structfield> to <xref
     linkend="pg-stat-activity-view"/> to report parallel worker ownership
     (Julien Rouhaud)
    </para>

    </listitem>

    <listitem>
    <!--
    Author: Fujii Masao <fujii@postgresql.org>
    2020-03-03 [e65497df8] Report progress of streaming base backup.
    -->

    <para>
     Add system view <link
     linkend="basebackup-progress-reporting"><structname>pg_stat_progress_basebackup</structname></link>
     to report the progress of streaming base backups (Fujii Masao)
    </para>

    </listitem>

    <listitem>
    <!--
    Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
    2020-01-15 [a166d408e] Report progress of ANALYZE commands
    -->

    <para>
     Add system view <link
     linkend="monitoring-stats-dynamic-views-table"><structname>pg_stat_progress_analyze</structname></link>
     to report <link linkend="sql-analyze">analyze</link> progress
     (&Aacute;lvaro Herrera, Tatsuro Yamada, Vinayak Pokale)
    </para>

    </listitem>

    <listitem>
    <!--
    Author: Amit Kapila <akapila@postgresql.org>
    2019-11-21 [9290ad198] Track statistics for spilling of changes from ReorderBuf
    -->

    <para>
     Add columns to the <link
     linkend="monitoring-stats-dynamic-views-table"><structname>pg_stat_replication</structname></link>
     system view to report how much logical decoding information has been
     spilled to disk (Tomas Vondra)
    </para>

    </listitem>

    <listitem>
    <!--
    Author: Robert Haas <rhaas@postgresql.org>
    2020-01-09 [ed10f32e3] Add pg_shmem_allocations view.
    -->

    <para>
     Add system view <link
     linkend="view-pg-shmem-allocations"><structname>pg_shmem_allocations</structname></link>
     to display shared memory usage (Andres Freund, Robert Haas)
    </para>

    </listitem>

    <listitem>
    <!--
    Author: Tomas Vondra <tomas.vondra@postgresql.org>
    2020-04-02 [28cac71bd] Collect statistics about SLRU caches
    -->

    <para>
     Create <link
     linkend="monitoring-stats-views-table"><structname>pg_stat_slru</structname></link>
     system view to monitor internal <acronym>SLRU</acronym> caches
     (Tomas Vondra)
    </para>

    </listitem>

    <listitem>
    <!--
    Author: Robert Haas <rhaas@postgresql.org>
    2020-01-07 [814727858] Increase the maximum value of track_activity_query_size.
    -->

    <para>
     Allow <xref linkend="guc-track-activity-query-size"/> to be set up
     to 1MB (Vyacheslav Makarov)
    </para>

    <para>
     The previous maximum was 100kB.
    </para>

    </listitem>

     </itemizedlist>

    </sect4>

    <sect4>
     <title><link linkend="wait-event-table">Wait Events</link></title>

     <itemizedlist>

    <listitem>
    <!--
    Author: Thomas Munro <tmunro@postgresql.org>
    2020-01-31 [ef02fb15a] Report time spent in posix_fallocate() as a wait event.
    -->

    <para>
     Add wait event for <function>posix_fallocate()</function> (Thomas
     Munro)
    </para>

    </listitem>

    <listitem>
    <!--
    Author: Andres Freund <andres@anarazel.de>
    2020-03-23 [cedffbdb8] Report wait event for cost-based vacuum delay.
    -->

    <para>
     Add wait event VacuumDelay to report on cost-based vacuum delay
     (Justin Pryzby)
    </para>

    </listitem>

    <listitem>
    <!--
    Author: Fujii Masao <fujii@postgresql.org>
    2020-03-24 [b8e20d6da] Add wait events for WAL archive and recovery pause.
    -->

    <para>
     Add wait events for <acronym>WAL</acronym> archive and recovery pause
     (Fujii Masao)
    </para>

    <para>
     The new events are BackupWaitWalArchive and RecoveryPause.
    </para>

    </listitem>

    <listitem>
    <!--
    Author: Fujii Masao <fujii@postgresql.org>
    2020-04-03 [18808f8c8] Add wait events for recovery conflicts.
    -->

    <para>
     Add  wait events RecoveryConflictSnapshot and
     RecoveryConflictTablespace to monitor recovery conflicts (Masahiko
     Sawada)
    </para>

    </listitem>

    <listitem>
    <!--
    Author: Thomas Munro <tmunro@postgresql.org>
    2020-02-05 [815c2f097] Add kqueue(2) support to the WaitEventSet API.
    -->

    <para>
     Improve performance of wait events on <acronym>BSD</acronym>-based
     systems (Thomas Munro)
    </para>

    </listitem>

     </itemizedlist>

    </sect4>

    <sect4>
     <title><acronym>Authentication</acronym></title>

     <itemizedlist>

    <listitem>
    <!--
    Author: Fujii Masao <fujii@postgresql.org>
    2020-03-09 [d9249441e] Mark ssl_passphrase_command as GUC_SUPERUSER_ONLY.
    -->

    <para>
     Only allow superusers to view the <xref
     linkend="guc-ssl-passphrase-command"/> setting (Insung Moon)
    </para>

    <para>
     This was changed as a security precaution.
    </para>

    </listitem>

    <listitem>
    <!--
    Author: Peter Eisentraut <peter@eisentraut.org>
    2019-12-04 [b1abfec82] Update minimum SSL version
    -->

    <para>
     Change the default minimum <acronym>TLS</acronym> version from 1.0
     to 1.2 (Peter Eisentraut)
    </para>

    <para>
     This is controlled by <xref linkend="guc-ssl-min-protocol-version"/>.
    </para>

    </listitem>


     </itemizedlist>

    </sect4>

    <sect4>
     <title>Server Configuration</title>

     <itemizedlist>

    <listitem>
    <!--
    Author: Robert Haas <rhaas@postgresql.org>
    2020-01-16 [2eb34ac36] Fix problems with "read only query" checks, and refactor
    -->

    <para>
     Tighten rules on which utility commands are possible in <xref
     linkend="guc-default-transaction-read-only"/> mode (Robert Haas)
    </para>

    <para>
     This also increases the number of utility commands that can run in
     parallel queries.
    </para>

    </listitem>

    <listitem>
    <!--
    Author: Peter Eisentraut <peter@eisentraut.org>
    2019-11-29 [c4a7a392e] Make allow_system_table_mods settable at run time
    -->

    <para>
     Allow <xref linkend="guc-allow-system-table-mods"/> to be changed
     after server start (Peter Eisentraut)
    </para>

    </listitem>

    <listitem>
    <!--
    Author: Peter Eisentraut <peter@eisentraut.org>
    2019-11-29 [508bf95b7] Remove any-user DML capability from allow_system_table_m
    -->

    <para>
     Disallow non-superusers from modifying system tables when <xref
     linkend="guc-allow-system-table-mods"/> is set (Peter Eisentraut)
    </para>

    <para>
     Previously, if <xref linkend="guc-allow-system-table-mods"/>
     was set at server start, non-superusers could issue
     <command>INSERT</command>/<command>UPDATE</command>/<command>DELETE</command>
     commands on system tables.
    </para>

    </listitem>


     </itemizedlist>

    </sect4>

   </sect3>

   <sect3>
    <title>Streaming Replication and Recovery</title>

    <itemizedlist>

    <listitem>
    <!--
    Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
    2020-03-27 [1e6148032] Allow walreceiver configuration to change on reload
    -->

    <para>
     Allow streaming replication configuration settings to be changed by
     reload (Sergei Kornilov)
    </para>

    <para>
     Previously, a server restart was required to change
     <xref linkend="guc-primary-conninfo"/> and <xref
     linkend="guc-primary-slot-name"/>.
    </para>

    </listitem>

    <listitem>
    <!--
    Author: Peter Eisentraut <peter@eisentraut.org>
    2020-01-14 [329730827] walreceiver uses a temporary replication slot by default
    Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
    2020-03-27 [092c6936d] Set wal_receiver_create_temp_slot PGC_POSTMASTER
    -->

    <para>
     Allow <acronym>WAL</acronym> receivers use a temporary replication slot
     if a permanent one is not specified (Peter Eisentraut, Sergei Kornilov)
    </para>

    <para>
     This behavior can be enabled using <xref
     linkend="guc-wal-receiver-create-temp-slot"/>.
    </para>

    </listitem>

    <listitem>
    <!--
    Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
    2020-04-07 [c65507763] Allow users to limit storage reserved by replication slo
    -->

    <para>
     Allow replication slot storage to be limited by <xref
     linkend="guc-max-slot-wal-keep-size"/> (Kyotaro Horiguchi)
    </para>

    <para>
     Replication slots that exceed this value are invalidated.
    </para>

    </listitem>

    <listitem>
    <!--
    Author: Fujii Masao <fujii@postgresql.org>
    2020-03-24 [496ee647e] Prefer standby promotion over recovery pause.
    -->

    <para>
     Allow <link linkend="guc-promote-trigger-file">standby promotion</link>
     to cancel any requested pause (Fujii Masao)
    </para>

    <para>
     Previously, promotion could not happen while the standby was in
     paused state.
    </para>

    </listitem>

    <listitem>
    <!--
    Author: Peter Eisentraut <peter@eisentraut.org>
    2020-01-29 [dc788668b] Fail if recovery target is not reached
    -->

    <para>
     Generate an error if recovery does not reach the specified <link
     linkend="runtime-config-wal-recovery-target">recovery target</link>
     (Leif Gunnar Erlandsen, Peter Eisentraut)
    </para>

    <para>
     Previously, the end of the <acronym>WAL</acronym> would promote the
     standby, even if the target was not reached.
    </para>

    </listitem>

    <listitem>
    <!--
    Author: Amit Kapila <akapila@postgresql.org>
    2019-11-19 [cec2edfa7] Add logical_decoding_work_mem to limit ReorderBuffer mem
    -->

    <para>
     Allow control over how much memory is used by logical decoding before
     it is spilled to disk (Tomas Vondra, Dilip Kumar, Amit Kapila)
    </para>

    <para>
     This is controlled by <xref linkend="guc-logical-decoding-work-mem"/>.
    </para>

    </listitem>

    <listitem>
    <!--
    Author: Fujii Masao <fujii@postgresql.org>
    2020-01-22 [41c184bc6] Add GUC ignore_invalid_pages.
    -->

    <para>
     Allow <acronym>WAL</acronym> recovery to continue even if invalid
     pages are referenced (Fujii Masao)
    </para>

    <para>
     This is enabled using <xref linkend="guc-ignore-invalid-pages"/>.
    </para>

    </listitem>

    </itemizedlist>

   </sect3>

   <sect3>
    <title>Utility Commands</title>

    <itemizedlist>

    <listitem>
    <!--
    Author: Amit Kapila <akapila@postgresql.org>
    2020-01-20 [40d964ec9] Allow vacuum command to process indexes in parallel.
    -->

    <para>
     Allow <link linkend="sql-vacuum"><command>VACUUM</command></link>
     to process indexes in parallel (Masahiko Sawada, Amit Kapila)
    </para>

    <para>
     The new <literal>PARALLEL</literal> option controls this.
    </para>

    </listitem>

    <listitem>
    <!--
    Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
    2020-04-07 [357889eb1] Support FETCH FIRST WITH TIES
    -->

    <para>
     Allow <link linkend="sql-fetch"><command>FETCH FIRST</command></link>
     to use <literal>WITH TIES</literal> to return any additional rows
     that match the last result row (Surafel Temesgen)
    </para>

    </listitem>

    <listitem>
    <!--
    Author: Fujii Masao <fujii@postgresql.org>
    2020-04-04 [ce77abe63] Include information on buffer usage during planning phas
    -->

    <para>
     Report planning-time buffer usage in <link
     linkend="sql-explain"><command>EXPLAIN</command></link>'s
     <literal>BUFFER</literal> output (Julien Rouhaud)
    </para>

    </listitem>

    <listitem>
    <!--
    Author: Tom Lane <tgl@sss.pgh.pa.us>
    2020-03-10 [cacef1722] Ensure that CREATE TABLE LIKE copies any NO INHERIT cons
    -->

    <para>
     Have <link linkend="sql-createtable"><command>CREATE TABLE
     LIKE</command></link> propagate <literal>CHECK</literal>'s <literal>NO
     INHERIT</literal> property to created tables (Ildar Musin, Chris
     Travers)
    </para>

    </listitem>

    <listitem>
    <!--
    Author: Fujii Masao <fujii@postgresql.org>
    2020-02-18 [b7e51b350] Make inherited LOCK TABLE perform access permission chec
    -->

    <para>
     When using <link linkend="sql-lock"><command>LOCK
     TABLE</command></link> on a partitioned table, do not check permissions
     on the child tables (Amit Langote)
    </para>

    </listitem>

    <listitem>
    <!--
    Author: Peter Eisentraut <peter@eisentraut.org>
    2020-03-31 [de3bbfcc9] Fix INSERT OVERRIDING USER VALUE behavior
    -->

    <para>
     Allow <link linkend="sql-insert"><literal>OVERRIDING USER
     VALUE</literal></link> on inserts into identity columns (Dean Rasheed)
    </para>

    </listitem>

    <listitem>
    <!--
    Author: Peter Eisentraut <peter@eisentraut.org>
    2020-01-14 [f595117e2] ALTER TABLE ... ALTER COLUMN ... DROP EXPRESSION
    -->

    <para>
     Add <link linkend="sql-altertable"><command>ALTER
     TABLE</command></link> clause <literal>DROP EXPRESSION</literal>
     to remove generated properties from columns (Peter Eisentraut)
    </para>

    </listitem>

    <listitem>
    <!--
    Author: Tom Lane <tgl@sss.pgh.pa.us>
    2020-01-15 [1281a5c90] Restructure ALTER TABLE execution to fix assorted bugs.
    -->

    <para>
     Fix bugs in <command>ALTER TABLE</command> when later clauses overlap
     changes made by earlier clauses in the same command (Tom Lane)
    </para>

    </listitem>

    <listitem>
    <!--
    Author: Fujii Masao <fujii@postgresql.org>
    2019-11-21 [30840c92a] Allow ALTER VIEW command to rename the column in the vie
    -->

    <para>
     Add <link linkend="sql-alterview"><command>ALTER VIEW</command></link>
     syntax to rename view columns (Fujii Masao)
    </para>

    <para>
     This was previously possible only using <command>ALTER TABLE RENAME
     COLUMN</command>.
    </para>

    </listitem>

    <listitem>
    <!--
    Author: Tom Lane <tgl@sss.pgh.pa.us>
    2020-03-06 [fe30e7ebf] Allow ALTER TYPE to change some properties of a base typ
    -->

    <para>
     Add <link linkend="sql-altertype"><command>ALTER TYPE</command></link>
     options useful for extensions, like <acronym>TOAST</acronym> and I/O
     functions control (Tomas Vondra, Tom Lane)
    </para>

    </listitem>

    <listitem>
    <!--
    Author: Peter Eisentraut <peter@eisentraut.org>
    2019-07-23 [06140c201] Add CREATE DATABASE LOCALE option
    -->

    <para>
     Add <link linkend="sql-createdatabase"><command>CREATE
     DATABASE</command></link> <literal>LOCALE</literal> option (Peter
     Eisentraut)
    </para>

    <para>
     This combines existing options <literal>LC_COLLATE</literal> and
     <literal>LC_CTYPE</literal> into a single option.
    </para>

    </listitem>

    <listitem>
    <!--
    Author: Amit Kapila <akapila@postgresql.org>
    2019-11-13 [1379fd537] Introduce the 'force' option for the Drop Database comma
    -->

    <para>
     Allow <link linkend="sql-dropdatabase"><command>DROP
     DATABASE</command></link> to disconnect users so drop succeeds (Pavel
     Stehule, Amit Kapila)
    </para>

    <para>
     This is enabled by <literal>WITH FORCE</literal>.
    </para>

    </listitem>

    <listitem>
    <!--
    Author: Peter Eisentraut <peter@eisentraut.org>
    2020-03-09 [71d60e2aa] Add tg_updatedcols to TriggerData
    -->

    <para>
     Add C structure member <link
     linkend="trigger-interface"><structfield>tg_updatedcols</structfield></link>
     to record updated columns to C triggers (Peter Eisentraut)
    </para>

    </listitem>

    <listitem>
    <!--
    Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
    2020-03-20 [4e6209134] pg_dump: Add FOREIGN to ALTER statements, if appropriate
    -->

    <para>
     Add <literal>FOREIGN</literal> to <command>ALTER</command> statements,
     if appropriate (Luis Carril)
    </para>

    <para>
     WHAT IS THIS ABOUT?
    </para>

    </listitem>

    </itemizedlist>

   </sect3>

   <sect3>
    <title>Data Types</title>

    <itemizedlist>

    <listitem>
    <!--
    Tom Lane <tgl@sss.pgh.pa.us>
    2020-03-19 [24e2885ee] Introduce "anycompatible" family of polymorphic types.
    -->

    <para>
     Add polymorphic data types for use by functions requiring compatible
     arguments (Pavel Stehule)
    </para>

    <para>
     The new data types are <link
     linkend="datatype-pseudotypes-table">anycompatible</link>,
     anycompatiblearray, anycompatiblenonarray, and anycompatiblerange.
    </para>

    </listitem>

    <listitem>
    <!--
    Author: Thomas Munro <tmunro@postgresql.org>
    2020-04-07 [aeec457de] Add SQL type xid8 to expose FullTransactionId to users.
    -->

    <para>
     Add <acronym>SQL</acronym> data type <link
     linkend="datatype-oid">xid8</link> to expose FullTransactionId
     (Thomas Munro)
    </para>

    <para>
     The xid data type is only four bytes so does not show the transaction
     epoch.
    </para>

    </listitem>

    <listitem>
    <!--
    Author: Peter Eisentraut <peter@eisentraut.org>
    2020-03-18 [a2b1faa0f] Implement type regcollation
    -->

    <para>
     Add data type <link linkend="datatype-oid">regcollation</link> and
     helper functions for system collations (Julien Rouhaud)
    </para>

    </listitem>

    <listitem>
    <!--
    Author: Thomas Munro <tmunro@postgresql.org>
    2019-10-16 [d5ac14f9c] Use libc version as a collation version on glibc systems
    -->

    <para>
     Use the glibc version in some cases as the <link
     linkend="collation">collation</link> version (Thomas Munro)
    </para>

    <para>
     If the glibc version changes, a warning will be issued when a
     mismatching collation is used.
    </para>

    </listitem>

    <listitem>
    <!--
    Author: Thomas Munro <tmunro@postgresql.org>
    2020-03-25 [352f6f2df] Add collation versions for Windows.
    -->

    <para>
     Add support for collation versions on Windows (Thomas Munro)
    </para>

    </listitem>

    <listitem>
    <!--
    Author: Tom Lane <tgl@sss.pgh.pa.us>
    2019-10-28 [8b7a0f1d1] Allow extracting fields from a ROW() expression in more 
    -->

    <para>
     Allow <link linkend="rowtypes"><literal>ROW</literal> values</link>
     values to have their members extracted with suffix notation (Tom Lane)
    </para>

    <para>
     For example, <literal>(ROW(4, 5.0)).f1</literal> returns 4.
    </para>

    </listitem>


    </itemizedlist>

   </sect3>

   <sect3>
    <title>Functions</title>

    <itemizedlist>

    <listitem>
    <!--
    Author: Andrew Dunstan <andrew@dunslane.net>
    2020-01-17 [a83586b55] Add a non-strict version of jsonb_set
    -->

    <para>
     Add alternate version of <link
     linkend="functions-json-processing-table"><function>jsonb_setI()</function></link>
     with special <literal>NULL</literal> handling (Andrew Dunstan)
    </para>

    <para>
     The new function, <function>jsonb_set_lax()</function>, allows null
     new values to either set the specified key to <acronym>JSON</acronym>
     null, delete the key, raise exception, or ignore the operation.
     IS 'return_target' CLEAR?
    </para>

    </listitem>

    <listitem>
    <!--
    Author: Alexander Korotkov <akorotkov@postgresql.org>
    2019-09-25 [bffe1bd68] Implement jsonpath .datetime() method
    -->

    <para>
     Add jsonpath <link
     linkend="functions-sqljson-path-operators">.<function>datetime()</function></link>
     method (Nikita Glukhov, Teodor Sigaev, Oleg Bartunov, Alexander
     Korotkov)
    </para>

    <para>
     This allows json values to be converted to timestamps, which can
     then be processed in jsonpath expressions.  This also adds jsonpath
     functions that support time zone-aware output.
    </para>

    </listitem>

    <listitem>
    <!--
    Author: Peter Eisentraut <peter@eisentraut.org>
    2020-04-02 [2991ac5fc] Add SQL functions for Unicode normalization
    -->

    <para>
     Add <acronym>SQL</acronym> functions <link
     linkend="functions-string-sql"><literal>NORMALIZE</literal>()</link>
     to normalize Unicode strings, and <link
     linkend="collation-nondeterministic"><literal>IS
     NORMALIZED</literal></link> to check for normalization (Peter
     Eisentraut)
    </para>

    </listitem>

    <listitem>
    <!--
    Author: Tom Lane <tgl@sss.pgh.pa.us>
    2020-03-06 [a6525588b] Allow Unicode escapes in any server encoding, not only U
    -->

    <para>
     Allow <link linkend="sql-syntax-strings-uescape">Unicode
     escapes</link>, e.g., E'\u####', U&amp;'\####', to specify any
     character available in the database encoding, even when the database
     encoding is not <acronym>UTF</acronym>-8 (Tom Lane)
    </para>

    <para>
     The Unicode characters must be available in the database encoding.
    </para>

    </listitem>

    <listitem>
    <!--
    Author: Tom Lane <tgl@sss.pgh.pa.us>
    2020-03-03 [d67755049] Allow to_date/to_timestamp to recognize non-English mont
    -->

    <para>
     Allow <link
     linkend="functions-formatting"><function>to_date()</function></link>
     and <function>to_timestamp()</function> to recognize non-English
     month/day names (Juan Jos&eacute; Santamar&iacute;a Flecha, Tom Lane)
    </para>

    <para>
     The names recognized are the same as those output by <link
     linkend="functions-formatting"><function>to_char()</function></link>
     with the same format codes.
    </para>

    </listitem>

    <listitem>
    <!--
    Author: Alexander Korotkov <akorotkov@postgresql.org>
    2019-09-16 [d589f9446] Support for FF1-FF6 datetime format patterns
    -->

    <para>
     Add format specifications FF1-FF6 to control display of 1-6 subsecond
     digits (Alexander Korotkov, Nikita Glukhov, Teodor Sigaev, Oleg
     Bartunov)
    </para>

    <para>
     These patterns can be used by <function>to_char()</function>,
     <function>to_timestamp()</function>, and jsonpath's
     .<function>datetime()</function>.
    </para>

    </listitem>

    <listitem>
    <!--
    Author: Alexander Korotkov <akorotkov@postgresql.org>
    2019-09-16 [b64b857f5] Support for SSSSS datetime format pattern
    -->

    <para>
     Add <literal>SSSSS</literal> time format specification as an
     <acronym>SQL</acronym> standard alias for <literal>SSSS</literal>
     (Nikita Glukhov, Alexander Korotkov)
    </para>

    </listitem>

    <listitem>
    <!--
    Author: Peter Eisentraut <peter@eisentraut.org>
    2019-07-14 [5925e5549] Add gen_random_uuid function
    -->

    <para>
     Add function <link
     linkend="functions-uuid"><function>gen_random_uuid()</function></link>
     to generate version 4 UUIDs (Peter Eisentraut)
    </para>

    <para>
     Previously <acronym>UUID</acronym> generation functions were only
     available external modules <xref linkend="uuid-ossp"/> or <xref
     linkend="pgcrypto"/> were installed.
    </para>

    </listitem>

    <listitem>
    <!--
    Author: Dean Rasheed <dean.a.rasheed@gmail.com>
    2020-01-25 [13661ddd7] Add functions gcd() and lcm() for integer and numeric ty
    -->

    <para>
     Add greatest-common-denominator (<link
     linkend="functions-math-func-table">gcd</link>) and
     least-common-multiple (lcm) functions (Vik Fearing)
    </para>

    </listitem>

    <listitem>
    <!--
    Author: Dean Rasheed <dean.a.rasheed@gmail.com>
    2020-03-01 [43a899f41] Fix corner-case loss of precision in numeric ln().
    Author: Dean Rasheed <dean.a.rasheed@gmail.com>
    2020-03-28 [4083f445c] Improve the performance and accuracy of numeric sqrt() a
    -->

    <para>
     Improve the performance and accuracy of <link
     linkend="functions-math-func-table">square root</link> and natural log
     (ln) output (Dean Rasheed)
    </para>

    </listitem>

    <listitem>
    <!--
    Author: Tom Lane <tgl@sss.pgh.pa.us>
    2020-01-06 [20d6225d1] Add functions min_scale(numeric) and trim_scale(numeric)
    -->

    <para>
     Add function <link
     linkend="functions-math-func-table"><function>min_scale()</function></link>
     that returns the number of digits to the right the decimal point
     that is required to represent the numeric value with full precision
     (Pavel Stehule)
    </para>

    </listitem>

    <listitem>
    <!--
    Author: Tom Lane <tgl@sss.pgh.pa.us>
    2020-01-06 [20d6225d1] Add functions min_scale(numeric) and trim_scale(numeric)
    -->

    <para>
     Add function <link
     linkend="functions-math-func-table"><function>trim_scale()</function></link>
     to reduce the scale of a number by removing trailing zeros (Pavel
     Stehule)
    </para>

    </listitem>

    <listitem>
    <!--
    Author: Alexander Korotkov <akorotkov@postgresql.org>
    2019-07-14 [6254c55f8] Add missing commutators for distance operators
    -->

    <para>
     Add commutators of <link linkend="functions-geometry-op-table">distance
     operators</link> (Nikita Glukhov)
    </para>

    <para>
     For example, previously only point &lt;-&gt; line was supported,
     now line &lt;-&gt; point works too.
    </para>

    </listitem>

    <listitem>
    <!--
    Author: Thomas Munro <tmunro@postgresql.org>
    2020-04-07 [4c04be9b0] Introduce xid8-based functions to replace txid_XXX.
    -->

    <para>
     Create xid8 versions of all <link
     linkend="functions-pg-snapshot">transaction id functions</link>
     (Thomas Munro)
    </para>

    <para>
     The old function names were kept for backward compatibility.  DO WE
     HAVE NEW NAMES?
    </para>

    </listitem>

    <listitem>
    <!--
    Author: Tom Lane <tgl@sss.pgh.pa.us>
    2020-04-07 [26a944cf2] Adjust bytea get_bit/set_bit to use int8 not int4 for bi
    -->

    <para>
     Allow <link
     linkend="functions-binarystring-other"><function>get_bit()</function></link>
     and <function>set_bit()</function> to set bits beyond 256MB of bytea
     data (Movead Li)
    </para>

    </listitem>

    <listitem>
    <!--
    Author: Tom Lane <tgl@sss.pgh.pa.us>
    2019-08-01 [4886da832] Mark advisory-lock functions as parallel restricted, not
    -->

    <para>
     Allow <link linkend="functions-advisory-locks">advisory-lock
     functions</link> to be used in some parallel operations (Tom Lane)
    </para>

    </listitem>

    <listitem>
    <!--
    Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
    2020-04-20 [5fc703946] Add ALTER .. NO DEPENDS ON
    -->

    <para>
     Add the ability to remove an object's dependency on an extension
     (&Aacute;lvaro Herrera)
    </para>

    <para>
     The object can be a function, materialized view, index, or trigger.
     The syntax is <command>ALTER .. NO DEPENDS ON</command>.
    </para>

    </listitem>


    </itemizedlist>

   </sect3>

   <sect3>
    <title><link linkend="plpgsql">PL/pgSQL</link></title>

    <itemizedlist>

    <listitem>
    <!--
    Author: Tom Lane <tgl@sss.pgh.pa.us>
    2020-03-26 [8f59f6b9c] Improve performance of "simple expressions" in PL/pgSQL.
    -->

    <para>
     Improve performance of simple PL/pgSQL expressions (Tom Lane,
     Amit Langote)
    </para>

    </listitem>

    <listitem>
    <!--
    Author: Tom Lane <tgl@sss.pgh.pa.us>
    2019-11-22 [73b06cf89] Avoid taking a new snapshot for an immutable simple expr
    -->

    <para>
     Improve the performance of PL/pgSQL functions that use immutable
     expressions (Konstantin Knizhnik)
    </para>

    </listitem>


    </itemizedlist>

   </sect3>

   <sect3>
    <title>Client Interfaces</title>

    <itemizedlist>

    <listitem>
    <!--
    Author: Jeff Davis <jdavis@postgresql.org>
    2019-09-23 [d6e612f83] Add libpq parameter 'channel_binding'.
    -->

    <para>
     Allow libpq clients to require channel binding (Jeff Davis)
    </para>

    <para>
     Using the libpq connection parameter <link
     linkend="libpq-connect-channel-binding"><literal>channel_binding</literal></link>
     forces the other end of the <acronym>TLS</acronym> connection to prove
     it knows the user's password.  This prevents man-in-the-middle attacks.
    </para>

    </listitem>

    <listitem>
    <!--
    Author: Michael Paquier <michael@paquier.xyz>
    2020-01-28 [ff8ca5fad] Add connection parameters to control SSL protocol min/ma
    Author: Michael Paquier <michael@paquier.xyz>
    2020-04-30 [401aad670] Rename connection parameters to control min/max SSL prot
    -->

    <para>
     Add libpq connection parameters to control the min/max
     <acronym>TLS</acronym> version (Daniel Gustafsson)
    </para>

    <para>
     The settings are <xref
     linkend="libpq-connect-ssl-min-protocol-version"/> and <xref
     linkend="libpq-connect-ssl-max-protocol-version"/>.
    </para>

    </listitem>

    <listitem>
    <!--
    Author: Fujii Masao <fujii@postgresql.org>
    2020-03-05 [2eb3bc588] Fix issues around .pgpass file.
    -->

    <para>
     Tighten line length and comment detection in <link
     linkend="libpq-pgpass">.pgpass</link> files (Fujii Masao)
    </para>

    </listitem>

    <listitem>
    <!--
    Author: Andrew Dunstan <andrew@dunslane.net>
    2019-11-30 [4dc635521] libq support for sslpassword connection param,  DER form
    -->

    <para>
     Allow specification of passwords to unlock client certificates (Craig
     Ringer, Andrew Dunstan)
    </para>

    <para>
     This is specified by the <xref linkend="libpq-connect-sslpassword"/>
     connection option.
    </para>

    </listitem>

    <listitem>
    <!--
    Author: Andrew Dunstan <andrew@dunslane.net>
    2019-11-30 [4dc635521] libq support for sslpassword connection param,  DER form
    -->

    <para>
     Allow <acronym>DER</acronym>-encoded client certificates (Craig Ringer,
     Andrew Dunstan)
    </para>

    </listitem>


    </itemizedlist>

   </sect3>

   <sect3>
    <title>Client Applications</title>

    <sect4>
     <title><xref linkend="app-psql"/></title>

     <itemizedlist>

    <listitem>
    <!--
    Author: Michael Paquier <michael@paquier.xyz>
    2020-02-12 [dcdbb5a5d] Add %x to default PROMPT1 and PROMPT2 in psql
    -->

    <para>
     Add the transaction status (%x) to the default <link
     linkend="app-psql-prompting"><application>psql</application>
     prompts</link> (Vik Fearing)
    </para>

    </listitem>

    <listitem>
    <!--
    Author: Thomas Munro <tmunro@postgresql.org>
    2019-11-19 [7f338369c] Allow invisible PROMPT2 in psql.
    -->

    <para>
     Allow the secondary <application>psql</application> prompt to be same
     number of spaces as the primary prompt (Thomas Munro)
    </para>

    <para>
     This is accomplished by setting PROMPT2 to %w.
    </para>

    </listitem>

    <listitem>
    <!--
    Author: Tom Lane <tgl@sss.pgh.pa.us>
    2020-04-07 [b63c293bc] Allow psql's \g and \gx commands to transiently change \
    -->

    <para>
     Allow <link linkend="app-psql-meta-commands">\g</link> and \gx to
     change any <link linkend="app-psql-meta-commands">\pset</link> output
     options for a single command (Tom Lane)
    </para>

    <para>
     This allows syntax like \g (expand=on), which is equivalent to \gx.
    </para>

    </listitem>

    <listitem>
    <!--
    Author: Alexander Korotkov <akorotkov@postgresql.org>
    2020-03-08 [b0b5e20cd] Show opclass and opfamily related information in psql
    -->

    <para>
     Add <application>psql</application> commands to report operator
     classes and operator families (Sergey Cherkashin, Nikita Glukhov,
     Alexander Korotkov)
    </para>

    <para>
     The new commands are <link
     linkend="app-psql-meta-commands">\dAc</link>, \dAf, \dAo, and \dAp.
    </para>
    </listitem>

    <listitem>
    <!--
    Author: Tom Lane <tgl@sss.pgh.pa.us>
    2019-07-03 [9a2ea6183] Show table persistence in psql's \dt+ and related comman
    -->

    <para>
     Show table persistence in <application>psql</application>'s <link
     linkend="app-psql-meta-commands">\dt+</link> and related commands
     (David Fetter)
    </para>

    <para>
     In verbose mode, the table/index/view shows if the object is permanent,
     temporary, or unlogged.
    </para>

    </listitem>

    <listitem>
    <!--
    Author: Tom Lane <tgl@sss.pgh.pa.us>
    2019-07-23 [eb5472da9] Improve psql's \d output for TOAST tables.
    -->

    <para>
     Improve output of <application>psql</application> <link
     linkend="app-psql-meta-commands">\d</link> for <acronym>TOAST</acronym>
     tables (Justin Pryzby)
    </para>

    </listitem>

    <listitem>
    <!--
    Author: Tom Lane <tgl@sss.pgh.pa.us>
    2019-11-22 [d1c866e57] Make psql redisplay the query buffer after \e.
    -->

    <para>
     Adjust display of <application>psql</application>'s <link
     linkend="app-psql-meta-commands">\e</link> query (Tom Lane)
    </para>

    <para>
     When exiting the editor, if the query doesn't end with a semicolon
     or \g, the query buffer contents will now be displayed.
    </para>

    </listitem>

    <listitem>
    <!--
    Author: Tom Lane <tgl@sss.pgh.pa.us>
    2019-07-05 [02e95a504] Add \warn command to psql.
    -->

    <para>
     Add <link linkend="app-psql-meta-commands">\warn</link> command to
     <application>psql</application> (David Fetter)
    </para>

    <para>
     This is like \echo except that the text is sent to stderr instead
     of stdout.
    </para>

    </listitem>

    <listitem>
    <!--
    Author: Peter Eisentraut <peter@eisentraut.org>
    2020-02-28 [1933ae629] Add PostgreSQL home page to - -help output
    -->

    <para>
     Add the <productname>PostgreSQL</productname> home page to command-line
     <option>--help</option> output (Peter Eisentraut)
    </para>

    </listitem>

     </itemizedlist>

    </sect4>

    <sect4>
     <title><link linkend="pgbench"><application>pgbench</application></link></title>

     <itemizedlist>

    <listitem>
    <!--
    Author: Amit Kapila <akapila@postgresql.org>
    2019-10-03 [b1c1aa531] pgbench: add - -partitions and - -partition-method options
    -->

    <para>
     Allow pgbench to partition its 'accounts' table (Fabien Coelho)
    </para>

    <para>
     This allows performance testing of partitioning.
    </para>

    </listitem>

    <listitem>
    <!--
    Author: Michael Paquier <michael@paquier.xyz>
    2020-04-03 [9d8ef9880] Add support for \aset in pgbench
    -->

    <para>
     Add pgbench command \aset, which behaves like \gset, but for multiple
     queries (Fabien Coelho)
    </para>

    </listitem>

    <listitem>
    <!--
    Author: Fujii Masao <fujii@postgresql.org>
    2019-11-06 [a386942bd] Add "G" (server-side data generation) as an initializati
    -->

    <para>
     Allow pgbench to generate its data server-side, rather than client side
     (Fabien Coelho)
    </para>

    </listitem>

    <listitem>
    <!--
    Author: Thomas Munro <tmunro@postgresql.org>
    2019-07-16 [5823677ac] Provide pgbench - -show-script to dump built-in scripts.
    -->

    <para>
     Allow pgbench to dump script contents using
     <option>--show-script</option> (Fabien Coelho)
    </para>

    </listitem>

     </itemizedlist>

    </sect4>

   </sect3>

   <sect3>
    <title>Server Applications</title>

    <itemizedlist>

    <listitem>
    <!--
    Author: Robert Haas <rhaas@postgresql.org>
    2020-04-03 [0d8c9c121] Generate backup manifests for base backups, and validate
    Author: Robert Haas <rhaas@postgresql.org>
    2020-04-12 [dbc60c559] Rename pg_validatebackup to pg_verifybackup.
    -->

    <para>
     Generate backup manifests for base backups, and verify them (Robert
     Haas)
    </para>

    <para>
     A new tool <link
     linkend="app-pgverifybackup"><application>pg_verifybackup</application>"</link>
     can verify backups.
    </para>

    </listitem>

    <listitem>
    <!--
    Author: Author: Fujii Masao <fujii@postgresql.org>
    2020-03-19 [fab13dc50] Make pg_basebackup ask the server to estimate the total 
    -->

    <para>
     Have <link
     linkend="app-pgbasebackup"><application>pg_basebackup</application></link>
     estimate the total backup size by default (Fujii Masao)
    </para>

    <para>
     This computation allows <link
     linkend="monitoring-stats-dynamic-views-table"><structname>pg_stat_progress_analyze</structname></link>
     to show progress, and can be disabled by using the
     <option>--no-estimate-size</option> option.  Previously, this
     computation happened only if <option>--progress</option> was used.
    </para>

    </listitem>

    <listitem>
    <!--
    Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
    2019-09-30 [927474ce1] pg_rewind: Allow writing recovery configuration
    -->

    <para>
     Add <link
     linkend="app-pgrewind"><application>pg_rewind</application></link>
     option to configure standbys (Paul Guo, Jimmy Yih, Ashwin Agrawal)
    </para>

    <para>
     This matches <link
     linkend="app-pgbasebackup"><application>pg_basebackup</application></link>'s
     <option>--write-recovery-conf</option> option.
    </para>

    </listitem>

    <listitem>
    <!--
    Author: Michael Paquier <michael@paquier.xyz>
    2020-04-01 [a7e8ece41] Add -c/- -restore-target-wal to pg_rewind
    -->

    <para>
     Allow <application>pg_rewind</application> to use the target
     cluster's <xref linkend="guc-restore-command"/> to retrieve needed
     <acronym>WAL</acronym> (Alexey Kondratov)
    </para>

    <para>
     This is enabled using the
     <option>-c</option>/<option>--restore-target-wal</option> option.
    </para>

    </listitem>

    <listitem>
    <!--
    Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
    2019-09-27 [5adafaf17] Have pg_rewind run crash recovery before rewinding
    -->

    <para>
     Have <application>pg_rewind</application> automatically run crash
     recovery before rewinding (Paul Guo, Jimmy Yih, Ashwin Agrawal)
    </para>

    <para>
     This can be disabled by using <option>--no-ensure-shutdown</option>.
    </para>

    </listitem>

    <listitem>
    <!--
    Author: Fujii Masao <fujii@postgresql.org>
    2019-11-13 [7b8a899bd] Make pg_waldump report more detail information about PRE
    -->

    <para>
     Increase <link linkend="sql-prepare-transaction"><command>PREPARE
     TRANSACTION</command></link> information reported by
     <application>pg_waldump</application> (Fujii Masao)
    </para>

    </listitem>

    <listitem>
    <!--
    Author: Robert Haas <rhaas@postgresql.org>
    2020-04-02 [ac44367ef] pg_waldump: Add a - -quiet option.
    -->

    <para>
     Add <link
     linkend="pgwaldump"><application>pg_waldump</application></link>
     option <option>--quiet</option> to suppress non-error output (Andres
     Freund, Robert Haas)
    </para>

    </listitem>

    <listitem>
    <!--
    Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
    2020-03-25 [2f9eb3132] pg_dump: Allow dumping data of specific foreign servers
    -->

    <para>
     Allow <link
     linkend="app-pgdump"><application>pg_dump</application></link>
     <option>--include-foreign-data</option> to dump data from foreign
     servers (Luis Carril)
    </para>

    </listitem>

    <listitem>
    <!--
    Author: Amit Kapila <akapila@postgresql.org>
    2020-01-29 [47bc9ced0] Add - -parallel option to vacuumdb command.
    -->

    <para>
     Allow vacuum commands run by <link
     linkend="app-vacuumdb">vacuumdb</link> to operate in parallel mode
     (Masahiko Sawada)
    </para>

    <para>
     This is enabled with the new <option>--parallel</option> option.
    </para>

    </listitem>

    <listitem>
    <!--
    Author: Michael Paquier <michael@paquier.xyz>
    2019-07-27 [5ab892c39] Add support for - -jobs in reindexdb
    -->

    <para>
     Allow <link linkend="app-reindexdb">reindexdb</link> to operate in
     parallel (Julien Rouhaud)
    </para>

    <para>
     Parallel mode is enabled with the new <option>--jobs</option> option.
    </para>

    </listitem>

    <listitem>
    <!--
    Author: Amit Kapila <akapila@postgresql.org>
    2019-11-20 [80e05a088] Add the support for '-f' option in dropdb utility.
    -->

    <para>
     Allow <link linkend="app-dropdb">dropdb</link> to force disconnections
     so the drop succeeds (Pavel Stehule)
    </para>

    <para>
     This is enabled with the <option>-f</option> option.
    </para>

    </listitem>

    <listitem>
    <!--
    Author: Author: Michael Paquier <michael@paquier.xyz>
    2019-10-23 [4fa5edcd1] Remove last traces of - -adduser/- -no-adduser in createus
    -->

    <para>
     Remove <option>--adduser</option> and <option>--no-adduser</option>
     from <link linkend="app-createuser">createuser</link> (Alexander
     Lakhin)
    </para>

    <para>
     The long-supported options for this are called
     <option>--superuser</option> and <option>--no-superuser</option>.
    </para>

    </listitem>

    <listitem>
    <!--
    Author: Peter Eisentraut <peter@eisentraut.org>
    2019-07-27 [959f6d6a1] pg_upgrade: Default new bindir to pg_upgrade location
    -->

    <para>
     Use the directory of the <link
     linkend="pgupgrade"><application>pg_upgrade</application></link>
     binary as the default new 'bindir' location when running
     <application>pg_upgrade</application> (Daniel Gustafsson)
    </para>

    </listitem>

    </itemizedlist>

   </sect3>

   <sect3>
    <title>Documentation</title>

    <itemizedlist>

    <listitem>
    <!--
    Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
    2020-04-03 [347d2b07f] Add a glossary to the documentation
    -->

    <para>
     Add a <link linkend="glossary">glossary</link> to the documentation
     (Corey Huinker, J&uuml;rgen Purtz, Roger Harkavy, &Aacute;lvaro
     Herrera)
    </para>

    </listitem>

    <listitem>
    <!--
    Author: Tom Lane <tgl@sss.pgh.pa.us>
    2020-04-12 [e894c6183] Doc: introduce new layout for tables of functions and op
    -->

    <para>
     Reformat tables containing <link linkend="functions">function
     information</link> for better clarity (Tom Lane)
    </para>

    </listitem>

    <listitem>
    <!--
    Author: Peter Eisentraut <peter@eisentraut.org>
    2019-08-13 [416c75cf3] Update to DocBook 4.5
    -->

    <para>
     Upgrade to use <link linkend="docguide-docbook">DocBook 4.5</link>
     (Peter Eisentraut)
    </para>

    </listitem>

    </itemizedlist>

   </sect3>

   <sect3>
    <title>Source Code</title>

    <itemizedlist>

    <listitem>
    <!--
    Author: Michael Paquier <michael@paquier.xyz>
    2019-07-02 [2b1394fc2] Add support for Visual Studio 2019 in build scripts
    -->

    <para>
     Add support for building on Visual Studio 2019 (Haribabu Kommi)
    </para>

    </listitem>

    <listitem>
    <!--
    Author: Peter Eisentraut <peter@eisentraut.org>
    2019-12-19 [e975c1a60] Add support for MSYS2
    -->

    <para>
     Add build support for MSYS2 (Peter Eisentraut)
    </para>

    </listitem>

    <listitem>
    <!--
    Author: Noah Misch <noah@leadboat.com>
    2019-10-18 [30ee5d17c] For all ppc compilers, implement compare_exchange and fe
    -->

    <para>
     Add compare_exchange and fetch_add assembly language code for Power
     PC compilers (Noah Misch)
    </para>

    </listitem>

    <listitem>
    <!--
    Author: Peter Eisentraut <peter@eisentraut.org>
    2019-07-04 [7b925e127] Sync our Snowball stemmer dictionaries with current upst
    -->

    <para>
     Update <link linkend="textsearch-snowball-dictionary">Snowball
     stemmer</link> dictionaries used by full text search (Panagiotis
     Mavrogiorgos)
    </para>

    <para>
     This adds Greek stemming and improves Danish and French stemming.
    </para>

    </listitem>

    <listitem>
    <!--
    Author: Michael Paquier <michael@paquier.xyz>
    2020-02-19 [e2e02191e] Clean up some code, comments and docs referring to Windo
    -->

    <para>
     Remove support for Windows 2000 (Michael Paquier)
    </para>

    </listitem>

    <listitem>
    <!--
    Author: Peter Eisentraut <peter@eisentraut.org>
    2019-07-01 [c72f9b950] Remove support for non-ELF BSD systems
    -->

    <para>
     Remove support for non-<acronym>ELF</acronym> <acronym>BSD</acronym>
     systems (Peter Eisentraut)
    </para>

    </listitem>

    <listitem>
    <!--
    Author: Peter Eisentraut <peter@eisentraut.org>
    2020-01-08 [37f21ed13] Remove support for Python older than 2.6
    -->

    <para>
     Remove <link linkend="plpython">support</link> for Python versions
     2.5.X and earlier (Peter Eisentraut)
    </para>

    </listitem>

    <listitem>
    <!--
    Author: Michael Paquier <michael@paquier.xyz>
    2020-01-06 [7b283d0e1] Remove support for OpenSSL 0.9.8 and 1.0.0
    -->

    <para>
     Remove <link linkend="install-short">support</link> for OpenSSL 0.9.8
     and 1.0.0 (Michael Paquier)
    </para>

    </listitem>

    <listitem>
    <!--
    Author: Peter Eisentraut <peter@eisentraut.org>
    2019-11-27 [4513d8b07] Move configure - -disable-float8-byval to pg_config_manua
    -->

    <para>
     Remove <link linkend="install-short">support</link> option
     <option>--disable-float</option>8-byval (Peter Eisentraut)
    </para>

    <para>
     This was needed for previously supported version-zero functions.
    </para>

    </listitem>

    <listitem>
    <!--
    Author: Peter Eisentraut <peter@eisentraut.org>
    2019-11-21 [2e4db241b] Remove configure - -disable-float4-byval
    -->

    <para>
     Remove configure option <option>--disable-float4-byval</option>
     (Peter Eisentraut)
    </para>

    <para>
     This was needed for previously supported version-zero functions.
    </para>

    </listitem>

    <listitem>
    <!--
    Author: Fujii Masao <fujii@postgresql.org>
    2020-03-30 [6aba63ef3] Allow the planner-related functions and hook to accept t
    -->

    <para>
     Add the query string to planner hook functions (Pascal Legrand,
     Julien Rouhaud)
    </para>

    </listitem>

    <listitem>
    <!--
    Author: Joe Conway <mail@joeconway.com>
    2019-11-23 [f7a2002e8] Add object TRUNCATE hook
    -->

    <para>
     Add <link linkend="sql-truncate"><command>TRUNCATE</command></link>
     command hook (Yuli Khodorkovskiy)
    </para>

    </listitem>

    <listitem>
    <!--
    Author: Andrew Dunstan <andrew@dunslane.net>
    2020-03-25 [896fcdb23] Provide a TLS init hook
    -->

    <para>
     Add <acronym>TLS</acronym> init hook (Andrew Dunstan)
    </para>

    </listitem>

    <listitem>
    <!--
    Author: Peter Eisentraut <peter@eisentraut.org>
    2020-01-31 [a9cff89f7] Allow building without default socket directory
    -->

    <para>
     Allow building with no predefined Unix-domain socket directory
     (Peter Eisentraut)
    </para>

    </listitem>

    <listitem>
    <!--
    Author: Tom Lane <tgl@sss.pgh.pa.us>
    2019-09-05 [7de19fbc0] Use data directory inode number, not port, to select Sys
    -->

    <para>
     Reduce the probability of SysV resource key collision on Unix platforms
     (Tom Lane)
    </para>

    </listitem>

    <listitem>
    <!--
    Author: Peter Eisentraut <peter@eisentraut.org>
    2019-09-05 [74a308cf5] Use explicit_bzero
    -->

    <para>
     Use operating system functions to cleanly erase memory that contains
     sensitive information (Peter Eisentraut)
    </para>

    <para>
     For example, this is used for clearing passwords stored in memory.
    </para>

    </listitem>

    <listitem>
    <!--
    Author: Author: Tom Lane <tgl@sss.pgh.pa.us>
    2019-08-19 [55ea10918] Add "headerscheck" script to test header-file compilabil
    -->

    <para>
     Add "headerscheck" script to test C header-file compatibility
     (Tom Lane)
    </para>

    </listitem>

    <listitem>
    <!--
    Author: Tom Lane <tgl@sss.pgh.pa.us>
    2019-07-15 [1cff1b95a] Represent Lists as expansible arrays, not chains of cons
    -->

    <para>
     Implement internal lists as arrays, rather than a chain of structures
     (Tom Lane)
    </para>

    <para>
     This improves performance for queries that access many object.
     The internal List <acronym>API</acronym> has also been improved.
    </para>

    </listitem>

    <listitem>
    <!--
    Author: Michael Paquier <michael@paquier.xyz>
    2019-07-13 [39aadc984] Fix some inconsistencies in MSVC scripts
    -->

    <para>
     Update <link linkend="install-windows">Windows build scripts</link>
     to use the modern <option>--with-uuid</option> flag for
     <acronym>UUID</acronym> libraries (Kyotaro Horiguchi)
    </para>

    </listitem>

    </itemizedlist>

   </sect3>

   <sect3>
    <title>Additional Modules</title>

    <itemizedlist>

    <listitem>
    <!--
    Author: Tom Lane <tgl@sss.pgh.pa.us>
    2020-01-29 [50fc694e4] Invent "trusted" extensions, and remove the pg_pltemplat
    -->

    <para>
     Allow <link linkend="sql-createextension">extensions</link> to be
     specified as trusted (Tom Lane)
    </para>

    <para>
     Such extensions can be installed in a database by users with creation
     rights, even if they are not superusers.  This change also removes
     the <structname>pg_pltemplate</structname> system catalog.
    </para>

    </listitem>

    <listitem>
    <!--
    Author: Tom Lane <tgl@sss.pgh.pa.us>
    2020-02-19 [70a773200] Remove support for upgrading extensions from "unpackaged
    -->

    <para>
     Remove support for upgrading "unpackaged" extensions (Tom Lane)
    </para>

    </listitem>

    <listitem>
    <!--
    Author: Andrew Dunstan <andrew@dunslane.net>
    2019-12-20 [6136e94dc] Superuser can permit passwordless connections on postgre
    -->

    <para>
     Allow non-superusers to connect to <xref linkend="postgres-fdw"/>
     foreign servers without using a password (Craig Ringer)
    </para>

    <para>
     Specifically, allow <link linkend="sql-alterusermapping"><command>ALTER
     USER MAPPING</command></link> to set
     <literal>password_required</literal> to false.  Care must still be
     taken to avoid non-superusers from using superuser credentials to
     connect to the foreign server.
    </para>

    </listitem>

    <listitem>
    <!--
    Author: Andrew Dunstan <andrew@dunslane.net>
    2020-01-09 [f5fd995a1] Allow 'sslkey' and 'sslcert' in postgres_fdw user mappin
    -->

    <para>
     Allow <application>postgres_fdw</application> to use certificate
     authentication (Craig Ringer)
    </para>

    <para>
     Different users can use different certificates.
    </para>

    </listitem>

    <listitem>
    <!--
    Author: Joe Conway <mail@joeconway.com>
    2019-11-23 [4f66c93f6] Update sepgsql to add mandatory access control for TRUNC
    -->

    <para>
     Allow <link linkend="sepgsql"/> to control access to the
     <command>TRUNCATE</command> command (Yuli Khodorkovskiy)
    </para>

    </listitem>

    <listitem>
    <!--
    Author: Tom Lane <tgl@sss.pgh.pa.us>
    2020-03-06 [36058a3c5] Create contrib/bool_plperl to provide a bool transform f
    -->

    <para>
     Add extension <application>bool_plperl</application> which transforms
     <acronym>SQL</acronym> booleans to/from PL/Perl booleans (Ivan
     Panchenko) WHERE IS THIS DOCUMENTED?
    </para>

    </listitem>

    <listitem>
    <!--
    Author: Andrew Gierth <rhodiumtoad@postgresql.org>
    2019-07-14 [6e74c64bc] Teach pg_stat_statements not to ignore FOR UPDATE clause
    -->

    <para>
     Have <xref linkend="pgstatstatements"/> treat <command>SELECT
     ... FOR UPDATE</command>  as distinct from those without <command>FOR
     UPDATE</command> (Andrew Gierth, Vik Fearing)
    </para>

    </listitem>

    <listitem>
    <!--
    Author: Fujii Masao <fujii@postgresql.org>
    2020-04-02 [17e032822] Allow pg_stat_statements to track planning statistics.
    -->

    <para>
     Allow <application>pg_stat_statements</application> to optionally
     track the planning time of statements (Julien Rouhaud, Pascal Legrand,
     Thomas Munro, Fujii Masao)
    </para>

    <para>
     Previously only execution time was tracked.
    </para>

    </listitem>

    <listitem>
    <!--
    Author: Tom Lane <tgl@sss.pgh.pa.us>
    2020-03-31 [70dc4c509] Fix lquery's NOT handling, and add ability to quantify n
    Author: Tom Lane <tgl@sss.pgh.pa.us>
    2020-04-01 [17ca06799] Clean up parsing of ltree and lquery some more.
    -->

    <para>
     Overhaul <xref linkend="ltree"/>'s lquery syntax to treat
     <literal>NOT</literal> (!) more logically (Filip Rembialkowski,
     Tom Lane, Nikita Glukhov)
    </para>

    <para>
     Also allow non-* queries to use a numeric range ({}) of matches.
    </para>

    </listitem>

    <listitem>
    <!--
    Author: Tom Lane <tgl@sss.pgh.pa.us>
    2020-04-01 [949a9f043] Add support for binary I/O of ltree, lquery, and ltxtque
    -->

    <para>
     Add support for binary I/O of <xref linkend="ltree"/>, lquery, and
     ltxtquery types (Nino Floris)
    </para>

    </listitem>

    <listitem>
    <!--
    Author: Tom Lane <tgl@sss.pgh.pa.us>
    2020-03-08 [806eb92c0] Add an "absval" parameter to allow contrib/dict_int to i
    -->

    <para>
     Add option to <xref linkend="dict-int"/> extension to ignore the sign
     of integers (Jeff Janes)
    </para>

    </listitem>

    <listitem>
    <!--
    Author: Fujii Masao <fujii@postgresql.org>
    2020-01-24 [d694e0bb7] Add pg_file_sync() to adminpack extension.
    -->

    <para>
     Add <xref linkend="adminpack"/> function
     <function>pg_file_sync()</function> to allow fsync'ing a file
     (Fujii Masao)
    </para>

    </listitem>

    <listitem>
    <!--
    Author: Michael Paquier <michael@paquier.xyz>
    2019-09-12 [ddbd5d873] Add to pageinspect function to make t_infomask/t_infomas
    Author: Author: Michael Paquier <michael@paquier.xyz>
    2019-09-19 [58b4cb30a] Redesign pageinspect function printing infomask bits
    -->

    <para>
     Add <xref linkend="pageinspect"/> functions to output
     <structfield>t_infomask</structfield>/<structfield>t_infomask2</structfield>
     values in human-readable format (Craig Ringer, Sawada Masahiko,
     Michael Paquier)
    </para>

    </listitem>

    <listitem>
    <!--
    Author: Peter Geoghegan <pg@bowt.ie>
    2020-02-29 [93ee38ead] Teach pageinspect about nbtree deduplication.
    -->

    <para>
     Add btree index deduplication processing columns to pageinspect output
     (Peter Geoghegan)
    </para>

    </listitem>


    </itemizedlist>

   </sect3>

  </sect2>

  <sect2 id="release-13-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></member>
   </simplelist>
  </sect2>

 </sect1>
