release-14.sgml 126 KB
Newer Older
Tom Lane's avatar
Tom Lane committed
1 2 3 4 5 6 7 8
<!-- doc/src/sgml/release-14.sgml -->
<!-- See header comment in release.sgml about typical markup -->

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

  <formalpara>
   <title>Release date:</title>
9
   <para>2021-??-?? (AS OF 2021-06-20)</para>
Tom Lane's avatar
Tom Lane committed
10 11
  </formalpara>

12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53
  <sect2>
   <title>Overview</title>

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

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

   <para>
    The above items and other new features
    of <productname>PostgreSQL</productname> 14 are explained in more
    detail in the sections below.
   </para>

  </sect2>

  <sect2>

  <title>Migration to Version 14</title>

    <para>
     A dump/restore using <xref linkend="app-pg-dumpall"/> or use of <xref
     linkend="pgupgrade"/> or logical replication is required for those
     wishing to migrate data from any previous release.  See <xref
     linkend="upgrading"/> for general information on migrating to new major
     releases.
    </para>

    <para>
     Version 14 contains a number of changes that may affect compatibility
     with previous releases.  Observe the following incompatibilities:
    </para>

   <itemizedlist>

54
    <listitem>
55 56 57 58 59
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
2020-08-08 [20e7e1fe3] Remove &lt;@ from contrib/intarray's GiST operator classes.
-->

60
     <para>
61 62 63
      Prevent the containment operators (<literal>&lt;@</literal> and
      <literal>@&gt;</literal>) for <xref linkend="intarray"/> from using
      GiST indexes (Tom Lane)
64
     </para>
65

66 67 68 69 70 71
     <para>
      Previously a full GiST index scan was required, so just avoid
      that and scan the heap, which is faster.  Indexes created for this
      purpose should be removed.
     </para>
    </listitem>
72

73
    <listitem>
74 75
<!--
Author: Peter Eisentraut <peter@eisentraut.org>
76 77 78
2020-11-03 [2f70fdb06] Remove deprecated containment operators for built-in typ
Author: Tom Lane <tgl@sss.pgh.pa.us>
2021-03-05 [112d411fb] Remove deprecated containment operators for contrib type
79 80
-->

81
     <para>
82 83 84
      Remove deprecated containment operators <literal>@</literal>
      and <literal>~</literal> for built-in <link
      linkend="functions-geometry">geometric data types</link> and
85 86 87
      contrib modules <xref linkend="cube"/>, <xref linkend="hstore"/>,
      <xref linkend="intarray"/>, and <xref linkend="seg"/> (Justin Pryzby)
     </para>
88

89 90 91 92 93
     <para>
      The more consistent &lt;@ and @&gt; have been recommended for
      many years.
     </para>
    </listitem>
94

95
    <listitem>
96 97 98 99 100
<!--
Author: Alexander Korotkov <akorotkov@postgresql.org>
2021-01-31 [0c4f355c6] Fix parsing of complex morphs to tsquery
-->

101 102 103 104 105 106
     <para>
      Fix <link
      linkend="functions-textsearch"><function>to_tsquery()</function></link>
      and <function>websearch_to_tsquery()</function> to properly parse
      query text containing discarded tokens (Alexander Korotkov)
     </para>
107

108 109 110
     <para>
      Certain discarded tokens, like underscore, caused the output of
      these functions to produce incorrect tsquery output, e.g., both
