<!-- 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-09-24</para>
  </formalpara>

  <sect2>
   <title>Overview</title>

   <para>
    <productname>PostgreSQL</productname> 13 contains many new features and
    enhancements, including:
   </para>

   <itemizedlist>
    <listitem>
     <para>
      Space savings and performance gains from de-duplication of B-tree
      index entries
     </para>
    </listitem>
    <listitem>
     <para>
      Improved performance for queries that use aggregates or partitioned
      tables
     </para>
    </listitem>
    <listitem>
     <para>
      Better query planning when using extended statistics
     </para>
    </listitem>
    <listitem>
     <para>
      Parallelized vacuuming of B-tree indexes
     </para>
    </listitem>
    <listitem>
     <para>
      Incremental sorting
     </para>
    </listitem>
   </itemizedlist>

   <para>
    The above items and other new features
    of <productname>PostgreSQL</productname> 13 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 a null <literal>ESCAPE</literal> value was taken to mean
      using the default escape string (a backslash character).  This also
      applies to <literal>substring(<replaceable>text</replaceable>
      FROM <replaceable>pattern</replaceable>
      ESCAPE <replaceable>text</replaceable>)</literal>.  The previous
      behavior has been retained in old views by keeping the original
      function unchanged.
     </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>
      Make <link
      linkend="textsearch-functions-table"><function>json[b]_to_tsvector()</function></link>
      fully check the spelling of its <literal>string</literal> option
      (Dominik Czarnota)
     </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 setting the number of
      concurrent requests.  The value is now used directly.  Conversion of
      old values to new ones can be done using:
     </para>

<programlisting>
SELECT round(sum(<replaceable>OLDVALUE</replaceable> / n::float)) AS newvalue FROM generate_series(1, <replaceable>OLDVALUE</replaceable>) 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: Fujii Masao <fujii@postgresql.org>
2020-03-19 [1d253bae5] Rename the recovery-related wait events.
Author: Tom Lane <tgl@sss.pgh.pa.us>
2020-05-15 [36ac359d3] Rename assorted LWLock tranches.
2020-05-15 [474e7da64] Change locktype "speculative token" to "spectoken".
2020-05-15 [14a910109] Drop the redundant "Lock" suffix from LWLock wait event
2020-05-16 [3048898e7] Mop-up for wait event naming issues.
-->

     <para>
      Rename various <link linkend="wait-event-table">wait
      events</link> to improve consistency (Fujii Masao, Tom Lane)
     </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>; now it 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>; now it returns
      <command>ALTER MATERIALIZED VIEW</command>.
     </para>
    </listitem>

    <listitem>
<!--
Author: Fujii Masao <fujii@postgresql.org>
2020-07-20 [f5dff45962] Rename wal_keep_segments to wal_keep_size.
-->

     <para>
      Rename configuration parameter <varname>wal_keep_segments</varname>
      to <xref linkend="guc-wal-keep-size"/> (Fujii Masao)
     </para>

     <para>
      This determines how much WAL to retain for standby servers.
      It is specified in megabytes, rather than number of files as with
      the old parameter. If you
      previously used <varname>wal_keep_segments</varname>,
      the following formula will give you an approximately equivalent setting:
