doc: complete adding XML markup to PG 14 relnotes
[pgsql.git] / doc / src / sgml / release-14.sgml
blob3de5d053dfac192b3fe85a399c6391fc1b6c2e38
1 <!-- doc/src/sgml/release-14.sgml -->
2 <!-- See header comment in release.sgml about typical markup -->
4 <sect1 id="release-14">
5 <title>Release 14</title>
7 <formalpara>
8 <title>Release date:</title>
9 <para>2021-??-?? (AS OF 2021-05-15)</para>
10 </formalpara>
12 <sect2>
13 <title>Overview</title>
15 <para>
16 <productname>PostgreSQL</productname> 14 contains many new features and
17 enhancements, including:
18 </para>
20 <itemizedlist>
21 <listitem>
22 <para>
23 </para>
24 </listitem>
25 </itemizedlist>
27 <para>
28 The above items and other new features
29 of <productname>PostgreSQL</productname> 14 are explained in more
30 detail in the sections below.
31 </para>
33 </sect2>
35 <sect2>
37 <title>Migration to Version 14</title>
39 <para>
40 A dump/restore using <xref linkend="app-pg-dumpall"/> or use of <xref
41 linkend="pgupgrade"/> or logical replication is required for those
42 wishing to migrate data from any previous release. See <xref
43 linkend="upgrading"/> for general information on migrating to new major
44 releases.
45 </para>
47 <para>
48 Version 14 contains a number of changes that may affect compatibility
49 with previous releases. Observe the following incompatibilities:
50 </para>
52 <itemizedlist>
54 <listitem>
55 <!--
56 Author: Tom Lane <tgl@sss.pgh.pa.us>
57 2020-08-08 [20e7e1fe3] Remove &lt;@ from contrib/intarray's GiST operator classes.
58 -->
60 <para>
61 Prevent the containment operators (&lt;@ and @&gt;) for <xref linkend="intarray"/> from using GiST indexes (Tom Lane)
62 </para>
64 <para>
65 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.
66 </para>
67 </listitem>
69 <listitem>
70 <!--
71 Author: Peter Eisentraut <peter@eisentraut.org>
72 2020-11-03 [2f70fdb06] Remove deprecated containment operators for built-in typ
73 Author: Tom Lane <tgl@sss.pgh.pa.us>
74 2021-03-05 [112d411fb] Remove deprecated containment operators for contrib type
75 -->
77 <para>
78 Remove deprecated containment operators @ and ~ for built-in <link linkend="functions-geometry">geometric data types</link> and contrib modules <xref linkend="cube"/>, <xref linkend="hstore"/>,
79 <xref linkend="intarray"/>, and <xref linkend="seg"/> (Justin Pryzby)
80 </para>
82 <para>
83 The more consistent &lt;@ and @&gt; have been recommended for many years.
84 </para>
85 </listitem>
87 <listitem>
88 <!--
89 Author: Alexander Korotkov <akorotkov@postgresql.org>
90 2021-01-31 [0c4f355c6] Fix parsing of complex morphs to tsquery
91 -->
93 <para>
94 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)
95 </para>
97 <para>
98 Certain discarded tokens, like underscore, caused the output of these functions to produce incorrect tsquery output, e.g., both websearch_to_tsquery('"pg_class pg"') and to_tsquery('pg_class &lt;-&gt;
99 pg') used to output '( pg &amp; class ) &lt;-&gt; pg', but now both output 'pg &lt;-&gt; class &lt;-&gt; pg'.
100 </para>
101 </listitem>
103 <listitem>
104 <!--
105 Author: Alexander Korotkov <akorotkov@postgresql.org>
106 2021-05-03 [eb086056f] Make websearch_to_tsquery() parse text in quotes as a si
109 <para>
110 Fix <link linkend="functions-textsearch"><function>websearch_to_tsquery()</function></link> to properly parse multiple adjacent discarded tokens in quotes (Alexander Korotkov)
111 </para>
113 <para>
114 Previously, quoted text that contained multiple adjacent discarded tokens were treated as multiple tokens, causing incorrect tsquery output, e.g., websearch_to_tsquery('"aaa: bbb"') used to output
115 'aaa &lt;2&gt; bbb', but now outputs 'aaa &lt;-&gt; bbb'.
116 </para>
117 </listitem>
119 <listitem>
120 <!--
121 Author: Peter Eisentraut <peter@eisentraut.org>
122 2020-06-10 [c7eab0e97] Change default of password_encryption to scram-sha-256
123 Author: Peter Eisentraut <peter@eisentraut.org>
124 2020-06-10 [c7eab0e97] Change default of password_encryption to scram-sha-256
127 <para>
128 Change the default of the <xref linkend="guc-password-encryption"/> server parameter to <literal>scram-sha-256</literal> (Peter Eisentraut)
129 </para>
131 <para>
132 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.
133 Also, the legacy (and undocumented) boolean-like values which were previously synonyms for <literal>md5</literal> are no longer accepted.
134 </para>
135 </listitem>
137 <listitem>
138 <!--
139 Author: Bruce Momjian <bruce@momjian.us>
140 2020-10-05 [253f1025d] Overhaul pg_hba.conf clientcert's API
143 <para>
144 Overhaul the specification of <literal>clientcert</literal> in <link linkend="auth-pg-hba-conf"><filename>pg_hba.conf</filename></link> (Kyotaro Horiguchi)
145 </para>
147 <para>
148 Values <literal>1</literal>/<literal>0</literal>/<literal>no-verify</literal> are no longer supported; only the strings <literal>verify-ca</literal> and <literal>verify-full</literal> can be used. Also, disallow <literal>verify-ca</literal> if cert
149 authentication is enabled since cert requires <literal>verify-full</literal> checking.
150 </para>
151 </listitem>
153 <listitem>
154 <!--
155 Author: Michael Paquier <michael@paquier.xyz>
156 2021-03-09 [f9264d152] Remove support for SSL compression
157 Author: Michael Paquier <michael@paquier.xyz>
158 2021-03-10 [0ba71107e] Revert changes for SSL compression in libpq
161 <para>
162 Remove support for <link linkend="runtime-config-connection-ssl"><acronym>SSL</acronym></link> compression (Daniel Gustafsson, Michael Paquier)
163 </para>
165 <para>
166 This was already disabled by default in previous Postgres releases, and most modern OpenSSL and <acronym>TLS</acronym> versions no longer support it.
167 </para>
168 </listitem>
170 <listitem>
171 <!--
172 Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
173 2021-03-04 [3174d69fb] Remove server and libpq support for old FE/BE protocol v
176 <para>
177 Remove server and <link linkend="libpq">libpq</link> support for the version 2 <link linkend="protocol">wire protocol</link> (Heikki Linnakangas)
178 </para>
180 <para>
181 This was last used as the default in Postgres 7.2 (year 2002).
182 </para>
183 </listitem>
185 <listitem>
186 <!--
187 Author: Peter Eisentraut <peter@eisentraut.org>
188 2021-04-06 [a2da77cdb] Change return type of EXTRACT to numeric
191 <para>
192 Change <link linkend="functions-datetime"><function>EXTRACT</function></link> to return the <type>NUMERIC</type> data type (Peter Eisentraut)
193 </para>
195 <para>
196 <function>EXTRACT(date)</function> now throws an error for units that are not part of the date data type.
197 </para>
198 </listitem>
200 <listitem>
201 <!--
202 Author: Tom Lane <tgl@sss.pgh.pa.us>
203 2020-07-20 [a4faef8f8] Fix some corner cases for window ranges with infinite of
206 <para>
207 Fix handling of infinite <link linkend="syntax-window-functions">window function</link> ranges (Tom Lane)
208 </para>
210 <para>
211 Previously window frame clauses like <literal>'inf' PRECEDING AND 'inf' FOLLOWING</literal> returned incorrect results.
212 </para>
213 </listitem>
215 <listitem>
216 <!--
217 Author: Peter Eisentraut <peter@eisentraut.org>
218 2020-11-25 [f73999262] tablefunc: Reject negative number of tuples passed to no
221 <para>
222 Prevent <xref linkend="tablefunc"/>'s function <function>normal_rand()</function> from accepting negative values (Ashutosh Bapat)
223 </para>
225 <para>
226 Negative values produced undesirable results.
227 </para>
228 </listitem>
230 <listitem>
231 <!--
232 Author: Tom Lane <tgl@sss.pgh.pa.us>
233 2020-06-13 [23cbeda50] Sync behavior of var_samp and stddev_samp for single NaN
236 <para>
237 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)
238 </para>
240 <para>
241 Previously <literal>NaN</literal> was returned.
242 </para>
243 </listitem>
245 <listitem>
246 <!--
247 Author: Tom Lane <tgl@sss.pgh.pa.us>
248 2020-09-17 [76f412ab3] Remove factorial operators, leaving only the factorial()
251 <para>
252 Remove factorial operators <literal>!</literal> and <literal>!!</literal> (Mark Dilger)
253 </para>
255 <para>
256 The <link linkend="functions-math"><function>factorial()</function></link> function is still supported. Also remove function <function>numeric_fac()</function>.
257 </para>
258 </listitem>
260 <listitem>
261 <!--
262 Author: Peter Eisentraut <peter@eisentraut.org>
263 2020-06-18 [0a40563ea] Disallow factorial of negative numbers
266 <para>
267 Disallow <function>factorial()</function> of negative numbers (Peter Eisentraut)
268 </para>
270 <para>
271 Previously such cases returned 1.
272 </para>
273 </listitem>
275 <listitem>
276 <!--
277 Author: Tom Lane <tgl@sss.pgh.pa.us>
278 2020-09-17 [1ed6b8956] Remove support for postfix (right-unary) operators.
281 <para>
282 Remove support for <link linkend="sql-createoperator">postfix</link> (right-unary) operators (Mark Dilger)
283 </para>
285 <para>
286 <application>pg_dump</application> and <application>pg_upgrade</application> will warn if postfix operators are being dumped.
287 </para>
288 </listitem>
290 <listitem>
291 <!--
292 Author: Tom Lane <tgl@sss.pgh.pa.us>
293 2021-02-25 [7dc13a0f0] Change regex \D and \W shorthands to always match newlin
296 <para>
297 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)
298 </para>
300 <para>
301 Previously they did not match; <literal>[^[:digit:]]</literal> or <literal>[^[:word:]]</literal> can be used to get the old behavior.
302 </para>
303 </listitem>
305 <listitem>
306 <!--
307 Author: Tom Lane <tgl@sss.pgh.pa.us>
308 2021-03-02 [4aea704a5] Fix semantics of regular expression back-references.
311 <para>
312 Improve handling of regular expression back-references (Tom Lane)
313 </para>
315 <para>
316 For example, disregard <literal>^</literal> in its expansion in <literal>\1</literal> in <literal>(^\d+).*\1</literal>.
317 </para>
318 </listitem>
320 <listitem>
321 <!--
322 Author: Tom Lane <tgl@sss.pgh.pa.us>
323 2021-02-25 [2a0af7fe4] Allow complemented character class escapes within regex
326 <para>
327 Disallow <literal>\w</literal> as range start/end in character classes (Tom Lane)
328 </para>
330 <para>
331 This previously was allowed but produced incorrect results.
332 </para>
333 </listitem>
335 <listitem>
336 <!--
337 Author: Tom Lane <tgl@sss.pgh.pa.us>
338 2021-04-07 [3db826bd5] Tighten up allowed names for custom GUC parameters.
341 <para>
342 Require <link linkend="runtime-config-custom">custom server variable</link> names to match the pattern used for unquoted <acronym>SQL</acronym> identifiers (Tom Lane)
343 </para>
344 </listitem>
346 <listitem>
347 <!--
348 Author: Peter Geoghegan <pg@bowt.ie>
349 2021-03-10 [9f3665fbf] Don't consider newly inserted tuples in nbtree VACUUM.
350 Author: Peter Geoghegan <pg@bowt.ie>
351 2021-03-11 [effdd3f3b] Add back vacuum_cleanup_index_scale_factor parameter.
354 <para>
355 Remove server variable <varname>vacuum_cleanup_index_scale_factor</varname> (Peter Geoghegan)
356 </para>
358 <para>
359 This setting was ignored starting in <productname>PostgreSQL</productname> version 13.3.
360 </para>
361 </listitem>
363 <listitem>
364 <!--
365 Author: Joe Conway <mail@joeconway.com>
366 2021-03-31 [b12bd4869] Fix has_column_privilege function corner case
369 <para>
370 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)
371 </para>
373 <para>
374 Previously such attribute numbers returned an invalid column error.
375 </para>
376 </listitem>
378 <listitem>
379 <!--
380 Author: Tom Lane <tgl@sss.pgh.pa.us>
381 2020-10-22 [3dfb1942d] Avoid premature de-doubling of quote marks in ECPG strin
382 Author: Tom Lane <tgl@sss.pgh.pa.us>
383 2020-10-22 [c16a1bbcf] Add documentation and tests for quote marks in ECPG lite
386 <para>
387 Pass doubled quote marks in <xref linkend="ecpg"/> <acronym>SQL</acronym> command strings literally (Tom Lane)
388 </para>
390 <para>
391 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>.
392 </para>
393 </listitem>
395 <listitem>
396 <!--
397 Author: Peter Eisentraut <peter@eisentraut.org>
398 2020-06-11 [5333e014a] Remove deprecated syntax from CREATE/DROP LANGUAGE
401 <para>
402 Disallow single-quoting of the language name in the <link linkend="sql-createlanguage"><command>CREATE/DROP LANGUAGE</command></link> command (Peter Eisentraut)
403 </para>
404 </listitem>
406 <listitem>
407 <!--
408 Author: Thomas Munro <tmunro@postgresql.org>
409 2021-01-29 [514b411a2] Retire pg_standby.
412 <para>
413 Remove contrib program <application>pg_standby</application> (Justin Pryzby)
414 </para>
415 </listitem>
417 <listitem>
418 <!--
419 Author: Tom Lane <tgl@sss.pgh.pa.us>
420 2020-07-07 [f3faf35f3] Don't create pg_type entries for sequences or toast tabl
423 <para>
424 Remove <link linkend="xfunc-sql-composite-functions">composite types</link> for sequences or toast tables (Tom Lane)
425 </para>
426 </listitem>
428 <listitem>
429 <!--
430 Author: Tom Lane <tgl@sss.pgh.pa.us>
431 2020-12-08 [a676386b5] Remove operator_precedence_warning.
434 <para>
435 Remove <varname>operator_precedence_warning</varname> setting (Tom Lane)
436 </para>
438 <para>
439 This was needed for warning applications about <productname>PostgreSQL</productname> 9.5 changes.
440 </para>
441 </listitem>
443 </itemizedlist>
445 </sect2>
447 <sect2>
448 <title>Changes</title>
450 <para>
451 Below you will find a detailed account of the changes between
452 <productname>PostgreSQL</productname> 14 and the previous major
453 release.
454 </para>
456 <sect3>
457 <title>Server</title>
459 <itemizedlist>
461 <listitem>
462 <!--
463 Author: Stephen Frost <sfrost@snowman.net>
464 2021-04-05 [6c3ffd697] Add pg_read_all_data and pg_write_all_data roles
467 <para>
468 Add predefined roles <link linkend="predefined-roles"><structname>pg_read_all_data</structname></link> and <structname>pg_write_all_data</structname> (Stephen Frost)
469 </para>
471 <para>
472 These non-login roles give read-only/write-only access to all objects.
473 </para>
474 </listitem>
476 <listitem>
477 <!--
478 Author: Noah Misch <noah@leadboat.com>
479 2021-03-26 [a14a0118a] Add "pg_database_owner" default role.
482 <para>
483 Add a predefined role to match the database owner (Noah Misch)
484 </para>
486 <para>
487 It is called <link linkend="predefined-roles"><literal>pg_database_owner</literal></link>; this is useful in template databases.
488 </para>
489 </listitem>
491 <listitem>
492 <!--
493 Author: Tomas Vondra <tomas.vondra@postgresql.org>
494 2021-03-18 [cd91de0d1] Remove temporary files after backend crash
497 <para>
498 Remove temporary files after backend crashes (Euler Taveira)
499 </para>
501 <para>
502 These files were previously retained for debugging purposes; deletion can be disabled with <xref linkend="guc-remove-temp-files-after-crash"/>.
503 </para>
504 </listitem>
506 <listitem>
507 <!--
508 Author: Thomas Munro <tmunro@postgresql.org>
509 2021-04-03 [c30f54ad7] Detect POLLHUP/POLLRDHUP while running queries.
512 <para>
513 Allow long-running queries to be canceled if the client disconnects (Sergey Cherkashin, Thomas Munro)
514 </para>
516 <para>
517 The server variable <xref linkend="guc-client-connection-check-interval"/> allows some supported operating systems to automatically cancel queries by disconnected clients.
518 </para>
519 </listitem>
521 <listitem>
522 <!--
523 Author: Magnus Hagander <magnus@hagander.net>
524 2021-04-08 [aaf043257] Add functions to wait for backend termination
527 <para>
528 Add function <link linkend="functions-admin-signal"><function>pg_wait_for_backend_termination()</function></link> that waits for session exit (Bharath Rupireddy)
529 </para>
531 <para>
532 Also add a similar optional wait parameter to <link linkend="functions-admin-signal"><function>pg_terminate_backend()</function></link>
533 </para>
534 </listitem>
536 <listitem>
537 <!--
538 Author: Noah Misch <noah@leadboat.com>
539 2021-03-30 [0ff8bbdee] Accept slightly-filled pages for tuples larger than fill
542 <para>
543 Allow wide tuples to be always added to almost-empty heap pages (John Naylor, Floris van Nee)
544 </para>
546 <para>
547 Previously tuples whose insertion would have exceeded the page's <link linkend="sql-createtable">fill factor</link> were instead added to new pages.
548 </para>
549 </listitem>
551 <listitem>
552 <!--
553 Author: Peter Eisentraut <peter@eisentraut.org>
554 2021-04-07 [5c55dc8b4] libpq: Set Server Name Indication (SNI) for SSL connecti
557 <para>
558 Add Set Server Name Indication (<acronym>SNI</acronym>) for <acronym>SSL</acronym> connection packets (Peter Eisentraut)
559 </para>
561 <para>
562 This can be disabled by turning off client option <link linkend="libpq-paramkeywords"><literal>sslsni</literal></link>.
563 </para>
564 </listitem>
566 </itemizedlist>
568 <sect4>
569 <title><link linkend="routine-vacuuming">Vacuuming</link></title>
571 <itemizedlist>
573 <listitem>
574 <!--
575 Author: Peter Geoghegan <pg@bowt.ie>
576 2021-04-07 [5100010ee] Teach VACUUM to bypass unnecessary index vacuuming.
579 <para>
580 Allow vacuum to skip index vacuuming when the number of removable index entries is insignificant (Masahiko Sawada, Peter Geoghegan)
581 </para>
582 </listitem>
584 <listitem>
585 <!--
586 Author: Peter Geoghegan <pg@bowt.ie>
587 2021-03-21 [9dd963ae2] Recycle nbtree pages deleted during same VACUUM.
590 <para>
591 Allow vacuum to eagerly add newly deleted btree pages to the free space map (Peter Geoghegan)
592 </para>
594 <para>
595 Previously vacuum could only place preexisting deleted pages in the free space map.
596 </para>
597 </listitem>
599 <listitem>
600 <!--
601 Author: Peter Geoghegan <pg@bowt.ie>
602 2021-04-07 [3c3b8a4b2] Truncate line pointer array during VACUUM.
605 <para>
606 Allow vacuum to deallocate space reserved by trailing unused heap line pointers (Matthias van de Meent, Peter Geoghegan)
607 </para>
608 </listitem>
610 <listitem>
611 <!--
612 Author: Fujii Masao <fujii@postgresql.org>
613 2020-12-08 [e2ac3fed3] Speed up rechecking if relation needs to be vacuumed or
616 <para>
617 Speed up vacuuming of databases with many relations (Tatsuhito Kasahara)
618 </para>
619 </listitem>
621 <listitem>
622 <!--
623 Author: Peter Geoghegan <pg@bowt.ie>
624 2021-01-27 [e19594c5c] Reduce the default value of vacuum_cost_page_miss.
627 <para>
628 Reduce the default value of <xref linkend="guc-vacuum-cost-page-miss"/> from 10 milliseconds to 2 (Peter Geoghegan)
629 </para>
631 <para>
632 This new default better reflects current hardware capabilities.
633 </para>
634 </listitem>
636 <listitem>
637 <!--
638 Author: Michael Paquier <michael@paquier.xyz>
639 2021-02-09 [7cb3048f3] Add option PROCESS_TOAST to VACUUM
642 <para>
643 Add ability to skip vacuuming of <acronym>TOAST</acronym> tables (Nathan Bossart)
644 </para>
646 <para>
647 <link linkend="sql-vacuum"><command>VACUUM</command></link> now has a <literal>PROCESS_TOAST</literal> which can be set to false to disable <acronym>TOAST</acronym> processing, and
648 <link linkend="app-vacuumdb"><application>vacuumdb</application></link> has a <option>--no-process-toast</option> option.
649 </para>
650 </listitem>
652 <listitem>
653 <!--
654 Author: Tomas Vondra <tomas.vondra@postgresql.org>
655 2021-01-17 [7db0cd214] Set PD_ALL_VISIBLE and visibility map bits in COPY FREEZ
658 <para>
659 Have <link linkend="sql-copy"><command>COPY FREEZE</command></link> appropriately update page visibility bits (Anastasia Lubennikova, Pavan Deolasee, Jeff Janes)
660 </para>
661 </listitem>
663 <listitem>
664 <!--
665 Author: Peter Geoghegan <pg@bowt.ie>
666 2021-04-07 [1e55e7d17] Add wraparound failsafe to VACUUM.
669 <para>
670 Cause vacuum operations to be aggressive if the table is near xid or multixact wraparound (Masahiko Sawada, Peter Geoghegan)
671 </para>
673 <para>
674 This is controlled by <xref linkend="guc-vacuum-failsafe-age"/> and <xref linkend="guc-multixact-failsafe-age"/>.
675 </para>
676 </listitem>
678 <listitem>
679 <!--
680 Author: Noah Misch <noah@leadboat.com>
681 2020-08-01 [cd5e82256] Change XID and mxact limits to warn at 40M and stop at 3
684 <para>
685 Increase warning time and hard limit before transaction id and multi-transaction wraparound (Noah Misch)
686 </para>
688 <para>
689 This should reduce the possibility of failures that occur without having issued warnings about wraparound.
690 </para>
691 </listitem>
693 <listitem>
694 <!--
695 Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
696 2021-04-08 [0827e8af7] autovacuum: handle analyze for partitioned tables
699 <para>
700 <link linkend="autovacuum">Autovacuum</link> now analyzes partitioned tables (Yuzuko Hosoya, Álvaro Herrera)
701 </para>
703 <para>
704 Insert, update, and delete tuple counts from partitions are now propagated to their parent tables so autovacuum knows when to process them.
705 </para>
706 </listitem>
708 <listitem>
709 <!--
710 Author: Michael Paquier <michael@paquier.xyz>
711 2021-03-23 [5aed6a1fc] Add per-index stats information in verbose logs of autov
714 <para>
715 Add per-index information to <link linkend="guc-log-autovacuum-min-duration">autovacuum logging output</link> (Masahiko Sawada)
716 </para>
717 </listitem>
719 </itemizedlist>
720 </sect4>
722 <sect4>
723 <title><link linkend="ddl-partitioning">Partitioning</link></title>
725 <itemizedlist>
727 <listitem>
728 <!--
729 Author: Tom Lane <tgl@sss.pgh.pa.us>
730 2021-03-31 [86dc90056] Rework planning and execution of UPDATE and DELETE.
731 Author: Tom Lane <tgl@sss.pgh.pa.us>
732 2021-04-06 [a1115fa07] Postpone some more stuff out of ExecInitModifyTable.
733 Author: Tom Lane <tgl@sss.pgh.pa.us>
734 2021-04-06 [c5b7ba4e6] Postpone some stuff out of ExecInitModifyTable.
737 <para>
738 Improve the performance of updates/deletes on partitioned tables when only a few partitions are affected (Amit Langote, Tom Lane)
739 </para>
741 <para>
742 This also allows updates/deletes on partitioned tables to use execution-time partition pruning.
743 </para>
744 </listitem>
746 <listitem>
747 <!--
748 Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
749 2021-03-25 [71f4c8c6f] ALTER TABLE ... DETACH PARTITION ... CONCURRENTLY
752 <para>
753 Allow partitions to be <link linkend="sql-altertable">detached</link> in a non-blocking manner (Álvaro Herrera)
754 </para>
756 <para>
757 The syntax is <command>ALTER TABLE ... DETACH PARTITION ... CONCURRENTLY</command>, and <command>FINALIZE</command>.
758 </para>
759 </listitem>
761 <listitem>
762 <!--
763 Author: Tom Lane <tgl@sss.pgh.pa.us>
764 2020-09-28 [2dfa3fea8] Remove complaints about COLLATE clauses in partition bou
767 <para>
768 Allow the arbitrary collations of partition boundary values (Tom Lane)
769 </para>
771 <para>
772 Previously it had to match the collation of the partition key.
773 </para>
774 </listitem>
776 </itemizedlist>
778 </sect4>
780 <sect4>
781 <title>Indexes</title>
783 <itemizedlist>
785 <listitem>
786 <!--
787 Author: Peter Geoghegan <pg@bowt.ie>
788 2021-01-13 [9dc718bdf] Pass down "logically unchanged index" hint.
789 Author: Peter Geoghegan <pg@bowt.ie>
790 2021-01-13 [d168b6668] Enhance nbtree index tuple deletion.
793 <para>
794 Allow btree index additions to <link linkend="btree-deletion">remove expired index entries</link> to prevent page splits (Peter Geoghegan)
795 </para>
797 <para>
798 This is particularly helpful for reducing index bloat on tables whose indexed columns are frequently updated.
799 </para>
800 </listitem>
802 <listitem>
803 <!--
804 Author: Tomas Vondra <tomas.vondra@postgresql.org>
805 2021-03-26 [ab596105b] BRIN minmax-multi indexes
808 <para>
809 Allow <link linkend="brin"><acronym>BRIN</acronym></link> indexes to record multiple min/max values per range (Tomas Vondra)
810 </para>
812 <para>
813 This is useful if there are groups of values in each page range.
814 </para>
815 </listitem>
817 <listitem>
818 <!--
819 Author: Tomas Vondra <tomas.vondra@postgresql.org>
820 2021-03-26 [77b88cd1b] BRIN bloom indexes
823 <para>
824 Allow <acronym>BRIN</acronym> indexes to use bloom filters (Tomas Vondra)
825 </para>
827 <para>
828 This allows bloom indexes to be used effectively with data that is not physically localized in the heap.
829 </para>
830 </listitem>
832 <listitem>
833 <!--
834 Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
835 2020-09-17 [16fa9b2b3] Add support for building GiST index by sorting.
838 <para>
839 Allow some <link linkend="gist">GiST</link> indexes to be built by presorting the data (Andrey Borodin)
840 </para>
842 <para>
843 Presorting happens automatically and allows for faster index creation and smaller indexes.
844 </para>
845 </listitem>
847 <listitem>
848 <!--
849 Author: Tom Lane <tgl@sss.pgh.pa.us>
850 2021-04-05 [09c1c6ab4] Support INCLUDE'd columns in SP-GiST.
853 <para>
854 Allow <link linkend="spgist">SP-GiST</link> to use <literal>INCLUDE</literal>'d columns (Pavel Borisov)
855 </para>
856 </listitem>
858 </itemizedlist>
860 </sect4>
862 <sect4>
863 <title>Optimizer</title>
865 <itemizedlist>
867 <listitem>
868 <!--
869 Author: David Rowley <drowley@postgresql.org>
870 2021-04-08 [50e17ad28] Speedup ScalarArrayOpExpr evaluation
873 <para>
874 Allow hash lookup of <literal>IN</literal> clause with many constants (James Coleman, David Rowley)
875 </para>
877 <para>
878 Previously the only option was to sequentially scan the list of constants.
879 </para>
880 </listitem>
882 <listitem>
883 <!--
884 Author: Dean Rasheed <dean.a.rasheed@gmail.com>
885 2020-12-03 [25a9e54d2] Improve estimation of OR clauses using extended statisti
886 Author: Dean Rasheed <dean.a.rasheed@gmail.com>
887 2020-12-08 [88b0898fe] Improve estimation of OR clauses using multiple extended
888 Author: Dean Rasheed <dean.a.rasheed@gmail.com>
889 2020-12-08 [4f5760d4a] Improve estimation of ANDs under ORs using extended stat
892 <para>
893 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)
894 </para>
895 </listitem>
897 <listitem>
898 <!--
899 Author: Tomas Vondra <tomas.vondra@postgresql.org>
900 2021-03-27 [a4d75c86b] Extended statistics on expressions
903 <para>
904 Allow extended statistics on expressions (Tomas Vondra)
905 </para>
907 <para>
908 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>
909 reports such statistics. <link linkend="sql-altertable"><literal>ALTER TABLE ... ALTER COLUMN ... TYPE RESETS STASTISTICS</literal></link>?
910 </para>
911 </listitem>
913 <listitem>
914 <!--
915 Author: David Rowley <drowley@postgresql.org>
916 2021-02-27 [bb437f995] Add TID Range Scans to support efficient scanning ranges
919 <para>
920 Allow efficient heap scanning of a range of <link linkend="datatype-oid-table"><type>TIDs</type></link> (Edmund Horner, David Rowley)
921 </para>
923 <para>
924 Previously a sequential scan was required for non-equality <type>TID</type> specifications.
925 </para>
926 </listitem>
928 <listitem>
929 <!--
930 Author: Michael Paquier <michael@paquier.xyz>
931 2020-12-30 [e665769e6] Sanitize IF NOT EXISTS in EXPLAIN for CTAS and matviews
934 <para>
935 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)
936 </para>
938 <para>
939 Previously, if the object already exists, <command>EXPLAIN</command> would fail.
940 </para>
941 </listitem>
943 </itemizedlist>
945 </sect4>
947 <sect4>
948 <title>General Performance</title>
950 <itemizedlist>
952 <listitem>
953 <!--
954 Author: Andres Freund <andres@anarazel.de>
955 2020-08-12 [dc7420c2c] snapshot scalability: Don't compute global horizons whil
956 Author: Andres Freund <andres@anarazel.de>
957 2020-08-13 [1f51c17c6] snapshot scalability: Move PGXACT->xmin back to PGPROC.
958 Author: Andres Freund <andres@anarazel.de>
959 2020-08-14 [941697c3c] snapshot scalability: Introduce dense array of in-progre
960 Author: Andres Freund <andres@anarazel.de>
961 2020-08-14 [5788e258b] snapshot scalability: Move PGXACT->vacuumFlags to ProcGl
962 Author: Andres Freund <andres@anarazel.de>
963 2020-08-14 [73487a60f] snapshot scalability: Move subxact info to ProcGlobal, r
964 Author: Andres Freund <andres@anarazel.de>
965 2020-08-17 [623a9ba79] snapshot scalability: cache snapshots using a xact compl
968 <para>
969 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)
970 </para>
972 <para>
973 This also improves performance when there are many idle sessions.
974 </para>
975 </listitem>
977 <listitem>
978 <!--
979 Author: David Rowley <drowley@postgresql.org>
980 2021-04-02 [9eacee2e6] Add Result Cache executor node (take 2)
983 <para>
984 Add executor method to cache results from the inner-side of nested loop joins (David Rowley)
985 </para>
987 <para>
988 This is useful if only a small percentage of rows is checked on the inner side.
989 </para>
990 </listitem>
992 <listitem>
993 <!--
994 Author: David Rowley <drowley@postgresql.org>
995 2020-09-15 [62e221e1c] Allow incremental sorts for windowing functions
998 <para>
999 Allow <link linkend="functions-window">window functions</link> to perform incremental sorts (David Rowley)
1000 </para>
1001 </listitem>
1003 <listitem>
1004 <!--
1005 Author: David Rowley <drowley@postgresql.org>
1006 2020-07-26 [56788d215] Allocate consecutive blocks during parallel seqscans
1009 <para>
1010 Improve the I/O performance of parallel sequential scans (Thomas Munro, David Rowley)
1011 </para>
1013 <para>
1014 This was done by allocating blocks in groups to <link linkend="guc-max-parallel-workers">parallel workers</link>.
1015 </para>
1016 </listitem>
1018 <listitem>
1019 <!--
1020 Author: Etsuro Fujita <efujita@postgresql.org>
1021 2021-03-31 [27e1f1456] Add support for asynchronous execution.
1024 <para>
1025 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)
1026 </para>
1028 <para>
1029 The <link linkend="postgres-fdw"><application>postgres_fdw</application></link> supports these type of scans if <literal>async_capable</literal> is set.
1030 </para>
1031 </listitem>
1033 <listitem>
1034 <!--
1035 Author: Stephen Frost <sfrost@snowman.net>
1036 2021-03-16 [c6fc50cb4] Use pre-fetching for ANALYZE
1039 <para>
1040 Allow <link linkend="vacuum-for-statistics">analyze</link> to do page prefetching (Stephen Frost)
1041 </para>
1043 <para>
1044 This is controlled by <xref linkend="guc-maintenance-io-concurrency"/>.
1045 </para>
1046 </listitem>
1048 <listitem>
1049 <!--
1050 Author: Tom Lane <tgl@sss.pgh.pa.us>
1051 2021-02-20 [08c0d6ad6] Invent "rainbow" arcs within the regex engine.
1052 Author: Tom Lane <tgl@sss.pgh.pa.us>
1053 2021-02-20 [824bf7190] Recognize "match-all" NFAs within the regex engine.
1054 Author: Tom Lane <tgl@sss.pgh.pa.us>
1055 2021-02-20 [cebc1d34e] Fix regex engine to suppress useless concatenation sub-R
1056 Author: Tom Lane <tgl@sss.pgh.pa.us>
1057 2021-02-20 [581043089] Convert regex engine's subre tree from binary to N-ary s
1058 Author: Tom Lane <tgl@sss.pgh.pa.us>
1059 2021-02-20 [ea1268f63] Avoid generating extra subre tree nodes for capturing pa
1060 Author: Tom Lane <tgl@sss.pgh.pa.us>
1061 2021-02-21 [190c79884] Simplify memory management for regex DFAs a little.
1062 Author: Tom Lane <tgl@sss.pgh.pa.us>
1063 2021-02-26 [0fc1af174] Improve memory management in regex compiler.
1064 Author: Tom Lane <tgl@sss.pgh.pa.us>
1065 2021-03-02 [0c3405cf1] Improve performance of regular expression back-reference
1066 Author: Tom Lane <tgl@sss.pgh.pa.us>
1067 2021-03-02 [4604f83fd] Suppress unnecessary regex subre nodes in a couple more
1068 Author: Tom Lane <tgl@sss.pgh.pa.us>
1069 2021-03-08 [6c20bdb2a] Further tweak memory management for regex DFAs.
1070 Author: Tom Lane <tgl@sss.pgh.pa.us>
1071 2021-05-03 [f68970e33] Fix performance issue in new regex match-all detection c
1074 <para>
1075 Improve the performance of <link linkend="functions-similarto-regexp">regular expression</link> comparisons (Tom Lane)
1076 </para>
1077 </listitem>
1079 <listitem>
1080 <!--
1081 Author: Michael Paquier <michael@paquier.xyz>
1082 2020-10-11 [80f8eb79e] Use perfect hash for NFC and NFKC Unicode Normalization
1083 Author: Michael Paquier <michael@paquier.xyz>
1084 2020-10-23 [783f0cc64] Improve performance of Unicode {de,re}composition in the
1087 <para>
1088 Dramatically improve Unicode normalization (John Naylor)
1089 </para>
1091 <para>
1092 This speeds <link linkend="functions-string"><function>normalize()</function></link> and <literal>IS NORMALIZED</literal>.
1093 </para>
1094 </listitem>
1096 <listitem>
1097 <!--
1098 Author: Robert Haas <rhaas@postgresql.org>
1099 2021-03-19 [bbe0a81db] Allow configurable LZ4 TOAST compression.
1102 <para>
1103 Add ability to use <link linkend="sql-createtable">LZ4 compression</link> on <acronym>TOAST</acronym> data (Dilip Kumar)
1104 </para>
1106 <para>
1107 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.
1108 </para>
1109 </listitem>
1111 </itemizedlist>
1113 </sect4>
1115 <sect4>
1116 <title>Monitoring</title>
1118 <itemizedlist>
1120 <listitem>
1121 <!--
1122 Author: Bruce Momjian <bruce@momjian.us>
1123 2021-04-07 [4f0b0966c] Make use of in-core query id added by commit 5fd9dfa5f5
1124 Author: Bruce Momjian <bruce@momjian.us>
1125 2021-04-07 [f57a2f5e0] Add csvlog output for the new query_id value
1126 Author: Bruce Momjian <bruce@momjian.us>
1127 2021-04-20 [9660834dd] adjust query id feature to use pg_stat_activity.query_id
1128 Author: Bruce Momjian <bruce@momjian.us>
1129 2021-05-03 [f7a97b6ec] Update query_id computation
1130 Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
1131 2021-05-15 [cafde58b3] Allow compute_query_id to be set to 'auto' and make it d
1134 <para>
1135 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>,
1136 <link linkend="sql-explain"><command>EXPLAIN VERBOSE</command></link>, <link linkend="runtime-config-logging">csvlog</link>, and optionally in <xref linkend="guc-log-line-prefix"/>
1137 (Julien Rouhaud)
1138 </para>
1140 <para>
1141 A query id computed by an extension will also be displayed.
1142 </para>
1143 </listitem>
1145 <listitem>
1146 <!--
1147 Author: Fujii Masao <fujii@postgresql.org>
1148 2020-08-19 [3e98c0baf] Add pg_backend_memory_contexts system view.
1149 Author: Fujii Masao <fujii@postgresql.org>
1150 2020-08-26 [29dd6d8bc] Prevent non-superusers from reading pg_backend_memory_co
1153 <para>
1154 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)
1155 </para>
1156 </listitem>
1158 <listitem>
1159 <!--
1160 Author: Fujii Masao <fujii@postgresql.org>
1161 2021-04-06 [43620e328] Add function to log the memory contexts of specified bac
1164 <para>
1165 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)
1166 </para>
1167 </listitem>
1169 <listitem>
1170 <!--
1171 Author: Stephen Frost <sfrost@snowman.net>
1172 2021-03-16 [94d13d474] Improve logging of auto-vacuum and auto-analyze
1175 <para>
1176 Improve logging of <link linkend="autovacuum">auto-vacuum</link> and auto-analyze (Stephen Frost, Jakub Wartak)
1177 </para>
1179 <para>
1180 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.
1181 </para>
1182 </listitem>
1184 <listitem>
1185 <!--
1186 Author: Michael Paquier <michael@paquier.xyz>
1187 2021-04-07 [9afffcb83] Add some information about authenticated identity via lo
1190 <para>
1191 Add information about the original user name supplied by the client to the output of <xref linkend="guc-log-connections"/> (Jacob Champion)
1192 </para>
1193 </listitem>
1195 </itemizedlist>
1197 </sect4>
1199 <sect4>
1200 <title>System Views</title>
1202 <itemizedlist>
1204 <listitem>
1205 <!--
1206 Author: Tomas Vondra <tomas.vondra@postgresql.org>
1207 2021-01-06 [8a4f618e7] Report progress of COPY commands
1208 Author: Michael Paquier <michael@paquier.xyz>
1209 2021-03-09 [9d2d45700] Add support for more progress reporting in COPY
1212 <para>
1213 Add view <link linkend="copy-progress-reporting"><structname>pg_stat_progress_copy</structname></link> to report <command>COPY</command> progress (Josef Šimánek, Matthias van de Meent)
1214 </para>
1215 </listitem>
1217 <listitem>
1218 <!--
1219 Author: Magnus Hagander <magnus@hagander.net>
1220 2021-01-17 [960869da0] Add pg_stat_database counters for sessions and session t
1223 <para>
1224 Add session statistics to the <link linkend="monitoring-pg-stat-database-view"><structname>pg_stat_database</structname></link> system view (Laurenz Albe)
1225 </para>
1226 </listitem>
1228 <listitem>
1229 <!--
1230 Author: Fujii Masao <fujii@postgresql.org>
1231 2020-07-20 [d05b172a7] Add generic_plans and custom_plans fields into pg_prepar
1234 <para>
1235 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)
1236 </para>
1237 </listitem>
1239 <listitem>
1240 <!--
1241 Author: Fujii Masao <fujii@postgresql.org>
1242 2021-02-15 [46d6e5f56] Display the time when the process started waiting for th
1245 <para>
1246 Add lock wait start time to <link linkend="view-pg-locks"><structname>pg_locks</structname></link> (Atsushi Torikoshi)
1247 </para>
1248 </listitem>
1250 <listitem>
1251 <!--
1252 Author: Fujii Masao <fujii@postgresql.org>
1253 2020-10-02 [8d9a93596] Add pg_stat_wal statistics view.
1254 Author: Fujii Masao <fujii@postgresql.org>
1255 2020-12-02 [01469241b] Track total number of WAL records, FPIs and bytes genera
1256 Author: Fujii Masao <fujii@postgresql.org>
1257 2021-03-09 [ff99918c6] Track total amounts of times spent writing and syncing W
1260 <para>
1261 Add system view <link linkend="monitoring-pg-stat-wal-view"><structname>pg_stat_wal</structname></link> which reports <acronym>WAL</acronym> activity (Masahiro Ikeda)
1262 </para>
1263 </listitem>
1265 <listitem>
1266 <!--
1267 Author: Amit Kapila <akapila@postgresql.org>
1268 2020-10-08 [986816750] Track statistics for spilling of changes from ReorderBuf
1269 Author: Amit Kapila <akapila@postgresql.org>
1270 2020-10-20 [03d51b776] Change the attribute name in pg_stat_replication_slots v
1271 Author: Amit Kapila <akapila@postgresql.org>
1272 2020-10-29 [8e90ec558] Track statistics for streaming of changes from ReorderBu
1273 Author: Amit Kapila <akapila@postgresql.org>
1274 2021-04-16 [f5fc2f5b2] Add information of total data processed to replication s
1277 <para>
1278 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)
1279 </para>
1281 <para>
1282 Function <link linkend="monitoring-stats-functions"><function>pg_stat_reset_replication_slot()</function></link> resets slot statistics.
1283 </para>
1284 </listitem>
1286 <listitem>
1287 <!--
1288 Author: Tom Lane <tgl@sss.pgh.pa.us>
1289 2020-09-14 [f560209c6] Make walsenders show their replication commands in pg_st
1292 <para>
1293 Improve <link linkend="monitoring-pg-stat-activity-view"><structname>pg_stat_activity</structname></link> reporting of walsender processes (Tom Lane)
1294 </para>
1296 <para>
1297 Previously only <acronym>SQL</acronym> commands were reported.
1298 </para>
1299 </listitem>
1301 <listitem>
1302 <!--
1303 Author: Fujii Masao <fujii@postgresql.org>
1304 2021-03-15 [d75288fb2] Make archiver process an auxiliary process.
1307 <para>
1308 Make the archiver process visible in <structname>pg_stat_activity</structname> (Kyotaro Horiguchi)
1309 </para>
1310 </listitem>
1312 <listitem>
1313 <!--
1314 Author: Fujii Masao <fujii@postgresql.org>
1315 2021-03-24 [84007043f] Rename wait event WalrcvExit to WalReceiverExit.
1318 <para>
1319 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)
1320 </para>
1321 </listitem>
1323 <listitem>
1324 <!--
1325 Author: Peter Eisentraut <peter@eisentraut.org>
1326 2021-02-17 [f40c6969d] Routine usage information schema tables
1329 <para>
1330 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)
1331 </para>
1332 </listitem>
1334 </itemizedlist>
1336 </sect4>
1338 <sect4>
1339 <title><acronym>Authentication</acronym></title>
1341 <itemizedlist>
1343 <listitem>
1344 <!--
1345 Author: Andrew Dunstan <andrew@dunslane.net>
1346 2021-03-29 [6d7a6feac] Allow matching the DN of a client certificate for authen
1349 <para>
1350 Allow the certificate's distinguished name (<acronym>DN</acronym>) to be matched for client certificate authentication (Andrew Dunstan)
1351 </para>
1353 <para>
1354 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.
1355 </para>
1356 </listitem>
1358 <listitem>
1359 <!--
1360 Author: Tom Lane <tgl@sss.pgh.pa.us>
1361 2020-09-03 [8f8154a50] Allow records to span multiple lines in pg_hba.conf and
1364 <para>
1365 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)
1366 </para>
1368 <para>
1369 A backslash at the end of a line allows record contents to be continued on the next line.
1370 </para>
1371 </listitem>
1373 <listitem>
1374 <!--
1375 Author: Peter Eisentraut <peter@eisentraut.org>
1376 2021-02-18 [f5465fade] Allow specifying CRL directory
1379 <para>
1380 Allow the specification of a certificate revocation list (<acronym>CRL</acronym>) directory (Kyotaro Horiguchi)
1381 </para>
1383 <para>
1384 This is controlled by server variable <xref linkend="guc-ssl-crl-dir"/> and libpq connection option sslcrldir. Previously only <acronym>CRL</acronym> files could be specified.
1385 </para>
1386 </listitem>
1388 <listitem>
1389 <!--
1390 Author: Tom Lane <tgl@sss.pgh.pa.us>
1391 2020-09-03 [67a472d71] Remove arbitrary restrictions on password length.
1394 <para>
1395 Allow passwords of an arbitrary length (Tom Lane, Nathan Bossart)
1396 </para>
1397 </listitem>
1399 </itemizedlist>
1401 </sect4>
1403 <sect4>
1404 <title>Server Configuration</title>
1406 <itemizedlist>
1408 <listitem>
1409 <!--
1410 Author: Tom Lane <tgl@sss.pgh.pa.us>
1411 2021-01-06 [9877374be] Add idle_session_timeout.
1414 <para>
1415 Add server setting <xref linkend="guc-idle-session-timeout"/> to close idle sessions (Li Japin)
1416 </para>
1418 <para>
1419 This is similar to <xref linkend="guc-idle-in-transaction-session-timeout"/>.
1420 </para>
1421 </listitem>
1423 <listitem>
1424 <!--
1425 Author: Stephen Frost <sfrost@snowman.net>
1426 2021-03-24 [bbcc4eb2e] Change checkpoint_completion_target default to 0.9
1429 <para>
1430 Change <xref linkend="guc-checkpoint-completion-target"/> default to 0.9 (Stephen Frost)
1431 </para>
1433 <para>
1434 The previous default was 0.5.
1435 </para>
1436 </listitem>
1438 <listitem>
1439 <!--
1440 Author: Michael Paquier <michael@paquier.xyz>
1441 2020-08-03 [b8fdee7d0] Add %P to log_line_prefix for parallel group leader
1444 <para>
1445 Allow %P in <xref linkend="guc-log-line-prefix"/> to report the parallel group leader (Justin Pryzby)
1446 </para>
1447 </listitem>
1449 <listitem>
1450 <!--
1451 Author: Michael Paquier <michael@paquier.xyz>
1452 2020-11-07 [a05dbf477] Add GUC_LIST_INPUT and GUC_LIST_QUOTE to unix_socket_dir
1455 <para>
1456 Allow <xref linkend="guc-unix-socket-directories"/> to specify paths as individual, comma-separated quoted strings (Ian Lawrence Barwick)
1457 </para>
1459 <para>
1460 Previously all the paths had to be in a single quoted string.
1461 </para>
1462 </listitem>
1464 <listitem>
1465 <!--
1466 Author: Thomas Munro <tmunro@postgresql.org>
1467 2020-07-31 [84b1c63ad] Preallocate some DSM space at startup.
1470 <para>
1471 Allow startup allocation of dynamic shared memory (Thomas Munro)
1472 </para>
1474 <para>
1475 This is controlled by <xref linkend="guc-min-dynamic-shared-memory"/>. This allows more use of huge pages.
1476 </para>
1477 </listitem>
1479 <listitem>
1480 <!--
1481 Author: Thomas Munro <tmunro@postgresql.org>
1482 2020-07-17 [d2bddc250] Add huge_page_size setting for use on Linux.
1485 <para>
1486 Add setting <xref linkend="guc-huge-page-size"/> to control the size of huge pages used on Linux (Odin Ugedal)
1487 </para>
1488 </listitem>
1490 </itemizedlist>
1492 </sect4>
1494 </sect3>
1496 <sect3>
1497 <title>Streaming Replication and Recovery</title>
1499 <itemizedlist>
1501 <listitem>
1502 <!--
1503 Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
1504 2020-11-12 [9c4f5192f] Allow pg_rewind to use a standby server as the source sy
1507 <para>
1508 Allow standby servers to be rewound via <link linkend="app-pgrewind"><application>pg_rewind</application></link> (Heikki Linnakangas)
1509 </para>
1510 </listitem>
1512 <listitem>
1513 <!--
1514 Author: Fujii Masao <fujii@postgresql.org>
1515 2020-12-02 [942305a36] Allow restore_command parameter to be changed with reloa
1518 <para>
1519 Allow <xref linkend="guc-restore-command"/> setting to be changed during a server reload (Sergei Kornilov)
1520 </para>
1522 <para>
1523 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.
1524 </para>
1525 </listitem>
1527 <listitem>
1528 <!--
1529 Author: Fujii Masao <fujii@postgresql.org>
1530 2021-01-08 [0650ff230] Add GUC to log long wait times on recovery conflicts.
1531 Author: Fujii Masao <fujii@postgresql.org>
1532 2021-01-13 [39b03690b] Log long wait time on recovery conflict when it's resolv
1535 <para>
1536 Add server variable <xref linkend="guc-log-recovery-conflict-waits"/> to report long recovery conflict wait times (Bertrand Drouvot, Masahiko Sawada)
1537 </para>
1538 </listitem>
1540 <listitem>
1541 <!--
1542 Author: Peter Eisentraut <peter@eisentraut.org>
1543 2021-01-18 [15251c0a6] Pause recovery for insufficient parameter settings
1546 <para>
1547 Pause recovery if the primary changes its parameters in a way that prevents replay on the hot standby (Peter Eisentraut)
1548 </para>
1550 <para>
1551 Previously the standby would shut down immediately.
1552 </para>
1553 </listitem>
1555 <listitem>
1556 <!--
1557 Author: Robert Haas <rhaas@postgresql.org>
1558 2021-03-11 [32fd2b57d] Be clear about whether a recovery pause has taken effect
1561 <para>
1562 Add function <link linkend="functions-recovery-control"><function>pg_get_wal_replay_pause_state()</function></link> to report the recovery state (Dilip Kumar)
1563 </para>
1565 <para>
1566 It gives more detailed information than <link linkend="functions-recovery-control"><function>pg_is_wal_replay_paused()</function></link>, which still exists.
1567 </para>
1568 </listitem>
1570 <listitem>
1571 <!--
1572 Author: Tom Lane <tgl@sss.pgh.pa.us>
1573 2021-01-05 [bf8a662c9] Introduce a new GUC_REPORT setting "in_hot_standby".
1576 <para>
1577 Add new server-side variable <xref linkend="guc-in-hot-standby"/> (Haribabu Kommi, Greg Nancarrow, Tom Lane)
1578 </para>
1579 </listitem>
1581 <listitem>
1582 <!--
1583 Author: Amit Kapila <akapila@postgresql.org>
1584 2021-01-12 [d6ad34f34] Optimize DropRelFileNodeBuffers() for recovery.
1587 <para>
1588 Speed truncation of small tables during recovery on clusters with a large number of shared buffers (Kirk Jamison)
1589 </para>
1590 </listitem>
1592 <listitem>
1593 <!--
1594 Author: Thomas Munro <tmunro@postgresql.org>
1595 2021-03-20 [61752afb2] Provide recovery_init_sync_method=syncfs.
1598 <para>
1599 Allow file system sync at the start of crash recovery on Linux (Thomas Munro)
1600 </para>
1602 <para>
1603 By default, Postgres opens and fsyncs every data file at the start of crash recovery.
1604 This new setting, <xref linkend="guc-recovery-init-sync-method"/><literal>=syncfs</literal>, instead syncs each filesystem used by the database cluster.
1605 This allows for faster recovery on systems with many database files.
1606 </para>
1607 </listitem>
1609 <listitem>
1610 <!--
1611 Author: Michael Paquier <michael@paquier.xyz>
1612 2020-07-12 [b1e48bbe6] Include replication origins in SQL functions for commit
1615 <para>
1616 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)
1617 </para>
1618 </listitem>
1620 <listitem>
1621 <!--
1622 Author: Michael Paquier <michael@paquier.xyz>
1623 2020-07-12 [b1e48bbe6] Include replication origins in SQL functions for commit
1626 <para>
1627 Add the replication origin to the record returned by <link linkend="functions-info"><function>pg_last_committed_xact()</function></link> (Movead Li)
1628 </para>
1629 </listitem>
1631 <listitem>
1632 <!--
1633 Author: Michael Paquier <michael@paquier.xyz>
1634 2020-06-14 [cc072641d] Replace superuser check by ACLs for replication origin f
1637 <para>
1638 Allow replication <link linkend="functions-replication">origin functions</link> to be controlled using standard function permission controls (Martín Marqués)
1639 </para>
1641 <para>
1642 Previously these functions could only be executed by super-users, and this is still the default.
1643 </para>
1644 </listitem>
1646 <listitem>
1647 <!--
1648 Author: Fujii Masao <fujii@postgresql.org>
1649 2020-11-16 [2945a488a] Make the standby server promptly handle interrupt signal
1650 OTHER COMMITS
1653 <para>
1654 Improve signal handling reliability (Fujii Masao)
1655 </para>
1657 <para>
1658 GENERAL ENOUGH?
1659 </para>
1660 </listitem>
1662 </itemizedlist>
1664 <sect4>
1665 <title><link linkend="logical-replication">Logical Replication</link></title>
1667 <itemizedlist>
1669 <listitem>
1670 <!--
1671 Author: Amit Kapila <akapila@postgresql.org>
1672 2020-09-03 [464824323] Add support for streaming to built-in logical replicatio
1673 Author: Amit Kapila <akapila@postgresql.org>
1674 2020-12-30 [0aa8a01d0] Extend the output plugin API to allow decoding of prepar
1675 Author: Amit Kapila <akapila@postgresql.org>
1676 2021-01-04 [a271a1b50] Allow decoding at prepare time in ReorderBuffer.
1677 Author: Amit Kapila <akapila@postgresql.org>
1678 2020-08-08 [7259736a6] Implement streaming mode in ReorderBuffer.
1681 <para>
1682 Allow logical replication to stream long in-progress transactions to subscribers (Tomas Vondra, Dilip Kumar, Amit Kapila, Ajin Cherian, Nikhil Sontakke, Stas Kelvich)
1683 </para>
1685 <para>
1686 Previously transactions that exceeded <xref linkend="guc-logical-decoding-work-mem"/> were written to disk until the transaction completed.
1687 </para>
1688 </listitem>
1690 <listitem>
1691 <!--
1692 Author: Amit Kapila <akapila@postgresql.org>
1693 2020-07-28 [45fdc9738] Extend the logical decoding output plugin API with strea
1696 <para>
1697 Enhance the logical replication <acronym>API</acronym> to allow streaming large in-progress transactions (Tomas Vondra, Dilip Kumar, Amit Kapila)
1698 </para>
1700 <para>
1701 The output functions begin with <link linkend="logicaldecoding-output-plugin-stream-start"><literal>stream</literal></link>. <application>test_decoding</application> also supports these.
1702 </para>
1703 </listitem>
1705 <listitem>
1706 <!--
1707 Author: Amit Kapila <akapila@postgresql.org>
1708 2021-02-12 [ce0fdbfe9] Allow multiple xacts during table sync in logical replic
1711 <para>
1712 Allow multiple transactions during table sync in logical replication (Peter Smith, Amit Kapila, and Takamichi Osumi)
1713 </para>
1714 </listitem>
1716 <listitem>
1717 <!--
1718 Author: Amit Kapila <akapila@postgresql.org>
1719 2020-07-20 [0bead9af4] Immediately WAL-log subtransaction and top-level XID ass
1722 <para>
1723 Immediately <acronym>WAL</acronym>-log subtransaction and top-level <type>XID</type> association (Tomas Vondra, Dilip Kumar, Amit Kapila)
1724 </para>
1726 <para>
1727 This is useful for logical decoding.
1728 </para>
1729 </listitem>
1731 <listitem>
1732 <!--
1733 Author: Amit Kapila <akapila@postgresql.org>
1734 2020-12-30 [0aa8a01d0] Extend the output plugin API to allow decoding of prepar
1735 Author: Amit Kapila <akapila@postgresql.org>
1736 2021-01-04 [a271a1b50] Allow decoding at prepare time in ReorderBuffer.
1737 Author: Amit Kapila <akapila@postgresql.org>
1738 2021-03-03 [19890a064] Add option to enable two_phase commits via pg_create_log
1741 <para>
1742 Enhance logical decoding APIs to handle two-phase commits (Ajin Cherian, Amit Kapila, Nikhil Sontakke, Stas Kelvich)
1743 </para>
1745 <para>
1746 This is controlled via <link linkend="functions-replication"><function>pg_create_logical_replication_slot()</function></link>.
1747 </para>
1748 </listitem>
1750 <listitem>
1751 <!--
1752 Author: Amit Kapila <akapila@postgresql.org>
1753 2020-07-23 [c55040ccd] WAL Log invalidations at command end with wal_level=logi
1756 <para>
1757 Generate <acronym>WAL</acronym> invalidations message during command completion when using logical replication (Dilip Kumar, Tomas Vondra, Amit Kapila)
1758 </para>
1760 <para>
1761 When logical replication is disabled, <acronym>WAL</acronym> invalidation messages are generated at transaction completion. This allows logical streaming of in-progress transactions.
1762 </para>
1763 </listitem>
1765 <listitem>
1766 <!--
1767 Author: Amit Kapila <akapila@postgresql.org>
1768 2020-10-15 [d7eb52d71] Execute invalidation messages for each XLOG_XACT_INVALID
1771 <para>
1772 Allow logical decoding to more efficiently process cache invalidation messages (Dilip Kumar)
1773 </para>
1775 <para>
1776 This allows <link linkend="logicaldecoding">logical decoding</link> to work efficiently in presence of a large amount of <acronym>DDL</acronym>.
1777 </para>
1778 </listitem>
1780 <listitem>
1781 <!--
1782 Author: Amit Kapila <akapila@postgresql.org>
1783 2021-04-06 [ac4645c01] Allow pgoutput to send logical decoding messages.
1786 <para>
1787 Allow control over whether logical decoding messages are sent to the replication stream (David Pirotte, Euler Taveira)
1788 </para>
1789 </listitem>
1791 <listitem>
1792 <!--
1793 Author: Tom Lane <tgl@sss.pgh.pa.us>
1794 2020-07-18 [9de77b545] Allow logical replication to transfer data in binary for
1797 <para>
1798 Allow logical replication subscriptions to use binary transfer mode (Dave Cramer)
1799 </para>
1801 <para>
1802 This is faster than text mode, but slightly less robust.
1803 </para>
1804 </listitem>
1806 <listitem>
1807 <!--
1808 Author: Amit Kapila <akapila@postgresql.org>
1809 2021-03-30 [f64ea6dc5] Add a xid argument to the filter_prepare callback for ou
1812 <para>
1813 Allow logical decoding to be filtered by xid (Markus Wanner)
1814 </para>
1815 </listitem>
1817 </itemizedlist>
1818 </sect4>
1820 </sect3>
1822 <sect3>
1823 <title><link linkend="sql-select"><command>SELECT</command></link>, <link linkend="sql-insert"><command>INSERT</command></link></title>
1825 <itemizedlist>
1827 <listitem>
1828 <!--
1829 Author: Tom Lane <tgl@sss.pgh.pa.us>
1830 2020-09-18 [06a7c3154] Allow most keywords to be used as column labels without
1833 <para>
1834 Reduce the number of keywords that can't be used as column labels without <literal>AS</literal> (Mark Dilger)
1835 </para>
1837 <para>
1838 There are now 90% fewer restricted keywords.
1839 </para>
1840 </listitem>
1842 <listitem>
1843 <!--
1844 Author: Peter Eisentraut <peter@eisentraut.org>
1845 2021-03-31 [055fee7eb] Allow an alias to be attached to a <literal>JOIN ... USING</literal>
1848 <para>
1849 Allow an alias to be specified for <literal>JOIN</literal>'s <literal>USING</literal> clause (Peter Eisentraut)
1850 </para>
1852 <para>
1853 The alias is created by using <literal>AS</literal> after the <literal>USING</literal> clause and represents an alias for the <literal>USING</literal> columns.
1854 </para>
1855 </listitem>
1857 <listitem>
1858 <!--
1859 Author: Tomas Vondra <tomas.vondra@postgresql.org>
1860 2021-03-18 [be45be9c3] Implement GROUP BY DISTINCT
1863 <para>
1864 Allow <literal>DISTINCT</literal> to be added to <literal>GROUP BY</literal> to remove duplicate <literal>GROUPING SET</literal> combinations (Vik Fearing)
1865 </para>
1867 <para>
1868 For example, <literal>GROUP BY CUBE (a,b), CUBE (b,c)</literal> will generate duplicate grouping combinations without <literal>DISTINCT</literal>.
1869 </para>
1870 </listitem>
1872 <listitem>
1873 <!--
1874 Author: Tom Lane <tgl@sss.pgh.pa.us>
1875 2020-11-22 [17958972f] Allow a multi-row <command>INSERT</command> to specify DEFAULTs for a gener
1878 <para>
1879 Properly handle <literal>DEFAULT</literal> values for columns in multi-column inserts (Dean Rasheed)
1880 </para>
1882 <para>
1883 This used to throw an error.
1884 </para>
1885 </listitem>
1887 <listitem>
1888 <!--
1889 Author: Peter Eisentraut <peter@eisentraut.org>
1890 2021-02-01 [3696a600e] SEARCH and CYCLE clauses
1891 Author: Peter Eisentraut <peter@eisentraut.org>
1892 2021-02-27 [f4adc41c4] Enhanced cycle mark values
1895 <para>
1896 Add <acronym>SQL</acronym>-standard <literal>SEARCH</literal> and <literal>CYCLE</literal> clauses for <link linkend="queries-with">common table expressions</link> (Peter Eisentraut)
1897 </para>
1899 <para>
1900 This could be accomplished previously using existing syntax.
1901 </para>
1902 </listitem>
1904 <listitem>
1905 <!--
1906 Author: Tom Lane <tgl@sss.pgh.pa.us>
1907 2021-04-13 [6c0373ab7] Allow table-qualified variable names in ON CONFLICT ...
1910 <para>
1911 Allow the <literal>WHERE</literal> clause of <literal>ON CONFLICT</literal> to be table-qualified (Tom Lane)
1912 </para>
1914 <para>
1915 Only the target table can be referenced.
1916 </para>
1917 </listitem>
1919 </itemizedlist>
1921 </sect3>
1923 <sect3>
1924 <title>Utility Commands</title>
1926 <itemizedlist>
1928 <listitem>
1929 <!--
1930 Author: Thomas Munro <tmunro@postgresql.org>
1931 2021-03-17 [9e7ccd9ef] Enable parallelism in REFRESH MATERIALIZED VIEW.
1934 <para>
1935 Allow <link linkend="sql-refreshmaterializedview"><command>REFRESH MATERIALIZED VIEW</command></link> to use parallelism (Bharath Rupireddy)
1936 </para>
1937 </listitem>
1939 <listitem>
1940 <!--
1941 Author: Michael Paquier <michael@paquier.xyz>
1942 2021-02-04 [c5b286047] Add TABLESPACE option to REINDEX
1945 <para>
1946 Allow <link linkend="sql-reindex"><command>REINDEX</command></link> to change the tablespace of the new index (Alexey Kondratov, Michael Paquier, Justin Pryzby)
1947 </para>
1949 <para>
1950 This is done by specifying a <literal>TABLESPACE</literal> clause.
1951 </para>
1952 </listitem>
1954 <listitem>
1955 <!--
1956 Author: Michael Paquier <michael@paquier.xyz>
1957 2020-09-08 [a6642b3ae] Add support for partitioned tables and indexes in REINDE
1960 <para>
1961 Allow <command>REINDEX</command> to process all child tables or indexes of a partitioned relation (Justin Pryzby, Michael Paquier)
1962 </para>
1963 </listitem>
1965 <listitem>
1966 <!--
1967 Author: Tom Lane <tgl@sss.pgh.pa.us>
1968 2020-07-25 [0a0727ccf] Improve performance of binary COPY FROM through better b
1971 <para>
1972 Improve the performance of <link linkend="sql-copy"><command>COPY FROM</command></link> in binary mode (Bharath Rupireddy, Amit Langote)
1973 </para>
1974 </listitem>
1976 <listitem>
1977 <!--
1978 Author: Tom Lane <tgl@sss.pgh.pa.us>
1979 2020-11-04 [40c24bfef] Improve our ability to regurgitate SQL-syntax function c
1982 <para>
1983 Preserve <acronym>SQL</acronym> standard syntax in <link linkend="sql-createview">view definitions</link>, if possible (Tom Lane)
1984 </para>
1986 <para>
1987 Previously non-function call <acronym>SQL</acronym> standard syntax, e.g. <link linkend="functions-formatting"><function>EXTRACT</function></link>, were converted to non-<acronym>SQL</acronym> standard function calls.
1988 </para>
1989 </listitem>
1991 <listitem>
1992 <!--
1993 Author: Peter Eisentraut <peter@eisentraut.org>
1994 2021-01-30 [6aaaa76bb] Allow GRANTED BY clause in normal GRANT and REVOKE state
1997 <para>
1998 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)
1999 </para>
2000 </listitem>
2002 <listitem>
2003 <!--
2004 Author: Tom Lane <tgl@sss.pgh.pa.us>
2005 2020-11-14 [92bf7e2d0] Provide the OR REPLACE option for CREATE TRIGGER.
2008 <para>
2009 Add <literal>OR REPLACE</literal> for <link linkend="sql-createtrigger"><command>CREATE TRIGGER</command></link> (Takamichi Osumi)
2010 </para>
2012 <para>
2013 This allows pre-existing triggers to be conditionally replaced.
2014 </para>
2015 </listitem>
2017 <listitem>
2018 <!--
2019 Author: Fujii Masao <fujii@postgresql.org>
2020 2021-04-08 [8ff1c9464] Allow TRUNCATE command to truncate foreign tables.
2023 <para>
2024 Allow <link linkend="sql-truncate"><command>TRUNCATE</command></link> to operate on foreign tables (Kazutaka Onishi, Kohei KaiGai)
2025 </para>
2027 <para>
2028 The <link linkend="postgres-fdw"><application>postgres_fdw</application></link> module also now supports this.
2029 </para>
2030 </listitem>
2032 <listitem>
2033 <!--
2034 Author: Peter Eisentraut <peter@eisentraut.org>
2035 2021-04-06 [82ed7748b] ALTER SUBSCRIPTION ... ADD/DROP PUBLICATION
2038 <para>
2039 Allow publications to be more easily added and removed (Japin Li)
2040 </para>
2042 <para>
2043 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.
2044 </para>
2045 </listitem>
2047 <listitem>
2048 <!--
2049 Author: Peter Eisentraut <peter@eisentraut.org>
2050 2021-01-30 [dfb75e478] Add primary keys and unique constraints to system catalo
2051 Author: Tom Lane <tgl@sss.pgh.pa.us>
2052 2021-02-02 [62f34097c] Build in some knowledge about foreign-key relationships
2055 <para>
2056 Add primary keys, unique constraints, and foreign keys to <link linkend="catalogs">system catalogs</link> (Peter Eisentraut)
2057 </para>
2059 <para>
2060 This helps <acronym>GUI</acronym> tools analyze the system tables.
2061 </para>
2062 </listitem>
2064 <listitem>
2065 <!--
2066 Author: Peter Eisentraut <peter@eisentraut.org>
2067 2020-09-17 [45b980570] Allow CURRENT_ROLE where CURRENT_USER is accepted
2070 <para>
2071 Allow <link linkend="functions-info"><literal>CURRENT_ROLE</literal></link> every place <literal>CURRENT_USER</literal> is accepted (Peter Eisentraut)
2072 </para>
2073 </listitem>
2075 </itemizedlist>
2077 </sect3>
2079 <sect3>
2080 <title>Data Types</title>
2082 <itemizedlist>
2084 <listitem>
2085 <!--
2086 Author: Tom Lane <tgl@sss.pgh.pa.us>
2087 2020-12-09 [c7aba7c14] Support subscripting of arbitrary types, not only arrays
2090 <para>
2091 Allow extensions and built-in data types to implement <link linkend="sql-altertype">subscripting</link> (Dmitry Dolgov)
2092 </para>
2094 <para>
2095 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
2096 assign portions of a value of any type for which the concept makes sense.
2097 </para>
2098 </listitem>
2100 <listitem>
2101 <!--
2102 Author: Alexander Korotkov <akorotkov@postgresql.org>
2103 2021-01-31 [676887a3b] Implementation of subscripting for jsonb
2104 Author: Alexander Korotkov <akorotkov@postgresql.org>
2105 2021-01-31 [81fcc72e6] Filling array gaps during jsonb subscripting
2106 Author: Alexander Korotkov <akorotkov@postgresql.org>
2107 2021-01-31 [aa6e46daf] Throw error when assigning jsonb scalar instead of a com
2110 <para>
2111 Allow subscripting of <link linkend="datatype-json"><type>JSONB</type></link> (Dmitry Dolgov)
2112 </para>
2114 <para>
2115 <type>JSONB</type> subscripting can be used to extract and assign to portions of <type>JSONB</type> documents.
2116 </para>
2117 </listitem>
2119 <listitem>
2120 <!--
2121 Author: Author: Alexander Korotkov <akorotkov@postgresql.org>
2122 2020-12-20 [6df7a9698] Multirange datatypes
2123 Author: Alexander Korotkov <akorotkov@postgresql.org>
2124 2020-12-29 [db6335b5b] Add support of multirange matching to the existing range
2125 Author: Alexander Korotkov <akorotkov@postgresql.org>
2126 2020-12-30 [62097a4cc] Fix selectivity estimation @&gt; (anymultirange, anyrange)
2129 <para>
2130 Add support for <link linkend="rangetypes">multirange data types</link> (Paul Jungwirth, Alexander Korotkov)
2131 </para>
2133 <para>
2134 These are like range data types, but they allow the specification of multiple, ordered, non-overlapping ranges.
2135 All existing range types now also support multirange versions.
2136 </para>
2137 </listitem>
2139 <listitem>
2140 <!--
2141 Author: Tom Lane <tgl@sss.pgh.pa.us>
2142 2020-11-23 [0cc993278] Rename the "point is strictly above/below point" compari
2145 <para>
2146 Add <link linkend="functions-geometry">point operators</link> &lt;&lt;| and |&gt;&gt; to be strictly above/below geometry (Emre Hasegeli)
2147 </para>
2149 <para>
2150 Previously &gt;^ and &lt;^ 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?
2151 </para>
2152 </listitem>
2154 <listitem>
2155 <!--
2156 Author: Peter Eisentraut <peter@eisentraut.org>
2157 2020-06-08 [cbcc8726b] Update snowball
2158 Author: Peter Eisentraut <peter@eisentraut.org>
2159 2020-06-08 [c2e71cb35] Update documentation for snowball update
2160 Author: Peter Eisentraut <peter@eisentraut.org>
2161 2021-02-19 [678d0e239] Update snowball
2164 <para>
2165 Add support for the <link linkend="textsearch-snowball-dictionary">stemming</link> of languages Armenian, Basque, Catalan, Hindi, Serbian, and Yiddish (Peter Eisentraut)
2166 </para>
2167 </listitem>
2169 <listitem>
2170 <!--
2171 Author: Tom Lane <tgl@sss.pgh.pa.us>
2172 2020-09-23 [83b61319a] Improve behavior of tsearch_readline(), and remove t_rea
2175 <para>
2176 Allow <link linkend="textsearch-intro-configurations">tsearch data files</link> to have unlimited line lengths (Tom Lane)
2177 </para>
2179 <para>
2180 The previous limit was 4k bytes. Also remove function <function>t_readline()</function>.
2181 </para>
2182 </listitem>
2184 <listitem>
2185 <!--
2186 Author: Tom Lane <tgl@sss.pgh.pa.us>
2187 2020-07-22 [a57d312a7] Support infinity and -infinity in the numeric data type.
2190 <para>
2191 Add support for infinity and <literal>-infinity</literal> values to the <link linkend="datatype-numeric">numeric data type</link> (Tom Lane)
2192 </para>
2194 <para>
2195 Floating point data types already supported these.
2196 </para>
2197 </listitem>
2199 <listitem>
2200 <!--
2201 Author: Tom Lane <tgl@sss.pgh.pa.us>
2202 2020-11-21 [8597a48d0] Fix FPeq() and friends to get the right answers for infi
2205 <para>
2206 Improve the accuracy of floating point computations involving infinity (Tom Lane)
2207 </para>
2208 </listitem>
2210 <listitem>
2211 <!--
2212 Author: Tom Lane <tgl@sss.pgh.pa.us>
2213 2020-11-04 [fac83dbd6] Remove underflow error in float division with infinite d
2216 <para>
2217 Have non-zero <link linkend="datatype-float">float values</link> divided by infinity return zero (Kyotaro Horiguchi)
2218 </para>
2220 <para>
2221 Previously such operations produced underflow errors.
2222 </para>
2223 </listitem>
2225 <listitem>
2226 <!--
2227 Author: Tom Lane <tgl@sss.pgh.pa.us>
2228 2020-07-20 [4fb6aeb4f] Make floating-point "NaN / 0" return NaN instead of rais
2231 <para>
2232 Cause floating-point division of NaN by zero to return NaN (Tom Lane)
2233 </para>
2235 <para>
2236 Previously this returned an error. Division with Numerics always returned NaN.
2237 </para>
2238 </listitem>
2240 <listitem>
2241 <!--
2242 Author: Fujii Masao <fujii@postgresql.org>
2243 2020-06-30 [9bae7e4cd] Add +(pg_lsn,numeric) and -(pg_lsn,numeric) operators.
2246 <para>
2247 Add operators to add and subtract <link linkend="datatype-pg-lsn"><type>LSN</type></link> and numeric (byte) values (Fujii Masao)
2248 </para>
2249 </listitem>
2251 <listitem>
2252 <!--
2253 Author: Tom Lane <tgl@sss.pgh.pa.us>
2254 2020-07-21 [670c0a1d4] Weaken type-OID-matching checks in array_recv and record
2257 <para>
2258 Allow <link linkend="protocol-format-codes">binary data transfer</link> to be more forgiving of array and record <type>OID</type> mismatches (Tom Lane)
2259 </para>
2260 </listitem>
2262 <listitem>
2263 <!--
2264 Author: Tom Lane <tgl@sss.pgh.pa.us>
2265 2020-07-06 [f7f70d5e2] Create composite array types for initdb-created relation
2268 <para>
2269 Create composite array types for most system relations (Wenjing Zeng)
2270 </para>
2271 </listitem>
2273 </itemizedlist>
2275 </sect3>
2277 <sect3>
2278 <title>Functions</title>
2280 <itemizedlist>
2282 <listitem>
2283 <!--
2284 Author: Peter Eisentraut <peter@eisentraut.org>
2285 2021-04-07 [e717a9a18] SQL-standard function body
2288 <para>
2289 Allow <acronym>SQL</acronym>-language <link linkend="sql-createfunction">functions</link> and <link linkend="sql-createprocedure">procedures</link> to use <acronym>SQL</acronym>-standard function bodies (Peter Eisentraut)
2290 </para>
2292 <para>
2293 Previously only single-quoted or $$-quoted function bodies were supported.
2294 </para>
2295 </listitem>
2297 <listitem>
2298 <!--
2299 Author: Peter Eisentraut <peter@eisentraut.org>
2300 2020-10-05 [2453ea142] Support for OUT parameters in procedures
2301 Author: Peter Eisentraut <peter@eisentraut.org>
2302 2020-10-27 [9213462c5] Make procedure OUT parameters work with JDBC
2305 <para>
2306 Allow <link linkend="sql-createprocedure">procedures</link> to have <literal>OUT</literal> parameters (Peter Eisentraut)
2307 </para>
2308 </listitem>
2310 <listitem>
2311 <!--
2312 Author: Tom Lane <tgl@sss.pgh.pa.us>
2313 2020-11-04 [9e38c2bb5] Declare assorted array functions using anycompatible not
2316 <para>
2317 Allow some array functions to operate on a mix of compatible data types (Tom Lane)
2318 </para>
2320 <para>
2321 The functions are <link linkend="functions-array"><function>array_append()</function></link>, <function>array_prepend()</function>, <function>array_cat()</function>, <function>array_position()</function>,
2322 <function>array_positions()</function>, <function>array_remove()</function>, <function>array_replace()</function>, and
2323 <link linkend="functions-math"><function>width_bucket()</function></link>. Previously only identical data types could be used.
2324 </para>
2325 </listitem>
2327 <listitem>
2328 <!--
2329 Author: Tom Lane <tgl@sss.pgh.pa.us>
2330 2021-03-03 [0a687c8f1] Add trim_array() function.
2333 <para>
2334 Add <acronym>SQL</acronym>-standard <link linkend="functions-array"><function>trim_array()</function></link> function (Vik Fearing)
2335 </para>
2337 <para>
2338 This can already be done with array slices.
2339 </para>
2340 </listitem>
2342 <listitem>
2343 <!--
2344 Author: Tom Lane <tgl@sss.pgh.pa.us>
2345 2021-01-18 [a6cf3df4e] Add bytea equivalents of ltrim() and rtrim().
2348 <para>
2349 Add bytea equivalents of <link linkend="functions-binarystring"><function>ltrim()</function></link> and <function>rtrim()</function> (Joel Jacobson)
2350 </para>
2351 </listitem>
2353 <listitem>
2354 <!--
2355 Author: Tom Lane <tgl@sss.pgh.pa.us>
2356 2020-11-13 [ec0294fb2] Support negative indexes in split_part().
2359 <para>
2360 Support negative indexes in <link linkend="functions-string"><function>split_part()</function></link> (Nikhil Benesch)
2361 </para>
2363 <para>
2364 Negative values start from the last field and count backward.
2365 </para>
2366 </listitem>
2368 <listitem>
2369 <!--
2370 Author: Tom Lane <tgl@sss.pgh.pa.us>
2371 2020-09-02 [66f163068] Add string_to_table() function.
2374 <para>
2375 Add <link linkend="functions-string"><function>string_to_table()</function></link> function to split a string on delimiters (Pavel Stehule)
2376 </para>
2378 <para>
2379 This is similar to the <link linkend="functions-string"><function>regexp_split_to_table()</function></link> function.
2380 </para>
2381 </listitem>
2383 <listitem>
2384 <!--
2385 Author: Peter Eisentraut <peter@eisentraut.org>
2386 2021-03-29 [f37fec837] Add unistr function
2389 <para>
2390 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)
2391 </para>
2393 <para>
2394 This is similar to how Unicode can be specified in literal string.
2395 </para>
2396 </listitem>
2398 <listitem>
2399 <!--
2400 Author: Peter Eisentraut <peter@eisentraut.org>
2401 2021-03-06 [f9a0392e1] Add bit_xor aggregate function
2404 <para>
2405 Add <link linkend="functions-aggregate"><function>bit_xor()</function></link> XOR aggregate function (Alexey Bashtanov)
2406 </para>
2407 </listitem>
2409 <listitem>
2410 <!--
2411 Author: Peter Eisentraut <peter@eisentraut.org>
2412 2021-03-23 [a6715af1e] Add bit_count SQL function
2415 <para>
2416 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)
2417 </para>
2418 </listitem>
2420 <listitem>
2421 <!--
2422 Author: Peter Eisentraut <peter@eisentraut.org>
2423 2021-03-24 [49ab61f0b] Add date_bin function
2424 Author: Peter Eisentraut <peter@eisentraut.org>
2425 2021-04-10 [496e58bb0] Improve behavior of date_bin with origin in the future
2428 <para>
2429 Add <link linkend="functions-datetime-bin"><function>date_bin()</function></link> function (John Naylor)
2430 </para>
2432 <para>
2433 The function <function>date_bin()</function> "bins" the input timestamp into a specified interval aligned with a specified origin.
2434 </para>
2435 </listitem>
2437 <listitem>
2438 <!--
2439 Author: Tom Lane <tgl@sss.pgh.pa.us>
2440 2020-09-29 [a094c8ff5] Fix make_timestamp[tz] to accept negative years as meani
2443 <para>
2444 Allow <link linkend="functions-datetime"><function>make_timestamp()</function></link>/<function>make_timestamptz()</function> to accept negative years (Peter Eisentraut)
2445 </para>
2447 <para>
2448 They are interpreted as <literal>BC</literal> years.
2449 </para>
2450 </listitem>
2452 <listitem>
2453 <!--
2454 Author: Peter Eisentraut <peter@eisentraut.org>
2455 2020-06-29 [78c887679] Add current substring regular expression syntax
2458 <para>
2459 Add newer regular expression <link linkend="functions-string"><function>substring()</function></link> syntax (Peter Eisentraut)
2460 </para>
2462 <para>
2463 The new syntax is <literal>SUBSTRING(text SIMILAR pattern ESCAPE escapechar)</literal>. The previous standard syntax was <literal>SUBSTRING(text FROM pattern FOR escapechar)</literal>, and is still supported by Postgres.
2464 </para>
2465 </listitem>
2467 <listitem>
2468 <!--
2469 Author: Tom Lane <tgl@sss.pgh.pa.us>
2470 2021-02-25 [2a0af7fe4] Allow complemented character class escapes within regex
2473 <para>
2474 Allow complemented character class escapes <link linkend="posix-escape-sequences">\D</link>, <literal>\S</literal>, and <literal>\W</literal> within regex brackets (Tom Lane)
2475 </para>
2476 </listitem>
2478 <listitem>
2479 <!--
2480 Author: Tom Lane <tgl@sss.pgh.pa.us>
2481 2021-02-25 [2a0af7fe4] Allow complemented character class escapes within regex
2484 <para>
2485 Add <link linkend="posix-escape-sequences"><literal>[[:word:]]</literal></link> as a character class to match \w (Tom Lane)
2486 </para>
2487 </listitem>
2489 <listitem>
2490 <!--
2491 Author: Tom Lane <tgl@sss.pgh.pa.us>
2492 2020-11-04 [5c292e6b9] Declare lead() and lag() using anycompatible not anyelem
2495 <para>
2496 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)
2497 </para>
2498 </listitem>
2500 <listitem>
2501 <!--
2502 Author: Tom Lane <tgl@sss.pgh.pa.us>
2503 2020-06-14 [decbe2bfb] Fix behavior of exp() and power() for infinity inputs.
2504 Author: Tom Lane <tgl@sss.pgh.pa.us>
2505 2020-06-15 [e532b1d57] Fix power() for infinity inputs some more.
2506 Author: Tom Lane <tgl@sss.pgh.pa.us>
2507 2020-06-15 [5674eb987] Fix power() for large inputs yet more.
2510 <para>
2511 Cause <link linkend="functions-math"><function>exp()</function></link> and <function>power()</function> for negative-infinity exponents to return zero (Tom Lane)
2512 </para>
2514 <para>
2515 Previously they often returned underflow errors.
2516 </para>
2517 </listitem>
2519 <listitem>
2520 <!--
2521 Author: Tom Lane <tgl@sss.pgh.pa.us>
2522 2020-07-25 [8a37951ee] Mark built-in coercion functions as leakproof where poss
2525 <para>
2526 Mark built-in type coercion functions as leakproof where possible (Tom Lane)
2527 </para>
2529 <para>
2530 This allows more use of functions that require type conversion in security-sensitive situations.
2531 </para>
2532 </listitem>
2534 <listitem>
2535 <!--
2536 Author: Tom Lane <tgl@sss.pgh.pa.us>
2537 2021-03-08 [fed10d4ee] Properly mark pg_stat_get_subscription() as returning a
2540 <para>
2541 Mark <function>pg_stat_get_subscription()</function> as returning a set (Tom Lane)
2542 </para>
2544 <para>
2545 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.
2546 </para>
2547 </listitem>
2549 <listitem>
2550 <!--
2551 Author: Tom Lane <tgl@sss.pgh.pa.us>
2552 2021-01-13 [5a6f9bce8] Mark inet_server_addr() and inet_server_port() as parall
2555 <para>
2556 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)
2557 </para>
2558 </listitem>
2560 <listitem>
2561 <!--
2562 Author: Michael Paquier <michael@paquier.xyz>
2563 2020-07-15 [2a10fdc43] Eliminate cache lookup errors in SQL functions for objec
2566 <para>
2567 Change <link linkend="functions-info"><function>pg_describe_object()</function></link>, <function>pg_identify_object()</function>, and
2568 <function>pg_identify_object_as_address()</function> to always report helpful error messages for non-existent objects (Michael Paquier)
2569 </para>
2570 </listitem>
2572 </itemizedlist>
2574 </sect3>
2576 <sect3>
2577 <title><link linkend="plpgsql">PL/pgSQL</link></title>
2579 <itemizedlist>
2581 <listitem>
2582 <!--
2583 Author: Tom Lane <tgl@sss.pgh.pa.us>
2584 2021-01-04 [c9d529848] Re-implement pl/pgsql's expression and assignment parsin
2587 <para>
2588 Improve PL/pgSQL's <link linkend="plpgsql-expressions">expression</link> and <link linkend="plpgsql-statements-assignment">assignment</link> parsing (Tom Lane)
2589 </para>
2591 <para>
2592 This adds nested record and array slicing support.
2593 </para>
2594 </listitem>
2596 <listitem>
2597 <!--
2598 Author: Tom Lane <tgl@sss.pgh.pa.us>
2599 2020-06-12 [2f48ede08] Avoid using a cursor in plpgsql's RETURN QUERY statement
2602 <para>
2603 Allow plpgsql's <link linkend="plpgsql-control-structures"><literal>RETURN QUERY</literal></link> to execute its query using parallelism (Tom Lane)
2604 </para>
2605 </listitem>
2607 <listitem>
2608 <!--
2609 Author: Tom Lane <tgl@sss.pgh.pa.us>
2610 2021-01-25 [ee895a655] Improve performance of repeated CALLs within plpgsql pro
2613 <para>
2614 Improve performance of repeated <link linkend="plpgsql-transactions">CALL</link>s within plpgsql procedures (Pavel Stehule, Tom Lane)
2615 </para>
2616 </listitem>
2618 </itemizedlist>
2620 </sect3>
2622 <sect3>
2623 <title>Client Interfaces</title>
2625 <itemizedlist>
2627 <listitem>
2628 <!--
2629 Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
2630 2021-03-15 [acb7e4eb6] Implement pipeline mode in libpq
2633 <para>
2634 Add <link linkend="libpq-pipeline-sending">pipeline</link> mode to libpq (Craig Ringer, Matthieu Garrigues, Álvaro Herrera)
2635 </para>
2637 <para>
2638 This allows multiple queries to be sent and only wait for completion when a specific synchronization message is sent.
2639 </para>
2640 </listitem>
2642 <listitem>
2643 <!--
2644 Author: Tom Lane <tgl@sss.pgh.pa.us>
2645 2021-03-02 [d16f8c8e4] Mark default_transaction_read_only as GUC_REPORT.
2646 Author: Tom Lane <tgl@sss.pgh.pa.us>
2647 2021-03-02 [ee28cacf6] Extend the abilities of libpq's target_session_attrs par
2650 <para>
2651 Enhance libpq's <link linkend="libpq-paramkeywords"><option>target_session_attrs</option></link> parameter options (Haribabu Kommi, Greg Nancarrow, Vignesh C, Tom Lane)
2652 </para>
2654 <para>
2655 New options are <literal>read-only</literal>, <literal>primary</literal>, <literal>standby</literal>, and <literal>prefer-standby</literal>.
2656 </para>
2657 </listitem>
2659 <listitem>
2660 <!--
2661 Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
2662 2021-03-30 [198b3716d] Improve PQtrace() output format
2665 <para>
2666 Improve the output format of libpq's <link linkend="libpq-control"><function>PQtrace()</function></link> (Aya Iwata, Álvaro Herrera)
2667 </para>
2668 </listitem>
2670 <listitem>
2671 <!--
2672 Author: Tom Lane <tgl@sss.pgh.pa.us>
2673 2020-09-22 [c0cb87fbb] Remove arbitrary line length limit for libpq service fil
2676 <para>
2677 Allow the libpq <link linkend="libpq-pgservice">service file</link> to have unlimited line lengths (Daniel Gustafsson)
2678 </para>
2680 <para>
2681 The previous limit was 255 bytes.
2682 </para>
2683 </listitem>
2685 <listitem>
2686 <!--
2687 Author: Michael Meskes <meskes@postgresql.org>
2688 2021-03-24 [ad8305a43] Add DECLARE STATEMENT command to ECPG
2691 <para>
2692 Allow an <literal>ECPG SQL</literal> identifier to be linked to a specific connection (Hayato Kuroda)
2693 </para>
2695 <para>
2696 This is done via <link linkend="ecpg-sql-declare-statement"><literal>DECLARE ... STATEMENT</literal></link>.
2697 </para>
2698 </listitem>
2700 </itemizedlist>
2702 </sect3>
2704 <sect3>
2705 <title>Client Applications</title>
2707 <itemizedlist>
2709 <listitem>
2710 <!--
2711 Author: Michael Paquier <michael@paquier.xyz>
2712 2021-03-03 [57e6db706] Add - -tablespace option to reindexdb
2715 <para>
2716 Allow <link linkend="app-reindexdb"><application>reindexdb</application></link> to change the tablespace of the new index (Michael Paquier)
2717 </para>
2719 <para>
2720 This is done by specifying <option>--tablespace</option>.
2721 </para>
2722 </listitem>
2724 <listitem>
2725 <!--
2726 Author: Michael Paquier <michael@paquier.xyz>
2727 2020-06-22 [9550ea302] Add - -no-index-cleanup and - -no-truncate to vacuumdb.
2730 <para>
2731 Allow <link linkend="app-vacuumdb"><application>vacuumdb</application></link> to skip index cleanup and truncation (Nathan Bossart)
2732 </para>
2734 <para>
2735 The options are <option>--no-index-cleanup</option> and <option>--no-truncate</option>.
2736 </para>
2737 </listitem>
2739 <listitem>
2740 <!--
2741 Author: Michael Paquier <michael@paquier.xyz>
2742 2021-03-31 [6568cef26] Add support for - -extension in pg_dump
2745 <para>
2746 Allow <link linkend="app-pgdump"><application>pg_dump</application></link> to dump only certain extensions (Guillaume Lelarge)
2747 </para>
2749 <para>
2750 This is controlled by option <option>--extension</option>.
2751 </para>
2752 </listitem>
2754 <listitem>
2755 <!--
2756 Author: Dean Rasheed <dean.a.rasheed@gmail.com>
2757 2021-04-06 [6b258e3d6] pgbench: Function to generate random permutations.
2760 <para>
2761 Add <link linkend="pgbench"><application>pgbench</application></link> <function>permute()</function> function to randomly shuffle values (Fabien Coelho, Hironobu Suzuki, Dean Rasheed)
2762 </para>
2763 </listitem>
2765 <listitem>
2766 <!--
2767 Author: Tom Lane <tgl@sss.pgh.pa.us>
2768 2020-09-17 [99175141c] Improve common/logging.c's support for multiple verbosit
2771 <para>
2772 Allow multiple verbose option specifications (<option>-v</option>) to increase the logging verbosity (Tom Lane)
2773 </para>
2775 <para>
2776 This is now supported by <link linkend="app-pgdump"><application>pg_dump</application></link>, <link linkend="app-pg-dumpall"><application>pg_dumpall</application></link>,
2777 and <link linkend="app-pgrestore"><application>pg_restore</application></link>.
2778 </para>
2779 </listitem>
2781 </itemizedlist>
2783 <sect4>
2784 <title><xref linkend="app-psql"/></title>
2786 <itemizedlist>
2788 <listitem>
2789 <!--
2790 Author: Tom Lane <tgl@sss.pgh.pa.us>
2791 2021-04-07 [a3027e1e7] Allow psql's \df and \do commands to specify argument ty
2794 <para>
2795 Allow <application>psql</application>'s \df and \do commands to specify function and operator argument types (Greg Sabino Mullane, Tom Lane)
2796 </para>
2798 <para>
2799 This helps reduce the number of matches for overloaded entries.
2800 </para>
2801 </listitem>
2803 <listitem>
2804 <!--
2805 Author: Michael Paquier <michael@paquier.xyz>
2806 2020-09-02 [07f386ede] Add access method names to \d[i|m|t]+ in psql
2809 <para>
2810 Add an access method column to <application>psql</application>'s \d[i|m|t]+ output (Georgios Kokolatos)
2811 </para>
2812 </listitem>
2814 <listitem>
2815 <!--
2816 Author: Tom Lane <tgl@sss.pgh.pa.us>
2817 2021-01-05 [7d80441d2] Allow psql's \dt and \di to show TOAST tables and their
2820 <para>
2821 Allow <application>psql</application>'s \dt and \di to show <acronym>TOAST</acronym> tables and their indexes (Justin Pryzby)
2822 </para>
2823 </listitem>
2825 <listitem>
2826 <!--
2827 Author: Tomas Vondra <tomas.vondra@postgresql.org>
2828 2021-01-20 [ad600bba0] psql \dX: list extended statistics objects
2831 <para>
2832 Add <application>psql</application> command \dX to list extended statistics objects (Tatsuro Yamada)
2833 </para>
2834 </listitem>
2836 <listitem>
2837 <!--
2838 Author: Tom Lane <tgl@sss.pgh.pa.us>
2839 2021-04-07 [a3027e1e7] Allow psql's \df and \do commands to specify argument ty
2842 <para>
2843 Fix <application>psql</application>'s \dT to understand array syntax and backend grammar aliases, like "int" for "integer" (Greg Sabino Mullane, Tom Lane)
2844 </para>
2845 </listitem>
2847 <listitem>
2848 <!--
2849 Author: Tom Lane <tgl@sss.pgh.pa.us>
2850 2021-04-03 [55873a00e] Improve psql's behavior when the editor is exited withou
2853 <para>
2854 When editing the previous query or a file with <application>psql</application>'s \e, or using \ef and \ev, ignore the contents if the editor exits without saving (Laurenz Albe)
2855 </para>
2857 <para>
2858 Previously, such edits would still execute the editor contents.
2859 </para>
2860 </listitem>
2862 <listitem>
2863 <!--
2864 Author: Tom Lane <tgl@sss.pgh.pa.us>
2865 2020-10-22 [94929f1cf] Clean up some unpleasant behaviors in psql's \connect co
2868 <para>
2869 Improve <application>psql</application>'s handling of \connect with <option>-reuse-previous</option> (Tom Lane)
2870 </para>
2872 <para>
2873 Specifically, properly reuse the password previously specified, and prompt for a new password if the previous one failed.
2874 </para>
2875 </listitem>
2877 <listitem>
2878 <!--
2879 Author: Michael Paquier <michael@paquier.xyz>
2880 2020-07-21 [c273d9d8c] Rework tab completion of COPY and \copy in psql
2881 Author: Michael Paquier <michael@paquier.xyz>
2882 2020-07-30 [f1af75c5f] Include partitioned tables for tab completion of VACUUM
2883 Author: Michael Paquier <michael@paquier.xyz>
2884 2020-08-11 [1f75b4541] Improve tab completion of REINDEX in psql
2885 Author: Michael Paquier <michael@paquier.xyz>
2886 2020-09-17 [7307df16a] Improve tab completion of IMPORT FOREIGN SCHEMA in psql
2887 Author: Fujii Masao <fujii@postgresql.org>
2888 2020-09-28 [0baf82fa0] Improve tab-completion for DEALLOCATE.
2889 Author: Michael Paquier <michael@paquier.xyz>
2890 2020-10-24 [0b46e82c0] Add tab completion for ALTER TABLE .. FORCE ROW LEVEL SE
2891 Author: Michael Paquier <michael@paquier.xyz>
2892 2020-11-18 [bf0aa7c4b] Add tab completion for CREATE [OR REPLACE] TRIGGER in ps
2893 Author: Fujii Masao <fujii@postgresql.org>
2894 2021-01-14 [3f238b882] Improve tab-completion for CLOSE, DECLARE, FETCH and MOV
2895 Author: Thomas Munro <tmunro@postgresql.org>
2896 2021-02-05 [e1c02d92a] Tab-complete CREATE DATABASE ... LOCALE.
2897 Author: Michael Paquier <michael@paquier.xyz>
2898 2021-02-17 [e6b8e83b9] Add psql completion for [ NO ] DEPENDS ON EXTENSION
2899 Author: Thomas Munro <tmunro@postgresql.org>
2900 2021-02-23 [5bc09a747] Tab-complete CREATE COLLATION.
2901 Author: Fujii Masao <fujii@postgresql.org>
2902 2021-02-25 [6b40d9bdb] Improve tab-completion for TRUNCATE.
2903 Author: Michael Paquier <michael@paquier.xyz>
2904 2021-03-19 [5b2266e33] Improve tab completion of IMPORT FOREIGN SCHEMA with \h
2905 Author: Tom Lane <tgl@sss.pgh.pa.us>
2906 2021-04-08 [d1fcbde57] Add support for tab-completion of type arguments in \df,
2907 Author: Fujii Masao <fujii@postgresql.org>
2908 2021-04-12 [81e094bdf] Support tab-complete for TRUNCATE on foreign tables.
2909 Author: Michael Paquier <michael@paquier.xyz>
2910 2021-04-21 [22b2dec31] Add CURRENT_ROLE to list of roles for tab completion of
2911 Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
2912 2021-04-26 [6dd1042ed] psql: tab-complete ALTER ... DETACH CONCURRENTLY / FINAL
2913 Author: Michael Paquier <michael@paquier.xyz>
2914 2021-05-13 [1906cc07d] Make saner the tab completion of INSERT and DELETE in ps
2917 <para>
2918 Improve tab completion (Vignesh C, Michael Paquier, Justin Pryzby, Georgios Kokolatos, Julien Rouhaud, ADD NAMES)
2919 </para>
2920 </listitem>
2922 </itemizedlist>
2924 </sect4>
2926 </sect3>
2928 <sect3>
2929 <title>Server Applications</title>
2931 <itemizedlist>
2933 <listitem>
2934 <!--
2935 Author: Robert Haas <rhaas@postgresql.org>
2936 2021-03-12 [970609283] Add pg_amcheck, a CLI for contrib/amcheck.
2939 <para>
2940 Add command-line utility <link linkend="app-pgamcheck"><application>pg_amcheck</application></link> to simplify running contrib/amcheck operations on many relations (Mark Dilger)
2941 </para>
2942 </listitem>
2944 <listitem>
2945 <!--
2946 Author: Magnus Hagander <magnus@hagander.net>
2947 2021-01-17 [e09155bd6] Add - -no-instructions parameter to initdb
2950 <para>
2951 Add <option>--no-instructions</option> option to <link linkend="app-initdb"><application>initdb</application></link> (Magnus Hagander)
2952 </para>
2954 <para>
2955 This removes the server start instructions that are normally output.
2956 </para>
2957 </listitem>
2959 <listitem>
2960 <!--
2961 Author: Magnus Hagander <magnus@hagander.net>
2962 2020-11-09 [8f113698b] Remove analyze_new_cluster script from pg_upgrade
2965 <para>
2966 Stop <link linkend="pgupgrade"><application>pg_upgrade</application></link> from creating <filename>analyze_new_cluster</filename> script (Michael Paquier)
2967 </para>
2969 <para>
2970 Instead, give comparable <link linkend="app-vacuumdb"><application>vacuumdb</application></link> instructions.
2971 </para>
2972 </listitem>
2974 <listitem>
2975 <!--
2976 Author: Magnus Hagander <magnus@hagander.net>
2977 2020-11-10 [d2e4bf688] Remove -o option to postmaster
2980 <para>
2981 Remove support for the <link linkend="app-postgres"><application>postmaster</application></link> <option>-o</option> option (Magnus Hagander)
2982 </para>
2984 <para>
2985 This option was unnecessary since all passed options could already be specified directly.
2986 </para>
2987 </listitem>
2989 </itemizedlist>
2991 </sect3>
2993 <sect3>
2994 <title>Documentation</title>
2996 <itemizedlist>
2998 <listitem>
2999 <!--
3000 Author: Stephen Frost <sfrost@snowman.net>
3001 2021-04-01 [c9c41c7a3] Rename Default Roles to Predefined Roles
3004 <para>
3005 Rename "Default Roles" to <link linkend="predefined-roles">"Predefined Roles"</link> (Bruce Momjian, Stephen Frost)
3006 </para>
3007 </listitem>
3009 <listitem>
3010 <!--
3011 Author: Peter Eisentraut <peter@eisentraut.org>
3012 2020-06-16 [4c5cf5431] doc: Document factorial function
3015 <para>
3016 Add documentation for the <link linkend="function-factorial"><function>factorial()</function></link> function (Peter Eisentraut)
3017 </para>
3019 <para>
3020 With the removal of the ! operator in this release, <function>factorial()</function> is the only built-in way to compute a factorial.
3021 </para>
3022 </listitem>
3024 </itemizedlist>
3026 </sect3>
3028 <sect3>
3029 <title>Source Code</title>
3031 <itemizedlist>
3033 <listitem>
3034 <!--
3035 Author: Michael Paquier <michael@paquier.xyz>
3036 2021-02-01 [fe61df7f8] Introduce - -with-ssl={openssl} as a configure option
3039 <para>
3040 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)
3041 </para>
3043 <para>
3044 The option <option>--with-openssl</option> is kept for compatibility.
3045 </para>
3046 </listitem>
3048 <listitem>
3049 <!--
3050 Author: Peter Eisentraut <peter@eisentraut.org>
3051 2020-11-25 [c9f0624bc] Add support for abstract Unix-domain sockets
3054 <para>
3055 Add support for <link linkend="guc-unix-socket-directories">abstract Unix-domain sockets</link> (Peter Eisentraut)
3056 </para>
3058 <para>
3059 This is currently supported on <productname>Linux</productname> and <productname>Windows</productname>.
3060 </para>
3061 </listitem>
3063 <listitem>
3064 <!--
3065 Author: Peter Eisentraut <peter@eisentraut.org>
3066 2021-01-06 [4656e3d66] Replace CLOBBER_CACHE_ALWAYS with run-time GUC
3069 <para>
3070 Add <xref linkend="guc-debug-invalidate-system-caches-always"/> to control cache overwriting (Craig Ringer)
3071 </para>
3073 <para>
3074 Previously this could only be controlled at compile time and is enabled only in assert builds.
3075 </para>
3076 </listitem>
3078 <listitem>
3079 <!--
3080 Author: Peter Geoghegan <pg@bowt.ie>
3081 2020-07-17 [1e0dfd166] Add Valgrind buffer access instrumentation.
3082 Author: Peter Geoghegan <pg@bowt.ie>
3083 2020-07-19 [46ef520b9] Mark buffers as defined to Valgrind consistently.
3084 Author: Peter Geoghegan <pg@bowt.ie>
3085 2020-07-19 [a766d6ca2] Avoid harmless Valgrind no-buffer-pin errors.
3088 <para>
3089 Various improvements in <productname>valgrind</productname> detection (Álvaro Herrera, Peter Geoghegan)
3090 </para>
3091 </listitem>
3093 <listitem>
3094 <!--
3095 Author: Tom Lane <tgl@sss.pgh.pa.us>
3096 2021-01-06 [ca8217c10] Add a test module for the regular expression package.
3099 <para>
3100 Add a test module for the regular expression package (Tom Lane)
3101 </para>
3102 </listitem>
3104 <listitem>
3105 <!--
3106 Author: Andres Freund <andres@anarazel.de>
3107 2020-11-09 [6c57f2ed1] jit: Add support for LLVM 12.
3110 <para>
3111 Add support for <productname>LLVM</productname> version 12 (Andres Freund)
3112 </para>
3113 </listitem>
3115 <listitem>
3116 <!--
3117 Author: Michael Paquier <michael@paquier.xyz>
3118 2020-12-04 [4f48a6fbe] Change SHA2 implementation based on OpenSSL to use EVP d
3119 Author: Michael Paquier <michael@paquier.xyz>
3120 2020-12-10 [b67b57a96] Refactor MD5 implementations according to new cryptohash
3121 Author: Michael Paquier <michael@paquier.xyz>
3122 2021-01-23 [a8ed6bb8f] Introduce SHA1 implementations in the cryptohash infrast
3123 Author: Michael Paquier <michael@paquier.xyz>
3124 2021-04-03 [e6bdfd970] Refactor HMAC implementations
3127 <para>
3128 Change SHA1, SHA2, and MD5 hash computations to use the <productname>OpenSSL</productname> <acronym>EVP API</acronym> (Michael Paquier)
3129 </para>
3131 <para>
3132 This is more modern and supports <acronym>FIPS</acronym> mode.
3133 </para>
3134 </listitem>
3136 <listitem>
3137 <!--
3138 Author: Magnus Hagander <magnus@hagander.net>
3139 2020-11-20 [16f96c74d] Remove ability to independently select random number gen
3142 <para>
3143 Remove build control over the random library used (Daniel Gustafsson)
3144 </para>
3145 </listitem>
3147 <listitem>
3148 <!--
3149 Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
3150 2021-01-28 [6c5576075] Add direct conversion routines between EUC_TW and Big5.
3153 <para>
3154 Add direct conversion routines between EUC_TW and Big5 (Heikki Linnakangas)
3155 </para>
3156 </listitem>
3158 <listitem>
3159 <!--
3160 Author: Thomas Munro <tmunro@postgresql.org>
3161 2020-11-20 [ca051d8b1] Add collation versions for FreeBSD.
3164 <para>
3165 Add collation versions for <productname>FreeBSD</productname> (Thomas Munro)
3166 </para>
3167 </listitem>
3169 <listitem>
3170 <!--
3171 Author: Tom Lane <tgl@sss.pgh.pa.us>
3172 2020-08-01 [9f9682783] Invent "amadjustmembers" AM method for validating opclas
3175 <para>
3176 Add <link linkend="index-api"><structfield>amadjustmembers</structfield></link> to the index access method <acronym>API</acronym> (Tom Lane)
3177 </para>
3179 <para>
3180 REMOVE?
3181 </para>
3182 </listitem>
3184 </itemizedlist>
3186 </sect3>
3188 <sect3>
3189 <title>Additional Modules</title>
3191 <itemizedlist>
3193 <listitem>
3194 <!--
3195 Author: Tom Lane <tgl@sss.pgh.pa.us>
3196 2020-12-11 [0ec5f7e78] Allow subscripting of hstore values.
3199 <para>
3200 Allow subscripting of <link linkend="hstore"><application>hstore</application></link> values (Tom Lane, Dmitry Dolgov)
3201 </para>
3202 </listitem>
3204 <listitem>
3205 <!--
3206 Author: Alexander Korotkov <akorotkov@postgresql.org>
3207 2020-11-15 [935f66665] Handle equality operator in contrib/pg_trgm
3210 <para>
3211 Allow GiST/GIN <link linkend="pgtrgm"><application>pg_trgm</application></link> indexes to do equality lookups (Julien Rouhaud)
3212 </para>
3214 <para>
3215 This is similar to <literal>LIKE</literal> except no wildcards are honored.
3216 </para>
3217 </listitem>
3219 <listitem>
3220 <!--
3221 Author: Tom Lane <tgl@sss.pgh.pa.us>
3222 2021-03-06 [1265a9c8f] Add binary I/O capability for cube datatype.
3225 <para>
3226 Allow the <link linkend="cube"><application>cube</application></link> data type to be transferred in binary mode (KaiGai Kohei)
3227 </para>
3228 </listitem>
3230 <listitem>
3231 <!--
3232 Author: Peter Eisentraut <peter@eisentraut.org>
3233 2020-06-30 [ee0202d55] pgstattuple: Have pgstattuple_approx accept TOAST tables
3236 <para>
3237 Allow <function>pgstattuple_approx()</function> to report on <acronym>TOAST</acronym> tables (Peter Eisentraut)
3238 </para>
3239 </listitem>
3241 <listitem>
3242 <!--
3243 Author: Robert Haas <rhaas@postgresql.org>
3244 2020-09-10 [34a947ca1] New contrib module, pg_surgery, with heap surgery functi
3247 <para>
3248 Add contrib module <link linkend="pgsurgery"><application>pg_surgery</application></link> which allows changes to row visibility (Ashutosh Sharma)
3249 </para>
3251 <para>
3252 This is useful for correcting database corruption.
3253 </para>
3254 </listitem>
3256 <listitem>
3257 <!--
3258 Author: Robert Haas <rhaas@postgresql.org>
3259 2020-09-24 [aecf5ee2b] Add new 'old_snapshot' contrib module.
3262 <para>
3263 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)
3264 </para>
3265 </listitem>
3267 <listitem>
3268 <!--
3269 Author: Robert Haas <rhaas@postgresql.org>
3270 2020-10-22 [866e24d47] Extend amcheck to check heap pages.
3273 <para>
3274 Allow <link linkend="amcheck"><application>amcheck</application></link> to also check heap pages (Mark Dilger)
3275 </para>
3277 <para>
3278 Previously it only checked B-Tree index pages.
3279 </para>
3280 </listitem>
3282 <listitem>
3283 <!--
3284 Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
3285 2021-01-13 [756ab2912] Add functions to 'pageinspect' to inspect GiST indexes.
3286 Author: Peter Geoghegan <pg@bowt.ie>
3287 2021-02-14 [9e596b65f] Add "LP_DEAD item?" column to GiST pageinspect functions
3290 <para>
3291 Allow <link linkend="pageinspect"><application>pageinspect</application></link> to inspect GiST indexes (Andrey Borodin, Heikki Linnakangas)
3292 </para>
3293 </listitem>
3295 <listitem>
3296 <!--
3297 Author: Peter Eisentraut <peter@eisentraut.org>
3298 2021-01-19 [f18aa1b20] pageinspect: Change block number arguments to bigint
3301 <para>
3302 Change <application>pageinspect</application> block numbers to be <link linkend="datatype-int"><type>bigints</type></link> (Peter Eisentraut)
3303 </para>
3304 </listitem>
3306 <listitem>
3307 <!--
3308 Author: Alexander Korotkov <akorotkov@postgresql.org>
3309 2020-07-20 [d98c08cdc] Update btree_gist extension for parallel query
3312 <para>
3313 Mark <link linkend="btree-gist"><application>btree_gist</application></link> functions as parallel safe (Steven Winfield)
3314 </para>
3315 </listitem>
3317 </itemizedlist>
3319 <sect4>
3320 <title><link linkend="pgstatstatements">pg_stat_statements</link></title>
3322 <itemizedlist>
3324 <listitem>
3325 <!--
3326 Author: Bruce Momjian <bruce@momjian.us>
3327 2021-04-07 [5fd9dfa5f] Move pg_stat_statements query jumbling to core.
3330 <para>
3331 Move query hash computation from <application>pg_stat_statements</application> to the core server (Julien Rouhaud)
3332 </para>
3334 <para>
3335 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.
3336 </para>
3337 </listitem>
3339 <listitem>
3340 <!--
3341 Author: Magnus Hagander <magnus@hagander.net>
3342 2021-04-08 [6b4d23fee] Track identical top vs nested queries independently in p
3345 <para>
3346 Allow <application>pg_stat_statements</application> to track top and nested statements independently (Julien Rohaud)
3347 </para>
3349 <para>
3350 Previously, when tracking all statements, identical top and nested statements were tracked together.
3351 </para>
3352 </listitem>
3354 <listitem>
3355 <!--
3356 Author: Fujii Masao <fujii@postgresql.org>
3357 2020-07-29 [6023b7ea7] pg_stat_statements: track number of rows processed by so
3358 Author: Fujii Masao <fujii@postgresql.org>
3359 2020-11-12 [b62e6056a] pg_stat_statements: track number of rows processed by RE
3362 <para>
3363 Add row counts for utility commands to <structname>pg_stat_statements</structname>> (Fujii Masao, Katsuragi Yuta, Seino Yuki)
3364 </para>
3365 </listitem>
3367 <listitem>
3368 <!--
3369 Author: Fujii Masao <fujii@postgresql.org>
3370 2020-11-26 [9fbc3f318] pg_stat_statements: Track number of times pgss entries w
3371 Author: Fujii Masao <fujii@postgresql.org>
3372 2020-12-18 [2e0fedf03] pg_stat_statements: Track time at which all statistics w
3375 <para>
3376 Add <structname>pg_stat_statements_info</structname> system view to show <structname>pg_stat_statements</structname> activity (Katsuragi Yuta, Yuki Seino, Naoki Nakamichi)
3377 </para>
3378 </listitem>
3380 </itemizedlist>
3382 </sect4>
3384 <sect4>
3385 <title><link linkend="postgres-fdw"><application>postgres_fdw</application></link></title>
3387 <itemizedlist>
3389 <listitem>
3390 <!--
3391 Author: Tomas Vondra <tomas.vondra@postgresql.org>
3392 2021-01-20 [b663a4136] Implement support for bulk inserts in postgres_fdw
3393 Author: Tomas Vondra <tomas.vondra@postgresql.org>
3394 2021-02-18 [927f453a9] Fix tuple routing to initialize batching only for insert
3397 <para>
3398 Allow <application>postgres_fdw</application> to <command>INSERT</command> rows in bulk (Takayuki Tsunakawa, Tomas Vondra, Amit Langote)
3399 </para>
3400 </listitem>
3402 <listitem>
3403 <!--
3404 Author: Fujii Masao <fujii@postgresql.org>
3405 2021-04-07 [a3740c48e] postgres_fdw: Allow partitions specified in LIMIT TO to
3408 <para>
3409 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)
3410 </para>
3412 <para>
3413 By default, only the root of partitioned tables is imported.
3414 </para>
3415 </listitem>
3417 <listitem>
3418 <!--
3419 Author: Fujii Masao <fujii@postgresql.org>
3420 2021-01-18 [708d165dd] postgres_fdw: Add function to list cached connections to
3423 <para>
3424 Add <application>postgres_fdw</application> function <function>postgres_fdw_get_connections()</function> to report open foreign server connections (Bharath Rupireddy)
3425 </para>
3426 </listitem>
3428 <listitem>
3429 <!--
3430 Author: Fujii Masao <fujii@postgresql.org>
3431 2021-04-02 [b1be3074a] postgres_fdw: Add option to control whether to keep conn
3434 <para>
3435 Allow control over whether foreign servers keep connections open after transaction completion (Bharath Rupireddy)
3436 </para>
3438 <para>
3439 This is controlled by <varname>keep_connections</varname> and defaults to on.
3440 </para>
3441 </listitem>
3443 <listitem>
3444 <!--
3445 Author: Fujii Masao <fujii@postgresql.org>
3446 2020-10-06 [32a9c0bdf] postgres_fdw: reestablish new connection if cached one i
3447 Author: Fujii Masao <fujii@postgresql.org>
3448 2020-10-16 [7fc1a81e4] postgres_fdw: Restructure connection retry logic.
3451 <para>
3452 Allow <application>postgres_fdw</application> to reestablish foreign server connections if necessary (Bharath Rupireddy)
3453 </para>
3455 <para>
3456 Previously foreign server restarts could cause foreign table access errors.
3457 </para>
3458 </listitem>
3460 <listitem>
3461 <!--
3462 Author: Fujii Masao <fujii@postgresql.org>
3463 2021-01-26 [411ae6499] postgres_fdw: Add functions to discard cached connection
3466 <para>
3467 Add <application>postgres_fdw</application> functions to discard cached connections (Bharath Rupireddy)
3468 </para>
3469 </listitem>
3471 </itemizedlist>
3473 </sect4>
3475 </sect3>
3477 </sect2>
3479 <sect2 id="release-14-acknowledgements">
3480 <title>Acknowledgments</title>
3482 <para>
3483 The following individuals (in alphabetical order) have contributed to this
3484 release as patch authors, committers, reviewers, testers, or reporters of
3485 issues.
3486 </para>
3488 <simplelist>
3489 <member></member>
3490 </simplelist>
3491 </sect2>
3493 </sect1>