111 112 113
      <literal>websearch_to_tsquery('"pg_class pg"')</literal> and <literal>to_tsquery('pg_class
      &lt;-&gt; pg')</literal> used to output <literal>( 'pg' &amp; 'class' ) &lt;-&gt; 'pg'</literal>,
      but now both output <literal>'pg' &lt;-&gt; 'class' &lt;-&gt; 'pg'</literal>.
114 115
     </para>
    </listitem>
116

117
    <listitem>
118 119 120 121 122
<!--
Author: Alexander Korotkov <akorotkov@postgresql.org>
2021-05-03 [eb086056f] Make websearch_to_tsquery() parse text in quotes as a si
-->

123 124 125 126 127 128
     <para>
      Fix <link
      linkend="functions-textsearch"><function>websearch_to_tsquery()</function></link>
      to properly parse multiple adjacent discarded tokens in quotes
      (Alexander Korotkov)
     </para>
129

130 131 132
     <para>
      Previously, quoted text that contained multiple adjacent discarded
      tokens were treated as multiple tokens, causing incorrect tsquery
133 134
      output, e.g., <literal>websearch_to_tsquery('"aaa: bbb"')</literal> used to output
      <literal>'aaa' &lt;2&gt; 'bbb'</literal>, but now outputs <literal>'aaa' &lt;-&gt; 'bbb'</literal>.
135 136
     </para>
    </listitem>
137

138
    <listitem>
139 140 141
<!--
Author: Peter Eisentraut <peter@eisentraut.org>
2020-06-10 [c7eab0e97] Change default of password_encryption to scram-sha-256
142 143
Author: Peter Eisentraut <peter@eisentraut.org>
2020-06-10 [c7eab0e97] Change default of password_encryption to scram-sha-256
144 145
-->

146 147 148 149 150
     <para>
      Change the default of the <xref linkend="guc-password-encryption"/>
      server parameter to <literal>scram-sha-256</literal> (Peter
      Eisentraut)
     </para>
151

152 153 154 155
     <para>
      Previously it was <literal>md5</literal>.  All new passwords will
      be stored as SHA256 unless this server variable is changed or
      the password is specified in md5 format.  Also, the legacy (and
Peter Eisentraut's avatar
Peter Eisentraut committed
156
      undocumented) Boolean-like values which were previously synonyms
157 158 159
      for <literal>md5</literal> are no longer accepted.
     </para>
    </listitem>
160

161
    <listitem>
162
<!--
163 164
Author: Bruce Momjian <bruce@momjian.us>
2020-10-05 [253f1025d] Overhaul pg_hba.conf clientcert's API
165 166
-->

167 168 169 170 171
     <para>
      Overhaul the specification of <literal>clientcert</literal> in <link
      linkend="auth-pg-hba-conf"><filename>pg_hba.conf</filename></link>
      (Kyotaro Horiguchi)
     </para>
172

173 174
     <para>
      Values
175
      <literal>1</literal>/<literal>0</literal>/<literal>no-verify</literal>
176
      are no longer supported;  only the strings
177
      <literal>verify-ca</literal> and <literal>verify-full</literal>
178 179
      can be used.  Also, disallow <literal>verify-ca</literal> if cert
      authentication is enabled since cert requires
180
      <literal>verify-full</literal> checking.
181 182
     </para>
    </listitem>
183

184
    <listitem>
185
<!--
186 187 188 189
Author: Michael Paquier <michael@paquier.xyz>
2021-03-09 [f9264d152] Remove support for SSL compression
Author: Michael Paquier <michael@paquier.xyz>
2021-03-10 [0ba71107e] Revert changes for SSL compression in libpq
190 191
-->

192 193 194 195 196
     <para>
      Remove support for <link
      linkend="runtime-config-connection-ssl"><acronym>SSL</acronym></link>
      compression (Daniel Gustafsson, Michael Paquier)
     </para>
197

198
     <para>
199 200 201
      This was already disabled by default in previous
      <productname>PostgreSQL</productname> releases, and most modern
      OpenSSL and <acronym>TLS</acronym> versions no longer support it.
202 203
     </para>
    </listitem>
204

205
    <listitem>
206
<!--
207 208
Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
2021-03-04 [3174d69fb] Remove server and libpq support for old FE/BE protocol v
209 210
-->

211 212 213 214 215
     <para>
      Remove server and <link linkend="libpq">libpq</link> support
      for the version 2 <link linkend="protocol">wire protocol</link>
      (Heikki Linnakangas)
     </para>
216

217
     <para>
218 219
      This was last used as the default in
      <productname>PostgreSQL</productname> 7.3 (year 2002).
220 221
     </para>
    </listitem>
222

223
    <listitem>
224
<!--
225 226
Author: Peter Eisentraut <peter@eisentraut.org>
2021-04-06 [a2da77cdb] Change return type of EXTRACT to numeric
227 228
-->

229 230 231 232 233
     <para>
      Change <link
      linkend="functions-datetime"><function>EXTRACT</function></link>
      to return the <type>NUMERIC</type> data type (Peter Eisentraut)
     </para>
234

235
     <para>
236
      <function>EXTRACT(date)</function> now throws an error for units
237
      that are not part of the <type>date</type> data type.
238 239
     </para>
    </listitem>
240

241
    <listitem>
242 243
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
244
2020-07-20 [a4faef8f8] Fix some corner cases for window ranges with infinite of
245 246
-->

247 248 249 250 251
     <para>
      Fix handling of infinite <link
      linkend="syntax-window-functions">window function</link> ranges
      (Tom Lane)
     </para>
252

253 254 255 256 257
     <para>
      Previously window frame clauses like <literal>'inf' PRECEDING AND
      'inf' FOLLOWING</literal> returned incorrect results.
     </para>
    </listitem>
258

259
    <listitem>
260
<!--
261 262
Author: Peter Eisentraut <peter@eisentraut.org>
2020-11-25 [f73999262] tablefunc: Reject negative number of tuples passed to no
263 264
-->

265 266
     <para>
      Prevent <xref linkend="tablefunc"/>'s function
267
      <function>normal_rand()</function> from accepting negative values
268 269
      (Ashutosh Bapat)
     </para>
270

271 272 273 274
     <para>
      Negative values produced undesirable results.
     </para>
    </listitem>
275

276
    <listitem>
277 278
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
279
2020-06-13 [23cbeda50] Sync behavior of var_samp and stddev_samp for single NaN
280 281
-->

282 283 284 285 286 287
     <para>
      Change <link
      linkend="functions-aggregate"><function>var_samp()</function></link>
      and <function>stddev_samp()</function> with numeric parameters to
      return NULL for a single NaN value (Tom Lane)
     </para>
288

289 290 291 292
     <para>
      Previously <literal>NaN</literal> was returned.
     </para>
    </listitem>
293

294
    <listitem>
295
<!--
296
Author: Tom Lane <tgl@sss.pgh.pa.us>
297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325
2020-11-04 [9e38c2bb5] Declare assorted array functions using anycompatible not
-->

     <para>
      User-defined objects that reference some built-in array functions
      along with their argument types must be recreated (Tom Lane)
     </para>

     <para>
      Specifically, <link
      linkend="functions-array"><function>array_append()</function></link>,
      <function>array_prepend()</function>,
      <function>array_cat()</function>,
      <function>array_position()</function>,
      <function>array_positions()</function>,
      <function>array_remove()</function>,
      <function>array_replace()</function>, or <link
      linkend="functions-math"><function>width_bucket()</function></link>
      used to take <type>anyarray</type> arguments but now take
      <type>anycompatiblearray</type>.  Therefore, user-defined objects
      like aggregates and operators that reference old array function
      signatures must be dropped before upgrading and recreated once the
      upgrade completes.
     </para>
    </listitem>

    <listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
326
2020-09-17 [76f412ab3] Remove factorial operators, leaving only the factorial()
327 328
-->

329 330
     <para>
      Remove factorial operators <literal>!</literal> and
331
      <literal>!!</literal> (Mark Dilger)
332
     </para>
333

334 335 336 337
     <para>
      The <link
      linkend="functions-math"><function>factorial()</function></link>
      function is still supported.  Also remove function
338
      <function>numeric_fac()</function>.
339 340
     </para>
    </listitem>
341

342
    <listitem>
343
<!--
344 345
Author: Peter Eisentraut <peter@eisentraut.org>
2020-06-18 [0a40563ea] Disallow factorial of negative numbers
346 347
-->

348 349 350 351
     <para>
      Disallow <function>factorial()</function> of negative numbers
      (Peter Eisentraut)
     </para>
352

353 354 355 356
     <para>
      Previously such cases returned 1.
     </para>
    </listitem>
357

358
    <listitem>
359 360
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
361
2020-09-17 [1ed6b8956] Remove support for postfix (right-unary) operators.
362 363
-->

364 365 366 367
     <para>
      Remove support for <link linkend="sql-createoperator">postfix</link>
      (right-unary) operators (Mark Dilger)
     </para>
368

369
     <para>
370 371
      <application>pg_dump</application> and
      <application>pg_upgrade</application> will warn if postfix operators
372 373 374
      are being dumped.
     </para>
    </listitem>
375

376
    <listitem>
377 378
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
379
2021-02-25 [7dc13a0f0] Change regex \D and \W shorthands to always match newlin
380 381
-->

382 383 384 385 386
     <para>
      Allow <literal>\D</literal> and <literal>\W</literal> shorthands to
      match newlines in <link linkend="functions-similarto-regexp">regular
      expression</link> newline-sensitive mode (Tom Lane)
     </para>
387

388 389 390 391 392
     <para>
      Previously they did not match;  <literal>[^[:digit:]]</literal> or
      <literal>[^[:word:]]</literal> can be used to get the old behavior.
     </para>
    </listitem>
393

394
    <listitem>
395 396
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
397
2021-03-02 [4aea704a5] Fix semantics of regular expression back-references.
398 399
-->

400
     <para>
401 402
      Improve handling of regular expression <link
      linkend="posix-escape-sequences">back-references</link> (Tom Lane)
403
     </para>
404

405 406
     <para>
      For example, disregard <literal>^</literal> in its expansion in
407
      <literal>\1</literal> in <literal>(^\d+).*\1</literal>.
408 409
     </para>
    </listitem>
410

411
    <listitem>
412
<!--
413 414
Author: Tom Lane <tgl@sss.pgh.pa.us>
2021-02-25 [2a0af7fe4] Allow complemented character class escapes within regex 
415 416
-->

417 418 419 420
     <para>
      Disallow <literal>\w</literal> as range start/end in character
      classes (Tom Lane)
     </para>
421

422 423 424 425
     <para>
      This previously was allowed but produced incorrect results.
     </para>
    </listitem>
426

427
    <listitem>
428
<!--
429 430
Author: Tom Lane <tgl@sss.pgh.pa.us>
2021-04-07 [3db826bd5] Tighten up allowed names for custom GUC parameters.
431 432
Author: Tom Lane <tgl@sss.pgh.pa.us>
2021-04-07 [3db826bd5] Tighten up allowed names for custom GUC parameters.
433 434
-->

435 436
     <para>
      Require <link linkend="runtime-config-custom">custom server
437
      variable</link> names to use only characters which are valid for
438
      unquoted <acronym>SQL</acronym> identifiers (Tom Lane)
439 440
     </para>
    </listitem>
441

442
    <listitem>
443 444 445 446 447 448 449
<!--
Author: Peter Geoghegan <pg@bowt.ie>
2021-03-10 [9f3665fbf] Don't consider newly inserted tuples in nbtree VACUUM.
Author: Peter Geoghegan <pg@bowt.ie>
2021-03-11 [effdd3f3b] Add back vacuum_cleanup_index_scale_factor parameter.
-->

450 451
     <para>
      Remove server variable
452
      <varname>vacuum_cleanup_index_scale_factor</varname> (Peter Geoghegan)
453
     </para>
454

455 456
     <para>
      This setting was ignored starting in
457
      <productname>PostgreSQL</productname> version 13.3.
458 459
     </para>
    </listitem>
460

461
    <listitem>
462
<!--
463 464
Author: Joe Conway <mail@joeconway.com>
2021-03-31 [b12bd4869] Fix has_column_privilege function corner case
465 466
-->

467 468 469 470 471 472
     <para>
      Return false for <link
      linkend="functions-info"><function>has_column_privilege()</function></link>
      checks on non-existent or dropped columns when using attribute
      numbers (Joe Conway)
     </para>
473

474 475 476 477
     <para>
      Previously such attribute numbers returned an invalid column error.
     </para>
    </listitem>
478

479
    <listitem>
480 481
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
482 483 484
2020-10-22 [3dfb1942d] Avoid premature de-doubling of quote marks in ECPG strin
Author: Tom Lane <tgl@sss.pgh.pa.us>
2020-10-22 [c16a1bbcf] Add documentation and tests for quote marks in ECPG lite
485 486
-->

487
     <para>
488
      Pass doubled quote marks in <link linkend="ecpg">ecpg</link>
489
      <acronym>SQL</acronym> command strings literally (Tom Lane)
490
     </para>
491

492 493 494 495 496 497
     <para>
      Previously <literal>'abc''def'</literal> was passed to the server
      as <literal>'abc'def'</literal>, and <literal>"abc""def"</literal>
      was passed as <literal>"abc"def"</literal>.
     </para>
    </listitem>
498

499
    <listitem>
500 501
<!--
Author: Peter Eisentraut <peter@eisentraut.org>
502
2020-06-11 [5333e014a] Remove deprecated syntax from CREATE/DROP LANGUAGE
503 504
-->

505 506
     <para>
      Disallow single-quoting of the language name in the
507
      <link linkend="sql-createlanguage"><command>CREATE/DROP
508 509 510
      LANGUAGE</command></link> command (Peter Eisentraut)
     </para>
    </listitem>
511

512
    <listitem>
513
<!--
514 515
Author: Thomas Munro <tmunro@postgresql.org>
2021-01-29 [514b411a2] Retire pg_standby.
516 517
-->

518 519 520 521 522
     <para>
      Remove contrib program <application>pg_standby</application>
      (Justin Pryzby)
     </para>
    </listitem>
523

524
    <listitem>
525 526 527 528 529
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
2020-07-07 [f3faf35f3] Don't create pg_type entries for sequences or toast tabl
-->

530 531 532 533 534
     <para>
      Remove <link linkend="xfunc-sql-composite-functions">composite
      types</link> for sequences or toast tables (Tom Lane)
     </para>
    </listitem>
535

536
    <listitem>
537 538 539 540 541
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
2020-12-08 [a676386b5] Remove operator_precedence_warning.
-->

542 543 544 545
     <para>
      Remove <varname>operator_precedence_warning</varname> setting
      (Tom Lane)
     </para>
546

547 548
     <para>
      This was needed for warning applications about
549
      <productname>PostgreSQL</productname> 9.5 changes.
550 551
     </para>
    </listitem>
552 553 554 555 556 557 558 559 560

   </itemizedlist>

  </sect2>

  <sect2>
   <title>Changes</title>

     <para>
561 562 563
      Below you will find a detailed account of the changes between
      <productname>PostgreSQL</productname> 14 and the previous major
      release.
564 565 566 567 568
     </para>

   <sect3>
    <title>Server</title>

569
    <itemizedlist>
570

571
     <listitem>
572
<!--
573 574
Author: Stephen Frost <sfrost@snowman.net>
2021-04-05 [6c3ffd697] Add pg_read_all_data and pg_write_all_data roles
575 576
-->

577 578 579 580 581
      <para>
       Add predefined roles <link
       linkend="predefined-roles"><structname>pg_read_all_data</structname></link>
       and <structname>pg_write_all_data</structname> (Stephen Frost)
      </para>
582

583 584 585 586 587
      <para>
       These non-login roles can be used to give read or write permission
       to all tables, views, and sequences.
      </para>
     </listitem>
588

589
     <listitem>
590
<!--
591 592
Author: Noah Misch <noah@leadboat.com>
2021-03-26 [a14a0118a] Add "pg_database_owner" default role.
593 594
-->

595 596 597
      <para>
       Add a predefined role to match the database owner (Noah Misch)
      </para>
598

599 600 601 602 603 604
      <para>
       It is called <link
       linkend="predefined-roles"><literal>pg_database_owner</literal></link>;
       this is useful in template databases.
      </para>
     </listitem>
605

606
     <listitem>
607
<!--
608 609
Author: Tomas Vondra <tomas.vondra@postgresql.org>
2021-03-18 [cd91de0d1] Remove temporary files after backend crash
610 611
-->

612 613 614
      <para>
       Remove temporary files after backend crashes (Euler Taveira)
      </para>
615

616 617 618 619 620 621
      <para>
       These files were previously retained for debugging
       purposes;  deletion can be disabled with <xref
       linkend="guc-remove-temp-files-after-crash"/>.
      </para>
     </listitem>
622

623
     <listitem>
624
<!--
625 626
Author: Thomas Munro <tmunro@postgresql.org>
2021-04-03 [c30f54ad7] Detect POLLHUP/POLLRDHUP while running queries.
627 628
-->

629 630 631 632
      <para>
       Allow long-running queries to be canceled if the client disconnects
       (Sergey Cherkashin, Thomas Munro)
      </para>
633

634 635 636 637 638 639 640
      <para>
       The server variable <xref
       linkend="guc-client-connection-check-interval"/> allows some
       supported operating systems to automatically cancel queries by
       disconnected clients.
      </para>
     </listitem>
641

642
     <listitem>
643
<!--
644 645
Author: Magnus Hagander <magnus@hagander.net>
2021-04-08 [aaf043257] Add functions to wait for backend termination
646 647
-->

648
      <para>
649
       Add an optional timeout parameter to <link
650 651 652
       linkend="functions-admin-signal"><function>pg_terminate_backend()</function></link>
      </para>
     </listitem>
653

654
     <listitem>
655 656
<!--
Author: Noah Misch <noah@leadboat.com>
657
2021-03-30 [0ff8bbdee] Accept slightly-filled pages for tuples larger than fill
658 659
-->

660 661 662 663
      <para>
       Allow wide tuples to be always added to almost-empty heap pages
       (John Naylor, Floris van Nee)
      </para>
664

665 666
      <para>
       Previously tuples whose insertion would have exceeded the page's
667
       <link linkend="sql-createtable">fill factor</link> were instead
668 669 670
       added to new pages.
      </para>
     </listitem>
671

672
     <listitem>
673
<!--
674 675
Author: Peter Eisentraut <peter@eisentraut.org>
2021-04-07 [5c55dc8b4] libpq: Set Server Name Indication (SNI) for SSL connecti
676 677
-->

678
      <para>
Bruce Momjian's avatar
Bruce Momjian committed
679
       Add Server Name Indication (<acronym>SNI</acronym>) for
680
       <acronym>SSL</acronym> connection packets (Peter Eisentraut)
681
      </para>
682

683 684 685 686 687
      <para>
       This can be disabled by turning off client option <link
       linkend="libpq-paramkeywords"><literal>sslsni</literal></link>.
      </para>
     </listitem>
688

689
    </itemizedlist>
690 691

    <sect4>
692
     <title><link linkend="routine-vacuuming">Vacuuming</link></title>
693 694 695

     <itemizedlist>

696
      <listitem>
697
<!--
698 699
Author: Peter Geoghegan <pg@bowt.ie>
2021-04-07 [5100010ee] Teach VACUUM to bypass unnecessary index vacuuming.
700 701
Author: Peter Geoghegan <pg@bowt.ie>
2021-06-18 [3499df0de] Support disabling index bypassing by VACUUM.
702 703
-->

704 705 706 707
       <para>
        Allow vacuum to skip index vacuuming when the number of removable
        index entries is insignificant (Masahiko Sawada, Peter Geoghegan)
       </para>
708 709 710 711 712 713

       <para>
        The vacuum parameter <link
        linkend="sql-vacuum"><literal>INDEX_CLEANUP</literal></link> has a
        new default of <literal>auto</literal> to enable this optimization.
       </para>
714
      </listitem>
715

716
      <listitem>
717
<!--
718 719
Author: Peter Geoghegan <pg@bowt.ie>
2021-03-21 [9dd963ae2] Recycle nbtree pages deleted during same VACUUM.
720 721
-->

722
       <para>
723
        Allow vacuum to more eagerly add deleted btree pages to the free
724 725
        space map (Peter Geoghegan)
       </para>
726

727
       <para>
728 729
        Previously vacuum could only add pages to the free space map
        that were marked as deleted by previous vacuums.
730 731
       </para>
      </listitem>
732

733
      <listitem>
734 735 736 737 738
<!--
Author: Peter Geoghegan <pg@bowt.ie>
2021-04-07 [3c3b8a4b2] Truncate line pointer array during VACUUM.
-->

739
       <para>
Bruce Momjian's avatar
Bruce Momjian committed
740
        Allow vacuum to reclaim space used by unused trailing heap
741 742 743
        line pointers (Matthias van de Meent, Peter Geoghegan)
       </para>
      </listitem>
744

745
      <listitem>
746
<!--
747 748 749 750 751 752 753 754 755 756 757 758 759 760 761 762 763 764 765 766 767 768
Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
2020-11-25 [c98763bf5] Avoid spurious waits in concurrent indexing
Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
2021-01-15 [f9900df5f] Avoid spurious wait in concurrent reindex
Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
2021-02-23 [d9d076222] VACUUM: ignore indexing operations with CONCURRENTLY
-->

       <para>
        Allow vacuum to be more aggressive in removing dead rows during
        minimal-locking index operations (Álvaro Herrera)
       </para>

       <para>
        Specifically, <command>CREATE INDEX CONCURRENTLY</command> and
        <command>REINDEX CONCURRENTLY</command> no longer limit the dead
        row removal of other relations.
       </para>
      </listitem>

      <listitem>
<!--
769 770
Author: Fujii Masao <fujii@postgresql.org>
2020-12-08 [e2ac3fed3] Speed up rechecking if relation needs to be vacuumed or 
771 772
-->

773 774 775 776 777
       <para>
        Speed up vacuuming of databases with many relations (Tatsuhito
        Kasahara)
       </para>
      </listitem>
778

779
      <listitem>
780 781 782 783 784
<!--
Author: Peter Geoghegan <pg@bowt.ie>
2021-01-27 [e19594c5c] Reduce the default value of vacuum_cost_page_miss.
-->

785 786
       <para>
        Reduce the default value of <xref
787
        linkend="guc-vacuum-cost-page-miss"/> to better reflect current
788 789 790
        hardware capabilities (Peter Geoghegan)
       </para>
      </listitem>
791

792
      <listitem>
793 794 795 796
<!--
Author: Michael Paquier <michael@paquier.xyz>
2021-02-09 [7cb3048f3] Add option PROCESS_TOAST to VACUUM
-->
797

798 799 800 801
       <para>
        Add ability to skip vacuuming of <acronym>TOAST</acronym> tables
        (Nathan Bossart)
       </para>
802

803
       <para>
Bruce Momjian's avatar
Bruce Momjian committed
804 805
        <link linkend="sql-vacuum"><command>VACUUM</command></link> now
        has a <literal>PROCESS_TOAST</literal> option which can be set to
806 807 808 809 810
        false to disable <acronym>TOAST</acronym> processing, and <link
        linkend="app-vacuumdb"><application>vacuumdb</application></link>
        has a <option>--no-process-toast</option> option.
       </para>
      </listitem>
811

812
      <listitem>
813 814 815 816 817
<!--
Author: Tomas Vondra <tomas.vondra@postgresql.org>
2021-01-17 [7db0cd214] Set PD_ALL_VISIBLE and visibility map bits in COPY FREEZ
-->

818 819 820 821 822 823
       <para>
        Have <link linkend="sql-copy"><command>COPY FREEZE</command></link>
        appropriately update page visibility bits (Anastasia Lubennikova,
        Pavan Deolasee, Jeff Janes)
       </para>
      </listitem>
824

825
      <listitem>
826
<!--
827 828
Author: Peter Geoghegan <pg@bowt.ie>
2021-04-07 [1e55e7d17] Add wraparound failsafe to VACUUM.
829 830
-->

831
       <para>
Bruce Momjian's avatar
Bruce Momjian committed
832
        Cause vacuum operations to be more aggressive if the table is near
833 834
        xid or multixact wraparound (Masahiko Sawada, Peter Geoghegan)
       </para>
835

836 837 838 839 840
       <para>
        This is controlled by <xref linkend="guc-vacuum-failsafe-age"/>
        and <xref linkend="guc-multixact-failsafe-age"/>.
       </para>
      </listitem>
841

842
      <listitem>
843
<!--
844 845
Author: Noah Misch <noah@leadboat.com>
2020-08-01 [cd5e82256] Change XID and mxact limits to warn at 40M and stop at 3
846 847
-->

848 849 850 851
       <para>
        Increase warning time and hard limit before transaction id and
        multi-transaction wraparound (Noah Misch)
       </para>
852

853 854 855 856 857
       <para>
        This should reduce the possibility of failures that occur without
        having issued warnings about wraparound.
       </para>
      </listitem>
858

859
      <listitem>
860 861 862 863 864
<!--
Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
2021-04-08 [0827e8af7] autovacuum: handle analyze for partitioned tables
-->

865
       <para>
866
        <link linkend="autovacuum">Autovacuum</link> now analyzes
867 868
        partitioned tables (Yuzuko Hosoya, Álvaro Herrera)
       </para>
869

870 871 872 873 874 875
       <para>
        Insert, update, and delete tuple counts from partitions are now
        propagated to their parent tables so autovacuum knows when to
        process them.
       </para>
      </listitem>
876

877
      <listitem>
878 879 880 881 882
<!--
Author: Michael Paquier <michael@paquier.xyz>
2021-03-23 [5aed6a1fc] Add per-index stats information in verbose logs of autov
-->

883 884 885 886 887 888
       <para>
        Add per-index information to <link
        linkend="guc-log-autovacuum-min-duration">autovacuum logging
        output</link> (Masahiko Sawada)
       </para>
      </listitem>
889

890 891 892 893 894 895 896 897
     </itemizedlist>
    </sect4>

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

     <itemizedlist>

898
      <listitem>
899 900 901 902 903 904 905 906 907
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
2021-03-31 [86dc90056] Rework planning and execution of UPDATE and DELETE.
Author: Tom Lane <tgl@sss.pgh.pa.us>
2021-04-06 [a1115fa07] Postpone some more stuff out of ExecInitModifyTable.
Author: Tom Lane <tgl@sss.pgh.pa.us>
2021-04-06 [c5b7ba4e6] Postpone some stuff out of ExecInitModifyTable.
-->

908 909 910 911
       <para>
        Improve the performance of updates/deletes on partitioned tables
        when only a few partitions are affected (Amit Langote, Tom Lane)
       </para>
912

913 914 915 916 917
       <para>
        This also allows updates/deletes on partitioned tables to use
        execution-time partition pruning.
       </para>
      </listitem>
918

919
      <listitem>
920 921 922 923 924
<!--
Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
2021-03-25 [71f4c8c6f] ALTER TABLE ... DETACH PARTITION ... CONCURRENTLY
-->

925 926 927 928 929
       <para>
        Allow partitions to be <link
        linkend="sql-altertable">detached</link> in a non-blocking manner
        (Álvaro Herrera)
       </para>
930

931 932 933 934 935
       <para>
        The syntax is <command>ALTER TABLE ... DETACH PARTITION
        ... CONCURRENTLY</command>, and <command>FINALIZE</command>.
       </para>
      </listitem>
936

937
      <listitem>
938 939 940 941 942
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
2020-09-28 [2dfa3fea8] Remove complaints about COLLATE clauses in partition bou
-->

943
       <para>
Bruce Momjian's avatar
Bruce Momjian committed
944
        Allow arbitrary collations of partition boundary values (Tom Lane)
945
       </para>
946

947 948 949 950
       <para>
        Previously it had to match the collation of the partition key.
       </para>
      </listitem>
951 952 953 954 955 956 957 958 959 960

     </itemizedlist>

    </sect4>

    <sect4>
     <title>Indexes</title>

     <itemizedlist>

961
      <listitem>
962 963 964 965 966 967 968
<!--
Author: Peter Geoghegan <pg@bowt.ie>
2021-01-13 [9dc718bdf] Pass down "logically unchanged index" hint.
Author: Peter Geoghegan <pg@bowt.ie>
2021-01-13 [d168b6668] Enhance nbtree index tuple deletion.
-->

969 970 971 972 973
       <para>
        Allow btree index additions to <link
        linkend="btree-deletion">remove expired index entries</link>
        to prevent page splits (Peter Geoghegan)
       </para>
974

975 976 977 978 979
       <para>
        This is particularly helpful for reducing index bloat on tables
        whose indexed columns are frequently updated.
       </para>
      </listitem>
980

981
      <listitem>
982 983 984 985 986
<!--
Author: Tomas Vondra <tomas.vondra@postgresql.org>
2021-03-26 [ab596105b] BRIN minmax-multi indexes
-->

987 988 989 990
       <para>
        Allow <link linkend="brin"><acronym>BRIN</acronym></link> indexes
        to record multiple min/max values per range (Tomas Vondra)
       </para>
991

992 993 994 995
       <para>
        This is useful if there are groups of values in each page range.
       </para>
      </listitem>
996

997
      <listitem>
998 999 1000 1001 1002
<!--
Author: Tomas Vondra <tomas.vondra@postgresql.org>
2021-03-26 [77b88cd1b] BRIN bloom indexes
-->

1003 1004 1005 1006
       <para>
        Allow <acronym>BRIN</acronym> indexes to use bloom filters
        (Tomas Vondra)
       </para>
1007

1008
       <para>
Bruce Momjian's avatar
Bruce Momjian committed
1009 1010
        This allows <acronym>BRIN</acronym> indexes to be used effectively
        with data that is not physically localized in the heap.
1011 1012
       </para>
      </listitem>
1013

1014
      <listitem>
1015
<!--
1016 1017
Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
2020-09-17 [16fa9b2b3] Add support for building GiST index by sorting.
1018 1019
-->

1020 1021 1022 1023
       <para>
        Allow some <link linkend="gist">GiST</link> indexes to be built
        by presorting the data (Andrey Borodin)
       </para>
1024

1025 1026 1027 1028 1029
       <para>
        Presorting happens automatically and allows for faster index
        creation and smaller indexes.
       </para>
      </listitem>
1030

1031
      <listitem>
1032
<!--
1033 1034
Author: Tom Lane <tgl@sss.pgh.pa.us>
2021-04-05 [09c1c6ab4] Support INCLUDE'd columns in SP-GiST.
1035 1036
-->

1037 1038
       <para>
        Allow <link linkend="spgist">SP-GiST</link> to use
1039
        <literal>INCLUDE</literal>'d columns (Pavel Borisov)
1040 1041
       </para>
      </listitem>
1042 1043 1044 1045 1046 1047 1048 1049 1050 1051

     </itemizedlist>

    </sect4>

    <sect4>
     <title>Optimizer</title>

     <itemizedlist>

1052
      <listitem>
1053
<!--
1054 1055
Author: David Rowley <drowley@postgresql.org>
2021-04-08 [50e17ad28] Speedup ScalarArrayOpExpr evaluation
1056 1057
-->

1058 1059 1060 1061
       <para>
        Allow hash lookup of <literal>IN</literal> clause with many
        constants (James Coleman, David Rowley)
       </para>
1062

1063 1064 1065 1066 1067
       <para>
        Previously the only option was to sequentially scan the list
        of constants.
       </para>
      </listitem>
1068

1069
      <listitem>
1070 1071 1072 1073 1074 1075 1076 1077 1078
<!--
Author: Dean Rasheed <dean.a.rasheed@gmail.com>
2020-12-03 [25a9e54d2] Improve estimation of OR clauses using extended statisti
Author: Dean Rasheed <dean.a.rasheed@gmail.com>
2020-12-08 [88b0898fe] Improve estimation of OR clauses using multiple extended
Author: Dean Rasheed <dean.a.rasheed@gmail.com>
2020-12-08 [4f5760d4a] Improve estimation of ANDs under ORs using extended stat
-->

1079 1080 1081 1082 1083 1084 1085
       <para>
        Increase the number of places <link
        linkend="planner-stats-extended">extended statistics</link> can
        be used for <literal>OR</literal> clause estimation (Tomas Vondra,
        Dean Rasheed)
       </para>
      </listitem>
1086

1087
      <listitem>
1088 1089 1090 1091 1092
<!--
Author: Tomas Vondra <tomas.vondra@postgresql.org>
2021-03-27 [a4d75c86b] Extended statistics on expressions
-->

1093 1094 1095
       <para>
        Allow extended statistics on expressions (Tomas Vondra)
       </para>
1096

1097 1098 1099 1100 1101 1102 1103 1104 1105
       <para>
        This allows statistics on a group of expressions and columns,
        rather than only columns like previously.  System view <link
        linkend="view-pg-stats-ext-exprs"><structname>pg_stats_ext_exprs</structname></link>
        reports such statistics. <link
        linkend="sql-altertable"><literal>ALTER TABLE ... ALTER COLUMN
        ... TYPE RESETS STASTISTICS</literal></link>?
       </para>
      </listitem>
1106

1107
      <listitem>
1108 1109 1110 1111 1112
<!--
Author: David Rowley <drowley@postgresql.org>
2021-02-27 [bb437f995] Add TID Range Scans to support efficient scanning ranges
-->

1113 1114 1115 1116 1117
       <para>
        Allow efficient heap scanning of a range of <link
        linkend="datatype-oid-table"><type>TIDs</type></link> (Edmund
        Horner, David Rowley)
       </para>
1118

1119 1120
       <para>
        Previously a sequential scan was required for non-equality
1121
        <type>TID</type> specifications.
1122 1123
       </para>
      </listitem>
1124

1125
      <listitem>
1126 1127 1128 1129 1130
<!--
Author: Michael Paquier <michael@paquier.xyz>
2020-12-30 [e665769e6] Sanitize IF NOT EXISTS in EXPLAIN for CTAS and matviews
-->

1131 1132 1133 1134 1135 1136
       <para>
        Fix <link linkend="sql-explain"><command>EXPLAIN CREATE TABLE
        AS</command></link> and <command>EXPLAIN CREATE MATERIALIZED
        VIEW</command> to honor <literal>IF NOT EXISTS</literal>
        (Bharath Rupireddy)
       </para>
1137

1138
       <para>
Bruce Momjian's avatar
Bruce Momjian committed
1139
        Previously, if the object already existed,
1140 1141 1142
        <command>EXPLAIN</command> would fail.
       </para>
      </listitem>
1143 1144 1145 1146 1147 1148 1149 1150 1151 1152

     </itemizedlist>

    </sect4>

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

     <itemizedlist>

1153
      <listitem>
1154 1155 1156 1157 1158 1159 1160 1161 1162 1163 1164 1165 1166 1167 1168
<!--
Author: Andres Freund <andres@anarazel.de>
2020-08-12 [dc7420c2c] snapshot scalability: Don't compute global horizons whil
Author: Andres Freund <andres@anarazel.de>
2020-08-13 [1f51c17c6] snapshot scalability: Move PGXACT->xmin back to PGPROC.
Author: Andres Freund <andres@anarazel.de>
2020-08-14 [941697c3c] snapshot scalability: Introduce dense array of in-progre
Author: Andres Freund <andres@anarazel.de>
2020-08-14 [5788e258b] snapshot scalability: Move PGXACT->vacuumFlags to ProcGl
Author: Andres Freund <andres@anarazel.de>
2020-08-14 [73487a60f] snapshot scalability: Move subxact info to ProcGlobal, r
Author: Andres Freund <andres@anarazel.de>
2020-08-17 [623a9ba79] snapshot scalability: cache snapshots using a xact compl
-->

1169 1170 1171 1172 1173
       <para>
        Improve the speed of computing <acronym>MVCC</acronym> <link
        linkend="mvcc">visibility snapshots</link> on systems with many
        CPUs and high session counts (Andres Freund)
       </para>
1174

1175 1176 1177 1178
       <para>
        This also improves performance when there are many idle sessions.
       </para>
      </listitem>
1179

1180
      <listitem>
1181 1182 1183 1184 1185
<!--
Author: David Rowley <drowley@postgresql.org>
2021-04-02 [9eacee2e6] Add Result Cache executor node (take 2)
-->

1186 1187 1188 1189
       <para>
        Add executor method to cache results from the inner-side of nested
        loop joins (David Rowley)
       </para>
1190

1191 1192
       <para>
        This is useful if only a small percentage of rows is checked on
1193
        the inner side and is controlled by <xref
1194
        linkend="guc-enable-memoize"/>.
1195 1196
       </para>
      </listitem>
1197

1198
      <listitem>
1199
<!--
1200 1201
Author: David Rowley <drowley@postgresql.org>
2020-09-15 [62e221e1c] Allow incremental sorts for windowing functions
1202 1203
-->

1204 1205 1206 1207 1208
       <para>
        Allow <link linkend="functions-window">window functions</link>
        to perform incremental sorts (David Rowley)
       </para>
      </listitem>
1209

1210
      <listitem>
1211
<!--
1212 1213
Author: David Rowley <drowley@postgresql.org>
2020-07-26 [56788d215] Allocate consecutive blocks during parallel seqscans
1214 1215
-->

1216 1217 1218 1219
       <para>
        Improve the I/O performance of parallel sequential scans (Thomas
        Munro, David Rowley)
       </para>
1220

1221 1222 1223 1224 1225
       <para>
        This was done by allocating blocks in groups to <link
        linkend="guc-max-parallel-workers">parallel workers</link>.
       </para>
      </listitem>
1226

1227
      <listitem>
1228
<!--
1229 1230
Author: Etsuro Fujita <efujita@postgresql.org>
2021-03-31 [27e1f1456] Add support for asynchronous execution.
1231 1232
-->

1233 1234 1235 1236 1237 1238
       <para>
        Allow a query referencing multiple <link
        linkend="sql-createforeigntable">foreign tables</link> to perform
        foreign table scans in parallel (Robert Haas, Kyotaro Horiguchi,
        Thomas Munro, Etsuro Fujita)
       </para>
1239

1240
       <para>
1241
        <link
1242
        linkend="postgres-fdw"><application>postgres_fdw</application></link>
1243
        supports this type of scan if <literal>async_capable</literal>
1244 1245 1246
        is set.
       </para>
      </listitem>
1247

1248
      <listitem>
1249
<!--
1250 1251
Author: Stephen Frost <sfrost@snowman.net>
2021-03-16 [c6fc50cb4] Use pre-fetching for ANALYZE
1252 1253
-->

1254 1255 1256 1257
       <para>
        Allow <link linkend="vacuum-for-statistics">analyze</link> to do
        page prefetching (Stephen Frost)
       </para>
1258

1259 1260 1261 1262 1263
       <para>
        This is controlled by <xref
        linkend="guc-maintenance-io-concurrency"/>.
       </para>
      </listitem>
1264

1265
      <listitem>
1266 1267 1268 1269 1270 1271 1272 1273 1274 1275 1276 1277 1278 1279 1280 1281 1282 1283 1284 1285 1286 1287 1288 1289 1290
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
2021-02-20 [08c0d6ad6] Invent "rainbow" arcs within the regex engine.
Author: Tom Lane <tgl@sss.pgh.pa.us>
2021-02-20 [824bf7190] Recognize "match-all" NFAs within the regex engine.
Author: Tom Lane <tgl@sss.pgh.pa.us>
2021-02-20 [cebc1d34e] Fix regex engine to suppress useless concatenation sub-R
Author: Tom Lane <tgl@sss.pgh.pa.us>
2021-02-20 [581043089] Convert regex engine's subre tree from binary to N-ary s
Author: Tom Lane <tgl@sss.pgh.pa.us>
2021-02-20 [ea1268f63] Avoid generating extra subre tree nodes for capturing pa
Author: Tom Lane <tgl@sss.pgh.pa.us>
2021-02-21 [190c79884] Simplify memory management for regex DFAs a little.
Author: Tom Lane <tgl@sss.pgh.pa.us>
2021-02-26 [0fc1af174] Improve memory management in regex compiler.
Author: Tom Lane <tgl@sss.pgh.pa.us>
2021-03-02 [0c3405cf1] Improve performance of regular expression back-reference
Author: Tom Lane <tgl@sss.pgh.pa.us>
2021-03-02 [4604f83fd] Suppress unnecessary regex subre nodes in a couple more 
Author: Tom Lane <tgl@sss.pgh.pa.us>
2021-03-08 [6c20bdb2a] Further tweak memory management for regex DFAs.
Author: Tom Lane <tgl@sss.pgh.pa.us>
2021-05-03 [f68970e33] Fix performance issue in new regex match-all detection c
-->

1291 1292 1293 1294 1295 1296
       <para>
        Improve the performance of <link
        linkend="functions-similarto-regexp">regular expression</link>
        comparisons (Tom Lane)
       </para>
      </listitem>
1297

1298
      <listitem>
1299
<!--
1300 1301 1302 1303
Author: Michael Paquier <michael@paquier.xyz>
2020-10-11 [80f8eb79e] Use perfect hash for NFC and NFKC Unicode Normalization 
Author: Michael Paquier <michael@paquier.xyz>
2020-10-23 [783f0cc64] Improve performance of Unicode {de,re}composition in the
1304 1305
-->

1306 1307 1308
       <para>
        Dramatically improve Unicode normalization (John Naylor)
       </para>
1309

1310 1311 1312 1313 1314 1315
       <para>
        This speeds <link
        linkend="functions-string"><function>normalize()</function></link>
        and <literal>IS NORMALIZED</literal>.
       </para>
      </listitem>
1316

1317
      <listitem>
1318
<!--
1319 1320
Author: Robert Haas <rhaas@postgresql.org>
2021-03-19 [bbe0a81db] Allow configurable LZ4 TOAST compression.
1321 1322
-->

1323 1324 1325 1326
       <para>
        Add ability to use <link linkend="sql-createtable">LZ4
        compression</link> on <acronym>TOAST</acronym> data (Dilip Kumar)
       </para>
1327

1328 1329 1330 1331 1332 1333 1334 1335
       <para>
        This can be set at the column level, or set as a default via server
        setting <xref linkend="guc-default-toast-compression"/>.
        The server must be compiled with <link
        linkend="configure-options-features"><option>--with-lz4</option></link>
        to support this feature;  the default is still pglz.
       </para>
      </listitem>
1336 1337 1338 1339 1340 1341 1342 1343 1344 1345

     </itemizedlist>

    </sect4>

    <sect4>
     <title>Monitoring</title>

     <itemizedlist>

1346
      <listitem>
1347 1348 1349 1350 1351 1352 1353 1354 1355
<!--
Author: Bruce Momjian <bruce@momjian.us>
2021-04-07 [4f0b0966c] Make use of in-core query id added by commit 5fd9dfa5f5
Author: Bruce Momjian <bruce@momjian.us>
2021-04-07 [f57a2f5e0] Add csvlog output for the new query_id value
Author: Bruce Momjian <bruce@momjian.us>
2021-04-20 [9660834dd] adjust query id feature to use pg_stat_activity.query_id
Author: Bruce Momjian <bruce@momjian.us>
2021-05-03 [f7a97b6ec] Update query_id computation
1356 1357
Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
2021-05-15 [cafde58b3] Allow compute_query_id to be set to 'auto' and make it d
1358 1359
-->

1360 1361 1362 1363
       <para>
        If server variable <xref linkend="guc-compute-query-id"/>
        is enabled, display the query id in <link
        linkend="monitoring-pg-stat-activity-view"><structname>pg_stat_activity</structname></link>,
1364
        <link linkend="sql-explain"><command>EXPLAIN
1365 1366
        VERBOSE</command></link>, <link
        linkend="runtime-config-logging">csvlog</link>, and optionally in
1367
        <xref linkend="guc-log-line-prefix"/> (Julien Rouhaud)
1368
       </para>
1369

1370 1371 1372 1373
       <para>
        A query id computed by an extension will also be displayed.
       </para>
      </listitem>
1374

1375
      <listitem>
1376
<!--
1377 1378
Author: Stephen Frost <sfrost@snowman.net>
2021-03-16 [94d13d474] Improve logging of auto-vacuum and auto-analyze
1379 1380
-->

1381 1382 1383 1384
       <para>
        Improve logging of <link linkend="autovacuum">auto-vacuum</link>
        and auto-analyze (Stephen Frost, Jakub Wartak)
       </para>
1385

1386 1387 1388 1389 1390 1391
       <para>
        This reports I/O timings for auto-vacuum and auto-analyze if <xref
        linkend="guc-track-io-timing"/> is enabled.  Also, report buffer
        read and dirty rates for auto-analyze.
       </para>
      </listitem>
1392

1393
      <listitem>
1394
<!--
1395 1396
Author: Michael Paquier <michael@paquier.xyz>
2021-04-07 [9afffcb83] Add some information about authenticated identity via lo
1397 1398
-->

1399 1400 1401 1402 1403 1404
       <para>
        Add information about the original user name supplied by the
        client to the output of <xref linkend="guc-log-connections"/>
        (Jacob Champion)
       </para>
      </listitem>
1405 1406 1407 1408 1409 1410 1411 1412 1413 1414

     </itemizedlist>

    </sect4>

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

     <itemizedlist>

1415
      <listitem>
1416
<!--
1417 1418 1419 1420
Author: Tomas Vondra <tomas.vondra@postgresql.org>
2021-01-06 [8a4f618e7] Report progress of COPY commands
Author: Michael Paquier <michael@paquier.xyz>
2021-03-09 [9d2d45700] Add support for more progress reporting in COPY
1421 1422
-->

1423
       <para>
1424
        Add system view <link
1425 1426 1427 1428 1429
        linkend="copy-progress-reporting"><structname>pg_stat_progress_copy</structname></link>
        to report <command>COPY</command> progress (Josef Šimánek,
        Matthias van de Meent)
       </para>
      </listitem>
1430

1431
      <listitem>
1432
<!--
1433
Author: Fujii Masao <fujii@postgresql.org>
1434 1435 1436 1437 1438 1439 1440 1441 1442
2020-10-02 [8d9a93596] Add pg_stat_wal statistics view.
Author: Fujii Masao <fujii@postgresql.org>
2020-12-02 [01469241b] Track total number of WAL records, FPIs and bytes genera
Author: Fujii Masao <fujii@postgresql.org>
2021-03-09 [ff99918c6] Track total amounts of times spent writing and syncing W
-->

       <para>
        Add system view <link
1443
        linkend="monitoring-pg-stat-wal-view"><structname>pg_stat_wal</structname></link>,
1444 1445 1446 1447 1448 1449 1450 1451 1452 1453 1454 1455 1456 1457 1458 1459 1460 1461 1462 1463 1464 1465 1466 1467 1468 1469 1470 1471 1472 1473 1474 1475 1476
        which reports <acronym>WAL</acronym> activity (Masahiro Ikeda)
       </para>
      </listitem>

      <listitem>
<!--
Author: Amit Kapila <akapila@postgresql.org>
2020-10-08 [986816750] Track statistics for spilling of changes from ReorderBuf
Author: Amit Kapila <akapila@postgresql.org>
2020-10-20 [03d51b776] Change the attribute name in pg_stat_replication_slots v
Author: Amit Kapila <akapila@postgresql.org>
2020-10-29 [8e90ec558] Track statistics for streaming of changes from ReorderBu
Author: Amit Kapila <akapila@postgresql.org>
2021-04-16 [f5fc2f5b2] Add information of total data processed to replication s
-->

       <para>
        Add system view <link
        linkend="monitoring-pg-stat-replication-slots-view"><structname>pg_stat_replication_slots</structname></link>
        to report replication slot activity (Sawada Masahiko, Amit Kapila,
        Vignesh C)
       </para>

       <para>
        The function <link
        linkend="monitoring-stats-functions"><function>pg_stat_reset_replication_slot()</function></link>
        resets slot statistics.
       </para>
      </listitem>

      <listitem>
<!--
Author: Fujii Masao <fujii@postgresql.org>
1477 1478 1479 1480 1481 1482 1483 1484 1485 1486 1487 1488 1489 1490 1491 1492 1493 1494 1495 1496 1497 1498 1499 1500 1501 1502 1503 1504
2020-08-19 [3e98c0baf] Add pg_backend_memory_contexts system view.
Author: Fujii Masao <fujii@postgresql.org>
2020-08-26 [29dd6d8bc] Prevent non-superusers from reading pg_backend_memory_co
-->

       <para>
        Add system view <link
        linkend="view-pg-backend-memory-contexts"><structname>pg_backend_memory_contexts</structname></link>
        to report session memory usage (Atsushi Torikoshi, Fujii Masao)
       </para>
      </listitem>

      <listitem>
<!--
Author: Fujii Masao <fujii@postgresql.org>
2021-04-06 [43620e328] Add function to log the memory contexts of specified bac
-->

       <para>
        Add function <link
        linkend="functions-admin-signal"><function>pg_log_backend_memory_contexts()</function></link>
        to output the memory contexts of arbitrary backends (Atsushi
        Torikoshi)
       </para>
      </listitem>

      <listitem>
<!--
1505 1506
Author: Magnus Hagander <magnus@hagander.net>
2021-01-17 [960869da0] Add pg_stat_database counters for sessions and session t
1507 1508
-->

1509 1510 1511 1512 1513 1514
       <para>
        Add session statistics to the <link
        linkend="monitoring-pg-stat-database-view"><structname>pg_stat_database</structname></link>
        system view (Laurenz Albe)
       </para>
      </listitem>
1515

1516
      <listitem>
1517 1518
<!--
Author: Fujii Masao <fujii@postgresql.org>
1519
2020-07-20 [d05b172a7] Add generic_plans and custom_plans fields into pg_prepar
1520 1521
-->

1522 1523 1524 1525 1526 1527 1528
       <para>
        Add columns to <link
        linkend="view-pg-prepared-statements"><structname>pg_prepared_statements</structname></link>
        to report generic and custom plan counts (Atsushi Torikoshi,
        Kyotaro Horiguchi)
       </para>
      </listitem>
1529

1530
      <listitem>
1531 1532 1533 1534 1535
<!--
Author: Fujii Masao <fujii@postgresql.org>
2021-02-15 [46d6e5f56] Display the time when the process started waiting for th
-->

1536 1537 1538 1539 1540 1541
       <para>
        Add lock wait start time to <link
        linkend="view-pg-locks"><structname>pg_locks</structname></link>
        (Atsushi Torikoshi)
       </para>
      </listitem>
1542

1543
      <listitem>
1544
<!--
1545 1546
Author: Fujii Masao <fujii@postgresql.org>
2021-03-15 [d75288fb2] Make archiver process an auxiliary process.
1547 1548
-->

1549 1550
       <para>
        Make the archiver process visible in
1551
        <structname>pg_stat_activity</structname> (Kyotaro Horiguchi)
1552 1553
       </para>
      </listitem>
1554

1555
      <listitem>
1556 1557 1558 1559 1560
<!--
Author: Fujii Masao <fujii@postgresql.org>
2021-03-24 [84007043f] Rename wait event WalrcvExit to WalReceiverExit.
-->

1561 1562 1563 1564 1565 1566 1567
       <para>
        Add wait event <link
        linkend="monitoring-pg-stat-activity-view"><literal>WalReceiverExit</literal></link>
        to report <acronym>WAL</acronym> receiver exit wait time (Fujii
        Masao)
       </para>
      </listitem>
1568

1569
      <listitem>
1570 1571 1572 1573 1574
<!--
Author: Peter Eisentraut <peter@eisentraut.org>
2021-02-17 [f40c6969d] Routine usage information schema tables
-->

1575 1576 1577 1578 1579 1580 1581
       <para>
        Implement information schema view <link
        linkend="infoschema-routine-column-usage"><structname>routine_column_usage</structname></link>
        to track columns referenced by function and procedure default
        expressions (Peter Eisentraut)
       </para>
      </listitem>
1582 1583 1584 1585 1586 1587

     </itemizedlist>

    </sect4>

    <sect4>
1588
     <title>Authentication</title>
1589 1590 1591

     <itemizedlist>

1592
      <listitem>
1593 1594 1595 1596 1597
<!--
Author: Andrew Dunstan <andrew@dunslane.net>
2021-03-29 [6d7a6feac] Allow matching the DN of a client certificate for authen
-->

1598 1599 1600 1601 1602
       <para>
        Allow the certificate's distinguished name (<acronym>DN</acronym>)
        to be matched for client certificate authentication (Andrew
        Dunstan)
       </para>
1603

1604 1605 1606 1607 1608 1609 1610 1611
       <para>
        The new <link
        linkend="auth-pg-hba-conf"><filename>pg_hba.conf</filename></link>
        keyword <literal>clientname=DN</literal> allows comparison with
        certificate attributes beyond the <literal>CN</literal> and can
        be combined with ident maps.
       </para>
      </listitem>
1612

1613
      <listitem>
1614 1615
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
1616
2020-09-03 [8f8154a50] Allow records to span multiple lines in pg_hba.conf and 
1617 1618
-->

1619 1620 1621 1622 1623
       <para>
        Allow <filename>pg_hba.conf</filename> and <link
        linkend="auth-username-maps"><filename>pg_ident.conf</filename></link>
        records to span multiple lines (Fabien Coelho)
       </para>
1624

1625 1626 1627 1628 1629
       <para>
        A backslash at the end of a line allows record contents to be
        continued on the next line.
       </para>
      </listitem>
1630

1631
      <listitem>
1632
<!--
1633 1634
Author: Peter Eisentraut <peter@eisentraut.org>
2021-02-18 [f5465fade] Allow specifying CRL directory
1635 1636
-->

1637 1638 1639 1640
       <para>
        Allow the specification of a certificate revocation list
        (<acronym>CRL</acronym>) directory (Kyotaro Horiguchi)
       </para>
1641

1642 1643
       <para>
        This is controlled by server variable <xref
1644 1645 1646
        linkend="guc-ssl-crl-dir"/> and libpq connection option
        <xref linkend='libpq-connect-sslcrldir'/>.  Previously only
        <acronym>CRL</acronym> files could be specified.
1647 1648
       </para>
      </listitem>
1649

1650
      <listitem>
1651 1652 1653 1654 1655
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
2020-09-03 [67a472d71] Remove arbitrary restrictions on password length.
-->

1656 1657 1658 1659
       <para>
        Allow passwords of an arbitrary length (Tom Lane, Nathan Bossart)
       </para>
      </listitem>
1660 1661 1662 1663 1664 1665 1666 1667 1668 1669

     </itemizedlist>

    </sect4>

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

     <itemizedlist>

1670
      <listitem>
1671 1672 1673 1674 1675
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
2021-01-06 [9877374be] Add idle_session_timeout.
-->

1676 1677 1678 1679
       <para>
        Add server setting <xref linkend="guc-idle-session-timeout"/>
        to close idle sessions (Li Japin)
       </para>
1680

1681 1682 1683 1684 1685
       <para>
        This is similar to <xref
        linkend="guc-idle-in-transaction-session-timeout"/>.
       </para>
      </listitem>
1686

1687
      <listitem>
1688 1689 1690 1691 1692
<!--
Author: Stephen Frost <sfrost@snowman.net>
2021-03-24 [bbcc4eb2e] Change checkpoint_completion_target default to 0.9
-->

1693 1694 1695 1696
       <para>
        Change <xref linkend="guc-checkpoint-completion-target"/> default
        to 0.9 (Stephen Frost)
       </para>
1697

1698 1699 1700 1701
       <para>
        The previous default was 0.5.
       </para>
      </listitem>
1702

1703
      <listitem>
1704
<!--
1705 1706
Author: Michael Paquier <michael@paquier.xyz>
2020-08-03 [b8fdee7d0] Add %P to log_line_prefix for parallel group leader
1707 1708
-->

1709 1710 1711 1712 1713
       <para>
        Allow %P in <xref linkend="guc-log-line-prefix"/> to report the
        parallel group leader (Justin Pryzby)
       </para>
      </listitem>
1714

1715
      <listitem>
1716
<!--
1717 1718
Author: Michael Paquier <michael@paquier.xyz>
2020-11-07 [a05dbf477] Add GUC_LIST_INPUT and GUC_LIST_QUOTE to unix_socket_dir
1719 1720
-->

1721 1722 1723 1724 1725
       <para>
        Allow <xref linkend="guc-unix-socket-directories"/> to specify
        paths as individual, comma-separated quoted strings (Ian Lawrence
        Barwick)
       </para>
1726

1727 1728 1729 1730
       <para>
        Previously all the paths had to be in a single quoted string.
       </para>
      </listitem>
1731

1732
      <listitem>
1733
<!--
1734 1735
Author: Thomas Munro <tmunro@postgresql.org>
2020-07-31 [84b1c63ad] Preallocate some DSM space at startup.
1736 1737
-->

1738 1739 1740
       <para>
        Allow startup allocation of dynamic shared memory (Thomas Munro)
       </para>
1741

1742 1743 1744 1745 1746 1747
       <para>
        This is controlled by <xref
        linkend="guc-min-dynamic-shared-memory"/>.   This allows more
        use of huge pages.
       </para>
      </listitem>
1748

1749
      <listitem>
1750
<!--
1751 1752
Author: Thomas Munro <tmunro@postgresql.org>
2020-07-17 [d2bddc250] Add huge_page_size setting for use on Linux.
1753 1754
-->

1755 1756 1757 1758 1759
       <para>
        Add setting <xref linkend="guc-huge-page-size"/> to control the
        size of huge pages used on Linux (Odin Ugedal)
       </para>
      </listitem>
1760

1761 1762 1763 1764 1765 1766 1767 1768 1769 1770 1771
     </itemizedlist>

    </sect4>

   </sect3>

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

    <itemizedlist>

1772
     <listitem>
1773
<!--
1774 1775
Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
2020-11-12 [9c4f5192f] Allow pg_rewind to use a standby server as the source sy
1776 1777
-->

1778 1779 1780 1781 1782 1783
      <para>
       Allow standby servers to be rewound via <link
       linkend="app-pgrewind"><application>pg_rewind</application></link>
       (Heikki Linnakangas)
      </para>
     </listitem>
1784

1785
     <listitem>
1786 1787 1788 1789 1790
<!--
Author: Fujii Masao <fujii@postgresql.org>
2020-12-02 [942305a36] Allow restore_command parameter to be changed with reloa
-->

1791 1792 1793 1794
      <para>
       Allow <xref linkend="guc-restore-command"/> setting to be changed
       during a server reload (Sergei Kornilov)
      </para>
1795

1796 1797 1798 1799 1800 1801 1802
      <para>
       You can also set <varname>restore_command</varname> to an empty
       string and reload to force recovery to only read from the <link
       linkend="storage-file-layout"><filename>pg_wal</filename></link>
       directory.
      </para>
     </listitem>
1803

1804
     <listitem>
1805
<!--
1806 1807 1808 1809
Author: Fujii Masao <fujii@postgresql.org>
2021-01-08 [0650ff230] Add GUC to log long wait times on recovery conflicts.
Author: Fujii Masao <fujii@postgresql.org>
2021-01-13 [39b03690b] Log long wait time on recovery conflict when it's resolv
1810 1811
-->

1812 1813 1814 1815 1816 1817
      <para>
       Add server variable <xref
       linkend="guc-log-recovery-conflict-waits"/> to report long recovery
       conflict wait times (Bertrand Drouvot, Masahiko Sawada)
      </para>
     </listitem>
1818

1819
     <listitem>
1820
<!--
1821 1822
Author: Peter Eisentraut <peter@eisentraut.org>
2021-01-18 [15251c0a6] Pause recovery for insufficient parameter settings
1823 1824
-->

1825 1826 1827 1828
      <para>
       Pause recovery if the primary changes its parameters in a way that
       prevents replay on the hot standby (Peter Eisentraut)
      </para>
1829

1830 1831 1832 1833
      <para>
       Previously the standby would shut down immediately.
      </para>
     </listitem>
1834

1835
     <listitem>
1836
<!--
1837 1838
Author: Robert Haas <rhaas@postgresql.org>
2021-03-11 [32fd2b57d] Be clear about whether a recovery pause has taken effect
1839 1840
-->

1841 1842 1843 1844 1845
      <para>
       Add function <link
       linkend="functions-recovery-control"><function>pg_get_wal_replay_pause_state()</function></link>
       to report the recovery state (Dilip Kumar)
      </para>
1846

1847 1848 1849 1850 1851 1852
      <para>
       It gives more detailed information than <link
       linkend="functions-recovery-control"><function>pg_is_wal_replay_paused()</function></link>,
       which still exists.
      </para>
     </listitem>
1853

1854
     <listitem>
1855
<!--
1856 1857
Author: Tom Lane <tgl@sss.pgh.pa.us>
2021-01-05 [bf8a662c9] Introduce a new GUC_REPORT setting "in_hot_standby".
1858 1859
-->

1860 1861 1862 1863 1864
      <para>
       Add new server-side variable <xref linkend="guc-in-hot-standby"/>
       (Haribabu Kommi, Greg Nancarrow, Tom Lane)
      </para>
     </listitem>
1865

1866
     <listitem>
1867
<!--
1868 1869
Author: Amit Kapila <akapila@postgresql.org>
2021-01-12 [d6ad34f34] Optimize DropRelFileNodeBuffers() for recovery.
1870 1871
-->

1872 1873 1874 1875 1876
      <para>
       Speed truncation of small tables during recovery on clusters with
       a large number of shared buffers (Kirk Jamison)
      </para>
     </listitem>
1877

1878
     <listitem>
1879
<!--
1880 1881
Author: Thomas Munro <tmunro@postgresql.org>
2021-03-20 [61752afb2] Provide recovery_init_sync_method=syncfs.
1882 1883
-->

1884 1885 1886 1887
      <para>
       Allow file system sync at the start of crash recovery on Linux
       (Thomas Munro)
      </para>
1888

1889
      <para>
1890 1891 1892
       By default, <productname>PostgreSQL</productname>
       opens and fsyncs every data file at the
       start of crash recovery.  This new setting, <xref
1893 1894 1895 1896 1897
       linkend="guc-recovery-init-sync-method"/><literal>=syncfs</literal>,
       instead syncs each filesystem used by the database cluster.
       This allows for faster recovery on systems with many database files.
      </para>
     </listitem>
1898

1899
     <listitem>
1900
<!--
1901 1902
Author: Michael Paquier <michael@paquier.xyz>
2020-07-12 [b1e48bbe6] Include replication origins in SQL functions for commit 
1903 1904
-->

1905 1906 1907 1908 1909 1910 1911
      <para>
       Add function <link
       linkend="functions-info"><function>pg_xact_commit_timestamp_origin()</function></link>
       to return the commit timestamp and replication origin of the
       specified transaction (Movead Li)
      </para>
     </listitem>
1912

1913
     <listitem>
1914
<!--
1915 1916
Author: Michael Paquier <michael@paquier.xyz>
2020-07-12 [b1e48bbe6] Include replication origins in SQL functions for commit 
1917 1918
-->

1919 1920 1921 1922 1923 1924
      <para>
       Add the replication origin to the record returned by <link
       linkend="functions-info"><function>pg_last_committed_xact()</function></link>
       (Movead Li)
      </para>
     </listitem>
1925

1926
     <listitem>
1927
<!--
1928 1929
Author: Michael Paquier <michael@paquier.xyz>
2020-06-14 [cc072641d] Replace superuser check by ACLs for replication origin f
1930 1931
-->

1932 1933 1934 1935 1936
      <para>
       Allow replication <link linkend="functions-replication">origin
       functions</link> to be controlled using standard function permission
       controls (Martín Marqués)
      </para>
1937

1938
      <para>
1939
       Previously these functions could only be executed by superusers,
1940 1941 1942
       and this is still the default.
      </para>
     </listitem>
1943

1944
    </itemizedlist>
1945

1946
    <sect4>
1947
     <title><link linkend="logical-replication">Logical Replication</link></title>
1948 1949

     <itemizedlist>
1950

1951
      <listitem>
1952 1953 1954 1955 1956 1957 1958 1959 1960 1961 1962
<!--
Author: Amit Kapila <akapila@postgresql.org>
2020-09-03 [464824323] Add support for streaming to built-in logical replicatio
Author: Amit Kapila <akapila@postgresql.org>
2020-12-30 [0aa8a01d0] Extend the output plugin API to allow decoding of prepar
Author: Amit Kapila <akapila@postgresql.org>
2021-01-04 [a271a1b50] Allow decoding at prepare time in ReorderBuffer.
Author: Amit Kapila <akapila@postgresql.org>
2020-08-08 [7259736a6] Implement streaming mode in ReorderBuffer.
-->

1963 1964
       <para>
        Allow logical replication to stream long in-progress transactions
Bruce Momjian's avatar
Bruce Momjian committed
1965 1966
        to subscribers (Dilip Kumar, Amit Kapila, Ajin
        Cherian, Tomas Vondra, Nikhil Sontakke, Stas Kelvich)
1967
       </para>
1968

1969 1970 1971 1972 1973 1974
       <para>
        Previously transactions that exceeded <xref
        linkend="guc-logical-decoding-work-mem"/> were written to disk
        until the transaction completed.
       </para>
      </listitem>
1975

1976
      <listitem>
1977 1978
<!--
Author: Amit Kapila <akapila@postgresql.org>
1979
2020-07-28 [45fdc9738] Extend the logical decoding output plugin API with strea
1980 1981
-->

1982 1983 1984 1985 1986
       <para>
        Enhance the logical replication <acronym>API</acronym> to allow
        streaming large in-progress transactions (Tomas Vondra, Dilip
        Kumar, Amit Kapila)
       </para>
1987

1988 1989 1990
       <para>
        The output functions begin with <link
        linkend="logicaldecoding-output-plugin-stream-start"><literal>stream</literal></link>.
1991
        <application>test_decoding</application> also supports these.
1992 1993
       </para>
      </listitem>
1994

1995
      <listitem>
1996
<!--
1997 1998
Author: Amit Kapila <akapila@postgresql.org>
2021-02-12 [ce0fdbfe9] Allow multiple xacts during table sync in logical replic
1999 2000
-->

2001 2002 2003 2004 2005
       <para>
        Allow multiple transactions during table sync in logical
        replication (Peter Smith, Amit Kapila, and Takamichi Osumi)
       </para>
      </listitem>
2006

2007
      <listitem>
2008
<!--
2009 2010
Author: Amit Kapila <akapila@postgresql.org>
2020-07-20 [0bead9af4] Immediately WAL-log subtransaction and top-level XID ass
2011 2012
-->

2013 2014
       <para>
        Immediately <acronym>WAL</acronym>-log subtransaction and top-level
2015
        <type>XID</type> association (Tomas Vondra, Dilip Kumar, Amit
2016 2017
        Kapila)
       </para>
2018

2019 2020 2021 2022
       <para>
        This is useful for logical decoding.
       </para>
      </listitem>
2023

2024
      <listitem>
2025
<!--
2026 2027 2028 2029 2030 2031
Author: Amit Kapila <akapila@postgresql.org>
2020-12-30 [0aa8a01d0] Extend the output plugin API to allow decoding of prepar
Author: Amit Kapila <akapila@postgresql.org>
2021-01-04 [a271a1b50] Allow decoding at prepare time in ReorderBuffer.
Author: Amit Kapila <akapila@postgresql.org>
2021-03-03 [19890a064] Add option to enable two_phase commits via pg_create_log
2032 2033
-->

2034 2035 2036 2037
       <para>
        Enhance logical decoding APIs to handle two-phase commits (Ajin
        Cherian, Amit Kapila, Nikhil Sontakke, Stas Kelvich)
       </para>
2038

2039 2040 2041 2042 2043
       <para>
        This is controlled via <link
        linkend="functions-replication"><function>pg_create_logical_replication_slot()</function></link>.
       </para>
      </listitem>
2044

2045
      <listitem>
2046 2047 2048 2049 2050
<!--
Author: Amit Kapila <akapila@postgresql.org>
2020-07-23 [c55040ccd] WAL Log invalidations at command end with wal_level=logi
-->

2051
       <para>
Bruce Momjian's avatar
Bruce Momjian committed
2052
        Generate <acronym>WAL</acronym> invalidation messages during
2053 2054 2055
        command completion when using logical replication (Dilip Kumar,
        Tomas Vondra, Amit Kapila)
       </para>
2056

2057 2058 2059 2060 2061 2062
       <para>
        When logical replication is disabled, <acronym>WAL</acronym>
        invalidation messages are generated at transaction completion.
        This allows logical streaming of in-progress transactions.
       </para>
      </listitem>
2063

2064
      <listitem>
2065 2066
<!--
Author: Amit Kapila <akapila@postgresql.org>
2067
2020-10-15 [d7eb52d71] Execute invalidation messages for each XLOG_XACT_INVALID
2068 2069
-->

2070 2071 2072 2073
       <para>
        Allow logical decoding to more efficiently process cache
        invalidation messages (Dilip Kumar)
       </para>
2074

2075 2076 2077
       <para>
        This allows <link linkend="logicaldecoding">logical decoding</link>
        to work efficiently in presence of a large amount of
2078
        <acronym>DDL</acronym>.
2079 2080
       </para>
      </listitem>
2081

2082
      <listitem>
2083 2084
<!--
Author: Amit Kapila <akapila@postgresql.org>
2085
2021-04-06 [ac4645c01] Allow pgoutput to send logical decoding messages.
2086 2087
-->

2088 2089 2090 2091 2092
       <para>
        Allow control over whether logical decoding messages are sent to
        the replication stream (David Pirotte, Euler Taveira)
       </para>
      </listitem>
2093

2094
      <listitem>
2095
<!--
2096 2097
Author: Tom Lane <tgl@sss.pgh.pa.us>
2020-07-18 [9de77b545] Allow logical replication to transfer data in binary for
2098 2099
-->

2100 2101 2102 2103
       <para>
        Allow logical replication subscriptions to use binary transfer mode
        (Dave Cramer)
       </para>
2104

2105 2106 2107 2108
       <para>
        This is faster than text mode, but slightly less robust.
       </para>
      </listitem>
2109

2110
      <listitem>
2111
<!--
2112 2113
Author: Amit Kapila <akapila@postgresql.org>
2021-03-30 [f64ea6dc5] Add a xid argument to the filter_prepare callback for ou
2114 2115
-->

2116 2117 2118 2119
       <para>
        Allow logical decoding to be filtered by xid (Markus Wanner)
       </para>
      </listitem>
2120

2121 2122
     </itemizedlist>
    </sect4>
2123 2124 2125 2126

   </sect3>

   <sect3>
2127
    <title><link linkend="sql-select"><command>SELECT</command></link>, <link linkend="sql-insert"><command>INSERT</command></link></title>
2128 2129 2130

    <itemizedlist>

2131
     <listitem>
2132 2133
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
2134
2020-09-18 [06a7c3154] Allow most keywords to be used as column labels without 
2135 2136
-->

2137 2138 2139 2140
      <para>
       Reduce the number of keywords that can't be used as column labels
       without <literal>AS</literal> (Mark Dilger)
      </para>
2141

2142 2143 2144 2145
      <para>
       There are now 90% fewer restricted keywords.
      </para>
     </listitem>
2146

2147
     <listitem>
2148 2149
<!--
Author: Peter Eisentraut <peter@eisentraut.org>
2150
2021-03-31 [055fee7eb] Allow an alias to be attached to a <literal>JOIN ... USING</literal>
2151 2152
-->

2153 2154
      <para>
       Allow an alias to be specified for <literal>JOIN</literal>'s
2155
       <literal>USING</literal> clause (Peter Eisentraut)
2156
      </para>
2157

2158 2159
      <para>
       The alias is created by using <literal>AS</literal> after the
2160 2161
       <literal>USING</literal> clause and represents an alias for the
       <literal>USING</literal> columns.
2162 2163
      </para>
     </listitem>
2164

2165
     <listitem>
2166 2167 2168 2169 2170
<!--
Author: Tomas Vondra <tomas.vondra@postgresql.org>
2021-03-18 [be45be9c3] Implement GROUP BY DISTINCT
-->

2171 2172 2173 2174 2175
      <para>
       Allow <literal>DISTINCT</literal> to be added to <literal>GROUP
       BY</literal> to remove duplicate <literal>GROUPING SET</literal>
       combinations (Vik Fearing)
      </para>
2176

2177 2178 2179
      <para>
       For example, <literal>GROUP BY CUBE (a,b), CUBE (b,c)</literal>
       will generate duplicate grouping combinations without
2180
       <literal>DISTINCT</literal>.
2181 2182
      </para>
     </listitem>
2183

2184
     <listitem>
2185
<!--
2186
Author: Tom Lane <tgl@sss.pgh.pa.us>
2187
2020-11-22 [17958972f] Allow a multi-row <command>INSERT</command> to specify DEFAULTs for a gener
2188 2189
-->

2190 2191 2192 2193
      <para>
       Properly handle <literal>DEFAULT</literal> values for columns in
       multi-column inserts (Dean Rasheed)
      </para>
2194

2195 2196 2197 2198
      <para>
       This used to throw an error.
      </para>
     </listitem>
2199

2200
     <listitem>
2201
<!--
2202 2203 2204 2205
Author: Peter Eisentraut <peter@eisentraut.org>
2021-02-01 [3696a600e] SEARCH and CYCLE clauses
Author: Peter Eisentraut <peter@eisentraut.org>
2021-02-27 [f4adc41c4] Enhanced cycle mark values
2206 2207
-->

2208 2209 2210 2211 2212 2213
      <para>
       Add <acronym>SQL</acronym>-standard <literal>SEARCH</literal>
       and <literal>CYCLE</literal> clauses for <link
       linkend="queries-with">common table expressions</link> (Peter
       Eisentraut)
      </para>
2214

2215 2216 2217 2218
      <para>
       This could be accomplished previously using existing syntax.
      </para>
     </listitem>
2219

2220
     <listitem>
2221 2222
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
2223
2021-04-13 [6c0373ab7] Allow table-qualified variable names in ON CONFLICT ... 
2224 2225
-->

2226 2227 2228 2229
      <para>
       Allow the <literal>WHERE</literal> clause of <literal>ON
       CONFLICT</literal> to be table-qualified (Tom Lane)
      </para>
2230

2231 2232 2233 2234
      <para>
       Only the target table can be referenced.
      </para>
     </listitem>
2235 2236 2237 2238 2239 2240 2241 2242 2243 2244

    </itemizedlist>

   </sect3>

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

    <itemizedlist>

2245
     <listitem>
2246 2247 2248 2249 2250
<!--
Author: Thomas Munro <tmunro@postgresql.org>
2021-03-17 [9e7ccd9ef] Enable parallelism in REFRESH MATERIALIZED VIEW.
-->

2251 2252 2253 2254 2255 2256
      <para>
       Allow <link linkend="sql-refreshmaterializedview"><command>REFRESH
       MATERIALIZED VIEW</command></link> to use parallelism (Bharath
       Rupireddy)
      </para>
     </listitem>
2257

2258
     <listitem>
2259 2260
<!--
Author: Michael Paquier <michael@paquier.xyz>
2261
2021-02-04 [c5b286047] Add TABLESPACE option to REINDEX
Bruce Momjian's avatar
Bruce Momjian committed
2262 2263
Author: Michael Paquier <michael@paquier.xyz>
2021-03-03 [57e6db706] Add - -tablespace option to reindexdb
2264 2265
-->

2266 2267 2268 2269 2270
      <para>
       Allow <link linkend="sql-reindex"><command>REINDEX</command></link>
       to change the tablespace of the new index (Alexey Kondratov,
       Michael Paquier, Justin Pryzby)
      </para>
2271

2272 2273
      <para>
       This is done by specifying a <literal>TABLESPACE</literal> clause.
Bruce Momjian's avatar
Bruce Momjian committed
2274 2275 2276
       A <option>--tablespace</option> option was also added to <link
       linkend="app-reindexdb"><application>reindexdb</application></link>
       to control this.
2277 2278
      </para>
     </listitem>
2279

2280
     <listitem>
2281 2282
<!--
Author: Michael Paquier <michael@paquier.xyz>
2283
2020-09-08 [a6642b3ae] Add support for partitioned tables and indexes in REINDE
2284 2285
-->

2286 2287 2288 2289 2290
      <para>
       Allow <command>REINDEX</command> to process all child tables or
       indexes of a partitioned relation (Justin Pryzby, Michael Paquier)
      </para>
     </listitem>
2291

2292 2293 2294 2295 2296 2297 2298 2299 2300 2301 2302 2303 2304 2305 2306 2307 2308
      <listitem>
<!--
Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
2020-11-25 [c98763bf5] Avoid spurious waits in concurrent indexing
Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
2021-01-15 [f9900df5f] Avoid spurious wait in concurrent reindex
Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
2021-02-23 [d9d076222] VACUUM: ignore indexing operations with CONCURRENTLY
-->

       <para>
        Allow index commands using <command>CONCURRENTLY</command> to
        avoid waiting for the completion of other operations using
        <command>CONCURRENTLY</command> (Álvaro Herrera)
       </para>
      </listitem>

2309
     <listitem>
2310 2311 2312 2313
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
2020-07-25 [0a0727ccf] Improve performance of binary COPY FROM through better b
-->
2314

2315 2316 2317 2318 2319 2320
      <para>
       Improve the performance of <link linkend="sql-copy"><command>COPY
       FROM</command></link> in binary mode (Bharath Rupireddy, Amit
       Langote)
      </para>
     </listitem>
2321

2322
     <listitem>
2323 2324
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
2325
2020-11-04 [40c24bfef] Improve our ability to regurgitate SQL-syntax function c
2326 2327
-->

2328 2329 2330 2331 2332
      <para>
       Preserve <acronym>SQL</acronym> standard syntax in <link
       linkend="sql-createview">view definitions</link>, if possible
       (Tom Lane)
      </para>
2333

2334 2335
      <para>
       Previously non-function call
2336
       <acronym>SQL</acronym> standard syntax, e.g. <link
2337 2338 2339 2340 2341
       linkend="functions-formatting"><function>EXTRACT</function></link>,
       were converted to non-<acronym>SQL</acronym> standard function
       calls.
      </para>
     </listitem>
2342

2343
     <listitem>
2344 2345 2346 2347 2348
<!--
Author: Peter Eisentraut <peter@eisentraut.org>
2021-01-30 [6aaaa76bb] Allow GRANTED BY clause in normal GRANT and REVOKE state
-->

2349 2350 2351 2352 2353 2354 2355 2356
      <para>
       Add the <acronym>SQL</acronym>-standard
       clause <literal>GRANTED BY</literal> to <link
       linkend="sql-grant"><command>GRANT</command></link> and <link
       linkend="sql-revoke"><command>REVOKE</command></link> (Peter
       Eisentraut)
      </para>
     </listitem>
2357

2358
     <listitem>
2359
<!--
2360 2361
Author: Tom Lane <tgl@sss.pgh.pa.us>
2020-11-14 [92bf7e2d0] Provide the OR REPLACE option for CREATE TRIGGER.
2362 2363
-->

2364 2365 2366 2367 2368
      <para>
       Add <literal>OR REPLACE</literal> for <link
       linkend="sql-createtrigger"><command>CREATE TRIGGER</command></link>
       (Takamichi Osumi)
      </para>
2369

2370 2371 2372 2373
      <para>
       This allows pre-existing triggers to be conditionally replaced.
      </para>
     </listitem>
2374

2375
     <listitem>
2376
<!--
2377 2378
Author: Fujii Masao <fujii@postgresql.org>
2021-04-08 [8ff1c9464] Allow TRUNCATE command to truncate foreign tables.
2379 2380
-->

2381 2382 2383 2384 2385
      <para>
       Allow <link
       linkend="sql-truncate"><command>TRUNCATE</command></link> to
       operate on foreign tables (Kazutaka Onishi, Kohei KaiGai)
      </para>
2386

2387 2388 2389 2390 2391 2392
      <para>
       The <link
       linkend="postgres-fdw"><application>postgres_fdw</application></link>
       module also now supports this.
      </para>
     </listitem>
2393

2394
     <listitem>
2395 2396
<!--
Author: Peter Eisentraut <peter@eisentraut.org>
2397
2021-04-06 [82ed7748b] ALTER SUBSCRIPTION ... ADD/DROP PUBLICATION
2398 2399
-->

2400 2401 2402
      <para>
       Allow publications to be more easily added and removed (Japin Li)
      </para>
2403

2404 2405 2406 2407 2408 2409 2410
      <para>
       The new syntax is <link
       linkend="sql-altersubscription"><command>ALTER SUBSCRIPTION
       ... ADD/DROP PUBLICATION</command></link>.  This avoids having to
       specify all publications to add/remove entries.
      </para>
     </listitem>
2411

2412
     <listitem>
2413
<!--
2414 2415 2416 2417
Author: Peter Eisentraut <peter@eisentraut.org>
2021-01-30 [dfb75e478] Add primary keys and unique constraints to system catalo
Author: Tom Lane <tgl@sss.pgh.pa.us>
2021-02-02 [62f34097c] Build in some knowledge about foreign-key relationships 
2418 2419
-->

2420 2421 2422 2423
      <para>
       Add primary keys, unique constraints, and foreign keys to <link
       linkend="catalogs">system catalogs</link> (Peter Eisentraut)
      </para>
2424

2425
      <para>
2426 2427 2428
       This helps <acronym>GUI</acronym> tools analyze the
       system tables.  The constraints are visible using <link
       linkend="functions-aclitem-fn-table">pg_get_catalog_foreign_keys()</link>.
2429 2430
      </para>
     </listitem>
2431

2432
     <listitem>
2433
<!--
2434 2435
Author: Peter Eisentraut <peter@eisentraut.org>
2020-09-17 [45b980570] Allow CURRENT_ROLE where CURRENT_USER is accepted
2436 2437
-->

2438 2439 2440 2441 2442 2443 2444
      <para>
       Allow <link
       linkend="functions-info"><literal>CURRENT_ROLE</literal></link>
       every place <literal>CURRENT_USER</literal> is accepted (Peter
       Eisentraut)
      </para>
     </listitem>
2445 2446 2447 2448 2449 2450 2451 2452 2453 2454

    </itemizedlist>

   </sect3>

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

    <itemizedlist>

2455
     <listitem>
2456 2457 2458 2459 2460
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
2020-12-09 [c7aba7c14] Support subscripting of arbitrary types, not only arrays
-->

2461 2462 2463 2464
      <para>
       Allow extensions and built-in data types to implement <link
       linkend="sql-altertype">subscripting</link> (Dmitry Dolgov)
      </para>
2465

2466 2467 2468 2469 2470 2471 2472
      <para>
       Previously subscript handling was hard-coded into the server, so
       that subscripting could only be applied to array types.  This change
       allows subscript notation to be used to extract or assign portions
       of a value of any type for which the concept makes sense.
      </para>
     </listitem>
2473

2474
     <listitem>
2475 2476 2477 2478 2479 2480 2481 2482 2483
<!--
Author: Alexander Korotkov <akorotkov@postgresql.org>
2021-01-31 [676887a3b] Implementation of subscripting for jsonb
Author: Alexander Korotkov <akorotkov@postgresql.org>
2021-01-31 [81fcc72e6] Filling array gaps during jsonb subscripting
Author: Alexander Korotkov <akorotkov@postgresql.org>
2021-01-31 [aa6e46daf] Throw error when assigning jsonb scalar instead of a com
-->

2484 2485 2486 2487
      <para>
       Allow subscripting of <link
       linkend="datatype-json"><type>JSONB</type></link> (Dmitry Dolgov)
      </para>
2488

2489
      <para>
2490
       <type>JSONB</type> subscripting can be used to extract and assign
2491 2492 2493
       to portions of <type>JSONB</type> documents.
      </para>
     </listitem>
2494

2495
     <listitem>
2496 2497 2498 2499 2500 2501 2502 2503 2504
<!--
Author: Author: Alexander Korotkov <akorotkov@postgresql.org>
2020-12-20 [6df7a9698] Multirange datatypes
Author: Alexander Korotkov <akorotkov@postgresql.org>
2020-12-29 [db6335b5b] Add support of multirange matching to the existing range
Author: Alexander Korotkov <akorotkov@postgresql.org>
2020-12-30 [62097a4cc] Fix selectivity estimation @&gt; (anymultirange, anyrange)
-->

2505 2506 2507 2508
      <para>
       Add support for <link linkend="rangetypes">multirange data
       types</link> (Paul Jungwirth, Alexander Korotkov)
      </para>
2509

2510 2511 2512 2513 2514 2515
      <para>
       These are like range data types, but they allow the specification
       of multiple, ordered, non-overlapping ranges.  All existing range
       types now also support multirange versions.
      </para>
     </listitem>
2516

2517
     <listitem>
2518 2519 2520 2521 2522
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
2020-11-23 [0cc993278] Rename the "point is strictly above/below point" compari
-->

2523 2524
      <para>
       Add <link linkend="functions-geometry">point operators</link>
2525 2526
       <literal>&lt;&lt;|</literal> and <literal>|&gt;&gt;</literal>
       to be strictly above/below geometry (Emre Hasegeli)
2527
      </para>
2528

2529
      <para>
2530 2531 2532 2533 2534
       Previously <literal>&gt;^</literal> and <literal>&lt;^</literal>
       were marked as performing this test, but non-point geometric
       operators used these operators for non-strict comparisons, leading
       to confusion.  The old operators still exist but will be eventually
       removed.  ACCURATE?
2535 2536
      </para>
     </listitem>
2537

2538
     <listitem>
2539
<!--
2540 2541 2542 2543 2544 2545
Author: Peter Eisentraut <peter@eisentraut.org>
2020-06-08 [cbcc8726b] Update snowball
Author: Peter Eisentraut <peter@eisentraut.org>
2020-06-08 [c2e71cb35] Update documentation for snowball update
Author: Peter Eisentraut <peter@eisentraut.org>
2021-02-19 [678d0e239] Update snowball
2546 2547
-->

2548 2549 2550 2551 2552 2553 2554
      <para>
       Add support for the <link
       linkend="textsearch-snowball-dictionary">stemming</link> of
       languages Armenian, Basque, Catalan, Hindi, Serbian, and Yiddish
       (Peter Eisentraut)
      </para>
     </listitem>
2555

2556
     <listitem>
2557 2558 2559 2560 2561
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
2020-09-23 [83b61319a] Improve behavior of tsearch_readline(), and remove t_rea
-->

2562 2563 2564 2565
      <para>
       Allow <link linkend="textsearch-intro-configurations">tsearch data
       files</link> to have unlimited line lengths (Tom Lane)
      </para>
2566

2567 2568
      <para>
       The previous limit was 4k bytes.  Also remove function
2569
       <function>t_readline()</function>.
2570 2571
      </para>
     </listitem>
2572

2573
     <listitem>
2574 2575 2576 2577 2578
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
2020-07-22 [a57d312a7] Support infinity and -infinity in the numeric data type.
-->

2579
      <para>
Bruce Momjian's avatar
Bruce Momjian committed
2580 2581 2582
       Add support for <literal>infinity</literal> and
       <literal>-infinity</literal> values to the <link
       linkend="datatype-numeric">numeric data type</link> (Tom Lane)
2583
      </para>
2584

2585
      <para>
2586
       Floating-point data types already supported these.
2587 2588
      </para>
     </listitem>
2589

2590
     <listitem>
2591 2592
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
2593
2020-11-21 [8597a48d0] Fix FPeq() and friends to get the right answers for infi
2594 2595
-->

2596
      <para>
2597
       Improve the accuracy of floating-point computations involving
2598 2599 2600
       infinity (Tom Lane)
      </para>
     </listitem>
2601

2602
     <listitem>
2603 2604 2605 2606 2607
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
2020-11-04 [fac83dbd6] Remove underflow error in float division with infinite d
-->

2608 2609 2610 2611
      <para>
       Have non-zero <link linkend="datatype-float">float values</link>
       divided by infinity return zero (Kyotaro Horiguchi)
      </para>
2612

2613 2614 2615 2616
      <para>
       Previously such operations produced underflow errors.
      </para>
     </listitem>
2617

2618
     <listitem>
2619 2620 2621 2622 2623
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
2020-07-20 [4fb6aeb4f] Make floating-point "NaN / 0" return NaN instead of rais
-->

2624 2625 2626 2627
      <para>
       Cause floating-point division of NaN by zero to return NaN
       (Tom Lane)
      </para>
2628

2629 2630 2631 2632 2633
      <para>
       Previously this returned an error.  Division with Numerics always
       returned NaN.
      </para>
     </listitem>
2634

2635
     <listitem>
2636
<!--
2637 2638
Author: Fujii Masao <fujii@postgresql.org>
2020-06-30 [9bae7e4cd] Add +(pg_lsn,numeric) and -(pg_lsn,numeric) operators.
2639 2640
-->

2641 2642 2643 2644 2645 2646
      <para>
       Add operators to add and subtract <link
       linkend="datatype-pg-lsn"><type>LSN</type></link> and numeric
       (byte) values (Fujii Masao)
      </para>
     </listitem>
2647

2648
     <listitem>
2649 2650
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
2651
2020-07-21 [670c0a1d4] Weaken type-OID-matching checks in array_recv and record
2652 2653
-->

2654 2655 2656
      <para>
       Allow <link linkend="protocol-format-codes">binary data
       transfer</link> to be more forgiving of array and record
2657
       <type>OID</type> mismatches (Tom Lane)
2658 2659
      </para>
     </listitem>
2660

2661
     <listitem>
2662 2663 2664 2665
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
2020-07-06 [f7f70d5e2] Create composite array types for initdb-created relation
-->
2666

2667 2668 2669 2670 2671
      <para>
       Create composite array types for most system relations (Wenjing
       Zeng)
      </para>
     </listitem>
2672

2673 2674 2675 2676 2677 2678 2679 2680 2681
    </itemizedlist>

   </sect3>

   <sect3>
    <title>Functions</title>

    <itemizedlist>

2682
     <listitem>
2683 2684 2685 2686 2687
<!--
Author: Peter Eisentraut <peter@eisentraut.org>
2021-04-07 [e717a9a18] SQL-standard function body
-->

2688 2689 2690 2691
      <para>
       Allow <acronym>SQL</acronym>-language <link
       linkend="sql-createfunction">functions</link> and <link
       linkend="sql-createprocedure">procedures</link> to use
2692
       <acronym>SQL</acronym>-standard function bodies (Peter Eisentraut)
2693
      </para>
2694

2695 2696 2697 2698 2699
      <para>
       Previously only single-quoted or $$-quoted function bodies were
       supported.
      </para>
     </listitem>
2700

2701
     <listitem>
2702 2703
<!--
Author: Peter Eisentraut <peter@eisentraut.org>
2704 2705 2706
2020-10-05 [2453ea142] Support for OUT parameters in procedures
Author: Peter Eisentraut <peter@eisentraut.org>
2020-10-27 [9213462c5] Make procedure OUT parameters work with JDBC
2707 2708
-->

2709 2710
      <para>
       Allow <link linkend="sql-createprocedure">procedures</link> to have
2711
       <literal>OUT</literal> parameters (Peter Eisentraut)
2712 2713
      </para>
     </listitem>
2714

2715
     <listitem>
2716
<!--
2717 2718
Author: Tom Lane <tgl@sss.pgh.pa.us>
2020-11-04 [9e38c2bb5] Declare assorted array functions using anycompatible not
2719 2720
-->

2721 2722 2723 2724
      <para>
       Allow some array functions to operate on a mix of compatible data
       types (Tom Lane)
      </para>
2725

2726 2727 2728
      <para>
       The functions are <link
       linkend="functions-array"><function>array_append()</function></link>,
2729 2730 2731 2732 2733 2734
       <function>array_prepend()</function>,
       <function>array_cat()</function>,
       <function>array_position()</function>,
       <function>array_positions()</function>,
       <function>array_remove()</function>,
       <function>array_replace()</function>, and <link
2735 2736 2737 2738
       linkend="functions-math"><function>width_bucket()</function></link>.
       Previously only identical data types could be used.
      </para>
     </listitem>
2739

2740
     <listitem>
2741 2742
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
2743
2021-03-03 [0a687c8f1] Add trim_array() function.
2744 2745
-->

2746 2747 2748 2749 2750
      <para>
       Add <acronym>SQL</acronym>-standard <link
       linkend="functions-array"><function>trim_array()</function></link>
       function (Vik Fearing)
      </para>
2751

2752 2753 2754 2755
      <para>
       This can already be done with array slices.
      </para>
     </listitem>
2756

2757
     <listitem>
2758
<!--
2759 2760
Author: Tom Lane <tgl@sss.pgh.pa.us>
2021-01-18 [a6cf3df4e] Add bytea equivalents of ltrim() and rtrim().
2761 2762
-->

2763 2764 2765 2766 2767 2768
      <para>
       Add bytea equivalents of <link
       linkend="functions-binarystring"><function>ltrim()</function></link>
       and <function>rtrim()</function> (Joel Jacobson)
      </para>
     </listitem>
2769

2770
     <listitem>
2771 2772
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
2773
2020-11-13 [ec0294fb2] Support negative indexes in split_part().
2774 2775
-->

2776 2777 2778 2779 2780
      <para>
       Support negative indexes in <link
       linkend="functions-string"><function>split_part()</function></link>
       (Nikhil Benesch)
      </para>
2781

2782 2783 2784 2785
      <para>
       Negative values start from the last field and count backward.
      </para>
     </listitem>
2786

2787
     <listitem>
2788
<!--
2789 2790
Author: Tom Lane <tgl@sss.pgh.pa.us>
2020-09-02 [66f163068] Add string_to_table() function.
2791 2792
-->

2793 2794 2795 2796 2797
      <para>
       Add <link
       linkend="functions-string"><function>string_to_table()</function></link>
       function to split a string on delimiters (Pavel Stehule)
      </para>
2798

2799 2800 2801 2802 2803 2804
      <para>
       This is similar to the <link
       linkend="functions-string"><function>regexp_split_to_table()</function></link>
       function.
      </para>
     </listitem>
2805

2806
     <listitem>
2807
<!--
2808 2809
Author: Peter Eisentraut <peter@eisentraut.org>
2021-03-29 [f37fec837] Add unistr function
2810 2811
-->

2812 2813 2814 2815 2816 2817
      <para>
       Add <link
       linkend="functions-string"><function>unistr()</function></link>
       function to allow Unicode characters to be specified as
       backslash-hex escapes in strings (Pavel Stehule)
      </para>
2818

2819
      <para>
2820
       This is similar to how Unicode can be specified in literal strings.
2821 2822
      </para>
     </listitem>
2823

2824
     <listitem>
2825
<!--
2826 2827
Author: Peter Eisentraut <peter@eisentraut.org>
2021-03-06 [f9a0392e1] Add bit_xor aggregate function
2828 2829
-->

2830 2831 2832 2833 2834 2835
      <para>
       Add <link
       linkend="functions-aggregate"><function>bit_xor()</function></link>
       XOR aggregate function (Alexey Bashtanov)
      </para>
     </listitem>
2836

2837
     <listitem>
2838
<!--
2839 2840 2841
Author: Peter Eisentraut <peter@eisentraut.org>
2021-03-23 [a6715af1e] Add bit_count SQL function
-->
2842

2843 2844 2845 2846 2847 2848 2849
      <para>
       Add function <link
       linkend="functions-binarystring"><function>bit_count()</function></link>
       to return the number of bits set in a bit or byte string (David
       Fetter)
      </para>
     </listitem>
2850

2851
     <listitem>
2852
<!--
2853 2854 2855 2856
Author: Peter Eisentraut <peter@eisentraut.org>
2021-03-24 [49ab61f0b] Add date_bin function
Author: Peter Eisentraut <peter@eisentraut.org>
2021-04-10 [496e58bb0] Improve behavior of date_bin with origin in the future
2857 2858
-->

2859 2860 2861 2862 2863
      <para>
       Add <link
       linkend="functions-datetime-bin"><function>date_bin()</function></link>
       function (John Naylor)
      </para>
2864

2865 2866 2867 2868 2869
      <para>
       The function <function>date_bin()</function> "bins" the input
       timestamp into a specified interval aligned with a specified origin.
      </para>
     </listitem>
2870

2871
     <listitem>
2872 2873
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
2874
2020-09-29 [a094c8ff5] Fix make_timestamp[tz] to accept negative years as meani
2875 2876
-->

2877 2878 2879 2880 2881
      <para>
       Allow <link
       linkend="functions-datetime"><function>make_timestamp()</function></link>/<function>make_timestamptz()</function>
       to accept negative years (Peter Eisentraut)
      </para>
2882

2883 2884 2885 2886
      <para>
       They are interpreted as <literal>BC</literal> years.
      </para>
     </listitem>
2887

2888
     <listitem>
2889
<!--
2890 2891
Author: Peter Eisentraut <peter@eisentraut.org>
2020-06-29 [78c887679] Add current substring regular expression syntax
2892 2893
-->

2894 2895 2896 2897 2898
      <para>
       Add newer regular expression <link
       linkend="functions-string"><function>substring()</function></link>
       syntax (Peter Eisentraut)
      </para>
2899

2900 2901 2902
      <para>
       The new syntax is <literal>SUBSTRING(text SIMILAR pattern ESCAPE
       escapechar)</literal>.  The previous standard syntax was
2903
       <literal>SUBSTRING(text FROM pattern FOR escapechar)</literal>,
2904
       and is still supported by <productname>PostgreSQL</productname>.
2905 2906
      </para>
     </listitem>
2907

2908
     <listitem>
2909 2910
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
2911
2021-02-25 [2a0af7fe4] Allow complemented character class escapes within regex 
2912 2913
-->

2914 2915 2916 2917 2918 2919
      <para>
       Allow complemented character class escapes <link
       linkend="posix-escape-sequences">\D</link>, <literal>\S</literal>,
       and <literal>\W</literal> within regex brackets (Tom Lane)
      </para>
     </listitem>
2920

2921
     <listitem>
2922 2923
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
2924
2021-02-25 [2a0af7fe4] Allow complemented character class escapes within regex 
2925 2926
-->

2927 2928 2929
      <para>
       Add <link
       linkend="posix-escape-sequences"><literal>[[:word:]]</literal></link>
2930
       as a character class to match <literal>\w</literal> (Tom Lane)
2931 2932
      </para>
     </listitem>
2933

2934
     <listitem>
2935
<!--
2936 2937
Author: Tom Lane <tgl@sss.pgh.pa.us>
2020-11-04 [5c292e6b9] Declare lead() and lag() using anycompatible not anyelem
2938 2939
-->

2940 2941 2942 2943 2944 2945
      <para>
       Allow more flexible data types for default values of <link
       linkend="functions-window"><function>lead()</function></link>
       and <function>lag()</function> window functions (Vik Fearing)
      </para>
     </listitem>
2946

2947
     <listitem>
2948 2949
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
2950 2951 2952 2953 2954
2020-06-14 [decbe2bfb] Fix behavior of exp() and power() for infinity inputs.
Author: Tom Lane <tgl@sss.pgh.pa.us>
2020-06-15 [e532b1d57] Fix power() for infinity inputs some more.
Author: Tom Lane <tgl@sss.pgh.pa.us>
2020-06-15 [5674eb987] Fix power() for large inputs yet more.
2955 2956
-->

2957 2958 2959
      <para>
       Cause <link
       linkend="functions-math"><function>exp()</function></link> and
2960
       <function>power()</function> for negative-infinity exponents to
2961 2962
       return zero (Tom Lane)
      </para>
2963

2964 2965 2966 2967
      <para>
       Previously they often returned underflow errors.
      </para>
     </listitem>
2968

2969
     <listitem>
2970 2971
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
2972
2020-07-25 [8a37951ee] Mark built-in coercion functions as leakproof where poss
2973 2974
-->

2975 2976 2977 2978
      <para>
       Mark built-in type coercion functions as leakproof where possible
       (Tom Lane)
      </para>
2979

2980 2981 2982 2983 2984
      <para>
       This allows more use of functions that require type conversion in
       security-sensitive situations.
      </para>
     </listitem>
2985

2986
     <listitem>
2987 2988
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
2989
2021-03-08 [fed10d4ee] Properly mark pg_stat_get_subscription() as returning a 
2990 2991
-->

2992 2993 2994 2995
      <para>
       Mark <function>pg_stat_get_subscription()</function> as returning
       a set (Tom Lane)
      </para>
2996

2997 2998 2999 3000 3001 3002
      <para>
       While it worked in previous releases, it didn't report proper
       optimizer statistics and couldn't be used in the target list.
       FUNCTION NOT DOCUMENTED.
      </para>
     </listitem>
3003

3004
     <listitem>
3005
<!--
3006 3007
Author: Tom Lane <tgl@sss.pgh.pa.us>
2021-01-13 [5a6f9bce8] Mark inet_server_addr() and inet_server_port() as parall
3008 3009
-->

3010 3011 3012 3013 3014 3015 3016
      <para>
       Prevent <link
       linkend="functions-info"><function>inet_server_addr()</function></link>
       and <function>inet_server_port()</function> from being run by
       parallel workers (Masahiko Sawada)
      </para>
     </listitem>
3017

3018
     <listitem>
3019 3020 3021 3022
<!--
Author: Michael Paquier <michael@paquier.xyz>
2020-07-15 [2a10fdc43] Eliminate cache lookup errors in SQL functions for objec
-->
3023

3024 3025 3026
      <para>
       Change <link
       linkend="functions-info"><function>pg_describe_object()</function></link>,
3027 3028
       <function>pg_identify_object()</function>, and
       <function>pg_identify_object_as_address()</function> to always report
3029 3030 3031
       helpful error messages for non-existent objects (Michael Paquier)
      </para>
     </listitem>
3032 3033 3034 3035 3036 3037 3038 3039 3040 3041

    </itemizedlist>

   </sect3>

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

    <itemizedlist>

3042
     <listitem>
3043 3044
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
3045
2021-01-04 [c9d529848] Re-implement pl/pgsql's expression and assignment parsin
3046 3047
-->

3048 3049 3050 3051 3052 3053
      <para>
       Improve PL/pgSQL's <link
       linkend="plpgsql-expressions">expression</link> and <link
       linkend="plpgsql-statements-assignment">assignment</link> parsing
       (Tom Lane)
      </para>
3054

3055 3056 3057 3058
      <para>
       This adds nested record and array slicing support.
      </para>
     </listitem>
3059

3060
     <listitem>
3061 3062
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
3063
2020-06-12 [2f48ede08] Avoid using a cursor in plpgsql's RETURN QUERY statement
3064 3065
-->

3066 3067 3068 3069 3070 3071 3072
      <para>
       Allow plpgsql's <link
       linkend="plpgsql-control-structures"><literal>RETURN
       QUERY</literal></link> to execute its query using parallelism
       (Tom Lane)
      </para>
     </listitem>
3073

3074
     <listitem>
3075 3076
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
3077
2021-01-25 [ee895a655] Improve performance of repeated CALLs within plpgsql pro
3078 3079
-->

3080 3081 3082 3083 3084 3085
      <para>
       Improve performance of repeated <link
       linkend="plpgsql-transactions">CALL</link>s within plpgsql
       procedures (Pavel Stehule, Tom Lane)
      </para>
     </listitem>
3086 3087 3088 3089 3090 3091 3092 3093 3094 3095

    </itemizedlist>

   </sect3>

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

    <itemizedlist>

3096
     <listitem>
3097 3098
<!--
Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
3099
2021-03-15 [acb7e4eb6] Implement pipeline mode in libpq
3100 3101
-->

3102 3103 3104 3105
      <para>
       Add <link linkend="libpq-pipeline-sending">pipeline</link> mode
       to libpq (Craig Ringer, Matthieu Garrigues, Álvaro Herrera)
      </para>
3106

3107 3108 3109 3110 3111
      <para>
       This allows multiple queries to be sent and only wait for completion
       when a specific synchronization message is sent.
      </para>
     </listitem>
3112

3113
     <listitem>
3114
<!--
3115 3116 3117 3118
Author: Tom Lane <tgl@sss.pgh.pa.us>
2021-03-02 [d16f8c8e4] Mark default_transaction_read_only as GUC_REPORT.
Author: Tom Lane <tgl@sss.pgh.pa.us>
2021-03-02 [ee28cacf6] Extend the abilities of libpq's target_session_attrs par
3119 3120
-->

3121 3122 3123 3124 3125 3126
      <para>
       Enhance libpq's <link
       linkend="libpq-paramkeywords"><option>target_session_attrs</option></link>
       parameter options (Haribabu Kommi, Greg Nancarrow, Vignesh C,
       Tom Lane)
      </para>
3127

3128
      <para>
Bruce Momjian's avatar
Bruce Momjian committed
3129
       The new options are <literal>read-only</literal>,
3130 3131
       <literal>primary</literal>, <literal>standby</literal>, and
       <literal>prefer-standby</literal>.
3132 3133
      </para>
     </listitem>
3134

3135
     <listitem>
3136 3137
<!--
Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
3138
2021-03-30 [198b3716d] Improve PQtrace() output format
3139 3140
-->

3141 3142 3143 3144 3145 3146
      <para>
       Improve the output format of libpq's <link
       linkend="libpq-control"><function>PQtrace()</function></link>
       (Aya Iwata, Álvaro Herrera)
      </para>
     </listitem>
3147

3148
     <listitem>
3149
<!--
3150 3151
Author: Michael Meskes <meskes@postgresql.org>
2021-03-24 [ad8305a43] Add DECLARE STATEMENT command to ECPG
3152 3153
-->

3154
      <para>
Peter Eisentraut's avatar
Peter Eisentraut committed
3155
       Allow an ECPG SQL identifier to be linked to
3156 3157
       a specific connection (Hayato Kuroda)
      </para>
3158

3159 3160 3161 3162 3163 3164
      <para>
       This is done via <link
       linkend="ecpg-sql-declare-statement"><literal>DECLARE
       ... STATEMENT</literal></link>.
      </para>
     </listitem>
3165 3166 3167 3168 3169 3170 3171 3172 3173 3174

    </itemizedlist>

   </sect3>

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

    <itemizedlist>

3175
     <listitem>
3176 3177
<!--
Author: Michael Paquier <michael@paquier.xyz>
3178
2020-06-22 [9550ea302] Add - -no-index-cleanup and - -no-truncate to vacuumdb.
3179 3180
-->

3181 3182 3183 3184 3185
      <para>
       Allow <link
       linkend="app-vacuumdb"><application>vacuumdb</application></link>
       to skip index cleanup and truncation (Nathan Bossart)
      </para>
3186

3187 3188
      <para>
       The options are <option>--no-index-cleanup</option> and
3189
       <option>--no-truncate</option>.
3190 3191
      </para>
     </listitem>
3192

3193
     <listitem>
3194 3195
<!--
Author: Michael Paquier <michael@paquier.xyz>
3196
2021-03-31 [6568cef26] Add support for - -extension in pg_dump
3197 3198
-->

3199 3200 3201 3202 3203
      <para>
       Allow <link
       linkend="app-pgdump"><application>pg_dump</application></link>
       to dump only certain extensions (Guillaume Lelarge)
      </para>
3204

3205 3206 3207 3208
      <para>
       This is controlled by option <option>--extension</option>.
      </para>
     </listitem>
3209

3210
     <listitem>
3211
<!--
3212 3213
Author: Dean Rasheed <dean.a.rasheed@gmail.com>
2021-04-06 [6b258e3d6] pgbench: Function to generate random permutations.
3214 3215
-->

3216 3217 3218
      <para>
       Add <link
       linkend="pgbench"><application>pgbench</application></link>
3219
       <function>permute()</function> function to randomly shuffle values
3220 3221 3222
       (Fabien Coelho, Hironobu Suzuki, Dean Rasheed)
      </para>
     </listitem>
3223

3224
     <listitem>
3225 3226
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
3227
2020-09-17 [99175141c] Improve common/logging.c's support for multiple verbosit
3228 3229
-->

3230 3231 3232 3233
      <para>
       Allow multiple verbose option specifications (<option>-v</option>)
       to increase the logging verbosity (Tom Lane)
      </para>
3234

3235 3236 3237 3238 3239 3240 3241 3242 3243
      <para>
       This is now supported by <link
       linkend="app-pgdump"><application>pg_dump</application></link>,
       <link
       linkend="app-pg-dumpall"><application>pg_dumpall</application></link>,
       and <link
       linkend="app-pgrestore"><application>pg_restore</application></link>.
      </para>
     </listitem>
3244

3245 3246 3247
    </itemizedlist>

    <sect4>
3248
    <title><xref linkend="app-psql"/></title>
3249 3250 3251

     <itemizedlist>

3252
      <listitem>
3253 3254
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
3255
2021-04-07 [a3027e1e7] Allow psql's \df and \do commands to specify argument ty
3256 3257
-->

3258
       <para>
3259 3260 3261
        Allow <application>psql</application>'s <literal>\df</literal>
        and <literal>\do</literal> commands to specify function and
        operator argument types (Greg Sabino Mullane, Tom Lane)
3262
       </para>
3263

3264 3265 3266 3267
       <para>
        This helps reduce the number of matches for overloaded entries.
       </para>
      </listitem>
3268

3269
      <listitem>
3270 3271
<!--
Author: Michael Paquier <michael@paquier.xyz>
3272
2020-09-02 [07f386ede] Add access method names to \d[i|m|t]+ in psql
3273 3274
-->

3275 3276 3277 3278 3279
       <para>
        Add an access method column to <application>psql</application>'s
        \d[i|m|t]+ output (Georgios Kokolatos)
       </para>
      </listitem>
3280

3281
      <listitem>
3282 3283 3284 3285
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
2021-01-05 [7d80441d2] Allow psql's \dt and \di to show TOAST tables and their 
-->
3286

3287
       <para>
3288 3289 3290
        Allow <application>psql</application>'s <literal>\dt</literal>
        and <literal>\di</literal> to show <acronym>TOAST</acronym>
        tables and their indexes (Justin Pryzby)
3291 3292
       </para>
      </listitem>
3293

3294
      <listitem>
3295 3296 3297 3298 3299
<!--
Author: Tomas Vondra <tomas.vondra@postgresql.org>
2021-01-20 [ad600bba0] psql \dX: list extended statistics objects
-->

3300
       <para>
3301 3302
        Add <application>psql</application> command <literal>\dX</literal>
        to list extended statistics objects (Tatsuro Yamada)
3303 3304
       </para>
      </listitem>
3305

3306
      <listitem>
3307 3308
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
3309
2021-04-07 [a3027e1e7] Allow psql's \df and \do commands to specify argument ty
3310 3311
-->

3312
       <para>
3313 3314 3315
        Fix <application>psql</application>'s <literal>\dT</literal> to
        understand array syntax and backend grammar aliases, like "int"
        for "integer" (Greg Sabino Mullane, Tom Lane)
3316 3317
       </para>
      </listitem>
3318

3319
      <listitem>
3320 3321
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
3322
2021-04-03 [55873a00e] Improve psql's behavior when the editor is exited withou
3323 3324
-->

3325 3326
       <para>
        When editing the previous query or a file with
3327 3328 3329
        <application>psql</application>'s <literal>\e</literal>, or using
        <literal>\ef</literal> and <literal>\ev</literal>, ignore the
        contents if the editor exits without saving (Laurenz Albe)
3330
       </para>
3331

3332 3333 3334 3335
       <para>
        Previously, such edits would still execute the editor contents.
       </para>
      </listitem>
3336

3337
      <listitem>
3338
<!--
3339 3340
Author: Tom Lane <tgl@sss.pgh.pa.us>
2020-10-22 [94929f1cf] Clean up some unpleasant behaviors in psql's \connect co
3341 3342
-->

3343
       <para>
3344 3345 3346
        Improve <application>psql</application>'s handling of
        <literal>\connect</literal> with <option>-reuse-previous</option>
        (Tom Lane)
3347
       </para>
3348

3349 3350 3351 3352 3353
       <para>
        Specifically, properly reuse the password previously specified,
        and prompt for a new password if the previous one failed.
       </para>
      </listitem>
3354

3355
      <listitem>
3356 3357 3358 3359 3360 3361 3362 3363 3364 3365 3366 3367 3368 3369 3370 3371 3372 3373 3374 3375 3376 3377 3378 3379 3380 3381 3382 3383 3384 3385 3386 3387 3388
<!--
Author: Michael Paquier <michael@paquier.xyz>
2020-07-21 [c273d9d8c] Rework tab completion of COPY and \copy in psql
Author: Michael Paquier <michael@paquier.xyz>
2020-07-30 [f1af75c5f] Include partitioned tables for tab completion of VACUUM 
Author: Michael Paquier <michael@paquier.xyz>
2020-08-11 [1f75b4541] Improve tab completion of REINDEX in psql
Author: Michael Paquier <michael@paquier.xyz>
2020-09-17 [7307df16a] Improve tab completion of IMPORT FOREIGN SCHEMA in psql
Author: Fujii Masao <fujii@postgresql.org>
2020-09-28 [0baf82fa0] Improve tab-completion for DEALLOCATE.
Author: Michael Paquier <michael@paquier.xyz>
2020-10-24 [0b46e82c0] Add tab completion for ALTER TABLE .. FORCE ROW LEVEL SE
Author: Michael Paquier <michael@paquier.xyz>
2020-11-18 [bf0aa7c4b] Add tab completion for CREATE [OR REPLACE] TRIGGER in ps
Author: Fujii Masao <fujii@postgresql.org>
2021-01-14 [3f238b882] Improve tab-completion for CLOSE, DECLARE, FETCH and MOV
Author: Thomas Munro <tmunro@postgresql.org>
2021-02-05 [e1c02d92a] Tab-complete CREATE DATABASE ... LOCALE.
Author: Michael Paquier <michael@paquier.xyz>
2021-02-17 [e6b8e83b9] Add psql completion for [ NO ] DEPENDS ON EXTENSION
Author: Thomas Munro <tmunro@postgresql.org>
2021-02-23 [5bc09a747] Tab-complete CREATE COLLATION.
Author: Fujii Masao <fujii@postgresql.org>
2021-02-25 [6b40d9bdb] Improve tab-completion for TRUNCATE.
Author: Michael Paquier <michael@paquier.xyz>
2021-03-19 [5b2266e33] Improve tab completion of IMPORT FOREIGN SCHEMA with \h 
Author: Tom Lane <tgl@sss.pgh.pa.us>
2021-04-08 [d1fcbde57] Add support for tab-completion of type arguments in \df,
Author: Fujii Masao <fujii@postgresql.org>
2021-04-12 [81e094bdf] Support tab-complete for TRUNCATE on foreign tables.
Author: Michael Paquier <michael@paquier.xyz>
2021-04-21 [22b2dec31] Add CURRENT_ROLE to list of roles for tab completion of 
3389 3390
Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
2021-04-26 [6dd1042ed] psql: tab-complete ALTER ... DETACH CONCURRENTLY / FINAL
3391 3392
Author: Michael Paquier <michael@paquier.xyz>
2021-05-13 [1906cc07d] Make saner the tab completion of INSERT and DELETE in ps
3393 3394
-->

3395 3396 3397 3398 3399
       <para>
        Improve tab completion (Vignesh C, Michael Paquier, Justin Pryzby,
        Georgios Kokolatos, Julien Rouhaud, ADD NAMES)
       </para>
      </listitem>
3400 3401 3402 3403 3404 3405 3406 3407 3408 3409 3410 3411

     </itemizedlist>

    </sect4>

   </sect3>

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

    <itemizedlist>

3412
     <listitem>
3413 3414 3415 3416 3417
<!--
Author: Robert Haas <rhaas@postgresql.org>
2021-03-12 [970609283] Add pg_amcheck, a CLI for contrib/amcheck.
-->

3418 3419 3420 3421 3422 3423 3424
      <para>
       Add command-line utility <link
       linkend="app-pgamcheck"><application>pg_amcheck</application></link>
       to simplify running contrib/amcheck operations on many relations
       (Mark Dilger)
      </para>
     </listitem>
3425

3426
     <listitem>
3427 3428 3429 3430 3431
<!--
Author: Magnus Hagander <magnus@hagander.net>
2021-01-17 [e09155bd6] Add - -no-instructions parameter to initdb
-->

3432 3433 3434 3435 3436
      <para>
       Add <option>--no-instructions</option> option to <link
       linkend="app-initdb"><application>initdb</application></link>
       (Magnus Hagander)
      </para>
3437

3438 3439 3440 3441
      <para>
       This removes the server start instructions that are normally output.
      </para>
     </listitem>
3442

3443
     <listitem>
3444 3445
<!--
Author: Magnus Hagander <magnus@hagander.net>
3446
2020-11-09 [8f113698b] Remove analyze_new_cluster script from pg_upgrade
3447 3448
-->

3449 3450 3451 3452
      <para>
       Stop <link
       linkend="pgupgrade"><application>pg_upgrade</application></link>
       from creating <filename>analyze_new_cluster</filename> script
3453
       (Magnus Hagander)
3454
      </para>
3455

3456 3457 3458 3459 3460 3461
      <para>
       Instead, give comparable <link
       linkend="app-vacuumdb"><application>vacuumdb</application></link>
       instructions.
      </para>
     </listitem>
3462

3463
     <listitem>
3464 3465
<!--
Author: Magnus Hagander <magnus@hagander.net>
3466
2020-11-10 [d2e4bf688] Remove -o option to postmaster
3467 3468
-->

3469 3470 3471
      <para>
       Remove support for the <link
       linkend="app-postgres"><application>postmaster</application></link>
3472
       <option>-o</option> option (Magnus Hagander)
3473
      </para>
3474

3475 3476 3477 3478 3479
      <para>
       This option was unnecessary since all passed options could already
       be specified directly.
      </para>
     </listitem>
3480 3481 3482 3483 3484 3485 3486 3487 3488 3489

    </itemizedlist>

   </sect3>

   <sect3>
    <title>Documentation</title>

    <itemizedlist>

3490
     <listitem>
3491 3492 3493 3494 3495
<!--
Author: Stephen Frost <sfrost@snowman.net>
2021-04-01 [c9c41c7a3] Rename Default Roles to Predefined Roles
-->

3496 3497 3498 3499 3500 3501
      <para>
       Rename "Default Roles" to <link
       linkend="predefined-roles">"Predefined Roles"</link> (Bruce Momjian,
       Stephen Frost)
      </para>
     </listitem>
3502

3503
     <listitem>
3504 3505 3506 3507 3508
<!--
Author: Peter Eisentraut <peter@eisentraut.org>
2020-06-16 [4c5cf5431] doc: Document factorial function
-->

3509 3510 3511 3512 3513
      <para>
       Add documentation for the <link
       linkend="function-factorial"><function>factorial()</function></link>
       function (Peter Eisentraut)
      </para>
3514

3515 3516
      <para>
       With the removal of the ! operator in this release,
3517
       <function>factorial()</function> is the only built-in way to compute
3518 3519 3520
       a factorial.
      </para>
     </listitem>
3521

Bruce Momjian's avatar
Bruce Momjian committed
3522
    </itemizedlist>
3523

Bruce Momjian's avatar
Bruce Momjian committed
3524
   </sect3>
3525

Bruce Momjian's avatar
Bruce Momjian committed
3526 3527
   <sect3>
   <title>Source Code</title>
3528

Bruce Momjian's avatar
Bruce Momjian committed
3529
   <itemizedlist>
3530

Bruce Momjian's avatar
Bruce Momjian committed
3531
     <listitem>
3532 3533 3534 3535 3536
<!--
Author: Michael Paquier <michael@paquier.xyz>
2021-02-01 [fe61df7f8] Introduce - -with-ssl={openssl} as a configure option
-->

Bruce Momjian's avatar
Bruce Momjian committed
3537 3538 3539 3540 3541 3542
       <para>
        Add configure option <link
        linkend="configure-options-features"><literal>--with-ssl={openssl}</literal></link>
        to behave like <option>--with-openssl</option> (Daniel Gustafsson,
        Michael Paquier)
       </para>
3543

Bruce Momjian's avatar
Bruce Momjian committed
3544 3545 3546 3547 3548
       <para>
        The option <option>--with-openssl</option> is kept for
        compatibility.
       </para>
      </listitem>
3549

Bruce Momjian's avatar
Bruce Momjian committed
3550
      <listitem>
3551
<!--
3552 3553
Author: Peter Eisentraut <peter@eisentraut.org>
2020-11-25 [c9f0624bc] Add support for abstract Unix-domain sockets
3554 3555
-->

Bruce Momjian's avatar
Bruce Momjian committed
3556 3557 3558 3559
       <para>
        Add support for <link linkend="guc-unix-socket-directories">abstract
        Unix-domain sockets</link> (Peter Eisentraut)
       </para>
3560

Bruce Momjian's avatar
Bruce Momjian committed
3561 3562 3563 3564 3565
       <para>
        This is currently supported on <productname>Linux</productname>
        and <productname>Windows</productname>.
       </para>
      </listitem>
3566

Bruce Momjian's avatar
Bruce Momjian committed
3567
      <listitem>
3568
<!--
3569 3570 3571 3572 3573 3574 3575 3576 3577 3578 3579 3580 3581 3582 3583 3584 3585 3586 3587
Author: Tom Lane <tgl@sss.pgh.pa.us>
2020-10-09 [bed90759f] Fix our Windows stat() emulation to handle file sizes >
-->

       <para>
        Allow Windows to properly handle files larger than four gigabytes
        (Juan José Santamaría Flecha)
       </para>

       <para>
        For example this allows <link
        linkend="sql-copy"><command>COPY,</command></link> <link
        linkend="configure-options-misc"><acronym>WAL</acronym></link>
        files, and relation segment files to be larger than four gigabytes.
       </para>
      </listitem>

      <listitem>
<!--
3588 3589 3590 3591
Author: Peter Eisentraut <peter@eisentraut.org>
2021-01-06 [4656e3d66] Replace CLOBBER_CACHE_ALWAYS with run-time GUC
-->

Bruce Momjian's avatar
Bruce Momjian committed
3592
       <para>
3593 3594
        Add <xref linkend="guc-debug-discard-caches"/>
        to control cache flushing for test purposes (Craig Ringer)
Bruce Momjian's avatar
Bruce Momjian committed
3595
       </para>
3596

Bruce Momjian's avatar
Bruce Momjian committed
3597
       <para>
3598
        Previously this behavior could only be set at compile time.
Bruce Momjian's avatar
Bruce Momjian committed
3599 3600
       </para>
      </listitem>
3601

Bruce Momjian's avatar
Bruce Momjian committed
3602
      <listitem>
3603
<!--
3604 3605 3606 3607 3608 3609
Author: Peter Geoghegan <pg@bowt.ie>
2020-07-17 [1e0dfd166] Add Valgrind buffer access instrumentation.
Author: Peter Geoghegan <pg@bowt.ie>
2020-07-19 [46ef520b9] Mark buffers as defined to Valgrind consistently.
Author: Peter Geoghegan <pg@bowt.ie>
2020-07-19 [a766d6ca2] Avoid harmless Valgrind no-buffer-pin errors.
3610 3611
-->

Bruce Momjian's avatar
Bruce Momjian committed
3612 3613 3614 3615 3616
       <para>
        Various improvements in <productname>valgrind</productname>
        detection (Álvaro Herrera, Peter Geoghegan)
       </para>
      </listitem>
3617

Bruce Momjian's avatar
Bruce Momjian committed
3618
      <listitem>
3619 3620 3621 3622
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
2021-01-06 [ca8217c10] Add a test module for the regular expression package.
-->
3623

Bruce Momjian's avatar
Bruce Momjian committed
3624 3625 3626 3627
       <para>
        Add a test module for the regular expression package (Tom Lane)
       </para>
      </listitem>
3628

Bruce Momjian's avatar
Bruce Momjian committed
3629
      <listitem>
3630
<!--
3631 3632
Author: Andres Freund <andres@anarazel.de>
2020-11-09 [6c57f2ed1] jit: Add support for LLVM 12.
3633 3634
-->

Bruce Momjian's avatar
Bruce Momjian committed
3635 3636 3637 3638 3639
       <para>
        Add support for <productname>LLVM</productname> version 12
        (Andres Freund)
       </para>
      </listitem>
3640

Bruce Momjian's avatar
Bruce Momjian committed
3641
      <listitem>
3642 3643 3644 3645 3646 3647 3648 3649 3650 3651 3652
<!--
Author: Michael Paquier <michael@paquier.xyz>
2020-12-04 [4f48a6fbe] Change SHA2 implementation based on OpenSSL to use EVP d
Author: Michael Paquier <michael@paquier.xyz>
2020-12-10 [b67b57a96] Refactor MD5 implementations according to new cryptohash
Author: Michael Paquier <michael@paquier.xyz>
2021-01-23 [a8ed6bb8f] Introduce SHA1 implementations in the cryptohash infrast
Author: Michael Paquier <michael@paquier.xyz>
2021-04-03 [e6bdfd970] Refactor HMAC implementations
-->

Bruce Momjian's avatar
Bruce Momjian committed
3653 3654 3655 3656 3657
       <para>
        Change SHA1, SHA2, and MD5 hash computations to use the
        <productname>OpenSSL</productname> <acronym>EVP API</acronym>
        (Michael Paquier)
       </para>
3658

Bruce Momjian's avatar
Bruce Momjian committed
3659 3660 3661 3662
       <para>
        This is more modern and supports <acronym>FIPS</acronym> mode.
       </para>
      </listitem>
3663

Bruce Momjian's avatar
Bruce Momjian committed
3664
      <listitem>
3665 3666 3667 3668 3669
<!--
Author: Magnus Hagander <magnus@hagander.net>
2020-11-20 [16f96c74d] Remove ability to independently select random number gen
-->

Bruce Momjian's avatar
Bruce Momjian committed
3670 3671 3672 3673 3674
       <para>
        Remove build control over the random library used (Daniel
        Gustafsson)
       </para>
      </listitem>
3675

Bruce Momjian's avatar
Bruce Momjian committed
3676
      <listitem>
3677
<!--
3678 3679
Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
2021-01-28 [6c5576075] Add direct conversion routines between EUC_TW and Big5.
3680 3681
-->

Bruce Momjian's avatar
Bruce Momjian committed
3682 3683 3684 3685 3686
       <para>
        Add direct conversion routines between EUC_TW and Big5 (Heikki
        Linnakangas)
       </para>
      </listitem>
3687

Bruce Momjian's avatar
Bruce Momjian committed
3688
      <listitem>
3689
<!--
3690 3691
Author: Thomas Munro <tmunro@postgresql.org>
2020-11-20 [ca051d8b1] Add collation versions for FreeBSD.
3692 3693
-->

Bruce Momjian's avatar
Bruce Momjian committed
3694 3695 3696 3697 3698
       <para>
        Add collation versions for <productname>FreeBSD</productname>
        (Thomas Munro)
       </para>
      </listitem>
3699

Bruce Momjian's avatar
Bruce Momjian committed
3700
      <listitem>
3701 3702 3703 3704 3705
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
2020-08-01 [9f9682783] Invent "amadjustmembers" AM method for validating opclas
-->

Bruce Momjian's avatar
Bruce Momjian committed
3706 3707 3708 3709 3710
       <para>
        Add <link
        linkend="index-api"><structfield>amadjustmembers</structfield></link>
        to the index access method <acronym>API</acronym> (Tom Lane)
       </para>
3711

Bruce Momjian's avatar
Bruce Momjian committed
3712 3713 3714 3715
       <para>
        REMOVE?
       </para>
      </listitem>
3716

Bruce Momjian's avatar
Bruce Momjian committed
3717
     </itemizedlist>
3718 3719 3720 3721 3722 3723 3724 3725

   </sect3>

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

    <itemizedlist>

3726
     <listitem>
3727
<!--
3728 3729
Author: Tom Lane <tgl@sss.pgh.pa.us>
2020-12-11 [0ec5f7e78] Allow subscripting of hstore values.
3730 3731
-->

3732 3733 3734 3735 3736 3737
      <para>
       Allow subscripting of <link
       linkend="hstore"><application>hstore</application></link> values
       (Tom Lane, Dmitry Dolgov)
      </para>
     </listitem>
3738

3739
     <listitem>
3740
<!--
3741 3742
Author: Alexander Korotkov <akorotkov@postgresql.org>
2020-11-15 [935f66665] Handle equality operator in contrib/pg_trgm
3743 3744
-->

3745 3746 3747 3748 3749
      <para>
       Allow GiST/GIN <link
       linkend="pgtrgm"><application>pg_trgm</application></link> indexes
       to do equality lookups (Julien Rouhaud)
      </para>
3750

3751 3752 3753 3754 3755
      <para>
       This is similar to <literal>LIKE</literal> except no wildcards
       are honored.
      </para>
     </listitem>
3756

3757
     <listitem>
3758
<!--
3759 3760
Author: Tom Lane <tgl@sss.pgh.pa.us>
2021-03-06 [1265a9c8f] Add binary I/O capability for cube datatype.
3761
-->
3762

3763 3764 3765 3766 3767 3768
      <para>
       Allow the <link
       linkend="cube"><application>cube</application></link> data type
       to be transferred in binary mode (KaiGai Kohei)
      </para>
     </listitem>
3769

3770
     <listitem>
3771
<!--
3772 3773
Author: Peter Eisentraut <peter@eisentraut.org>
2020-06-30 [ee0202d55] pgstattuple: Have pgstattuple_approx accept TOAST tables
3774 3775
-->

3776
      <para>
3777 3778 3779
       Allow <link
       linkend="pgstattuple"><function>pgstattuple_approx()</function></link>
       to report on <acronym>TOAST</acronym> tables (Peter Eisentraut)
3780 3781
      </para>
     </listitem>
3782

3783
     <listitem>
3784
<!--
3785 3786
Author: Robert Haas <rhaas@postgresql.org>
2020-09-10 [34a947ca1] New contrib module, pg_surgery, with heap surgery functi
3787 3788
-->

3789 3790 3791 3792 3793
      <para>
       Add contrib module <link
       linkend="pgsurgery"><application>pg_surgery</application></link>
       which allows changes to row visibility (Ashutosh Sharma)
      </para>
3794

3795 3796 3797 3798
      <para>
       This is useful for correcting database corruption.
      </para>
     </listitem>
3799

3800
     <listitem>
3801
<!--
3802 3803
Author: Robert Haas <rhaas@postgresql.org>
2020-09-24 [aecf5ee2b] Add new 'old_snapshot' contrib module.
3804 3805
-->

3806 3807 3808 3809 3810 3811 3812
      <para>
       Add contrib module <link
       linkend="oldsnapshot"><application>old_snapshot</application></link>
       to report the <type>XID</type>/time mapping used by an active
       <xref linkend="guc-old-snapshot-threshold"/> (Robert Haas)
      </para>
     </listitem>
3813

3814
     <listitem>
3815
<!--
3816
Author: Robert Haas <rhaas@postgresql.org>
3817
2020-10-22 [866e24d47] Extend amcheck to check heap pages.
3818 3819
-->

3820 3821 3822 3823 3824
      <para>
       Allow <link
       linkend="amcheck"><application>amcheck</application></link> to
       also check heap pages (Mark Dilger)
      </para>
3825

3826 3827 3828 3829
      <para>
       Previously it only checked B-Tree index pages.
      </para>
     </listitem>
3830

3831
     <listitem>
3832
<!--
3833 3834 3835 3836
Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
2021-01-13 [756ab2912] Add functions to 'pageinspect' to inspect GiST indexes.
Author: Peter Geoghegan <pg@bowt.ie>
2021-02-14 [9e596b65f] Add "LP_DEAD item?" column to GiST pageinspect functions
3837 3838
-->

3839 3840 3841 3842 3843 3844
      <para>
       Allow <link
       linkend="pageinspect"><application>pageinspect</application></link>
       to inspect GiST indexes (Andrey Borodin, Heikki Linnakangas)
      </para>
     </listitem>
3845

3846
     <listitem>
3847
<!--
3848 3849
Author: Peter Eisentraut <peter@eisentraut.org>
2021-01-19 [f18aa1b20] pageinspect: Change block number arguments to bigint
3850 3851
-->

3852 3853 3854 3855 3856 3857
      <para>
       Change <application>pageinspect</application> block numbers
       to be <link linkend="datatype-int"><type>bigints</type></link>
       (Peter Eisentraut)
      </para>
     </listitem>
3858

3859
     <listitem>
3860 3861 3862 3863
<!--
Author: Alexander Korotkov <akorotkov@postgresql.org>
2020-07-20 [d98c08cdc] Update btree_gist extension for parallel query
-->
3864

3865 3866 3867 3868 3869 3870
      <para>
       Mark <link
       linkend="btree-gist"><application>btree_gist</application></link>
       functions as parallel safe (Steven Winfield)
      </para>
     </listitem>
3871

3872
     </itemizedlist>
3873

3874 3875
     <sect4>
      <title><link linkend="pgstatstatements">pg_stat_statements</link></title>
3876

3877
      <itemizedlist>
3878

3879
     <listitem>
3880
<!--
3881 3882
Author: Bruce Momjian <bruce@momjian.us>
2021-04-07 [5fd9dfa5f] Move pg_stat_statements query jumbling to core.
3883 3884
-->

3885 3886
      <para>
       Move query hash computation from
3887
       <application>pg_stat_statements</application> to the core server
3888 3889
       (Julien Rouhaud)
      </para>
3890

3891 3892 3893 3894 3895 3896
      <para>
       The new server variable <xref linkend="guc-compute-query-id"/>'s
       default of <literal>auto</literal> will automatically enable query
       id computation when this extension is loaded.
      </para>
     </listitem>
3897

3898
     <listitem>
3899
<!--
3900 3901
Author: Magnus Hagander <magnus@hagander.net>
2021-04-08 [6b4d23fee] Track identical top vs nested queries independently in p
3902 3903
-->

3904 3905 3906 3907
      <para>
       Allow <application>pg_stat_statements</application> to track top
       and nested statements independently (Julien Rohaud)
      </para>
3908

3909 3910 3911 3912 3913
      <para>
       Previously, when tracking all statements, identical top and nested
       statements were tracked together.
      </para>
     </listitem>
3914

3915
     <listitem>
3916
<!--
3917 3918 3919 3920
Author: Fujii Masao <fujii@postgresql.org>
2020-07-29 [6023b7ea7] pg_stat_statements: track number of rows processed by so
Author: Fujii Masao <fujii@postgresql.org>
2020-11-12 [b62e6056a] pg_stat_statements: track number of rows processed by RE
3921 3922
-->

3923 3924
      <para>
       Add row counts for utility commands to
3925
       <structname>pg_stat_statements</structname> (Fujii Masao, Katsuragi
3926 3927 3928
       Yuta, Seino Yuki)
      </para>
     </listitem>
3929

3930
     <listitem>
3931
<!--
3932 3933 3934 3935
Author: Fujii Masao <fujii@postgresql.org>
2020-11-26 [9fbc3f318] pg_stat_statements: Track number of times pgss entries w
Author: Fujii Masao <fujii@postgresql.org>
2020-12-18 [2e0fedf03] pg_stat_statements: Track time at which all statistics w
3936 3937
-->

3938 3939 3940 3941 3942 3943
      <para>
       Add <structname>pg_stat_statements_info</structname> system view
       to show <structname>pg_stat_statements</structname> activity
       (Katsuragi Yuta, Yuki Seino, Naoki Nakamichi)
      </para>
     </listitem>
3944

3945
    </itemizedlist>
3946

3947 3948
    </sect4>

3949
    <sect4>
3950
     <title><link linkend="postgres-fdw"><application>postgres_fdw</application></link></title>
3951

3952
     <itemizedlist>
3953

3954
      <listitem>
3955
<!--
3956 3957 3958 3959
Author: Tomas Vondra <tomas.vondra@postgresql.org>
2021-01-20 [b663a4136] Implement support for bulk inserts in postgres_fdw
Author: Tomas Vondra <tomas.vondra@postgresql.org>
2021-02-18 [927f453a9] Fix tuple routing to initialize batching only for insert
3960 3961
-->

3962 3963
       <para>
        Allow <application>postgres_fdw</application> to
3964
        <command>INSERT</command> rows in bulk (Takayuki Tsunakawa, Tomas
3965 3966 3967
        Vondra, Amit Langote)
       </para>
      </listitem>
3968

3969
      <listitem>
3970
<!--
3971 3972
Author: Fujii Masao <fujii@postgresql.org>
2021-04-07 [a3740c48e] postgres_fdw: Allow partitions specified in LIMIT TO to 
3973 3974
-->

3975 3976 3977 3978 3979 3980
       <para>
        Allow <application>postgres_fdw</application>
        to import table partitions if specified by <link
        linkend="sql-importforeignschema"><command>IMPORT FOREIGN SCHEMA
        ... LIMIT TO</command></link> (Matthias van de Meent)
       </para>
3981

3982 3983 3984 3985
       <para>
        By default, only the root of partitioned tables is imported.
       </para>
      </listitem>
3986

3987
      <listitem>
3988 3989
<!--
Author: Fujii Masao <fujii@postgresql.org>
3990
2021-01-18 [708d165dd] postgres_fdw: Add function to list cached connections to
3991 3992
-->

3993 3994
       <para>
        Add <application>postgres_fdw</application> function
3995
        <function>postgres_fdw_get_connections()</function> to report open
3996 3997 3998
        foreign server connections (Bharath Rupireddy)
       </para>
      </listitem>
3999

4000
      <listitem>
4001
<!--
4002
Author: Fujii Masao <fujii@postgresql.org>
4003
2021-04-02 [b1be3074a] postgres_fdw: Add option to control whether to keep conn
4004 4005
-->

4006 4007 4008 4009
       <para>
        Allow control over whether foreign servers keep connections open
        after transaction completion (Bharath Rupireddy)
       </para>
4010

4011 4012 4013 4014 4015
       <para>
        This is controlled by <varname>keep_connections</varname> and
        defaults to on.
       </para>
      </listitem>
4016

4017
      <listitem>
4018
<!--
4019 4020 4021 4022
Author: Fujii Masao <fujii@postgresql.org>
2020-10-06 [32a9c0bdf] postgres_fdw: reestablish new connection if cached one i
Author: Fujii Masao <fujii@postgresql.org>
2020-10-16 [7fc1a81e4] postgres_fdw: Restructure connection retry logic.
4023 4024
-->

4025 4026 4027 4028
       <para>
        Allow <application>postgres_fdw</application> to reestablish
        foreign server connections if necessary (Bharath Rupireddy)
       </para>
4029

4030 4031 4032 4033 4034
       <para>
        Previously foreign server restarts could cause foreign table
        access errors.
       </para>
      </listitem>
4035

4036
      <listitem>
4037 4038 4039 4040 4041
<!--
Author: Fujii Masao <fujii@postgresql.org>
2021-01-26 [411ae6499] postgres_fdw: Add functions to discard cached connection
-->

4042 4043 4044 4045 4046
       <para>
        Add <application>postgres_fdw</application> functions to discard
        cached connections (Bharath Rupireddy)
       </para>
      </listitem>
4047

4048 4049 4050
     </itemizedlist>

    </sect4>
4051 4052 4053 4054 4055 4056 4057 4058 4059

   </sect3>

  </sect2>

  <sect2 id="release-14-acknowledgements">
   <title>Acknowledgments</title>

   <para>
4060 4061 4062
    The following individuals (in alphabetical order) have contributed
    to this release as patch authors, committers, reviewers, testers,
    or reporters of issues.
4063 4064 4065
   </para>

   <simplelist>
4066 4067 4068 4069 4070 4071 4072 4073 4074 4075 4076 4077 4078 4079 4080 4081 4082 4083 4084 4085 4086 4087 4088 4089 4090 4091 4092 4093 4094 4095 4096 4097 4098 4099 4100 4101 4102 4103 4104 4105 4106 4107 4108 4109 4110 4111 4112 4113 4114 4115 4116 4117 4118 4119 4120 4121 4122 4123 4124 4125 4126 4127 4128 4129 4130 4131 4132 4133 4134 4135 4136 4137 4138 4139 4140 4141 4142 4143 4144 4145 4146 4147 4148 4149 4150 4151 4152 4153 4154 4155 4156 4157 4158 4159 4160 4161 4162 4163 4164 4165 4166 4167 4168 4169 4170 4171 4172 4173 4174 4175 4176 4177 4178 4179 4180 4181 4182 4183 4184 4185 4186 4187 4188 4189 4190 4191 4192 4193 4194 4195 4196 4197 4198 4199 4200 4201 4202 4203 4204 4205 4206 4207 4208 4209 4210 4211 4212 4213 4214 4215 4216 4217 4218 4219 4220 4221 4222 4223 4224 4225 4226 4227 4228 4229 4230 4231 4232 4233 4234 4235 4236 4237 4238 4239 4240 4241 4242 4243 4244 4245 4246 4247 4248 4249 4250 4251 4252 4253 4254 4255 4256 4257 4258 4259 4260 4261 4262 4263 4264 4265 4266 4267 4268 4269 4270 4271 4272 4273 4274 4275 4276 4277 4278 4279 4280 4281 4282 4283 4284 4285 4286 4287 4288 4289 4290 4291 4292 4293 4294 4295 4296 4297 4298 4299 4300 4301 4302 4303 4304 4305 4306 4307 4308 4309 4310 4311 4312 4313 4314 4315 4316 4317 4318 4319 4320 4321 4322 4323 4324 4325 4326 4327 4328 4329 4330 4331 4332 4333 4334 4335 4336 4337 4338 4339 4340 4341 4342 4343 4344 4345 4346 4347 4348 4349 4350 4351 4352 4353 4354 4355 4356 4357 4358 4359 4360 4361 4362 4363 4364 4365 4366 4367 4368 4369 4370 4371 4372 4373 4374 4375 4376 4377 4378 4379 4380 4381 4382 4383 4384 4385 4386 4387 4388 4389 4390 4391 4392 4393 4394 4395 4396 4397 4398 4399 4400 4401 4402 4403 4404 4405 4406 4407 4408 4409 4410 4411 4412 4413 4414 4415 4416 4417 4418 4419 4420 4421 4422 4423 4424 4425 4426 4427 4428 4429 4430 4431 4432 4433 4434 4435 4436 4437 4438 4439 4440 4441 4442 4443 4444 4445 4446 4447 4448 4449 4450 4451 4452 4453 4454 4455 4456 4457 4458 4459 4460 4461 4462 4463 4464 4465
    <member>Abhijit Menon-Sen</member>
    <member>Ádám Balogh</member>
    <member>Adrian Ho</member>
    <member>Ahsan Hadi</member>
    <member>Ajin Cherian</member>
    <member>Aleksander Alekseev</member>
    <member>Alessandro Gherardi</member>
    <member>Alex Kozhemyakin</member>
    <member>Alexander Korotkov</member>
    <member>Alexander Lakhin</member>
    <member>Alexander Pyhalov</member>
    <member>Alexandra Wang</member>
    <member>Alexey Bashtanov</member>
    <member>Alexey Bulgakov</member>
    <member>Alexey Kondratov</member>
    <member>Álvaro Herrera</member>
    <member>Amit Kapila</member>
    <member>Amit Khandekar</member>
    <member>Amit Langote</member>
    <member>Amul Sul</member>
    <member>Anastasia Lubennikova</member>
    <member>Andreas Grob</member>
    <member>Andreas Kretschmer</member>
    <member>Andreas Seltenreich</member>
    <member>Andreas Wicht</member>
    <member>Andres Freund</member>
    <member>Andrew Bille</member>
    <member>Andrew Dunstan</member>
    <member>Andrew Gierth</member>
    <member>Andrey Borodin</member>
    <member>Andrey Lepikhov</member>
    <member>Andy Fan</member>
    <member>Anton Voloshin</member>
    <member>Antonin Houska</member>
    <member>Arne Roland</member>
    <member>Arseny Sher</member>
    <member>Arthur Nascimento</member>
    <member>Arthur Zakirov</member>
    <member>Ashutosh Bapat</member>
    <member>Ashutosh Sharma</member>
    <member>Ashwin Agrawal</member>
    <member>Asif Rehman</member>
    <member>Asim Praveen</member>
    <member>Atsushi Torikoshi</member>
    <member>Aya Iwata</member>
    <member>Barry Pederson</member>
    <member>Bas Poot</member>
    <member>Bauyrzhan Sakhariyev</member>
    <member>Beena Emerson</member>
    <member>Benoît Lobréau</member>
    <member>Bernd Helmle</member>
    <member>Bernhard M. Wiedemann</member>
    <member>Bertrand Drouvot</member>
    <member>Bharath Rupireddy</member>
    <member>Boris Kolpackov</member>
    <member>Brar Piening</member>
    <member>Brian Ye</member>
    <member>Bruce Momjian</member>
    <member>Bryn Llewellyn</member>
    <member>Cameron Daniel</member>
    <member>Chapman Flack</member>
    <member>Charles Samborski</member>
    <member>Charlie Hornsby</member>
    <member>Chen Jiaoqian</member>
    <member>Chris Wilson</member>
    <member>Christoph Berg</member>
    <member>Christophe Courtois</member>
    <member>Corey Huinker</member>
    <member>Craig Ringer</member>
    <member>Dagfinn Ilmari Mannsåker</member>
    <member>Dana Burd</member>
    <member>Daniel Cherniy</member>
    <member>Daniel Gustafsson</member>
    <member>Daniel Vérité</member>
    <member>Daniel Westermann</member>
    <member>Daniele Varrazzo</member>
    <member>Dar Alathar-Yemen</member>
    <member>Darafei Praliaskouski</member>
    <member>Dave Cramer</member>
    <member>David Christensen</member>
    <member>David Fetter</member>
    <member>David G. Johnston</member>
    <member>David Geier</member>
    <member>David Gilman</member>
    <member>David Pirotte</member>
    <member>David Rowley</member>
    <member>David Steele</member>
    <member>David Turon</member>
    <member>David Zhang</member>
    <member>Dean Rasheed</member>
    <member>Denis Patron</member>
    <member>Dian Fay</member>
    <member>Dilip Kumar</member>
    <member>Dimitri Nüscheler</member>
    <member>Dmitriy Kuzmin</member>
    <member>Dmitry Dolgov</member>
    <member>Dmitry Marakasov</member>
    <member>Domagoj Smoljanovic</member>
    <member>Dong Wook</member>
    <member>Douglas Doole</member>
    <member>Duncan Sands</member>
    <member>Edmund Horner</member>
    <member>Edson Richter</member>
    <member>Ekaterina Kiryanova</member>
    <member>Elena Indrupskaya</member>
    <member>Emil Iggland</member>
    <member>Emre Hasegeli</member>
    <member>Eric Thinnes</member>
    <member>Erik Rijkers</member>
    <member>Erwin Brandstetter</member>
    <member>Etienne Stalmans</member>
    <member>Etsuro Fujita</member>
    <member>Eugen Konkov</member>
    <member>Euler Taveira</member>
    <member>Fabien Coelho</member>
    <member>Fabrízio de Royes Mello</member>
    <member>Federico Caselli</member>
    <member>Felix Lechner</member>
    <member>Floris Van Nee</member>
    <member>Frank Gagnepain</member>
    <member>Frits Jalvingh</member>
    <member>Georgios Kokolatos</member>
    <member>Greg Nancarrow</member>
    <member>Greg Rychlewski</member>
    <member>Greg Sabino Mullane</member>
    <member>Gregory Smith</member>
    <member>Grigory Smolkin</member>
    <member>Guillaume Lelarge</member>
    <member>Guy Burgess</member>
    <member>Guyren Howe</member>
    <member>Haiying Tang</member>
    <member>Hamid Akhtar</member>
    <member>Hans Buschmann</member>
    <member>Hao Wu</member>
    <member>Haribabu Kommi</member>
    <member>Harisai Hari</member>
    <member>Hayato Kuroda</member>
    <member>Heath Lord</member>
    <member>Heikki Linnakangas</member>
    <member>Henry Hinze</member>
    <member>Himanshu Upadhyaya</member>
    <member>Hironobu Suzuki</member>
    <member>Hiroshi Inoue</member>
    <member>Hisanori Kobayashi</member>
    <member>Honza Horak</member>
    <member>Hou Zhijie</member>
    <member>Hubert Lubaczewski</member>
    <member>Hubert Zhang</member>
    <member>Ian Barwick</member>
    <member>Ibrar Ahmed</member>
    <member>Ildus Kurbangaliev</member>
    <member>Isaac Morland</member>
    <member>Israel Barth</member>
    <member>Itamar Gafni</member>
    <member>Jacob Champion</member>
    <member>Jaime Casanova</member>
    <member>Jaime Soler</member>
    <member>Jakub Wartak</member>
    <member>James Coleman</member>
    <member>James Hilliard</member>
    <member>James Hunter</member>
    <member>James Inform</member>
    <member>Jan Mussler</member>
    <member>Japin Li</member>
    <member>Jasen Betts</member>
    <member>Jason Harvey</member>
    <member>Jason Kim</member>
    <member>Jeevan Ladhe</member>
    <member>Jeff Davis</member>
    <member>Jeff Janes</member>
    <member>Jelte Fennema</member>
    <member>Jeremy Evans</member>
    <member>Jeremy Finzel</member>
    <member>Jeremy Smith</member>
    <member>Jesse Kinkead</member>
    <member>Jesse Zhang</member>
    <member>Jie Zhang</member>
    <member>Jim Doty</member>
    <member>Jim Nasby</member>
    <member>Jimmy Angelakos</member>
    <member>Jimmy Yih</member>
    <member>Joe Conway</member>
    <member>Joel Jacobson</member>
    <member>John Naylor</member>
    <member>John Thompson</member>
    <member>Jonathan Katz</member>
    <member>Josef Šimánek</member>
    <member>Joseph Nahmias</member>
    <member>Josh Berkus</member>
    <member>Juan José Santamaría Flecha</member>
    <member>Julien Rouhaud</member>
    <member>Junfeng Yang</member>
    <member>Jürgen Purtz</member>
    <member>Justin Pryzby</member>
    <member>Kazutaka Onishi</member>
    <member>Keisuke Kuroda</member>
    <member>Kelly Min</member>
    <member>Kensuke Okamura</member>
    <member>Kevin Sweet</member>
    <member>Kevin Yeap</member>
    <member>Kirk Jamison</member>
    <member>Kohei KaiGai</member>
    <member>Konstantin Knizhnik</member>
    <member>Kota Miyake</member>
    <member>Krzysztof Gradek</member>
    <member>Kuntal Ghosh</member>
    <member>Kyle Kingsbury</member>
    <member>Kyotaro Horiguchi</member>
    <member>Laurent Hasson</member>
    <member>Laurenz Albe</member>
    <member>Lee Dong Wook</member>
    <member>Li Japin</member>
    <member>Liu Huailing</member>
    <member>Luc Vlaming</member>
    <member>Ludovic Kuty</member>
    <member>Luis Roberto</member>
    <member>Lukas Eder</member>
    <member>Maciek Sakrejda</member>
    <member>Madan Kumar</member>
    <member>Magnus Hagander</member>
    <member>Mahendra Singh Thalor</member>
    <member>Maksim Milyutin</member>
    <member>Marc Boeren</member>
    <member>Marcin Krupowicz</member>
    <member>Marco Atzeri</member>
    <member>Marek Szuba</member>
    <member>Marina Polyakova</member>
    <member>Mark Dilger</member>
    <member>Mark Wong</member>
    <member>Mark Zhao</member>
    <member>Markus Wanner</member>
    <member>Martín Marqués</member>
    <member>Martin Visser</member>
    <member>Masahiko Sawada</member>
    <member>Masahiro Ikeda</member>
    <member>Masao Fujii</member>
    <member>Mathis Rudolf</member>
    <member>Matthias van de Meent</member>
    <member>Matthieu Garrigues</member>
    <member>Matthijs van der Vleuten</member>
    <member>Maxim Orlov</member>
    <member>Melanie Plageman</member>
    <member>Merlin Moncure</member>
    <member>Michael Banck</member>
    <member>Michael Brown</member>
    <member>Michael Meskes</member>
    <member>Michael Paquier</member>
    <member>Michael Paul Killian</member>
    <member>Michael Vastola</member>
    <member>Michail Nikolaev</member>
    <member>Michał Albrycht</member>
    <member>Mikael Gustavsson</member>
    <member>Movead Li</member>
    <member>Muhammad Usama</member>
    <member>Nagaraj Raj</member>
    <member>Naoki Nakamichi</member>
    <member>Nathan Bossart</member>
    <member>Nazli Ugur Koyluoglu</member>
    <member>Neha Sharma</member>
    <member>Neil Chen</member>
    <member>Nick Cleaton</member>
    <member>Nico Williams</member>
    <member>Nikhil Benesch</member>
    <member>Nikhil Sontakke</member>
    <member>Nikita Glukhov</member>
    <member>Nikita Konev</member>
    <member>Nikolay Samokhvalov</member>
    <member>Nikolay Shaplov</member>
    <member>Nitin Jadhav</member>
    <member>Noah Misch</member>
    <member>Noriyoshi Shinoda</member>
    <member>Odin Ugedal</member>
    <member>Oleg Bartunov</member>
    <member>Oleg Samoilov</member>
    <member>Önder Kalacı</member>
    <member>Pascal Legrand</member>
    <member>Paul Förster</member>
    <member>Paul Guo</member>
    <member>Paul Jungwirth</member>
    <member>Paul Martinez</member>
    <member>Paul Sivash</member>
    <member>Pavan Deolasee</member>
    <member>Pavel Boev</member>
    <member>Pavel Borisov</member>
    <member>Pavel Luzanov</member>
    <member>Pavel Stehule</member>
    <member>Pengcheng Liu</member>
    <member>Peter Eisentraut</member>
    <member>Peter Geoghegan</member>
    <member>Peter Smith</member>
    <member>Peter Vandivier</member>
    <member>Petr Fedorov</member>
    <member>Petr Jelínek</member>
    <member>Philipp Gramzow</member>
    <member>Philippe Beaudoin</member>
    <member>Phillip Menke</member>
    <member>Pierre Giraud</member>
    <member>Quan Zongliang</member>
    <member>Rafi Shamim</member>
    <member>Rahila Syed</member>
    <member>Rajkumar Raghuwanshi</member>
    <member>Ranier Vilela</member>
    <member>Regina Obe</member>
    <member>Rémi Lapeyre</member>
    <member>Robert Foggia</member>
    <member>Robert Grange</member>
    <member>Robert Haas</member>
    <member>Robert Kahlert</member>
    <member>Robert Sosinski</member>
    <member>Robert Treat</member>
    <member>Robin Abbi</member>
    <member>Robins Tharakan</member>
    <member>Roger Mason</member>
    <member>Rohit Bhogate</member>
    <member>Roman Zharkov</member>
    <member>Ron L. Johnson</member>
    <member>Ronan Dunklau</member>
    <member>Ryan Lambert</member>
    <member>Ryo Matsumura</member>
    <member>Saeed Hubaishan</member>
    <member>Sait Talha Nisanci</member>
    <member>Sandro Mani</member>
    <member>Santosh Udupi</member>
    <member>Scott Ribe</member>
    <member>Sehrope Sarkuni</member>
    <member>Sergei Kornilov</member>
    <member>Sergey Bernikov</member>
    <member>Sergey Cherkashin</member>
    <member>Sergey Koposov</member>
    <member>Sergey Shinderuk</member>
    <member>Sergey Zubkovsky</member>
    <member>Shawn Wang</member>
    <member>Shay Rojansky</member>
    <member>Shi Yu</member>
    <member>Shinya Kato</member>
    <member>Shinya Okano</member>
    <member>Sigrid Ehrenreich</member>
    <member>Simon Norris</member>
    <member>Simon Riggs</member>
    <member>Sofoklis Papasofokli</member>
    <member>Soumyadeep Chakraborty</member>
    <member>Stas Kelvich</member>
    <member>Stephan Springl</member>
    <member>Stéphane Lorek</member>
    <member>Stephen Frost</member>
    <member>Steven Winfield</member>
    <member>Surafel Temesgen</member>
    <member>Suraj Kharage</member>
    <member>Sven Klemm</member>
    <member>Takamichi Osumi</member>
    <member>Takashi Menjo</member>
    <member>Takayuki Tsunakawa</member>
    <member>Tang Haiying</member>
    <member>Tatsuhito Kasahara</member>
    <member>Tatsuo Ishii</member>
    <member>Tatsuro Yamada</member>
    <member>Theodor Arsenij Larionov-Trichkin</member>
    <member>Thomas Kellerer</member>
    <member>Thomas Munro</member>
    <member>Thomas Trenz</member>
    <member>Tijs van Dam</member>
    <member>Tom Ellis</member>
    <member>Tom Gottfried</member>
    <member>Tom Lane</member>
    <member>Tom Vijlbrief</member>
    <member>Tomas Vondra</member>
    <member>Tomohiro Hiramitsu</member>
    <member>Vaishnavi Prabakaran</member>
    <member>Valentin Gatien-Baron</member>
    <member>Victor Wagner</member>
    <member>Victor Yegorov</member>
    <member>Vignesh C</member>
    <member>Vik Fearing</member>
    <member>Vitaly Ustinov</member>
    <member>Vladimir Sitnikov</member>
    <member>Vyacheslav Shablistyy</member>
    <member>Wang Shenhao</member>
    <member>Wei Wang</member>
    <member>Wells Oliver</member>
    <member>Wenjing Zeng</member>
    <member>Wolfgang Walther</member>
    <member>Yang Lin</member>
    <member>Yanliang Lei</member>
    <member>Yaoguang Chen</member>
    <member>Yaroslav Pashinsky</member>
    <member>Yaroslav Schekin</member>
    <member>Yasushi Yamashita</member>
    <member>Yoran Heling</member>
    <member>YoungHwan Joo</member>
    <member>Yugo Nagata</member>
    <member>Yuki Seino</member>
    <member>Yukun Wang</member>
    <member>Yulin Pei</member>
    <member>Yura Sokolov</member>
    <member>Yuta Katsuragi</member>
    <member>Yuta Kondo</member>
    <member>Yuzuko Hosoya</member>
    <member>Zhihong Yu</member>
    <member>Zhiyong Wu</member>
    <member>Zsolt Ero</member>
4466 4467
   </simplelist>
  </sect2>
Tom Lane's avatar
Tom Lane committed
4468 4469

 </sect1>