<programlisting>
wal_keep_size = wal_keep_segments * wal_segment_size (typically 16MB)
</programlisting>
     </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>PostgreSQL</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>PostgreSQL</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>PostgreSQL</productname> 7.3 servers (Daniel
      Gustafsson)
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
2020-06-29 [21aac2ff9] Remove support for timezone "posixrules" file.
-->

     <para>
      Remove support for <filename>posixrules</filename> files in the
      timezone database (Tom Lane)
     </para>

     <para>
      IANA's timezone group has deprecated this feature, meaning that it
      will gradually disappear from systems' timezone databases over the
      next few years.  Rather than have a behavioral change appear
      unexpectedly with a timezone data update, we have
      removed <productname>PostgreSQL</productname>'s support for this
      feature as of version 13.  This affects only the behavior
      of <link linkend="datetime-posix-timezone-specs">POSIX-style time
      zone specifications</link> that lack an explicit daylight savings
      transition rule; formerly the transition rule could be determined
      by installing a custom <filename>posixrules</filename> file, but
      now it is hard-wired.  The recommended fix for any affected
      installations is to start using a geographical time zone name.
     </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 an <type>lquery</type> pattern
      contains adjacent asterisks with braces,
      e.g., <literal>*{2}.*{3}</literal>, properly interpret that
      as <literal>*{5}</literal> (Nikita Glukhov)
     </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>

   </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>
        Allow <link linkend="ddl-partition-pruning">pruning</link> of
        partitions to happen in more cases
        (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>
        Support row-level <literal>BEFORE</literal> <link
        linkend="triggers">triggers</link> on partitioned tables (&Aacute;lvaro
        Herrera)
       </para>

       <para>
        However, such a trigger is not allowed to 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 a
        partitioned table can be published explicitly, causing all its
        partitions to be published automatically.  Addition/removal of a
        partition causes it to be likewise added to or removed from the
        publication.
        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 changes or their parent'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 whole-row variables (that
        is, <replaceable>table</replaceable><literal>.*</literal>) to be
        used in 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 B-tree indexes
        (Anastasia Lubennikova, Peter Geoghegan)
       </para>

       <para>
        This allows efficient B-tree 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 an
        existing index use 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 on <type>box</type>
        columns to support <literal>ORDER BY <replaceable>box</replaceable>
        &lt;-&gt; <replaceable>point</replaceable></literal> queries (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>!</literal> (NOT) clauses
        in <type>tsquery</type> searches (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's collation must match that of the underlying column,
        but <command>ALTER TABLE</command> previously failed to check
        this.
       </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 the <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 pulled up
        (inlined) 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
Author: Peter Eisentraut <peter@eisentraut.org>
2020-07-05 [94e454cdd] Rename enable_incrementalsort for clarity
-->

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

       <para>
        If an intermediate query result is known to be sorted by
        one or more leading keys of a required sort ordering, the
        additional sorting can be done considering only the remaining
        keys, if the rows are sorted in batches that have equal leading
        keys.
       </para>

       <para>
        If necessary, this can be controlled using <xref
        linkend="guc-enable-incremental-sort"/>.
       </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
Author: Peter Geoghegan <pg@bowt.ie>
2020-07-29 [78530c8e7] Add hash_mem_multiplier GUC.
-->

       <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.  Now, a hash
        aggregation plan can be chosen despite that.  The hash table will
        be spilled to disk if it exceeds <varname>work_mem</varname> times
        <xref linkend="guc-hash-mem-multiplier"/>.
       </para>

       <para>
        This behavior is normally preferable to the old behavior, in which
        once hash aggregation had been chosen, the hash table would be
        kept in memory no matter how large it got &mdash; which could be
        very large if the planner had misestimated.  If necessary,
        behavior similar to that can be obtained by
        increasing <varname>hash_mem_multiplier</varname>.
       </para>
      </listitem>

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

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

       <para>
        This new behavior reduces the work that will be necessary later
        when the table needs to be frozen, and it allows pages to be
        marked as all-visible sooner.  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 <acronym>WAL</acronym> writes to be skipped during a transaction
        that creates or rewrites a relation, 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: Fujii Masao <fujii@postgresql.org>
2019-11-21 [e6d806952] Make DROP DATABASE command generate less WAL records.
-->

       <para>
        Improve 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 retrieval of the leading bytes of <link
        linkend="storage-toast"><acronym>TOAST</acronym></link>'ed values
        (Binguo Bao, Andrey Borodin)
       </para>

       <para>
        Previously, compressed out-of-line <acronym>TOAST</acronym> values
        were fully fetched even when it's known that only some leading
        bytes are needed.  Now, only enough data to produce the result is
        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.
Author: Tom Lane <tgl@sss.pgh.pa.us>
2019-08-15 [bb5ae8f6c] Use a hash table to de-duplicate NOTIFY events faster.
-->

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

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

       <para>
        Speed up conversions of integers to text (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 and extension scripts that
        contain many <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 SQL statements, rather than all statements, to
        be logged (Adrien Nayrat)
       </para>

       <para>
        A <xref linkend="guc-log-statement-sample-rate"/> fraction of
        those statements taking more than
        <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 logging of non-error statements,
        while <xref linkend="guc-log-parameter-max-length-on-error"/> does
        the same for logging of statements with errors.  Previously,
        prepared statement parameters were never logged during errors.
       </para>
      </listitem>

      <listitem>
<!--
Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
2019-11-08 [71a8a4f6e] Add backtrace support for error reporting
Author: Peter Eisentraut <peter@eisentraut.org>
2020-07-10 [8ff4d1277] Log the location field before any backtrace
-->

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

       <para>
        The new parameter <xref linkend="guc-backtrace-functions"/> specifies
        which C functions should generate backtraces on 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>

     </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 a parallel worker's
        leader process (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: 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>
        Add system view <link
        linkend="monitoring-stats-views-table"><structname>pg_stat_slru</structname></link>
        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 as
        high as 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>
        Report a wait event while creating a DSM segment
        with <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>
        Allow only 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 server's default minimum <acronym>TLS</acronym> version
        for encrypted connections from 1.0 to 1.2 (Peter Eisentraut)
       </para>

       <para>
        This choice can be 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 allowed in
        read-only transaction mode (Robert Haas)
       </para>

       <para>
        This change 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>

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

       <para>
        Enable support
        for <link linkend="runtime-config-connection-settings">Unix-domain
        sockets</link> on Windows (Peter Eisentraut)
       </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 to use a temporary
       replication slot when 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 WAL storage for replication slots to be limited by
       <xref linkend="guc-max-slot-wal-keep-size"/> (Kyotaro Horiguchi)
      </para>

      <para>
       Replication slots that would require exceeding this value are
       marked invalid.
      </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, a standby would promote itself upon reaching the end
       of <acronym>WAL</acronym>, 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 recovery to continue even if invalid
       pages are referenced by <acronym>WAL</acronym> (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-limit"><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>
       Make <link linkend="sql-createtable"><command>CREATE TABLE
       LIKE</command></link> propagate a <literal>CHECK</literal>
       constraint's <literal>NO INHERIT</literal> property to the created
       table (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 ... DROP EXPRESSION</command></link>
       to allow removing the <literal>GENERATED</literal>
       property from a column (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 multi-step <command>ALTER TABLE</command> commands (Tom
       Lane)
      </para>

      <para>
       <literal>IF NOT EXISTS</literal> clauses now work as expected, in
       that derived actions (such as index creation) do not execute if the
       column already exists.  Also, certain cases of combining related
       actions into one <command>ALTER TABLE</command> now work when they
       did not before.
      </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>
       Renaming view columns was already possible, but one had to
       write <command>ALTER TABLE RENAME COLUMN</command>, which is
       confusing.
      </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 to modify a base type's <acronym>TOAST</acronym> properties
       and support functions (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 the 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 sessions using the target
       database, allowing the drop to succeed (Pavel Stehule, Amit Kapila)
      </para>

      <para>
       This is enabled by the <literal>FORCE</literal> option.
      </para>
     </listitem>

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

      <para>
       Add structure member <link
       linkend="trigger-interface"><structfield>tg_updatedcols</structfield></link>
       to allow C-language update triggers to know which column(s) were updated
       (Peter Eisentraut)
      </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"><type>anycompatible</type></link>,
       <type>anycompatiblearray</type>, <type>anycompatiblenonarray</type>,
       and <type>anycompatiblerange</type>.
      </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"><type>xid8</type></link> to expose
       FullTransactionId (Thomas Munro)
      </para>

      <para>
       The existing <type>xid</type> data type is only four bytes so it
       does not provide 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"><type>regcollation</type></link>
       and associated functions, to represent OIDs of collation objects
       (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 a <link
       linkend="collation">collation</link> version identifier (Thomas Munro)
      </para>

      <para>
       If the glibc version changes, a warning will be issued about
       possible corruption of collation-dependent indexes.
      </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="sql-syntax-row-constructors"><literal>ROW</literal>
       expressions</link> to have their members extracted with suffix
       notation (Tom Lane)
      </para>

      <para>
       For example, <literal>(ROW(4, 5.0)).f1</literal> now 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_set()</function></link>
       with improved <literal>NULL</literal> handling (Andrew Dunstan)
      </para>

      <para>
       The new function, <function>jsonb_set_lax()</function>, handles a
       <literal>NULL</literal> new value by either setting the specified
       key to a <acronym>JSON</acronym> null, deleting the key, raising an
       exception, or returning the <type>jsonb</type> value unmodified, as
       requested.
      </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 function allows <acronym>JSON</acronym> values to be converted
       to timestamps, which can then be processed in <type>jsonpath</type>
       expressions.  This change also adds <type>jsonpath</type> 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: 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>
       These are particularly useful in monitoring queries.
      </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., <literal>E'\u<replaceable>nnnn</replaceable>'</literal>
       or <literal>U&amp;'\<replaceable>nnnn</replaceable>'</literal>, to
       specify any character available in the database encoding, even when
       the database encoding is not <acronym>UTF</acronym>-8 (Tom Lane)
      </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 patterns.
      </para>
     </listitem>

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

      <para>
       Add datetime format patterns <literal>FF1</literal>
       &ndash; <literal>FF6</literal> to specify input or output of
       1 to 6 fractional-second 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> datetime format pattern 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 in the external modules <xref linkend="uuid-ossp"/> and <xref
       linkend="pgcrypto"/>.
      </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"><function>gcd</function></link>)
       and least-common-multiple (<function>lcm</function>) 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 the <type>numeric</type>
       type's <link linkend="functions-math-func-table">square root</link>
       (<function>sqrt</function>) and natural log
       (<function>ln</function>) functions (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 of the decimal point
       that are required to represent a <type>numeric</type> value with
       full accuracy (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 <type>numeric</type> value 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 <type>point</type>
       <literal>&lt;-&gt;</literal> <type>line</type> was supported,
       now <type>line</type> <literal>&lt;-&gt;</literal> <type>point</type>
       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 <type>xid8</type> versions of all <link
       linkend="functions-pg-snapshot">transaction ID functions</link>
       (Thomas Munro)
      </para>

      <para>
       The old <type>xid</type>-based functions still exist, for backward
       compatibility.
      </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 the first
       256MB of a <type>bytea</type> value (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 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 for encrypted
       connections (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
Author: Tom Lane <tgl@sss.pgh.pa.us>
2020-06-27 [16412c784] Change libpq's default ssl_min_protocol_version to TLSv1
-->

      <para>
       Add libpq connection parameters to control the minimum and maximum
       <acronym>TLS</acronym> version allowed for an encrypted connection
       (Daniel Gustafsson)
      </para>

      <para>
       The settings are <xref
       linkend="libpq-connect-ssl-min-protocol-version"/> and <xref
       linkend="libpq-connect-ssl-max-protocol-version"/>.
       By default, the minimum <acronym>TLS</acronym> version is 1.2
       (this represents a behavioral change from previous releases).
      </para>
     </listitem>

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

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

      <para>
       This is enabled by libpq's <xref linkend="libpq-connect-sslpassword"/>
       connection parameter.
      </para>
     </listitem>

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

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

     <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
2020-08-03 [44cd434ec] Fix behavior of ecpg's "EXEC SQL elif name".
-->

      <para>
       Fix <application>ecpg</application>'s <literal>EXEC SQL
       elif</literal> directive to work correctly (Tom Lane)
      </para>

      <para>
       Previously it behaved the same as <literal>endif</literal> followed
       by <literal>ifdef</literal>, so that a successful previous branch
       of the same <literal>if</literal> construct did not prevent
       expansion of the <literal>elif</literal> branch or following
       branches.
      </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 transaction status (<literal>%x</literal>)
        to <application>psql</application>'s default
        <link linkend="app-psql-prompting">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
        blank but the same width as the primary prompt (Thomas Munro)
       </para>

       <para>
        This is accomplished by setting <literal>PROMPT2</literal>
        to <literal>%w</literal>.
       </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 <application>psql</application>'s
        <link linkend="app-psql-meta-commands"><literal>\g</literal></link>
        and <literal>\gx</literal> commands to
        change <link linkend="app-psql-meta-commands">\pset</link> output
        options for the duration of that single command (Tom Lane)
       </para>

       <para>
        This feature allows syntax like <literal>\g (expand=on)</literal>,
        which is equivalent to <literal>\gx</literal>.
       </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 display operator
        classes and operator families (Sergey Cherkashin, Nikita Glukhov,
        Alexander Korotkov)
       </para>

       <para>
        The new commands are <link
        linkend="app-psql-meta-commands"><literal>\dAc</literal></link>,
        <literal>\dAf</literal>, <literal>\dAo</literal>,
        and <literal>\dAp</literal>.
       </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"><literal>\dt+</literal></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>'s <link
        linkend="app-psql-meta-commands"><literal>\d</literal></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>
        Fix redisplay after <application>psql</application>'s <link
        linkend="app-psql-meta-commands"><literal>\e</literal></link>
        command (Tom Lane)
       </para>

       <para>
        When exiting the editor, if the query doesn't end with a semicolon
        or <literal>\g</literal>, 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"><literal>\warn</literal></link>
        command to <application>psql</application> (David Fetter)
       </para>

       <para>
        This is like <literal>\echo</literal> 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 <quote>accounts</quote> 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 <literal>\aset</literal>, which behaves
        like <literal>\gset</literal>, 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 initial 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 show script contents using option
        <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_basebackup</structname></link>
       to show progress.  If that is not needed, it can be disabled by
       using the <option>--no-estimate-size</option> option.  Previously,
       this computation happened only if the <option>--progress</option>
       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 an option to <link
       linkend="app-pgrewind"><application>pg_rewind</application></link>
       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 the <link linkend="sql-prepare-transaction"><command>PREPARE
       TRANSACTION</command></link>-related 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>
       Add <link
       linkend="app-pgdump"><application>pg_dump</application></link>
       option <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 disconnect
       sessions using the target database, allowing the drop to succeed
       (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 preferred 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>
       program as the default <option>--new-bindir</option> setting 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
       and operator 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
Author: Peter Eisentraut <peter@eisentraut.org>
2019-11-21 [2e4db241b] Remove configure - -disable-float4-byval
-->

      <para>
       Remove <link linkend="install-short">configure</link> options
       <option>--disable-float8-byval</option>
       and <option>--disable-float4-byval</option> (Peter Eisentraut)
      </para>

      <para>
       These were needed for compatibility with some version-zero C
       functions, but those are no longer supported.
      </para>
     </listitem>

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

      <para>
       Pass 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 reliably 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 <filename>headerscheck</filename> 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 cells
       (Tom Lane)
      </para>

      <para>
       This improves performance for queries that access many objects.
      </para>
     </listitem>

     <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
2020-07-24 [92fe6895d] Fix assorted bugs by changing TS_execute's callback API
2020-07-24 [70eca6a9a] Replace TS_execute's TS_EXEC_CALC_NOT flag with TS_EXEC_
-->

      <para>
       Change the API for <function>TS_execute()</function> (Tom Lane,
       Pavel Borisov)
      </para>

      <para>
       <function>TS_execute</function> callbacks must now provide ternary
       (yes/no/maybe) logic.  Calculating NOT queries accurately is now
       the default.
      </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
       database-level <literal>CREATE</literal> privileges, 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 (pre-9.1) 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 a superuser to set
       <literal>password_required</literal> to false for
       a <link linkend="sql-alterusermapping">user mapping</link>.  Care
       must still be taken to prevent 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 <xref 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 <link
       linkend="plperl"><application>bool_plperl</application></link>
       which transforms <acronym>SQL</acronym> booleans to/from PL/Perl
       booleans (Ivan Panchenko)
      </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> commands 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.
2020-07-03 [8d459762b] Change default of pg_stat_statements.track_planning to o
-->

      <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 an option to <xref linkend="dict-int"/> 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 B-tree index de-duplication 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>Abhijit Menon-Sen</member>
    <member>Adam Lee</member>
    <member>Adam Scott</member>
    <member>Adé Heyward</member>
    <member>Adrien Nayrat</member>
    <member>Ahsan Hadi</member>
    <member>Alastair McKinley</member>
    <member>Aleksandr Parfenov</member>
    <member>Alex Aktsipetrov</member>
    <member>Alex Macy</member>
    <member>Alex Shulgin</member>
    <member>Alexander Korotkov</member>
    <member>Alexander Kukushkin</member>
    <member>Alexander Kuzmenkov</member>
    <member>Alexander Lakhin</member>
    <member>Alexey Bashtanov</member>
    <member>Alexey Kondratov</member>
    <member>Álvaro Herrera</member>
    <member>Amit Kapila</member>
    <member>Amit Khandekar</member>
    <member>Amit Langote</member>
    <member>Amul Sul</member>
    <member>Anastasia Lubennikova</member>
    <member>Andreas Joseph Krogh</member>
    <member>Andreas Karlsson</member>
    <member>Andreas Kunert</member>
    <member>Andreas Seltenreich</member>
    <member>Andrei Zubkov</member>
    <member>Andres Freund</member>
    <member>Andrew Dunstan</member>
    <member>Andrew Gierth</member>
    <member>Andrey Borodin</member>
    <member>Andrey Klychkov</member>
    <member>Andrey Lepikhov</member>
    <member>Anna Akenteva</member>
    <member>Anna Endo</member>
    <member>Anthony Nowocien</member>
    <member>Anton Vlasov</member>
    <member>Antonin Houska</member>
    <member>Ants Aasma</member>
    <member>Arne Roland</member>
    <member>Arnold Müller</member>
    <member>Arseny Sher</member>
    <member>Arthur Nascimento</member>
    <member>Arthur Zakirov</member>
    <member>Ashutosh Bapat</member>
    <member>Ashutosh Sharma</member>
    <member>Ashwin Agrawal</member>
    <member>Asif Rehman</member>
    <member>Asim Praveen</member>
    <member>Atsushi Torikoshi</member>
    <member>Augustinas Jokubauskas</member>
    <member>Austin Drenski</member>
    <member>Basil Bourque</member>
    <member>Beena Emerson</member>
    <member>Ben Cornett</member>
    <member>Benjie Gillam</member>
    <member>Benoît Lobréau</member>
    <member>Bernd Helmle</member>
    <member>Bharath Rupireddy</member>
    <member>Bhargav Kamineni</member>
    <member>Binguo Bao</member>
    <member>Brad DeJong</member>
    <member>Brandur Leach</member>
    <member>Brent Bates</member>
    <member>Brian Williams</member>
    <member>Bruce Momjian</member>
    <member>Cameron Ezell</member>
    <member>Cary Huang</member>
    <member>Chapman Flack</member>
    <member>Charles Offenbacher</member>
    <member>Chen Huajun</member>
    <member>Chenyang Lu</member>
    <member>Chris Bandy</member>
    <member>Chris Travers</member>
    <member>Christoph Berg</member>
    <member>Christophe Courtois</member>
    <member>Corey Huinker</member>
    <member>Craig Ringer</member>
    <member>Cuiping Lin</member>
    <member>Dagfinn Ilmari Mannsåker</member>
    <member>Daniel Fiori</member>
    <member>Daniel Gustafsson</member>
    <member>Daniel Vérité</member>
    <member>Daniel Westermann</member>
    <member>Darafei Praliaskouski</member>
    <member>Daryl Waycott</member>
    <member>Dave Cramer</member>
    <member>David Christensen</member>
    <member>David Fetter</member>
    <member>David G. Johnston</member>
    <member>David Gilman</member>
    <member>David Harper</member>
    <member>David Rowley</member>
    <member>David Steele</member>
    <member>David Zhang</member>
    <member>Davinder Singh</member>
    <member>Dean Rasheed</member>
    <member>Denis Stuchalin</member>
    <member>Dent John</member>
    <member>Didier Gautheron</member>
    <member>Dilip Kumar</member>
    <member>Dmitry Belyavsky</member>
    <member>Dmitry Dolgov</member>
    <member>Dmitry Ivanov</member>
    <member>Dmitry Telpt</member>
    <member>Dmitry Uspenskiy</member>
    <member>Dominik Czarnota</member>
    <member>Dongming Liu</member>
    <member>Ed Morley</member>
    <member>Edmund Horner</member>
    <member>Emre Hasegeli</member>
    <member>Eric Gillum</member>
    <member>Erik Rijkers</member>
    <member>Erwin Brandstetter</member>
    <member>Ethan Waldo</member>
    <member>Etsuro Fujita</member>
    <member>Eugen Konkov</member>
    <member>Euler Taveira</member>
    <member>Fabien Coelho</member>
    <member>Fabrízio de Royes Mello</member>
    <member>Felix Lechner</member>
    <member>Filip Janus</member>
    <member>Filip Rembialkowski</member>
    <member>Frank Gagnepain</member>
    <member>Georgios Kokolatos</member>
    <member>Gilles Darold</member>
    <member>Greg Nancarrow</member>
    <member>Grigory Smolkin</member>
    <member>Guancheng Luo</member>
    <member>Guillaume Lelarge</member>
    <member>Hadi Moshayedi</member>
    <member>Haiying Tang</member>
    <member>Hamid Akhtar</member>
    <member>Hans Buschmann</member>
    <member>Haribabu Kommi</member>
    <member>Haruka Takatsuka</member>
    <member>Heath Lord</member>
    <member>Heikki Linnakangas</member>
    <member>Hironobu Suzuki</member>
    <member>Hugh McMaster</member>
    <member>Hugh Ranalli</member>
    <member>Hugh Wang</member>
    <member>Ian Barwick</member>
    <member>Ibrar Ahmed</member>
    <member>Ildar Musin</member>
    <member>Insung Moon</member>
    <member>Ireneusz Pluta</member>
    <member>Isaac Morland</member>
    <member>Ivan Kartyshov</member>
    <member>Ivan Panchenko</member>
    <member>Ivan Sergio Borgonovo</member>
    <member>Jaime Casanova</member>
    <member>James Coleman</member>
    <member>James Gray</member>
    <member>James Inform</member>
    <member>James Lucas</member>
    <member>Jan Mussler</member>
    <member>Jaroslav Sivy</member>
    <member>Jeevan Chalke</member>
    <member>Jeevan Ladhe</member>
    <member>Jeff Davis</member>
    <member>Jeff Janes</member>
    <member>Jehan-Guillaume de Rorthais</member>
    <member>Jeremy Evans</member>
    <member>Jeremy Schneider</member>
    <member>Jeremy Smith</member>
    <member>Jerry Sievers</member>
    <member>Jesper Pedersen</member>
    <member>Jesse Kinkead</member>
    <member>Jesse Zhang</member>
    <member>Jian Zhang</member>
    <member>Jie Zhang</member>
    <member>Jim Nasby</member>
    <member>Jimmy Yih</member>
    <member>Jobin Augustine</member>
    <member>Joe Conway</member>
    <member>John Hsu</member>
    <member>John Naylor</member>
    <member>Jon Jensen</member>
    <member>Jonathan Katz</member>
    <member>Jorge Gustavo Rocha</member>
    <member>Josef Šimánek</member>
    <member>Joseph Nahmias</member>
    <member>Juan José Santamaría Flecha</member>
    <member>Julian Backes</member>
    <member>Julien Rouhaud</member>
    <member>Jürgen Purtz</member>
    <member>Justin King</member>
    <member>Justin Pryzby</member>
    <member>Karl O. Pinc</member>
    <member>Keisuke Kuroda</member>
    <member>Keith Fiske</member>
    <member>Kelly Min</member>
    <member>Ken Tanzer</member>
    <member>Kirill Bychik</member>
    <member>Kirk Jamison</member>
    <member>Konstantin Knizhnik</member>
    <member>Kuntal Ghosh</member>
    <member>Kyle Kingsbury</member>
    <member>Kyotaro Horiguchi</member>
    <member>Lars Kanis</member>
    <member>Laurenz Albe</member>
    <member>Leif Gunnar Erlandsen</member>
    <member>Li Japin</member>
    <member>Liudmila Mantrova</member>
    <member>Lucas Viecelli</member>
    <member>Luis M. Carril</member>
    <member>Lukáš Sobotka</member>
    <member>Maciek Sakrejda</member>
    <member>Magnus Hagander</member>
    <member>Mahadevan Ramachandran</member>
    <member>Mahendra Singh Thalor</member>
    <member>Manuel Rigger</member>
    <member>Marc Munro</member>
    <member>Marcos David</member>
    <member>Marina Polyakova</member>
    <member>Mark Dilger</member>
    <member>Mark Wong</member>
    <member>Marko Tiikkaja</member>
    <member>Markus Winand</member>
    <member>Marti Raudsepp</member>
    <member>Martijn van Oosterhout</member>
    <member>Masahiko Sawada</member>
    <member>Masahiro Ikeda</member>
    <member>Masao Fujii</member>
    <member>Mateusz Guzik</member>
    <member>Matt Jibson</member>
    <member>Matteo Beccati</member>
    <member>Maxence Ahlouche</member>
    <member>Melanie Plageman</member>
    <member>Michael Banck</member>
    <member>Michael Luo</member>
    <member>Michael Meskes</member>
    <member>Michael Paquier</member>
    <member>Michail Nikolaev</member>
    <member>Mike Palmiotto</member>
    <member>Mithun Cy</member>
    <member>Movead Li</member>
    <member>Nathan Bossart</member>
    <member>Nazli Ugur Koyluoglu</member>
    <member>Neha Sharma</member>
    <member>Nicola Contu</member>
    <member>Nicolás Alvarez</member>
    <member>Nikhil Sontakke</member>
    <member>Nikita Glukhov</member>
    <member>Nikolay Shaplov</member>
    <member>Nino Floris</member>
    <member>Noah Misch</member>
    <member>Noriyoshi Shinoda</member>
    <member>Oleg Bartunov</member>
    <member>Oleg Samoilov</member>
    <member>Oleksii Kliukin</member>
    <member>Ondrej Jirman</member>
    <member>Panagiotis Mavrogiorgos</member>
    <member>Pascal Legrand</member>
    <member>Patrick McHardy</member>
    <member>Paul Guo</member>
    <member>Paul Jungwirth</member>
    <member>Paul Ramsey</member>
    <member>Paul Sivash</member>
    <member>Paul Spencer</member>
    <member>Pavan Deolasee</member>
    <member>Pavel Borisov</member>
    <member>Pavel Luzanov</member>
    <member>Pavel Stehule</member>
    <member>Pavel Suderevsky</member>
    <member>Peifeng Qiu</member>
    <member>Pengzhou Tang</member>
    <member>Peter Billen</member>
    <member>Peter Eisentraut</member>
    <member>Peter Geoghegan</member>
    <member>Peter Smith</member>
    <member>Petr Fedorov</member>
    <member>Petr Jelínek</member>
    <member>Phil Bayer</member>
    <member>Philip Semanchuk</member>
    <member>Pierre Ducroquet</member>
    <member>Pierre Giraud</member>
    <member>Piotr Gabriel Kosinski</member>
    <member>Piotr Wlodarczyk</member>
    <member>Prabhat Sahu</member>
    <member>Quan Zongliang</member>
    <member>Quentin Rameau</member>
    <member>Rafael Castro</member>
    <member>Rafia Sabih</member>
    <member>Raj Mohite</member>
    <member>Rajkumar Raghuwanshi</member>
    <member>Ramanarayana M</member>
    <member>Ranier Vilela</member>
    <member>Rares Salcudean</member>
    <member>Raúl Marín Rodríguez</member>
    <member>Raymond Martin</member>
    <member>Reijo Suhonen</member>
    <member>Richard Guo</member>
    <member>Robert Ford</member>
    <member>Robert Haas</member>
    <member>Robert Treat</member>
    <member>Robin Abbi</member>
    <member>Robins Tharakan</member>
    <member>Roger Harkavy</member>
    <member>Roman Peshkurov</member>
    <member>Rui DeSousa</member>
    <member>Rui Hai Jiang</member>
    <member>Rushabh Lathia</member>
    <member>Ryan Lambert</member>
    <member>Ryohei Takahashi</member>
    <member>Scott Ribe</member>
    <member>Sean Farrell</member>
    <member>Sehrope Sarkuni</member>
    <member>Sergei Agalakov</member>
    <member>Sergei Kornilov</member>
    <member>Sergey Cherkashin</member>
    <member>Shawn Debnath</member>
    <member>Shawn Wang</member>
    <member>Shay Rojansky</member>
    <member>Shenhao Wang</member>
    <member>Simon Riggs</member>
    <member>Slawomir Chodnicki</member>
    <member>Soumyadeep Chakraborty</member>
    <member>Stéphane Lorek</member>
    <member>Stephen Frost</member>
    <member>Steve Rogerson</member>
    <member>Steven Winfield</member>
    <member>Surafel Temesgen</member>
    <member>Suraj Kharage</member>
    <member>Takanori Asaba</member>
    <member>Takao Fujii</member>
    <member>Takayuki Tsunakawa</member>
    <member>Takuma Hoshiai</member>
    <member>Tatsuhito Kasahara</member>
    <member>Tatsuo Ishii</member>
    <member>Tatsuro Yamada</member>
    <member>Taylor Vesely</member>
    <member>Teodor Sigaev</member>
    <member>Tham Nguyen</member>
    <member>Thibaut Madelaine</member>
    <member>Thom Brown</member>
    <member>Thomas Kellerer</member>
    <member>Thomas Munro</member>
    <member>Tiago Anastacio</member>
    <member>Tim Clarke</member>
    <member>Tim Möhlmann</member>
    <member>Tom Ellis</member>
    <member>Tom Gottfried</member>
    <member>Tom Lane</member>
    <member>Tomas Vondra</member>
    <member>Tuomas Leikola</member>
    <member>Tushar Ahuja</member>
    <member>Victor Wagner</member>
    <member>Victor Yegorov</member>
    <member>Vignesh C</member>
    <member>Vik Fearing</member>
    <member>Vinay Banakar</member>
    <member>Vladimir Leskov</member>
    <member>Vladimir Sitnikov</member>
    <member>Vyacheslav Makarov</member>
    <member>Vyacheslav Shablistyy</member>
    <member>Will Leinweber</member>
    <member>William Crowell</member>
    <member>Wyatt Alt</member>
    <member>Yang Xiao</member>
    <member>Yaroslav Schekin</member>
    <member>Yi Huang</member>
    <member>Yigong Hu</member>
    <member>Yoann La Cancellera</member>
    <member>Yoshikazu Imai</member>
    <member>Yu Kimura</member>
    <member>Yugo Nagata</member>
    <member>Yuli Khodorkovskiy</member>
    <member>Yusuke Egashira</member>
    <member>Yuya Watari</member>
    <member>Yuzuko Hosoya</member>
    <member>ZhenHua Cai</member>
   </simplelist>
  </sect2>

 </sect1>
