relnotes: simplify wording of pg_basebackup compression item
[pgsql.git] / doc / src / sgml / release-15.sgml
blob6da3f89d08656c80ce8d4c61978ea74f69f9f83b
1 <sect1 id="release-15">
2 <title>Release 15</title>
4 <formalpara>
5 <title>Release date:</title>
6 <para>AS OF 2022-06-11</para>
7 </formalpara>
9 <sect2>
10 <title>Overview</title>
12 <para>
13 <productname>PostgreSQL</productname> 15 contains many new features
14 and enhancements, including:
15 </para>
17 <itemizedlist>
18 <listitem><para></para></listitem>
19 </itemizedlist>
21 <para>
22 The above items and other new features of
23 <productname>PostgreSQL</productname> 15 are explained in more detail
24 in the sections below.
25 </para>
27 </sect2>
29 <sect2>
31 <title>Migration to Version 15</title>
33 <para>
34 A dump/restore using <xref linkend="app-pg-dumpall"/> or use of
35 <xref linkend="pgupgrade"/> or logical replication is required for
36 those wishing to migrate data from any previous release. See <xref
37 linkend="upgrading"/> for general information on migrating to new
38 major releases.
39 </para>
41 <para>
42 Version 15 contains a number of changes that may affect compatibility
43 with previous releases. Observe the following incompatibilities:
44 </para>
46 <itemizedlist>
48 <!--
49 Author: Noah Misch <noah@leadboat.com>
50 2021-09-09 [b073c3ccd] Revoke PUBLIC CREATE from public schema, now owned by pg
51 -->
53 <listitem>
54 <para>
55 Remove <literal>PUBLIC</literal> creation permission on the <link
56 linkend="ddl-schemas-public"><literal>public</literal> schema</link>
57 (Noah Misch)
58 </para>
60 <para>
61 This is a change in the default for newly-created databases in
62 existing clusters and for new clusters; <literal>USAGE</literal>
63 permissions on the <literal>public</literal> schema has not
64 been changed. Databases restored from previous Postgres releases
65 will be restored with their current permissions. Users wishing
66 to have the old permissions on new objects will need to grant
67 <literal>CREATE</literal> permission for <literal>PUBLIC</literal>
68 on the <literal>public</literal> schema; this change can be made
69 on <literal>template1</literal> to cause all new databases
70 to have these permissions. <literal>template1</literal>
71 permissions for <application>pg_dumpall</application> and
72 <application>pg_upgrade</application>?
73 </para>
74 </listitem>
76 <!--
77 Author: Noah Misch <noah@leadboat.com>
78 2021-09-09 [b073c3ccd] Revoke PUBLIC CREATE from public schema, now owned by pg
79 -->
81 <listitem>
82 <para>
83 Change the owner of the <literal>public</literal> schema to
84 <literal>pg_database_owner</literal> (Noah Misch)
85 </para>
87 <para>
88 Previously it was the literal user name of the database owner.
89 Databases restored from previous Postgres releases will be restored
90 with their current owner specification.
91 </para>
92 </listitem>
94 <!--
95 Author: Stephen Frost <sfrost@snowman.net>
96 2022-04-06 [39969e2a1] Remove exclusive backup mode
97 -->
99 <listitem>
100 <para>
101 Remove long-deprecated exclusive <link
102 linkend="backup-base-backup">backup mode</link> (David Steele,
103 Nathan Bossart)
104 </para>
106 <para>
107 If the database server stops abruptly while in this mode, the
108 server could fail to start. The non-exclusive backup mode requires
109 a continuous database connection during the backup. Functions
110 <function>pg_start_backup()</function>/<function>pg_stop_backup()</function>
111 have been renamed to
112 <function>pg_backup_start()</function>/<function>pg_backup_stop()</function>,
113 and the functions <function>pg_backup_start_time()</function>
114 and <function>pg_is_in_backup()</function> have been removed.
115 </para>
116 </listitem>
118 <!--
119 Author: Peter Geoghegan <pg@bowt.ie>
120 2022-02-16 [8f388f6f5] Increase hash_mem_multiplier default to 2.0.
123 <listitem>
124 <para>
125 Increase <link
126 linkend="guc-hash-mem-multiplier"><varname>hash_mem_multiplier</varname></link>
127 default to 2.0 (Peter Geoghegan)
128 </para>
130 <para>
131 This allows query hash operations to use double the amount of
132 <link linkend="guc-work-mem"><varname>work_mem</varname></link>
133 memory as other operations.
134 </para>
135 </listitem>
137 <!--
138 Author: Andres Freund <andres@anarazel.de>
139 2022-03-07 [76a29adee] plpython: Remove plpythonu, plpython2u and associated tr
142 <listitem>
143 <para>
144 Remove server-side language <link
145 linkend="plpython"><literal>plpython2u</literal></link> and generic
146 Python language <literal>plpythonu</literal> (Andres Freund)
147 </para>
148 </listitem>
150 <!--
151 Author: Tom Lane <tgl@sss.pgh.pa.us>
152 2022-01-19 [a3d6264bb] interval_out() must be marked STABLE, not IMMUTABLE.
155 <listitem>
156 <para>
157 Mark the <link
158 linkend="datatype-datetime"><type>interval</type></link> output
159 function as stable, not immutable, since it depends on <link
160 linkend="guc-intervalstyle"><varname>IntervalStyle</varname></link>
161 (Tom Lane)
162 </para>
164 <para>
165 This will cause the creation of indexes relying on the text output
166 of <type>interval</type> values to fail.
167 </para>
168 </listitem>
170 <!--
171 Author: Tom Lane <tgl@sss.pgh.pa.us>
172 2021-11-06 [cbe25dcff] Disallow making an empty lexeme via array_to_tsvector().
175 <listitem>
176 <para>
177 Generate an error if <link
178 linkend="textsearch-functions-table"><function>array_to_tsvector()</function></link>
179 is passed an empty array element (Jean-Christophe Arnu)
180 </para>
182 <para>
183 This is prohibited because lexemes should never be empty. Users of
184 previous Postgres releases should verify that no empty lexemes
185 are stored because they can lead to dump/restore failures and
186 inconsistent results.
187 </para>
188 </listitem>
190 <!--
191 Author: Peter Eisentraut <peter@eisentraut.org>
192 2021-12-06 [e9e63b702] Fix inappropriate uses of PG_GETARG_UINT32()
195 <listitem>
196 <para>
197 Generate an error when <link
198 linkend="functions-string-other"><function>chr()</function></link>
199 is supplied with a negative argument (Peter Eisentraut)
200 </para>
201 </listitem>
203 <!--
204 Author: Peter Eisentraut <peter@eisentraut.org>
205 2022-01-12 [a18b6d2dc] ecpg: Catch zero-length Unicode identifiers correctly
208 <listitem>
209 <para>
210 Prevent Unicode zero-length <link
211 linkend="sql-syntax-identifiers">identifiers</link>, e.g., U&amp;""
212 (Peter Eisentraut)
213 </para>
215 <para>
216 Non-Unicode zero-length identifiers were already prevented.
217 </para>
218 </listitem>
220 <!--
221 Author: Tom Lane <tgl@sss.pgh.pa.us>
222 2021-12-15 [2a712066d] Remove pg_dump's - -no-synchronized-snapshots switch.
225 <listitem>
226 <para>
227 Remove <link
228 linkend="sql-syntax-identifiers"><application>pg_dump</application></link>'s
229 <option>--no-synchronized-snapshots</option> option since all
230 supported server versions support synchronized snapshots (Tom Lane)
231 </para>
232 </listitem>
234 <!--
235 Author: Tom Lane <tgl@sss.pgh.pa.us>
236 2022-02-15 [2523928b2] Reject change of output-column collation in CREATE OR RE
239 <listitem>
240 <para>
241 Prevent <link linkend="sql-createview"><command>CREATE OR REPLACE
242 VIEW</command></link> from changing the collation of an output column
243 (Tom Lane)
244 </para>
245 </listitem>
247 <!--
248 Author: Peter Eisentraut <peter@eisentraut.org>
249 2022-02-16 [2549f0661] Reject trailing junk after numeric literals
252 <listitem>
253 <para>
254 Prevent <link linkend="sql-syntax-constants-numeric">numeric
255 literals</link> from having non-numeric trailing characters (Peter
256 Eisentraut)
257 </para>
259 <para>
260 Previously literals like <literal>123abc</literal> would be
261 interpreted as <literal>123</literal> and <literal>abc</literal>.
262 </para>
263 </listitem>
265 <!--
266 Author: Peter Eisentraut <peter@eisentraut.org>
267 2022-03-28 [e26114c81] Make JSON path numeric literals more correct
270 <listitem>
271 <para>
272 Adjust <link linkend="datatype-json"><acronym>JSON</acronym></link>
273 numeric literal processing to match the
274 <acronym>SQL</acronym>/<acronym>JSON</acronym>-standard (Peter
275 Eisentraut)
276 </para>
278 <para>
279 This accepts numeric formats like <literal>.1</literal> and
280 <literal>1.</literal>, and disallows trailing junk after numeric
281 literals, like <literal>1.type()</literal>.
282 </para>
283 </listitem>
285 <!--
286 Author: Tom Lane <tgl@sss.pgh.pa.us>
287 2022-04-03 [591e088dd] Fix portability issues in datetime parsing.
290 <listitem>
291 <para>
292 Improve consistency of <link
293 linkend="datatype-datetime">interval</link> parsing with trailing
294 periods (Tom Lane)
295 </para>
297 <para>
298 Some platforms disallowed trailing periods.
299 </para>
300 </listitem>
302 <!--
303 Author: Bruce Momjian <bruce@momjian.us>
304 2021-08-03 [95ab1e0a9] interval: round values when spilling to months
307 <listitem>
308 <para>
309 When specifying fractional interval values in units greater than
310 months, round to the nearest month (Bruce Momjian)
311 </para>
313 <para>
314 For example, report <literal>1.99 years</literal> as <literal>2
315 years</literal>, not <literal>1 year 11 months</literal>.
316 </para>
317 </listitem>
319 <!--
320 Author: Tom Lane <tgl@sss.pgh.pa.us>
321 2022-02-28 [54bd1e43c] Handle integer overflow in interval justification functi
324 <listitem>
325 <para>
326 Detect integer overflow in <link
327 linkend="functions-datetime-table">interval justification
328 functions</link> (Joe Koshakow)
329 </para>
331 <para>
332 Specifically, functions <function>justify_interval()</function>,
333 <function>justify_hours()</function>, and
334 <function>justify_days()</function> are affected.
335 </para>
336 </listitem>
338 <!--
339 Author: Robert Haas <rhaas@postgresql.org>
340 2022-03-28 [79de9842a] Remove the ability of a role to administer itself.
343 <listitem>
344 <para>
345 Remove the default <link linkend="sql-createrole"><literal>ADMIN
346 OPTION</literal></link> privilege a login role has on its own role
347 membership (Robert Haas)
348 </para>
350 <para>
351 Previously, login roles could add/remove members of its own role,
352 even without <literal>ADMIN OPTION</literal> privilege.
353 </para>
354 </listitem>
356 <!--
357 Author: Jeff Davis <jdavis@postgresql.org>
358 2022-01-07 [a2ab9c06e] Respect permissions within logical replication.
361 <listitem>
362 <para>
363 Allow <link linkend="logical-replication">logical replication</link>
364 to run as the owner of the subscription (Mark Dilger)
365 </para>
367 <para>
368 Because row-level security policies are not checked, only superusers,
369 roles with <literal>bypassrls</literal>, and table owners can
370 replicate into tables with row-level security policies.
371 </para>
372 </listitem>
374 <!--
375 Author: Jeff Davis <jdavis@postgresql.org>
376 2022-01-08 [96a6f11c0] More cleanup of a2ab9c06ea.
379 <listitem>
380 <para>
381 Prevent <command>UPDATE</command> and <command>DELETE</command>
382 <link linkend="logical-replication">logical replication</link>
383 operations on tables where the subscription owner does not have
384 <command>SELECT</command> permission on the table (Jeff Davis)
385 </para>
387 <para>
388 <command>UPDATE</command> and <command>DELETE</command> perform
389 <command>SELECT</command>, so require the subscription owner to
390 have table <command>SELECT</command> permission.
391 </para>
392 </listitem>
394 <!--
395 Author: Tom Lane <tgl@sss.pgh.pa.us>
396 2021-07-27 [48c5c9068] Use the "pg_temp" schema alias in EXPLAIN and related ou
399 <listitem>
400 <para>
401 When <link linkend="sql-explain"><command>EXPLAIN</command></link>
402 references the temporary object schema, refer to it as
403 <literal>pg_temp</literal> (Amul Sul)
404 </para>
406 <para>
407 Previously the actual schema name was used.
408 </para>
409 </listitem>
411 <!--
412 Author: Tom Lane <tgl@sss.pgh.pa.us>
413 2022-02-28 [2e517818f] Fix SPI's handling of errors during transaction commit.
416 <listitem>
417 <para>
418 Modify <link linkend="spi"><acronym>SPI</acronym></link>'s
419 <function>SPI_commit()</function> and
420 <function>SPI_commit_and_chain()</function> to automatically start
421 a new transaction at completion (Peter Eisentraut, Tom Lane)
422 </para>
424 <para>
425 BACKPATCHED?
426 </para>
427 </listitem>
429 <!--
430 Author: Tom Lane <tgl@sss.pgh.pa.us>
431 2022-03-24 [ce95c5437] Fix pg_statio_all_tables view for multiple TOAST indexes
434 <listitem>
435 <para>
436 Fix <link
437 linkend="monitoring-pg-statio-all-tables-view"><structname>pg_statio_all_tables</structname></link>
438 to sum values for the rare case of <acronym>TOAST</acronym> tables
439 with multiple indexes (Andrei Zubkov)
440 </para>
442 <para>
443 Previously such cases would have one row for each index.
444 </para>
445 </listitem>
447 <!--
448 Author: Peter Eisentraut <peter@eisentraut.org>
449 2021-12-01 [75d22069e] Warning on SET of nonexisting setting with a prefix rese
450 Author: Tom Lane <tgl@sss.pgh.pa.us>
451 2021-12-27 [2ed8a8cc5] Rethink handling of settings with a prefix reserved by a
452 Author: Tom Lane <tgl@sss.pgh.pa.us>
453 2022-02-21 [88103567c] Disallow setting bogus GUCs within an extension's reserv
456 <listitem>
457 <para>
458 Disallow setting of <link linkend="config-setting">server
459 variables</link> matching the prefixes of installed extension
460 (Florin Irion, Tom Lane)
461 </para>
463 <para>
464 This also deletes any matching server variables during extension
465 load.
466 </para>
467 </listitem>
469 <!--
470 Author: Andres Freund <andres@anarazel.de>
471 2022-04-06 [6f0cf8787] pgstat: remove stats_temp_directory.
474 <listitem>
475 <para>
476 Remove unnecessary server variable
477 <varname>stats_temp_directory</varname> (Andres Freund, Kyotaro
478 Horiguchi)
479 </para>
480 </listitem>
482 <!--
483 Author: Tom Lane <tgl@sss.pgh.pa.us>
484 2021-11-28 [3804539e4] Replace random(), pg_erand48(), etc with a better PRNG A
485 Author: Tom Lane <tgl@sss.pgh.pa.us>
486 2022-04-12 [d4f109e4a] Doc: update description of random() function.
489 <listitem>
490 <para>
491 Improve the algorithm used to compute <link
492 linkend="functions-math-random-table"><function>random()</function></link>
493 (Fabien Coelho)
494 </para>
496 <para>
497 This will cause <function>random()</function> to differ from what
498 was emitted by prior versions for the same seed values.
499 </para>
500 </listitem>
502 <!--
503 Author: Tom Lane <tgl@sss.pgh.pa.us>
504 2021-11-12 [f8abb0f5e] postgres_fdw: suppress casts on constants in limited cas
507 <listitem>
508 <para>
509 Reduce casting of constants in <link
510 linkend="postgres-fdw">postgres_fdw</link> queries (Dian Fay)
511 </para>
513 <para>
514 If column types were mismatched between local and remote databases,
515 such casting could cause errors.
516 </para>
517 </listitem>
519 <!--
520 Author: Tom Lane <tgl@sss.pgh.pa.us>
521 2022-02-14 [fd2abeb7c] Delete contrib/xml2's legacy implementation of xml_is_we
524 <listitem>
525 <para>
526 Remove <link linkend="xml2">xml2</link>'s function
527 <function>xml_is_well_formed()</function> (Tom Lane)
528 </para>
530 <para>
531 This function has been implemented in the core backend since
532 Postgres 9.1.
533 </para>
534 </listitem>
536 <!--
537 Author: Tom Lane <tgl@sss.pgh.pa.us>
538 2021-07-06 [955b3e0f9] Allow CustomScan providers to say whether they support p
541 <listitem>
542 <para>
543 Allow <link linkend="custom-scan">custom scan provders</link>
544 to indicate if they support projections (Sven Klemm)
545 </para>
547 <para>
548 The default is now that custom scan providers can't support
549 projections, so they need to be updated for this release.
550 </para>
551 </listitem>
553 </itemizedlist>
555 </sect2>
557 <sect2>
558 <title>Changes</title>
560 <para>
561 Below you will find a detailed account of the changes between
562 <productname>PostgreSQL</productname> 15 and the previous major
563 release.
564 </para>
566 <sect3>
567 <title>Server</title>
569 <itemizedlist>
571 <!--
572 Author: Peter Eisentraut <peter@eisentraut.org>
573 2022-02-14 [37851a8b8] Database-level collation version tracking
576 <listitem>
577 <para>
578 Record and check the collation of each <link
579 linkend="sql-createdatabase">database</link> (Peter Eisentraut)
580 </para>
582 <para>
583 This is designed to detect collation
584 mismatches to avoid data corruption. Function
585 <function>pg_database_collation_actual_version()</function>
586 reports the underlying operating system collation version, and
587 <command>ALTER DATABASE ... REFRESH</command> sets the database
588 to match the operating system collation version. DETAILS?
589 </para>
590 </listitem>
592 <!--
593 Author: Peter Eisentraut <peter@eisentraut.org>
594 2022-03-17 [f2553d430] Add option to use ICU as global locale provider
597 <listitem>
598 <para>
599 Allow <link linkend="locale"><acronym>ICU</acronym></link>
600 collations to be set as the default for clusters and databases
601 (Peter Eisentraut)
602 </para>
604 <para>
605 Previously, <acronym>ICU</acronym> collations could only be
606 specified in <link linkend="sql-createcollation"><command>CREATE
607 COLLATION</command></link> and used with the
608 <literal>COLLATE</literal> clause.
609 </para>
610 </listitem>
612 <!--
613 Author: Michael Paquier <michael@paquier.xyz>
614 2022-03-29 [a2c84990b] Add system view pg_ident_file_mappings
617 <listitem>
618 <para>
619 Add system view <link
620 linkend="view-pg-ident-file-mappings"><structname>pg_ident_file_mappings</structname></link>
621 to report <filename>pg_ident.conf</filename> information (Julien
622 Rouhaud)
623 </para>
624 </listitem>
626 </itemizedlist>
628 <sect4>
629 <title><link linkend="ddl-partitioning">Partitioning</link></title>
631 <itemizedlist>
633 <!--
634 Author: David Rowley <drowley@postgresql.org>
635 2021-08-03 [475dbd0b7] Track a Bitmapset of non-pruned partitions in RelOptInfo
638 <listitem>
639 <para>
640 Improve planning time for queries referencing partitioned tables
641 (David Rowley)
642 </para>
644 <para>
645 Specifically this helps if only a small number of the many
646 partitions are relevant.
647 </para>
648 </listitem>
650 <!--
651 Author: David Rowley <drowley@postgresql.org>
652 2021-08-03 [db632fbca] Allow ordered partition scans in more cases
655 <listitem>
656 <para>
657 Allow ordered scans of partitions to avoid sorting in more cases
658 (David Rowley)
659 </para>
661 <para>
662 Previously, a partitioned table with a <literal>DEFAULT</literal>
663 partition or a <literal>LIST</literal> partition containing
664 multiple values could not be used for ordered partition scans.
665 Now they can be used if these partitions are pruned.
666 </para>
667 </listitem>
669 <!--
670 Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
671 2022-03-20 [ba9a7e392] Enforce foreign key correctly during cross-partition upd
674 <listitem>
675 <para>
676 Improve foreign key behavior of updates on partitioned tables
677 that move rows between partitions (Amit Langote)
678 </para>
680 <para>
681 Previously, such updates ran delete actions on the source
682 partition and insert actions on the target partition.
683 <productname>PostgreSQL</productname> will now run update actions
684 on the referenced partition root.
685 </para>
686 </listitem>
688 <!--
689 Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
690 2022-04-02 [cfdd03f45] Allow CLUSTER on partitioned tables
691 Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
692 2022-04-14 [3f19e176a] Have CLUSTER ignore partitions not owned by caller
695 <listitem>
696 <para>
697 Allow <link linkend="sql-cluster"><command>CLUSTER</command></link>
698 on partitioned tables (Justin Pryzby)
699 </para>
700 </listitem>
702 <!--
703 Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
704 2021-07-22 [80ba4bb38] Make ALTER TRIGGER RENAME consistent for partitioned tab
707 <listitem>
708 <para>
709 Fix <link linkend="sql-altertable"><command>ALTER TRIGGER
710 RENAME</command></link> on partitioned tables to properly rename
711 triggers an all partitions (Arne Roland, Álvaro Herrera)
712 </para>
714 <para>
715 Also prohibit cloned triggers from being renamed.
716 </para>
717 </listitem>
719 </itemizedlist>
721 </sect4>
723 <sect4>
724 <title>Indexes</title>
726 <itemizedlist>
728 <!--
729 Author: Peter Geoghegan <pg@bowt.ie>
730 2021-10-02 [2903f1404] Enable deduplication in system catalog indexes.
733 <listitem>
734 <para>
735 Enable system and <link
736 linkend="storage-toast"><acronym>TOAST</acronym></link> btree
737 indexes to efficiently store duplicates (Peter Geoghegan)
738 </para>
740 <para>
741 Previously de-duplication was disabled for these types of indexes.
742 </para>
743 </listitem>
745 <!--
746 Author: Alexander Korotkov <akorotkov@postgresql.org>
747 2022-02-07 [f1ea98a79] Reduce non-leaf keys overlap in GiST indexes produced by
750 <listitem>
751 <para>
752 Improve lookup performance of <link
753 linkend="gist"><acronym>GiST</acronym></link> indexes built using
754 sorting (Aliaksandr Kalenik, Sergei Shoulbakov, Andrey Borodin)
755 </para>
756 </listitem>
758 <!--
759 Author: Tomas Vondra <tomas.vondra@postgresql.org>
760 2021-11-30 [5753d4ee3] Ignore BRIN indexes when checking for HOT udpates
763 <listitem>
764 <para>
765 Prevent changes to columns only indexed by <link
766 linkend="brin"><acronym>BRIN</acronym></link> indexes from
767 disabling <acronym>HOT</acronym> updates (Josef Simanek)
768 </para>
769 </listitem>
771 <!--
772 Author: Peter Eisentraut <peter@eisentraut.org>
773 2022-02-03 [94aa7cc5f] Add UNIQUE null treatment option
776 <listitem>
777 <para>
778 Allow unique constraints and indexes to treat
779 <literal>NULL</literal> values as not distinct (Peter Eisentraut)
780 </para>
782 <para>
783 Previously <literal>NULL</literal> values were always indexed
784 as distinct values, but this can now be changed by creating
785 constraints and indexes using <literal>UNIQUE NULLS NOT
786 DISTINCT</literal>.
787 </para>
788 </listitem>
790 <!--
791 Author: Tom Lane <tgl@sss.pgh.pa.us>
792 2021-11-17 [a148f8bc0] Add a planner support function for starts_with().
795 <listitem>
796 <para>
797 Allow <link
798 linkend="functions-string-other"><literal>^@</literal></link>
799 and <function>starts_with()</function> to use btree indexes if
800 using a C collation (Tom Lane)
801 </para>
803 <para>
804 Previously these could only use <link
805 linkend="spgist"><acronym>SP-GiST</acronym></link> indexes.
806 </para>
807 </listitem>
809 </itemizedlist>
811 </sect4>
813 <sect4>
814 <title>Optimizer</title>
816 <itemizedlist>
818 <!--
819 Author: Tomas Vondra <tomas.vondra@postgresql.org>
820 2022-01-16 [269b532ae] Add stxdinherit flag to pg_statistic_ext_data
823 <listitem>
824 <para>
825 Allow <link linkend="sql-createstatistics">extended
826 statistics</link> to record statistics for a parent with all its
827 children (Tomas Vondra, Justin Pryzby)
828 </para>
830 <para>
831 Regular statistics already tracked parent and parent/all-children
832 statistics separately.
833 </para>
834 </listitem>
836 <!--
837 Author: Tomas Vondra <tomas.vondra@postgresql.org>
838 2022-03-31 [db0d67db2] Optimize order of GROUP BY keys
841 <listitem>
842 <para>
843 Allow <link linkend="queries-group"><literal>GROUP
844 BY</literal></link> sorting to optimize column order (Dmitry
845 Dolgov, Teodor Sigaev, Tomas Vondra)
846 </para>
848 <para>
849 This optimization can be disabled using the server variable <link
850 linkend="guc-enable-groupby-reordering"><varname>enable_group_by_reordering</varname></link>.
851 </para>
852 </listitem>
854 <!--
855 Author: Tom Lane <tgl@sss.pgh.pa.us>
856 2022-03-24 [0bd7af082] Invent recursive_worktable_factor GUC to replace hard-wi
859 <listitem>
860 <para>
861 Add server variable <link
862 linkend="guc-recursive-worktable-factor"><varname>recursive_worktable_factor</varname></link>
863 to allow the user to specify the expected recursive query worktable
864 size (Simon Riggs)
865 </para>
867 <para>
868 WHAT IS A WORKTABLE? NOT DEFINED.
869 </para>
870 </listitem>
872 </itemizedlist>
874 </sect4>
876 <sect4>
877 <title>General Performance</title>
879 <itemizedlist>
881 <!--
882 Author: David Rowley <drowley@postgresql.org>
883 2021-07-07 [29f45e299] Use a hash table to speed up NOT IN(values)
886 <listitem>
887 <para>
888 Allow hash lookup for <link
889 linkend="functions-subquery-notin"><literal>NOT IN</literal></link>
890 clauses with many constants (David Rowley, James Coleman)
891 </para>
893 <para>
894 Previously the code always sequentially scanned the list of values.
895 </para>
896 </listitem>
898 <!--
899 Author: John Naylor <john.naylor@postgresql.org>
900 2021-12-20 [911588a3f] Add fast path for validating UTF-8 text
903 <listitem>
904 <para>
905 Improve validation of <acronym>UTF</acronym>-8 text (even if
906 only <acronym>ASCII</acronym>) by processing 16 bytes at a time
907 (John Naylor, Heikki Linnakangas)
908 </para>
910 <para>
911 This will improve text-heavy operations like <link
912 linkend="sql-copy"><command>COPY FROM</command></link>.
913 </para>
914 </listitem>
916 <!--
917 Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
918 2021-10-18 [65014000b] Replace polyphase merge algorithm with a simple balanced
919 Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
920 2021-10-25 [166f94377] Clarify the logic in a few places in the new balanced me
923 <listitem>
924 <para>
925 Improve performance for sorts that exceed <link
926 linkend="guc-work-mem"><varname>work_mem</varname></link>
927 (Heikki Linnakangas)
928 </para>
930 <para>
931 Specifically, switch to a batch sorting algorithm that uses more
932 output streams internally.
933 </para>
934 </listitem>
936 <!--
937 Author: David Rowley <drowley@postgresql.org>
938 2021-07-22 [91e9e89dc] Make nodeSort.c use Datum sorts for single column sorts
939 Author: David Rowley <drowley@postgresql.org>
940 2022-04-04 [40af10b57] Use Generation memory contexts to store tuples in sorts
941 Author: John Naylor <john.naylor@postgresql.org>
942 2022-04-02 [697492434] Specialize tuplesort routines for different kinds of abb
945 <listitem>
946 <para>
947 Improve performance and reduce memory consumption of in-memory
948 sorts (Ronan Dunklau, David Rowley, Thomas Munro, John Naylor)
949 </para>
950 </listitem>
952 <!--
953 Author: Michael Paquier <michael@paquier.xyz>
954 2021-06-29 [4035cd5d4] Add support for LZ4 with compression of full-page writes
955 Author: Michael Paquier <michael@paquier.xyz>
956 2022-03-11 [e9537321a] Add support for zstd with compression of full-page write
959 <listitem>
960 <para>
961 Allow <acronym>WAL</acronym> <link
962 linkend="guc-full-page-writes">full page writes</link> to use
963 LZ4 and Zstandard compression (Andrey Borodin, Justin Pryzby)
964 </para>
966 <para>
967 This is controlled by the <link
968 linkend="guc-wal-compression"><varname>wal_compression</varname></link>
969 server setting.
970 </para>
971 </listitem>
973 <!--
974 Author: Thomas Munro <tmunro@postgresql.org>
975 2021-07-19 [2dbe89057] Support direct I/O on macOS.
978 <listitem>
979 <para>
980 Add <link linkend="guc-wal-sync-method">direct I/O</link> support
981 to macOS (Thomas Munro)
982 </para>
984 <para>
985 This only works if <literal>max_wal_senders=0</literal>
986 and <literal>wal_level=minimal</literal>, and only for
987 <acronym>WAL</acronym>.
988 </para>
989 </listitem>
991 <!--
992 Author: Peter Geoghegan <pg@bowt.ie>
993 2022-04-03 [0b018faba] Set relfrozenxid to oldest extant XID seen by VACUUM.
996 <listitem>
997 <para>
998 Allow <link linkend="routine-vacuuming">vacuum</link> to be more
999 aggressive in setting the oldest frozenxid (Peter Geoghegan)
1000 </para>
1001 </listitem>
1003 <!--
1004 Author: Etsuro Fujita <efujita@postgresql.org>
1005 2022-04-06 [c2bb02bc2] Allow asynchronous execution in more cases.
1008 <listitem>
1009 <para>
1010 Allow a query referencing multiple <link
1011 linkend="ddl-foreign-data">foreign tables</link> to perform
1012 parallel foreign table scans in more cases (Andrey Lepikhov,
1013 Etsuro Fujita)
1014 </para>
1015 </listitem>
1017 <!--
1018 Author: David Rowley <drowley@postgresql.org>
1019 2022-04-08 [9d9c02ccd] Teach planner and executor about monotonic window funcs
1022 <listitem>
1023 <para>
1024 Improve the performance of <link linkend="functions-window">window
1025 functions</link> that use <function>row_number()</function>,
1026 <function>rank()</function>, and <function>count()</function>
1027 (David Rowley)
1028 </para>
1029 </listitem>
1031 <!--
1032 Author: Tom Lane <tgl@sss.pgh.pa.us>
1033 2022-04-06 [a82a5eee3] Use ISB as a spin-delay instruction on ARM64.
1036 <listitem>
1037 <para>
1038 Improve the performance of spinlocks on high-core-count ARM64
1039 systems (Geoffrey Blake)
1040 </para>
1041 </listitem>
1043 </itemizedlist>
1045 </sect4>
1047 <sect4>
1048 <title>Monitoring</title>
1050 <itemizedlist>
1052 <!--
1053 Author: Robert Haas <rhaas@postgresql.org>
1054 2021-12-13 [64da07c41] Default to log_checkpoints=on, log_autovacuum_min_durati
1057 <listitem>
1058 <para>
1059 Enable default logging of checkpoints and slow autovacuum
1060 operations (Bharath Rupireddy)
1061 </para>
1063 <para>
1064 Specifically, this changes the default of <link
1065 linkend="guc-log-checkpoints"><varname>log_checkpoints</varname></link>
1066 to on and <link
1067 linkend="guc-log-autovacuum-min-duration"><varname>log_autovacuum_min_duration</varname></link>
1068 to 10 minutes. This will cause idle servers to generate log
1069 output, which might cause problems on resource-constrained
1070 servers with insufficient log file removal. The defaults should
1071 be changed in such cases.
1072 </para>
1073 </listitem>
1075 <!--
1076 Author: Robert Haas <rhaas@postgresql.org>
1077 2021-10-25 [9ce346eab] Report progress of startup operations that take a long t
1078 Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
1079 2021-11-05 [e543906e2] Document default and changeability of log_startup_progre
1082 <listitem>
1083 <para>
1084 Generate periodic log message during slow server starts (Nitin
1085 Jadhav, Robert Haas)
1086 </para>
1088 <para>
1089 Messages report the cause of the delay. The time interval for
1090 notification is controlled by the new server variable <link
1091 linkend="guc-log-startup-progress-interval"><varname>log_startup_progress_interval</varname></link>.
1092 </para>
1093 </listitem>
1095 <!--
1096 Author: Andres Freund <andres@anarazel.de>
1097 2022-04-06 [5891c7a8e] pgstat: store statistics in shared memory.
1098 Author: Andres Freund <andres@anarazel.de>
1099 2022-04-07 [b3abca681] pgstat: Update docs to match the shared memory stats rea
1102 <listitem>
1103 <para>
1104 Store <link linkend="monitoring-stats">server-level
1105 statistics</link> in shared memory (Kyotaro Horiguchi, Andres
1106 Freund, Melanie Plageman)
1107 </para>
1109 <para>
1110 Previously this was updated via <acronym>UDP</acronym> packets,
1111 stored in the file system, and read by sessions. There is no
1112 longer a statistics collector process.
1113 </para>
1114 </listitem>
1116 <!--
1117 Author: Peter Geoghegan <pg@bowt.ie>
1118 2022-02-11 [872770fd6] Add VACUUM instrumentation for scanned pages, relfrozenx
1119 Author: Peter Geoghegan <pg@bowt.ie>
1120 2022-03-13 [6e20f4600] VACUUM VERBOSE: tweak scanned_pages logic.
1121 Author: Peter Geoghegan <pg@bowt.ie>
1122 2022-04-15 [bdb71dbe8] VACUUM VERBOSE: Show dead items for an empty table.
1125 <listitem>
1126 <para>
1127 Add additional information to <command>VACUUM VERBOSE</command>
1128 and autovacuum logging messages (Peter Geoghegan)
1129 </para>
1130 </listitem>
1132 <!--
1133 Author: Michael Paquier <michael@paquier.xyz>
1134 2022-04-08 [efb0ef909] Track I/O timing for temporary file blocks in EXPLAIN (B
1137 <listitem>
1138 <para>
1139 Add <link linkend="sql-explain"><command>EXPLAIN
1140 (BUFFERS)</command></link> output for temporary file block I/O
1141 (Masahiko Sawada)
1142 </para>
1143 </listitem>
1145 <!--
1146 Author: Michael Paquier <michael@paquier.xyz>
1147 2022-01-17 [dc686681e] Introduce log_destination=jsonlog
1150 <listitem>
1151 <para>
1152 Allow <link linkend="guc-log-destination">log output</link> in
1153 <acronym>JSON</acronym> format (Sehrope Sarkuni, Michael Paquier)
1154 </para>
1156 <para>
1157 The new setting is <literal>log_destination=jsonlog</literal>.
1158 </para>
1159 </listitem>
1161 <!--
1162 Author: Fujii Masao <fujii@postgresql.org>
1163 2021-09-02 [e04267844] Enhance pg_stat_reset_single_table_counters function.
1166 <listitem>
1167 <para>
1168 Allow <link
1169 linkend="monitoring-stats-funcs-table"><function>pg_stat_reset_single_table_counters()</function></link>
1170 to reset the counters of relations shared across all databases
1171 (B Sadhu, Prasad Patro)
1172 </para>
1173 </listitem>
1175 <!--
1176 Author: Fujii Masao <fujii@postgresql.org>
1177 2021-11-22 [1b06d7bac] Report wait events for local shell commands like archive
1180 <listitem>
1181 <para>
1182 Add <link linkend="wait-event-table">wait events</link> for local
1183 shell commands (Fujii Masao)
1184 </para>
1186 <para>
1187 Specifically the new wait events are related to
1188 commands <varname>archive_command</varname>,
1189 <varname>archive_cleanup_command</varname>,
1190 <varname>restore_command</varname> and
1191 <varname>recovery_end_command</varname>.
1192 </para>
1193 </listitem>
1195 </itemizedlist>
1197 </sect4>
1199 <sect4>
1200 <title>Privileges</title>
1202 <itemizedlist>
1204 <!--
1205 Author: Dean Rasheed <dean.a.rasheed@gmail.com>
1206 2022-03-22 [7faa5fc84] Add support for security invoker views.
1209 <listitem>
1210 <para>
1211 Allow <link linkend="sql-createview">view access</link> to be
1212 controlled by privileges of the view user (Christoph Heiss)
1213 </para>
1215 <para>
1216 Previously, view access could only be based on the view owner.
1217 </para>
1218 </listitem>
1220 <!--
1221 Author: Robert Haas <rhaas@postgresql.org>
1222 2022-01-28 [7f6772317] Adjust server-side backup to depend on pg_write_server_f
1225 <listitem>
1226 <para>
1227 Allow members of the <link
1228 linkend="predefined-roles-table"><literal>pg_write_server_files</literal></link>
1229 predefined role to perform server-side base backups (Dagfinn
1230 Ilmari Mannsåker)
1231 </para>
1233 <para>
1234 Previously only the superusers could perform such backups.
1235 </para>
1236 </listitem>
1238 <!--
1239 Author: Tom Lane <tgl@sss.pgh.pa.us>
1240 2022-04-06 [a0ffa885e] Allow granting SET and ALTER SYSTEM privileges on GUC pa
1243 <listitem>
1244 <para>
1245 Allow <link linkend="sql-grant"><command>GRANT</command></link>
1246 to assign permission to change server variables via
1247 <command>SET</command> and <command>ALTER SYSTEM</command>
1248 (Mark Dilger)
1249 </para>
1251 <para>
1252 New function <function>has_parameter_privilege()</function>
1253 reports on this privilege.
1254 </para>
1255 </listitem>
1257 <!--
1258 Author: Jeff Davis <jdavis@postgresql.org>
1259 2021-11-09 [4168a4745] Add pg_checkpointer predefined role for CHECKPOINT comma
1262 <listitem>
1263 <para>
1264 Add predefined role <link
1265 linkend="predefined-roles-table"><literal>pg_checkpointer</literal></link>
1266 that allows members to run <command>CHECKPOINT</command>
1267 (Jeff Davis)
1268 </para>
1270 <para>
1271 Previously checkpoints could only be run by superusers.
1272 </para>
1273 </listitem>
1275 <!--
1276 Author: Jeff Davis <jdavis@postgresql.org>
1277 2021-10-27 [77ea4f943] Grant memory views to pg_read_all_stats.
1280 <listitem>
1281 <para>
1282 Allow members of the <link
1283 linkend="predefined-roles-table"><literal>pg_read_all_stats</literal></link>
1284 predefined role to access the views <link
1285 linkend="view-pg-backend-memory-contexts"><structname>pg_backend_memory_contexts</structname></link>
1286 and <link
1287 linkend="view-pg-shmem-allocations"><structname>pg_shmem_allocations</structname></link>
1288 (Bharath Rupireddy)
1289 </para>
1291 <para>
1292 Previously these views could only be accessed by superusers.
1293 </para>
1294 </listitem>
1296 <!--
1297 Author: Jeff Davis <jdavis@postgresql.org>
1298 2021-10-26 [f0b051e32] Allow GRANT on pg_log_backend_memory_contexts().
1301 <listitem>
1302 <para>
1303 Allow <link linkend="sql-grant"><command>GRANT</command></link>
1304 to assign permissions on <link
1305 linkend="view-pg-backend-memory-contexts"><function>pg_log_backend_memory_contexts()</function></link>
1306 (Jeff Davis)
1307 </para>
1309 <para>
1310 Previously this function could only be run by superusers.
1311 </para>
1312 </listitem>
1314 </itemizedlist>
1316 </sect4>
1318 <sect4>
1319 <title>Server Configuration</title>
1321 <itemizedlist>
1323 <!--
1324 Author: Michael Paquier <michael@paquier.xyz>
1325 2021-09-08 [bd1788051] Introduce GUC shared_memory_size
1326 Author: Michael Paquier <michael@paquier.xyz>
1327 2021-09-09 [3b231596c] Make shared_memory_size a preset option
1330 <listitem>
1331 <para>
1332 Add server variable <link
1333 linkend="guc-shared-memory-size"><varname>shared_memory_size</varname></link>
1334 to report the size of allocated shared memory (Nathan Bossart)
1335 </para>
1336 </listitem>
1338 <!--
1339 Author: Michael Paquier <michael@paquier.xyz>
1340 2021-09-21 [43c1c4f65] Introduce GUC shared_memory_size_in_huge_pages
1341 Author: Michael Paquier <michael@paquier.xyz>
1342 2022-03-24 [bbd4951b7] doc: Improve postgres command for shared_memory_size_in_
1345 <listitem>
1346 <para>
1347 Add server variable <link
1348 linkend="guc-shared-memory-size-in-huge-pages"><varname>shared_memory_size_in_huge_pages</varname></link>
1349 to report the number of huge memory pages required (Nathan Bossart)
1350 </para>
1352 <para>
1353 This is only supported on Linux.
1354 </para>
1355 </listitem>
1357 <!--
1358 Author: Michael Paquier <michael@paquier.xyz>
1359 2021-09-16 [0c39c2920] Support "postgres -C" with runtime-computed GUCs
1362 <listitem>
1363 <para>
1364 Allow <link linkend="app-postgres"><command>postgres
1365 -C</command></link> to properly report runtime-computed values
1366 (Nathan Bossart)
1367 </para>
1369 <para>
1370 Previously runtime-computed values <link
1371 linkend="guc-data-checksums"><varname>data_checksums</varname></link>,
1372 <link
1373 linkend="guc-wal-segment-size"><varname>wal_segment_size</varname></link>,
1374 and <link
1375 linkend="guc-data-directory-mode"><varname>data_directory_mode</varname></link>
1376 would report values that would not be accurate on the running
1377 server. However, this does not work on a running server.
1378 </para>
1379 </listitem>
1381 </itemizedlist>
1383 </sect4>
1385 </sect3>
1387 <sect3>
1388 <title>Streaming Replication and Recovery</title>
1390 <itemizedlist>
1392 <!--
1393 Author: Robert Haas <rhaas@postgresql.org>
1394 2022-02-11 [dab298471] Add suport for server-side LZ4 base backup compression.
1395 Author: Robert Haas <rhaas@postgresql.org>
1396 2022-03-08 [7cf085f07] Add support for zstd base backup compression.
1397 Author: Robert Haas <rhaas@postgresql.org>
1398 2022-03-30 [51c0d186d] Allow parallel zstd compression when taking a base backu
1401 <listitem>
1402 <para>
1403 Add support for LZ4 and Zstandard compression of server-side <link
1404 linkend="backup-base-backup">base backups</link> (Jeevan Ladhe,
1405 Robert Haas)
1406 </para>
1407 </listitem>
1409 <!--
1410 Author: Thomas Munro <tmunro@postgresql.org>
1411 2021-08-02 [7ff23c6d2] Run checkpointer and bgwriter in crash recovery.
1414 <listitem>
1415 <para>
1416 Run checkpointer and bgwriter during crash recovery (Thomas Munro)
1417 </para>
1418 </listitem>
1420 <!--
1421 Author: Thomas Munro <tmunro@postgresql.org>
1422 2022-04-07 [5dc0418fa] Prefetch data referenced by the WAL, take II.
1425 <listitem>
1426 <para>
1427 Allow <acronym>WAL</acronym> processing to pre-fetch needed file
1428 contents (Thomas Munro)
1429 </para>
1431 <para>
1432 This is controlled by the server variable <link
1433 linkend="guc-recovery-prefetch"><varname>recovery_prefetch</varname></link>.
1434 </para>
1435 </listitem>
1437 <!--
1438 Author: Robert Haas <rhaas@postgresql.org>
1439 2022-02-03 [5ef1eefd7] Allow archiving via loadable modules.
1442 <listitem>
1443 <para>
1444 Add server variable <link
1445 linkend="guc-archive-library"><varname>archive_library</varname></link>
1446 to specify the library to be called for archiving (Nathan Bossart)
1447 </para>
1449 <para>
1450 Previously only shell commands could be called to perform archiving.
1451 </para>
1452 </listitem>
1454 <!--
1455 Author: Jeff Davis <jdavis@postgresql.org>
1456 2021-07-09 [8e7811e95] Eliminate replication protocol error related to IDENTIFY
1459 <listitem>
1460 <para>
1461 No longer require <link
1462 linkend="protocol-replication"><literal>IDENTIFY_SYSTEM</literal></link>
1463 to be run before <literal>START_REPLICATION</literal> (Jeff Davis)
1464 </para>
1465 </listitem>
1467 </itemizedlist>
1469 <sect4>
1470 <title><link linkend="logical-replication">Logical Replication</link></title>
1472 <itemizedlist>
1474 <!--
1475 Author: Amit Kapila <akapila@postgresql.org>
1476 2021-10-27 [5a2832465] Allow publishing the tables of schema.
1477 Author: Amit Kapila <akapila@postgresql.org>
1478 2021-12-08 [1a2aaeb0d] Fix changing the ownership of ALL TABLES IN SCHEMA publi
1481 <listitem>
1482 <para>
1483 Allow publication of all tables in a schema (Vignesh C, Hou Zhijie,
1484 Amit Kapila)
1485 </para>
1487 <para>
1488 For example, this syntax is now supported: <link
1489 linkend="sql-createpublication"><command>CREATE PUBLICATION pub1
1490 FOR ALL TABLES IN SCHEMA s1,s2;</command></link> <command>ALTER
1491 PUBLICATION</command> supports a similar syntax. Tables added
1492 to the listed schemas in the future will also be replicated.
1493 </para>
1494 </listitem>
1496 <!--
1497 Author: Amit Kapila <akapila@postgresql.org>
1498 2022-02-22 [52e4f0cd4] Allow specifying row filters for logical replication of
1499 Author: Tomas Vondra <tomas.vondra@postgresql.org>
1500 2022-03-17 [5a0796622] Fix row filters with multiple publications
1501 Author: Amit Kapila <akapila@postgresql.org>
1502 2022-04-18 [676eeb6dd] Add additional documentation for row filters.
1505 <listitem>
1506 <para>
1507 Allow publication content to be filtered using a
1508 <literal>WHERE</literal> clause (Hou Zhijie, Euler Taveira,
1509 Peter Smith, Ajin Cherian, Tomas Vondra, Amit Kapila)
1510 </para>
1511 </listitem>
1513 <!--
1514 Author: Tomas Vondra <tomas.vondra@postgresql.org>
1515 2022-03-26 [923def9a5] Allow specifying column lists for logical replication
1518 <listitem>
1519 <para>
1520 Allow <link linkend="sql-createpublication">publications</link> to
1521 be restricted to specific columns (Tomas Vondra, Álvaro Herrera,
1522 Rahila Syed)
1523 </para>
1524 </listitem>
1526 <!--
1527 Author: Amit Kapila <akapila@postgresql.org>
1528 2022-03-22 [208c5d65b] Add ALTER SUBSCRIPTION ... SKIP.
1531 <listitem>
1532 <para>
1533 Allow skipping of transactions on a subscriber using <link
1534 linkend="sql-altersubscription"><command>ALTER SUBSCRIPTION
1535 ... SKIP</command></link> (Masahiko Sawada)
1536 </para>
1537 </listitem>
1539 <!--
1540 Author: Amit Kapila <akapila@postgresql.org>
1541 2021-07-14 [a8fd13cab] Add support for prepared transactions to built-in logica
1542 Author: Amit Kapila <akapila@postgresql.org>
1543 2021-08-04 [63cf61cde] Add prepare API support for streaming transactions in lo
1546 <listitem>
1547 <para>
1548 Add support for prepared transactions to built-in logical
1549 replication (Peter Smith, Ajin Cherian, Amit Kapila, Nikhil
1550 Sontakke, Stas Kelvich)
1551 </para>
1552 </listitem>
1554 <!--
1555 Author: Amit Kapila <akapila@postgresql.org>
1556 2021-06-30 [cda03cfed] Allow enabling two-phase option via replication protocol
1559 <listitem>
1560 <para>
1561 Add two-phase information to the logical replication stream
1562 (Ajin Cherian)
1563 </para>
1565 <para>
1566 The new <link
1567 linkend="protocol-replication"><literal>CREATE_REPLICATION_SLOT</literal></link>
1568 option is called <literal>TWO_PHASE</literal>.
1569 <application>pg_recvlogical</application> now supports a new
1570 <option>--two-phase</option> option during slot creation.
1571 </para>
1572 </listitem>
1574 <!--
1575 Author: Amit Kapila <akapila@postgresql.org>
1576 2022-03-30 [d5a9d86d8] Skip empty transactions for logical replication.
1579 <listitem>
1580 <para>
1581 Prevent logical replication of empty transactions (Ajin Cherian,
1582 Hou Zhijie, Euler Taveira)
1583 </para>
1585 <para>
1586 Previously, write transactions would send empty transactions to
1587 subscribers if subscribed tables were not modified.
1588 </para>
1589 </listitem>
1591 <!--
1592 Author: Michael Paquier <michael@paquier.xyz>
1593 2021-11-23 [1922d7c6e] Add SQL functions to monitor the directory contents of r
1596 <listitem>
1597 <para>
1598 Add <acronym>SQL</acronym> functions to monitor the directory
1599 contents of logical replication slots (Bharath Rupireddy)
1600 </para>
1602 <para>
1603 Specifically, the functions are <link
1604 linkend="functions-admin-genfile-table"><function>pg_ls_logicalsnapdir()</function></link>,
1605 <function>pg_ls_logicalmapdir()</function>, and
1606 <function>pg_ls_replslotdir()</function>. They can be run by
1607 members of the predefined <literal>pg_monitor</literal> role.
1608 </para>
1609 </listitem>
1611 <!--
1612 Author: Amit Kapila <akapila@postgresql.org>
1613 2022-03-14 [705e20f85] Optionally disable subscriptions on error.
1616 <listitem>
1617 <para>
1618 Allow subscribers to stop logical replication application on error
1619 (Osumi Takamichi, Mark Dilger)
1620 </para>
1622 <para>
1623 This is enabled with the subscriber option <link
1624 linkend="sql-createsubscription"><literal>disable_on_error</literal></link>
1625 and avoids possible infinite error loops during stream application.
1626 </para>
1627 </listitem>
1629 <!--
1630 Author: Tom Lane <tgl@sss.pgh.pa.us>
1631 2021-11-02 [f3d4019da] Ensure consistent logical replication of datetime and fl
1634 <listitem>
1635 <para>
1636 Adjust subscriber server variables to match the publisher so
1637 datetime and float8 values are interpreted consistently (Japin Li)
1638 </para>
1640 <para>
1641 Some publishers might be relying on inconsistent behavior.
1642 </para>
1643 </listitem>
1645 <!--
1646 Author: Amit Kapila <akapila@postgresql.org>
1647 2021-11-30 [8d74fc96d] Add a view to show the stats of subscription workers.
1648 Author: Amit Kapila <akapila@postgresql.org>
1649 2022-03-01 [7a8507329] Reconsider pg_stat_subscription_workers view.
1652 <listitem>
1653 <para>
1654 Add system view <link
1655 linkend="monitoring-pg-stat-subscription-stats"><structname>pg_stat_subscription_stats</structname></link>
1656 to report on subscriber activity (Masahiko Sawada)
1657 </para>
1659 <para>
1660 New function <link
1661 linkend="monitoring-stats-functions"><function>pg_stat_reset_subscription_stats()</function></link>
1662 allows the resetting of subscriber statistics.
1663 </para>
1664 </listitem>
1666 <!--
1667 Author: Amit Kapila <akapila@postgresql.org>
1668 2021-12-08 [a61bff2bf] De-duplicate the result of pg_publication_tables view.
1671 <listitem>
1672 <para>
1673 Remove incorrect duplicate partitions in system view <link
1674 linkend="view-pg-publication-tables"><structname>pg_publication_tables</structname></link>
1675 (Hou Zhijie)
1676 </para>
1677 </listitem>
1679 </itemizedlist>
1681 </sect4>
1683 </sect3>
1685 <sect3>
1686 <title><link linkend="sql-select"><command>SELECT</command></link>, <link linkend="sql-insert"><command>INSERT</command></link></title>
1688 <itemizedlist>
1690 <!--
1691 Author: David Rowley <drowley@postgresql.org>
1692 2021-08-22 [22c4e88eb] Allow parallel DISTINCT
1695 <listitem>
1696 <para>
1697 Allow <command>SELECT DISTINCT</command> to be parallelized
1698 (David Rowley)
1699 </para>
1700 </listitem>
1702 </itemizedlist>
1704 </sect3>
1706 <sect3>
1707 <title>Utility Commands</title>
1709 <itemizedlist>
1711 <!--
1712 Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
1713 2022-03-28 [7103ebb7a] Add support for MERGE SQL command
1716 <listitem>
1717 <para>
1718 Add <acronym>SQL</acronym> <command>MERGE</command> command to
1719 adjust one table to match another (Simon Riggs, Pavan Deolasee,
1720 Álvaro Herrera, Amit Langote)
1721 </para>
1723 <para>
1724 This is similar to <command>INSERT ... ON CONFLICT</command>
1725 but more batch-oriented.
1726 </para>
1727 </listitem>
1729 <!--
1730 Author: Peter Eisentraut <peter@eisentraut.org>
1731 2022-01-28 [43f33dc01] Add HEADER support to COPY text format
1732 Author: Peter Eisentraut <peter@eisentraut.org>
1733 2022-03-30 [072132f04] Add header matching mode to COPY FROM
1736 <listitem>
1737 <para>
1738 Add support for <literal>HEADER</literal> option in <link
1739 linkend="sql-copy"><command>COPY</command></link> text format
1740 (Rémi Lapeyre)
1741 </para>
1743 <para>
1744 The new option causes the column names to be output, and optionally
1745 verified on input.
1746 </para>
1747 </listitem>
1749 <!--
1750 Author: Robert Haas <rhaas@postgresql.org>
1751 2022-03-29 [9c08aea6a] Add new block-by-block strategy for CREATE DATABASE.
1754 <listitem>
1755 <para>
1756 Add new default <acronym>WAL</acronym>-logged method for <link
1757 linkend="sql-createdatabase">database creation</link> (Dilip Kumar)
1758 </para>
1760 <para>
1761 This avoids the need for checkpoints during database creation;
1762 the old method is still available.
1763 </para>
1764 </listitem>
1766 <!--
1767 Author: Robert Haas <rhaas@postgresql.org>
1768 2022-01-24 [aa0105141] pg_upgrade: Preserve database OIDs.
1771 <listitem>
1772 <para>
1773 Allow <link linkend="sql-createdatabase"><command>CREATE
1774 DATABASE</command></link> to set the database <acronym>OID</acronym>
1775 (Shruthi KC, Antonin Houska)
1776 </para>
1777 </listitem>
1779 <!--
1780 Author: Thomas Munro <tmunro@postgresql.org>
1781 2022-02-12 [4eb217631] Fix DROP {DATABASE,TABLESPACE} on Windows.
1784 <listitem>
1785 <para>
1786 Prevent <link linkend="sql-dropdatabase"><command>DROP
1787 DATABASE</command></link>, <link
1788 linkend="sql-droptablespace"><command>DROP
1789 TABLESPACE</command></link>, and <link
1790 linkend="sql-alterdatabase"><command>ALTER DATABASE SET
1791 TABLESPACE</command></link> from occasionally failing during
1792 concurrent use on Windows (Thomas Munro)
1793 </para>
1794 </listitem>
1796 <!--
1797 Author: Peter Eisentraut <peter@eisentraut.org>
1798 2021-12-08 [d6f96ed94] Allow specifying column list for foreign key ON DELETE S
1801 <listitem>
1802 <para>
1803 Allow foreign key <link linkend="ddl-constraints-fk"><literal>ON
1804 DELETE SET</literal></link> actions to affect only specified columns
1805 (Paul Martinez)
1806 </para>
1808 <para>
1809 Previously, all of the columns in the foreign key were always
1810 affected.
1811 </para>
1812 </listitem>
1814 <!--
1815 Author: Michael Paquier <michael@paquier.xyz>
1816 2021-07-28 [b0483263d] Add support for SET ACCESS METHOD in ALTER TABLE
1819 <listitem>
1820 <para>
1821 Allow <link linkend="sql-altertable"><command>ALTER
1822 TABLE</command></link> to modify a table's <literal>ACCESS
1823 METHOD</literal> (Justin Pryzby, Jeff Davis)
1824 </para>
1825 </listitem>
1827 <!--
1828 Author: Michael Paquier <michael@paquier.xyz>
1829 2021-08-10 [7b565843a] Add call to object access hook at the end of table rewri
1832 <listitem>
1833 <para>
1834 Properly call object access hooks when <link
1835 linkend="sql-altertable"><command>ALTER TABLE</command></link>
1836 causes table rewrites (Michael Paquier)
1837 </para>
1838 </listitem>
1840 </itemizedlist>
1842 </sect3>
1844 <sect3>
1845 <title>Data Types</title>
1847 <itemizedlist>
1849 <!--
1850 Author: Dean Rasheed <dean.a.rasheed@gmail.com>
1851 2021-07-26 [085f931f5] Allow numeric scale to be negative or greater than preci
1854 <listitem>
1855 <para>
1856 Allow <link linkend="datatype-numeric"><type>numeric</type></link>
1857 scale to be negative or greater than precision (Dean Rasheed,
1858 Tom Lane)
1859 </para>
1861 <para>
1862 This allows rounding of values to the left of the decimal point,
1863 e.g., <literal>'1234'::numeric(4, -2)</literal> returns 1200.
1864 </para>
1865 </listitem>
1867 <!--
1868 Author: Tom Lane <tgl@sss.pgh.pa.us>
1869 2022-04-02 [e39f99046] Fix overflow hazards in interval input and output conver
1872 <listitem>
1873 <para>
1874 Improve overflow detection when casting values to <link
1875 linkend="datatype-datetime">interval</link> (Joe Koshakow)
1876 </para>
1877 </listitem>
1879 <!--
1880 Author: Peter Eisentraut <peter@eisentraut.org>
1881 2022-04-07 [344d62fb9] Unlogged sequences
1884 <listitem>
1885 <para>
1886 Allow the creation of unlogged <link
1887 linkend="sql-createsequence">sequences</link> (Peter Eisentraut)
1888 </para>
1889 </listitem>
1891 <!--
1892 Author: John Naylor <john.naylor@postgresql.org>
1893 2021-08-26 [bab982161] Update display widths as part of updating Unicode
1894 Author: Peter Eisentraut <peter@eisentraut.org>
1895 2021-09-15 [f7e56f1f5] Update Unicode data to Unicode 14.0.0
1898 <listitem>
1899 <para>
1900 Update the display width information of modern Unicode characters,
1901 like emojis (Jacob Champion)
1902 </para>
1904 <para>
1905 Also update from Unicode 5.0 to 14.0.0. There is now an automated
1906 way to keep Postgres updated with Unicode releases.
1907 </para>
1908 </listitem>
1910 </itemizedlist>
1912 </sect3>
1914 <sect3>
1915 <title>Functions</title>
1917 <itemizedlist>
1919 <!--
1920 Author: Peter Eisentraut <peter@eisentraut.org>
1921 2022-03-30 [7ae1619bc] Add range_agg with multirange inputs
1924 <listitem>
1925 <para>
1926 Add multirange input to <link
1927 linkend="functions-aggregate-table"><function>range_agg()</function></link>
1928 (Paul Jungwirth)
1929 </para>
1930 </listitem>
1932 <!--
1933 Author: Fujii Masao <fujii@postgresql.org>
1934 2022-02-10 [400fc6b64] Add min() and max() aggregates for xid8.
1937 <listitem>
1938 <para>
1939 Add <link linkend="tutorial-agg"><function>MIN()</function></link>
1940 and <function>MAX()</function> aggregates for the <link
1941 linkend="datatype-int"><type>xid8</type></link> data type (Ken Kato)
1942 </para>
1943 </listitem>
1945 <!--
1946 Author: Tom Lane <tgl@sss.pgh.pa.us>
1947 2021-08-03 [642433707] Add assorted new regexp_xxx SQL functions.
1950 <listitem>
1951 <para>
1952 Add regular expression functions for compatibility with other
1953 relational systems (Gilles Darold, Tom Lane)
1954 </para>
1956 <para>
1957 Specifically, the new functions are <link
1958 linkend="functions-string-other"><function>regexp_count()</function></link>,
1959 <function>regexp_instr()</function>,
1960 <function>regexp_like()</function>, and
1961 <function>regexp_substr()</function>. Some new optional arguments
1962 were also added to <function>regexp_replace()</function>.
1963 </para>
1964 </listitem>
1966 <!--
1967 Author: Tom Lane <tgl@sss.pgh.pa.us>
1968 2021-12-13 [c5c192d7b] Implement poly_distance().
1971 <listitem>
1972 <para>
1973 Add the ability to compute the distance between <link
1974 linkend="datatype-polygon"><type>polygons</type></link> (Tom Lane)
1975 </para>
1976 </listitem>
1978 <!--
1979 Author: Robert Haas <rhaas@postgresql.org>
1980 2022-03-14 [9dde82899] Support "of", "tzh", and "tzm" format codes.
1983 <listitem>
1984 <para>
1985 Add <link
1986 linkend="functions-formatting-table"><function>to_char()</function></link>
1987 format codes <literal>of</literal>, <literal>tzh</literal>, and
1988 <literal>tzm</literal> format codes (Nitin Jadhav)
1989 </para>
1991 <para>
1992 The upper-case versions of these were already supported.
1993 </para>
1994 </listitem>
1996 <!--
1997 Author: Tom Lane <tgl@sss.pgh.pa.us>
1998 2021-09-06 [388e71af8] Make timetz_zone() stable, and correct a bug for DYNTZ a
2001 <listitem>
2002 <para>
2003 Improve the optimization of <function>timetz_zone()</function> by
2004 stabilizing its value at transaction start (Aleksander Alekseev,
2005 Tom Lane)
2006 </para>
2008 <para>
2009 HOW IS THIS USED?
2010 </para>
2011 </listitem>
2013 <!--
2014 Author: Tom Lane <tgl@sss.pgh.pa.us>
2015 2021-11-06 [cbe25dcff] Disallow making an empty lexeme via array_to_tsvector().
2018 <listitem>
2019 <para>
2020 Allow <function>tsvector_delete_arr()</function> and
2021 <function>tsvector_setweight_by_filter()</function> to accept
2022 empty array elements (Jean-Christophe Arnu)
2023 </para>
2025 <para>
2026 These lexemes are not stored so the acceptance of empty array
2027 elements is not a problem. NOT DOCUMENTED, USER API?
2028 </para>
2029 </listitem>
2031 <!--
2032 Author: David Rowley <drowley@postgresql.org>
2033 2021-07-09 [ca2e4472b] Teach pg_size_pretty and pg_size_bytes about petabytes
2036 <listitem>
2037 <para>
2038 Add support for petabyte units to <link
2039 linkend="functions-admin-dbsize"><function>pg_size_pretty()</function></link>
2040 and <function>pg_size_bytes()</function> (David Christensen)
2041 </para>
2042 </listitem>
2044 <!--
2045 Author: Tom Lane <tgl@sss.pgh.pa.us>
2046 2021-07-27 [024515cac] In event triggers, use "pg_temp" only for our own temp s
2049 <listitem>
2050 <para>
2051 Change <link
2052 linkend="pg-event-trigger-ddl-command-end-functions"><function>pg_event_trigger_ddl_commands()</function></link>
2053 to output references to non-local temporary schemas using the
2054 actual schema name (Tom Lane)
2055 </para>
2057 <para>
2058 Previously this function referred to temporary schemas as
2059 <literal>pg_temp</literal>.
2060 </para>
2061 </listitem>
2063 </itemizedlist>
2065 <sect4>
2066 <title><acronym>JSON</acronym></title>
2068 <itemizedlist>
2070 <!--
2071 Author: Andrew Dunstan <andrew@dunslane.net>
2072 2022-03-27 [f79b803dc] Common SQL/JSON clauses
2073 Author: Andrew Dunstan <andrew@dunslane.net>
2074 2022-03-27 [f4fb45d15] SQL/JSON constructors
2075 Author: Andrew Dunstan <andrew@dunslane.net>
2076 2022-03-30 [606948b05] SQL JSON functions
2077 Author: Andrew Dunstan <andrew@dunslane.net>
2078 2022-03-31 [49082c2cc] RETURNING clause for JSON() and JSON_SCALAR()
2079 Author: Andrew Dunstan <andrew@dunslane.net>
2080 2022-04-07 [a6baa4bad] Documentation for SQL/JSON features
2083 <listitem>
2084 <para>
2085 Add <acronym>SQL</acronym>/<acronym>JSON</acronym>-standard
2086 <acronym>JSON</acronym> constructors (Nikita Glukhov)
2087 </para>
2089 <para>
2090 The construction functions are <link
2091 linkend="functions-sqljson-producing"><function>json()</function></link>,
2092 <function>json_scalar()</function>, and
2093 <function>json_serialize()</function>,
2094 <function>json_array()</function>,
2095 <function>json_arrayagg()</function>,
2096 <function>json_object()</function>, and
2097 <function>json_objectagg()</function>. They have a few functional
2098 advantages over the existing JSON functions.
2099 </para>
2100 </listitem>
2102 <!--
2103 Author: Andrew Dunstan <andrew@dunslane.net>
2104 2022-03-29 [1a36bc9db] SQL/JSON query functions
2107 <listitem>
2108 <para>
2109 Add <acronym>SQL</acronym>/<acronym>JSON</acronym>
2110 query functions <link
2111 linkend="functions-sqljson-querying"><function>json_exists()</function></link>,
2112 <function>json_query()</function>, and
2113 <function>json_value()</function> (Nikita Glukhov)
2114 </para>
2115 </listitem>
2117 <!--
2118 Author: Andrew Dunstan <andrew@dunslane.net>
2119 2022-03-28 [33a377608] IS JSON predicate
2122 <listitem>
2123 <para>
2124 Add <acronym>JSON</acronym> predicates to test
2125 <type>JSON</type>/<type>JSONB</type> values (Nikita Glukhov)
2126 </para>
2128 <para>
2129 The clauses are <link linkend="functions-sqljson-misc"><literal>IS
2130 JSON</literal></link> [ <literal>VALUE</literal> |
2131 <literal>ARRAY</literal>
2132 | <literal>OBJECT</literal> | <literal>SCALAR</literal> |
2133 [<literal>WITH</literal> | <literal>WITHOUT</literal> ]
2134 <literal>UNIQUE KEYS</literal> ].
2135 </para>
2136 </listitem>
2138 <!--
2139 Author: Andrew Dunstan <andrew@dunslane.net>
2140 2022-04-04 [4e34747c8] JSON_TABLE
2141 Author: Andrew Dunstan <andrew@dunslane.net>
2142 2022-04-05 [fadb48b00] PLAN clauses for JSON_TABLE
2145 <listitem>
2146 <para>
2147 Add function <link
2148 linkend="functions-sqljson-table"><function>JSON_TABLE()</function></link>
2149 to cause <acronym>JSON</acronym> data to be treated as a table
2150 (Nikita Glukhov)
2151 </para>
2152 </listitem>
2154 </itemizedlist>
2156 </sect4>
2158 </sect3>
2160 <sect3>
2161 <title><link linkend="plpgsql">PL/pgSQL</link></title>
2163 <itemizedlist>
2165 <!--
2166 Author: Tom Lane <tgl@sss.pgh.pa.us>
2167 2022-04-30 [ccd10a9bf] Tighten enforcement of variable CONSTANT markings in plp
2170 <listitem>
2171 <para>
2172 Fix enforcement of PL/pgSQL variable <literal>CONSTANT</literal>
2173 markings (Tom Lane)
2174 </para>
2176 <para>
2177 Previously, a variable used as a <link
2178 linkend="plpgsql-statements-calling-procedure"><command>CALL</command></link>
2179 output parameter or refcursor <command>OPEN</command> variable
2180 would not enforce <literal>CONSTANT</literal>.
2181 </para>
2182 </listitem>
2184 </itemizedlist>
2186 </sect3>
2188 <sect3>
2189 <title><link linkend="libpq">libpq</link></title>
2191 <itemizedlist>
2193 <!--
2194 Author: Peter Eisentraut <peter@eisentraut.org>
2195 2022-04-01 [c1932e542] libpq: Allow IP address SANs in server certificates
2198 <listitem>
2199 <para>
2200 Allow <acronym>IP</acronym> address matching against a server
2201 certificate's Subject Alternative Name (Jacob Champion)
2202 </para>
2203 </listitem>
2205 <!--
2206 Author: Daniel Gustafsson <dgustafsson@postgresql.org>
2207 2022-03-29 [ebc8b7d44] Enable SSL library detection via PQsslAttribute()
2210 <listitem>
2211 <para>
2212 Allow <function>PQsslAttribute()</function> to report the
2213 <acronym>SSL</acronym> library type without requiring a libpq
2214 connection (Jacob Champion)
2215 </para>
2216 </listitem>
2218 <!--
2219 Author: Tom Lane <tgl@sss.pgh.pa.us>
2220 2022-01-18 [5987feb70] Make PQcancel use the PGconn's tcp_user_timeout and keep
2223 <listitem>
2224 <para>
2225 Change query cancellations sent by the client to use the same
2226 <acronym>TCP</acronym> settings as normal client connections
2227 (Jelte Fennema)
2228 </para>
2230 <para>
2231 This allows configured <acronym>TCP</acronym> timeouts to apply
2232 to query cancel connections.
2233 </para>
2234 </listitem>
2236 <!--
2237 Author: Tom Lane <tgl@sss.pgh.pa.us>
2238 2022-02-18 [ce1e7a2f7] Don't let libpq "event" procs break the state of PGresul
2239 Author: Tom Lane <tgl@sss.pgh.pa.us>
2240 2022-02-18 [2e372869a] Don't let libpq PGEVT_CONNRESET callbacks break a PGconn
2243 <listitem>
2244 <para>
2245 Prevent libpq event callback failures from forcing an error result
2246 (Tom Lane)
2247 </para>
2248 </listitem>
2250 </itemizedlist>
2252 </sect3>
2254 <sect3>
2255 <title>Client Applications</title>
2257 <itemizedlist>
2259 <!--
2260 Author: Tom Lane <tgl@sss.pgh.pa.us>
2261 2022-01-09 [376ce3e40] Prefer $HOME when looking up the current user's home dir
2264 <listitem>
2265 <para>
2266 On Unix platforms, have client applications like <link
2267 linkend="app-psql"><application>psql</application></link>
2268 check <envar>HOME</envar> environment variable for the user's
2269 home directory before checking the operating system definition
2270 (Anders Kaseorg)
2271 </para>
2272 </listitem>
2274 </itemizedlist>
2276 <sect4>
2277 <title><xref linkend="app-psql"/></title>
2279 <itemizedlist>
2281 <!--
2282 Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
2283 2021-07-14 [eec57115e] In psql \copy from, send data to server in larger chunks
2286 <listitem>
2287 <para>
2288 Improve performance of <application>psql</application>'s \copy
2289 command (Heikki Linnakangas)
2290 </para>
2291 </listitem>
2293 <!--
2294 Author: Tom Lane <tgl@sss.pgh.pa.us>
2295 2021-12-20 [33d3eeadb] Add a \getenv command to psql.
2298 <listitem>
2299 <para>
2300 Add <application>psql</application> command \getenv
2301 to assign the value of an environment variable to a
2302 <application>psql</application> variable (Tom Lane)
2303 </para>
2304 </listitem>
2306 <!--
2307 Author: Tom Lane <tgl@sss.pgh.pa.us>
2308 2022-01-06 [328dfbdab] Extend psql's \lo_list/\dl to be able to print large obj
2311 <listitem>
2312 <para>
2313 Add '+' option to <application>psql</application>'s
2314 <literal>\lo_list</literal>/<literal>\dl</literal> to show object
2315 privileges (Pavel Luzanov)
2316 </para>
2317 </listitem>
2319 <!--
2320 Author: Tom Lane <tgl@sss.pgh.pa.us>
2321 2022-04-07 [3e707fbb4] psql: add \dconfig command to show server's configuratio
2322 Author: Tom Lane <tgl@sss.pgh.pa.us>
2323 2022-04-11 [5e70d8b5d] Tweak the default behavior of psql's \dconfig.
2324 Author: Tom Lane <tgl@sss.pgh.pa.us>
2325 2022-04-13 [139d46ee2] Further tweak the default behavior of psql's \dconfig.
2328 <listitem>
2329 <para>
2330 Add <application>psql</application> \dconfig to report server
2331 variables (Mark Dilger, Tom Lane)
2332 </para>
2334 <para>
2335 This is similar to the server-side <command>SHOW</command>
2336 command but can process patterns.
2337 </para>
2338 </listitem>
2340 <!--
2341 Author: Thomas Munro <tmunro@postgresql.org>
2342 2021-07-13 [7c09d2797] Add PSQL_WATCH_PAGER for psql's \watch command.
2345 <listitem>
2346 <para>
2347 Add pager option for <application>psql</application>'s \watch
2348 command (Pavel Stehule, Thomas Munro)
2349 </para>
2351 <para>
2352 This is only supported on Unix, and is controlled by
2353 <envar>PSQL_WATCH_PAGER</envar>.
2354 </para>
2355 </listitem>
2357 <!--
2358 Author: Tom Lane <tgl@sss.pgh.pa.us>
2359 2021-12-01 [83884682f] psql: include intra-query "- -" comments in what's sent t
2360 Author: Tom Lane <tgl@sss.pgh.pa.us>
2361 2021-12-01 [c2f654930] psql: treat "- -" comments between queries as separate hi
2364 <listitem>
2365 <para>
2366 Have <application>psql</application> send intra-query double-hyphen
2367 comments to the server (Tom Lane, Greg Nancarrow)
2368 </para>
2370 <para>
2371 Previously such comments were removed from the query
2372 before being sent. Double-hyphen comments that are before
2373 query text are not sent, and are not recorded as separate
2374 <application>psql</application> history entries.
2375 </para>
2376 </listitem>
2378 <!--
2379 Author: Tom Lane <tgl@sss.pgh.pa.us>
2380 2021-12-01 [3d858af07] psql: initialize comment-begin setting to a useful value
2383 <listitem>
2384 <para>
2385 Adjust <application>psql</application>'s readline meta-# to insert
2386 a double-hyphen comment marker (Tom Lane)
2387 </para>
2389 <para>
2390 Previously an unhelpful pound marker was inserted.
2391 </para>
2392 </listitem>
2394 <!--
2395 Author: Peter Eisentraut <peter@eisentraut.org>
2396 2022-04-04 [7844c9918] psql: Show all query results by default
2399 <listitem>
2400 <para>
2401 Have <application>psql</application> output all results if multiple
2402 queries are passed to the server at once (Fabien Coelho)
2403 </para>
2405 <para>
2406 This can be disabled by setting <envar>SHOW_ALL_RESULTS</envar>.
2407 </para>
2408 </listitem>
2410 <!--
2411 Author: Michael Paquier <michael@paquier.xyz>
2412 2021-08-10 [e2ce88b58] Add tab completion for DECLARE .. ASENSITIVE in psql
2413 Author: Michael Paquier <michael@paquier.xyz>
2414 2021-08-25 [346511313] Add tab completion for EXPLAIN .. EXECUTE in psql
2415 Author: Michael Paquier <michael@paquier.xyz>
2416 2021-08-30 [d3fa87657] Add more tab completion support for ALTER TABLE ADD in p
2417 Author: Michael Paquier <michael@paquier.xyz>
2418 2021-08-31 [f2bbadce6] Add tab completion for data types after ALTER TABLE ADD
2419 Author: Fujii Masao <fujii@postgresql.org>
2420 2021-09-01 [b0c066297] Improve tab-completion for CREATE PUBLICATION.
2421 Author: Fujii Masao <fujii@postgresql.org>
2422 2021-10-05 [0b0d277c3] psql: Improve tab-completion for LOCK TABLE.
2423 Author: Michael Paquier <michael@paquier.xyz>
2424 2021-11-05 [a5b336b8b] Improve psql tab completion for COMMENT
2425 Author: Michael Paquier <michael@paquier.xyz>
2426 2021-11-19 [0cd6d3b3c] Improve psql tab completion for transforms, domains and
2427 Author: Michael Paquier <michael@paquier.xyz>
2428 2021-11-29 [f44ceb46e] Improve psql tab completion for views, FDWs, sequences a
2429 Author: Michael Paquier <michael@paquier.xyz>
2430 2021-12-01 [9270778f4] Improve psql tab completion for various DROP commands
2431 Author: Tom Lane <tgl@sss.pgh.pa.us>
2432 2022-01-03 [dfe67c0e8] Tab completion: don't offer valid constraints in VALIDAT
2433 Author: Fujii Masao <fujii@postgresql.org>
2434 2022-01-15 [74527c3e0] Add tab-completion for CREATE FOREIGN TABLE.
2435 Author: Peter Eisentraut <peter@eisentraut.org>
2436 2022-01-27 [fefce9ef9] psql: Add tab completion for ALTER COLLATION / REFRESH V
2437 Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
2438 2022-01-28 [95787e849] Tab-complete ALTER PUBLICATION ADD TABLE with list of ta
2439 Author: Tom Lane <tgl@sss.pgh.pa.us>
2440 2022-01-30 [02b8048ba] psql: improve tab-complete's handling of variant SQL nam
2441 Author: Tom Lane <tgl@sss.pgh.pa.us>
2442 2022-02-01 [020258fbd] Treat case of tab-completion keywords a bit more careful
2443 Author: Tom Lane <tgl@sss.pgh.pa.us>
2444 2022-02-09 [f0cd9097c] Further tweaks for psql's new tab-completion logic.
2445 Author: Tom Lane <tgl@sss.pgh.pa.us>
2446 2022-03-20 [7fa3db367] psql: handle tab completion of timezone names after "SET
2447 Author: Tomas Vondra <tomas.vondra@postgresql.org>
2448 2022-03-25 [2d2232933] Update tab-completion for CREATE PUBLICATION with sequen
2449 Author: Tom Lane <tgl@sss.pgh.pa.us>
2450 2022-04-13 [b5607b074] Fix case sensitivity in psql's tab completion for GUC na
2453 <listitem>
2454 <para>
2455 Improve <application>psql</application>'s tab completion (Shinya
2456 Kato, Dagfinn Ilmari Mannsåker, Peter Smith, Koyu Tanigawa,
2457 Ken Kato, David Fetter, Haiying Tang, Peter Eisentraut, Álvaro
2458 Herrera, Tom Lane, Masahiko Sawada)
2459 </para>
2460 </listitem>
2462 <!--
2463 Author: Tom Lane <tgl@sss.pgh.pa.us>
2464 2021-12-16 [cf0cab868] Remove psql support for server versions preceding 9.2.
2467 <listitem>
2468 <para>
2469 Limit support of <application>psql</application> to servers running
2470 <productname>PostgreSQL</productname> 9.2 and later (Tom Lane)
2471 </para>
2472 </listitem>
2474 </itemizedlist>
2476 </sect4>
2478 </sect3>
2480 <sect3>
2481 <title>Server Applications</title>
2483 <itemizedlist>
2485 <!--
2486 Author: Robert Haas <rhaas@postgresql.org>
2487 2022-01-20 [3500ccc39] Support base backup targets.
2490 <listitem>
2491 <para>
2492 Add new <link
2493 linkend="app-pgbasebackup"><application>pg_basebackup</application></link>
2494 option <option>--target</option> to control the base backup location
2495 (Robert Haas)
2496 </para>
2498 <para>
2499 New output options are <literal>server</literal> to write the
2500 backup locally and <literal>blackhole</literal> to discard the
2501 backup (for testing).
2502 </para>
2503 </listitem>
2505 <!--
2506 Author: Robert Haas <rhaas@postgresql.org>
2507 2022-02-11 [751b8d23b] pg_basebackup: Allow client-side LZ4 (de)compression.
2508 Author: Robert Haas <rhaas@postgresql.org>
2509 2022-03-08 [7cf085f07] Add support for zstd base backup compression.
2512 <listitem>
2513 <para>
2514 Allow <application>pg_basebackup</application> to use LZ4 and
2515 Zstandard compression on server-side base backup files (Dipesh
2516 Pandit, Jeevan Ladhe)
2517 </para>
2518 </listitem>
2520 <!--
2521 Author: Michael Paquier <michael@paquier.xyz>
2522 2022-01-21 [5c649fe15] Extend the options of pg_basebackup to control compressi
2523 Author: Robert Haas <rhaas@postgresql.org>
2524 2022-01-24 [0ad803291] Server-side gzip compression.
2525 Author: Robert Haas <rhaas@postgresql.org>
2526 2022-01-25 [e1f860f13] Tidy up a few cosmetic issues related to pg_basebackup.
2529 <listitem>
2530 <para>
2531 Allow <application>pg_basebackup</application>'s
2532 <option>--compress</option> option to control the compression
2533 method and options (Michael Paquier, Robert Haas)
2534 </para>
2536 <para>
2537 New options include <literal>server-gzip</literal> (gzip
2538 on the server), <literal>client-gzip</literal> (same as
2539 <literal>gzip</literal>).
2540 </para>
2541 </listitem>
2543 <!--
2544 Author: Robert Haas <rhaas@postgresql.org>
2545 2022-01-28 [d45099425] Allow server-side compression to be used with -Fp.
2548 <listitem>
2549 <para>
2550 Allow <application>pg_basebackup</application> to compress on
2551 the server side and decompress on the client side before storage
2552 (Dipesh Pandit)
2553 </para>
2555 <para>
2556 This is accomplished by specifying compression on the server side
2557 and plain output format.
2558 </para>
2559 </listitem>
2561 <!--
2562 Author: Michael Paquier <michael@paquier.xyz>
2563 2021-11-05 [babbbb595] Add support for LZ4 compression in pg_receivewal
2564 Author: Michael Paquier <michael@paquier.xyz>
2565 2022-04-13 [042a923ad] Rework compression options of pg_receivewal
2568 <listitem>
2569 <para>
2570 Add the LZ4 compression method to <link
2571 linkend="app-pgreceivewal"><application>pg_receivewal</application></link>
2572 (Georgios Kokolatos)
2573 </para>
2575 <para>
2576 This is enabled via <literal>--compress=lz4</literal> and requires
2577 binaries to be built using <option>--with-lz4</option>.
2578 </para>
2579 </listitem>
2581 <!--
2582 Author: Michael Paquier <michael@paquier.xyz>
2583 2021-11-04 [d62bcc8b0] Rework compression options of pg_receivewal
2586 <listitem>
2587 <para>
2588 Add additional capabilities to
2589 <application>pg_receivewal</application>'s
2590 <option>--compress</option> option (Georgios Kokolatos)
2591 </para>
2592 </listitem>
2594 <!--
2595 Author: Michael Paquier <michael@paquier.xyz>
2596 2021-10-26 [f61e1dd2c] Allow pg_receivewal to stream from a slot's restart LSN
2599 <listitem>
2600 <para>
2601 Improve <application>pg_receivewal</application>'s ability to
2602 restart at the proper <acronym>WAL</acronym> location (Ronan
2603 Dunklau)
2604 </para>
2606 <para>
2607 Previously, <application>pg_receivewal</application> would start
2608 based on the <acronym>WAL</acronym> file stored in the local archive
2609 directory, or at the sending server's current <acronym>WAL</acronym>
2610 flush location. With this change, if the sending server is running
2611 Postgres 15 or later, the local archive directory is empty, and
2612 a replication slot is specified, the replication slot's restart
2613 point will be used.
2614 </para>
2615 </listitem>
2617 <!--
2618 Author: Michael Paquier <michael@paquier.xyz>
2619 2022-04-07 [0d5c38757] Add option - -config-file to pg_rewind
2622 <listitem>
2623 <para>
2624 Add <application>pg_rewind</application> option
2625 <option>--config-file</option> to simplify use when server
2626 configuration files are stored outside the data directory (Gunnar
2627 Bluth)
2628 </para>
2629 </listitem>
2631 <!--
2632 Author: Tatsuo Ishii <ishii@postgresql.org>
2633 2022-03-23 [4a39f87ac] Allow pgbench to retry in some cases.
2636 <listitem>
2637 <para>
2638 Allow <link
2639 linkend="pgbench"><application>pgbench</application></link> to
2640 retry after serialization and deadlock failures (Yugo Nagata,
2641 Marina Polyakova)
2642 </para>
2643 </listitem>
2645 </itemizedlist>
2647 <sect4>
2648 <title><link linkend="app-pgdump"><application>pg_dump</application></link></title>
2650 <itemizedlist>
2652 <!--
2653 Author: Noah Misch <noah@leadboat.com>
2654 2021-06-28 [a7a7be1f2] Dump public schema ownership and security labels.
2655 Author: Noah Misch <noah@leadboat.com>
2656 2021-06-28 [7ac10f692] Dump COMMENT ON SCHEMA public.
2659 <listitem>
2660 <para>
2661 Have <application>pg_dump</application> dump
2662 <literal>public</literal> schema ownership changes and security
2663 labels (Noah Misch)
2664 </para>
2666 <para>
2667 It also dumps <literal>public</literal> schema comments.
2668 </para>
2669 </listitem>
2671 <!--
2672 Author: Tom Lane <tgl@sss.pgh.pa.us>
2673 2021-12-06 [989596152] Avoid per-object queries in performance-critical paths i
2674 Author: Tom Lane <tgl@sss.pgh.pa.us>
2675 2021-12-06 [be85727a3] Use PREPARE/EXECUTE for repetitive per-object queries in
2676 Author: Tom Lane <tgl@sss.pgh.pa.us>
2677 2021-12-31 [d5e8930f5] pg_dump: minor performance improvements from eliminating
2680 <listitem>
2681 <para>
2682 Improve performance of dumping databases with many objects
2683 (Tom Lane)
2684 </para>
2686 <para>
2687 This will also improve the performance of <link
2688 linkend="pgupgrade"><application>pg_upgrade</application></link>.
2689 </para>
2690 </listitem>
2692 <!--
2693 Author: Tom Lane <tgl@sss.pgh.pa.us>
2694 2021-12-06 [65aaed22a] Account for TOAST data while scheduling parallel dumps.
2697 <listitem>
2698 <para>
2699 Improve the parallel <application>pg_dump</application> performance
2700 of <acronym>TOAST</acronym> tables (Tom Lane)
2701 </para>
2702 </listitem>
2704 <!--
2705 Author: Michael Paquier <michael@paquier.xyz>
2706 2022-01-17 [215862886] Add support for - -no-table-access-method in pg_{dump,dum
2709 <listitem>
2710 <para>
2711 Add dump/restore option <option>--no-table-access-method</option>
2712 to force restore to only use the default table access method
2713 (Justin Pryzby)
2714 </para>
2715 </listitem>
2717 <!--
2718 Author: Tom Lane <tgl@sss.pgh.pa.us>
2719 2021-12-14 [30e7c175b] Remove pg_dump/pg_dumpall support for dumping from pre-9
2722 <listitem>
2723 <para>
2724 Limit support of <application>pg_dump</application> and <link
2725 linkend="app-pg-dumpall"><application>pg_dumpall</application></link>
2726 to servers running <productname>PostgreSQL</productname> 9.2 and
2727 later (Tom Lane)
2728 </para>
2729 </listitem>
2731 </itemizedlist>
2733 </sect4>
2735 <sect4>
2736 <title><link linkend="pgupgrade"><application>pg_upgrade</application></link></title>
2738 <itemizedlist>
2740 <!--
2741 Author: Andres Freund <andres@anarazel.de>
2742 2022-02-21 [27b02e070] pg_upgrade: Don't print progress status when output is n
2745 <listitem>
2746 <para>
2747 Disable default status reporting during
2748 <application>pg_upgrade</application> operation if the output is
2749 not a terminal (Andres Freund)
2750 </para>
2752 <para>
2753 The status reporting output can be enabled for non-tty usage by
2754 using <option>--verbose</option>.
2755 </para>
2756 </listitem>
2758 <!--
2759 Author: Daniel Gustafsson <dgustafsson@postgresql.org>
2760 2022-03-24 [26ebb0e28] List offending databases in pg_upgrade datallowconn chec
2763 <listitem>
2764 <para>
2765 Have <application>pg_upgrade</application> report all databases
2766 with invalid connection settings (Jeevan Ladhe)
2767 </para>
2769 <para>
2770 Previously only the first database with an invalid connection
2771 setting was reported.
2772 </para>
2773 </listitem>
2775 <!--
2776 Author: Michael Paquier <michael@paquier.xyz>
2777 2022-02-06 [38bfae365] pg_upgrade: Move all the files generated internally to a
2778 Author: Michael Paquier <michael@paquier.xyz>
2779 2022-02-15 [a00849630] Fix thinko with subdirectories generated by pg_upgrade f
2782 <listitem>
2783 <para>
2784 Store <application>pg_upgrade</application>
2785 temporary files in a new cluster subdirectory called
2786 <filename>pg_upgrade_output.d</filename> (Justin Pryzby)
2787 </para>
2789 <para>
2790 Previously temporary files were stored in the current directory.
2791 </para>
2792 </listitem>
2794 <!--
2795 Author: Robert Haas <rhaas@postgresql.org>
2796 2022-01-17 [9a974cbcb] pg_upgrade: Preserve relfilenodes and tablespace OIDs.
2797 Author: Robert Haas <rhaas@postgresql.org>
2798 2022-01-24 [aa0105141] pg_upgrade: Preserve database OIDs.
2801 <listitem>
2802 <para>
2803 Have <application>pg_upgrade</application> preserve relfilenodes,
2804 tablespace, and database OIDs between old and new clusters
2805 (Shruthi KC, Antonin Houska)
2806 </para>
2807 </listitem>
2809 <!--
2810 Author: Michael Paquier <michael@paquier.xyz>
2811 2021-12-18 [3d5ffccb6] Add option -N/- -no-sync to pg_upgrade
2814 <listitem>
2815 <para>
2816 Add a <option>--no-sync</option> option to
2817 <application>pg_upgrade</application> (Michael Paquier)
2818 </para>
2820 <para>
2821 This useful only for testing.
2822 </para>
2823 </listitem>
2825 <!--
2826 Author: Tom Lane <tgl@sss.pgh.pa.us>
2827 2021-12-14 [e469f0aaf] Remove pg_upgrade support for upgrading from pre-9.2 ser
2830 <listitem>
2831 <para>
2832 Limit support of <application>pg_upgrade</application> to old
2833 servers running <productname>PostgreSQL</productname> 9.2 and later
2834 (Tom Lane)
2835 </para>
2836 </listitem>
2838 </itemizedlist>
2840 </sect4>
2842 <sect4>
2843 <title><link linkend="pgwaldump"><application>pg_waldump</application></link></title>
2845 <itemizedlist>
2847 <!--
2848 Author: Thomas Munro <tmunro@postgresql.org>
2849 2022-03-24 [127aea2a6] Add additional filtering options to pg_waldump.
2850 Author: Thomas Munro <tmunro@postgresql.org>
2851 2022-03-25 [52b556843] Improve command line options for pg_waldump.
2854 <listitem>
2855 <para>
2856 Allow <application>pg_waldump</application> to be filtered by
2857 relation file node, block number, fork number, and full page images
2858 (David Christensen, Thomas Munro)
2859 </para>
2860 </listitem>
2862 <!--
2863 Author: Michael Paquier <michael@paquier.xyz>
2864 2021-12-02 [f2c52eeba] pg_waldump: Emit stats summary when interrupted by SIGIN
2867 <listitem>
2868 <para>
2869 Have <application>pg_waldump</application> report statistics
2870 before an interrupted exit (Bharath Rupireddy)
2871 </para>
2873 <para>
2874 For example, issuing a control-C in a terminal running
2875 <command>pg_waldump --stats --follow</command> will report the
2876 current statistics before exiting. This does not work on Windows.
2877 </para>
2878 </listitem>
2880 <!--
2881 Author: Michael Paquier <michael@paquier.xyz>
2882 2021-12-13 [c8b733c4c] Improve description of some WAL records with transaction
2885 <listitem>
2886 <para>
2887 Improve descriptions of some transaction <acronym>WAL</acronym>
2888 records reported by <application>pg_waldump</application>
2889 (Masahiko Sawada, Michael Paquier)
2890 </para>
2891 </listitem>
2893 <!--
2894 Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
2895 2021-07-01 [c8bf5098c] Allow specifying pg_waldump - -rmgr option multiple times
2898 <listitem>
2899 <para>
2900 Allow <application>pg_waldump</application> to dump information
2901 about multiple resource managers (Heikki Linnakangas)
2902 </para>
2904 <para>
2905 This is enabled by specifying the <option>--rmgr</option> option
2906 multiple times.
2907 </para>
2908 </listitem>
2910 </itemizedlist>
2912 </sect4>
2914 </sect3>
2916 <sect3>
2917 <title>Documentation</title>
2919 <itemizedlist>
2921 <!--
2922 Author: Fujii Masao <fujii@postgresql.org>
2923 2021-10-05 [f6b5d05ba] doc: Document pg_encoding_to_char() and pg_char_to_encod
2926 <listitem>
2927 <para>
2928 Add documentation for <link
2929 linkend="functions-info-catalog-table"><function>pg_encoding_to_char()</function></link>
2930 and <function>pg_char_to_encoding()</function> (Ian Lawrence
2931 Barwick)
2932 </para>
2933 </listitem>
2935 <!--
2936 Author: Tom Lane <tgl@sss.pgh.pa.us>
2937 2021-10-09 [2ae5d72f0] Doc: improve documentation for ^@ starts-with operator.
2940 <listitem>
2941 <para>
2942 Document the <link
2943 linkend="functions-string-other"><literal>^@</literal></link>
2944 starts-with operator (Tom Lane)
2945 </para>
2946 </listitem>
2948 </itemizedlist>
2950 </sect3>
2952 <sect3>
2953 <title>Source Code</title>
2955 <itemizedlist>
2957 <!--
2958 Author: Andres Freund <andres@anarazel.de>
2959 2021-12-30 [93d973494] ci: Add continuous integration for github repositories v
2962 <listitem>
2963 <para>
2964 Add support for continuous integration testing using cirrus-ci
2965 (Andres Freund, Thomas Munro, Melanie Plageman)
2966 </para>
2967 </listitem>
2969 <!--
2970 Author: Robert Haas <rhaas@postgresql.org>
2971 2022-02-18 [6c417bbcc] Add support for building with ZSTD.
2974 <listitem>
2975 <para>
2976 Add configure option <link
2977 linkend="configure-options-features"><option>--with-zstd</option></link>
2978 to enable Zstandard builds (Jeevan Ladhe, Robert Haas, Michael
2979 Paquier)
2980 </para>
2981 </listitem>
2983 <!--
2984 Author: Peter Eisentraut <peter@eisentraut.org>
2985 2021-11-22 [d6d1dfcc9] Add ABI extra field to fmgr magic block
2988 <listitem>
2989 <para>
2990 Add module field which can be customized for non-community
2991 <productname>PostgreSQL</productname> distributions (Peter
2992 Eisentraut)
2993 </para>
2995 <para>
2996 A module field mismatch would generate an error.
2997 </para>
2998 </listitem>
3000 <!--
3001 Author: Tom Lane <tgl@sss.pgh.pa.us>
3002 2021-12-11 [07eee5a0d] Create a new type category for "internal use" types.
3005 <listitem>
3006 <para>
3007 Create a new <link
3008 linkend="catalog-pg-type"><structfield>pg_type.typcategory</structfield></link>
3009 value for <type>"char"</type> (Tom Lane)
3010 </para>
3012 <para>
3013 Some internal-use-only types have also been assigned this column.
3014 </para>
3015 </listitem>
3017 <!--
3018 Author: Robert Haas <rhaas@postgresql.org>
3019 2022-01-18 [cc333f323] Modify pg_basebackup to use a new COPY subprotocol for b
3022 <listitem>
3023 <para>
3024 Add new protocol message <link
3025 linkend="protocol-replication-base-backup"><literal>TARGET</literal></link>
3026 to specify a new <command>COPY</command> method to be for base
3027 backups (Robert Haas)
3028 </para>
3030 <para>
3031 Modify <link
3032 linkend="app-pgbasebackup"><application>pg_basebackup</application></link>
3033 to use this method.
3034 </para>
3035 </listitem>
3037 <!--
3038 Author: Robert Haas <rhaas@postgresql.org>
3039 2022-01-24 [0ad803291] Server-side gzip compression.
3040 Author: Robert Haas <rhaas@postgresql.org>
3041 2022-03-23 [ffd53659c] Replace BASE_BACKUP COMPRESSION_LEVEL option with COMPRE
3044 <listitem>
3045 <para>
3046 Add new protocol message <link
3047 linkend="protocol-replication-base-backup"><literal>COMPRESSION</literal></link>
3048 and <literal>COMPRESSION_DETAIL</literal> to specify the compression
3049 method and options (Robert Haas)
3050 </para>
3051 </listitem>
3053 <!--
3054 Author: Robert Haas <rhaas@postgresql.org>
3055 2022-02-10 [9cd28c2e5] Remove server support for old BASE_BACKUP command syntax
3056 Author: Robert Haas <rhaas@postgresql.org>
3057 2022-02-10 [0d4513b61] Remove server support for the previous base backup proto
3060 <listitem>
3061 <para>
3062 Remove server support for old <literal>BASE_BACKUP</literal>
3063 command syntax and base backup protocol (Robert Haas)
3064 </para>
3065 </listitem>
3067 <!--
3068 Author: Robert Haas <rhaas@postgresql.org>
3069 2022-03-15 [e4ba69f3f] Allow extensions to add new backup targets.
3072 <listitem>
3073 <para>
3074 Add support for extensions to set custom backup targets (Robert
3075 Haas)
3076 </para>
3077 </listitem>
3079 <!--
3080 Author: Jeff Davis <jdavis@postgresql.org>
3081 2022-04-06 [5c279a6d3] Custom WAL Resource Managers.
3084 <listitem>
3085 <para>
3086 Allow extensions to define their own <acronym>WAL</acronym>
3087 resource managers (Jeff Davis)
3088 </para>
3089 </listitem>
3091 <!--
3092 Author: Michael Paquier <michael@paquier.xyz>
3093 2022-01-31 [d10e41d42] Introduce pg_settings_get_flags() to find flags associat
3096 <listitem>
3097 <para>
3098 Add function <link
3099 linkend="functions-info-catalog-table"><function>pg_settings_get_flags()</function></link>
3100 to get the flags of server-side variables (Justin Pryzby)
3101 </para>
3102 </listitem>
3104 <!--
3105 Author: Thomas Munro <tmunro@postgresql.org>
3106 2022-01-15 [7170f2159] Allow "in place" tablespaces.
3109 <listitem>
3110 <para>
3111 Add server variable <link
3112 linkend="guc-allow-in-place-tablespaces"><varname>allow_in_place_tablespaces</varname></link>
3113 for tablespace testing (Thomas Munro)
3114 </para>
3115 </listitem>
3117 <!--
3118 Author: Robert Haas <rhaas@postgresql.org>
3119 2022-04-08 [8ec569479] Apply PGDLLIMPORT markings broadly.
3122 <listitem>
3123 <para>
3124 Export all server variables on Windows using
3125 <literal>PGDLLIMPORT</literal> (Robert Haas)
3126 </para>
3128 <para>
3129 Previously only specific variables where exported.
3130 </para>
3131 </listitem>
3133 <!--
3134 Author: Peter Eisentraut <peter@eisentraut.org>
3135 2021-11-05 [db7d1a7b0] pgcrypto: Remove non-OpenSSL support
3138 <listitem>
3139 <para>
3140 Require OpenSSL to build <link
3141 linkend="pgcrypto"><application>pgcrypto</application></link>
3142 binaries (Peter Eisentraut)
3143 </para>
3144 </listitem>
3146 <!--
3147 Author: Andres Freund <andres@anarazel.de>
3148 2022-02-16 [19252e8ec] plpython: Reject Python 2 during build configuration.
3151 <listitem>
3152 <para>
3153 Disallow building with <application>Python 2</application>
3154 (Andres Freund)
3155 </para>
3156 </listitem>
3158 <!--
3159 Author: Tom Lane <tgl@sss.pgh.pa.us>
3160 2021-10-07 [92e6a98c3] Adjust configure to insist on Perl version &gt;= 5.8.3.
3163 <listitem>
3164 <para>
3165 Adjust configure to require <application>Perl</application>
3166 version 5.8.3 or later (Dagfinn Ilmari Mannsåker)
3167 </para>
3168 </listitem>
3170 </itemizedlist>
3172 </sect3>
3174 <sect3>
3175 <title>Additional Modules</title>
3177 <itemizedlist>
3179 <!--
3180 Author: Jeff Davis <jdavis@postgresql.org>
3181 2022-04-08 [2258e76f9] Add contrib/pg_walinspect.
3184 <listitem>
3185 <para>
3186 Add new module <link
3187 linkend="pgwalinspect"><application>pg_walinspect</application></link>
3188 (Bharath Rupireddy)
3189 </para>
3191 <para>
3192 This gives <acronym>SQL</acronym>-level output similar to <link
3193 linkend="pgwaldump"><application>pg_waldump</application></link>.
3194 </para>
3195 </listitem>
3197 <!--
3198 Author: Robert Haas <rhaas@postgresql.org>
3199 2022-02-03 [5ef1eefd7] Allow archiving via loadable modules.
3202 <listitem>
3203 <para>
3204 Add module <link
3205 linkend="basic-archive"><application>basic_archive</application></link>
3206 to perform archiving via a library (Nathan Bossart)
3207 </para>
3208 </listitem>
3210 <!--
3211 Author: Robert Haas <rhaas@postgresql.org>
3212 2022-03-15 [c6306db24] Add 'basebackup_to_shell' contrib module.
3213 Author: Robert Haas <rhaas@postgresql.org>
3214 2022-03-30 [26a0c025e] Document basebackup_to_shell.required_role.
3217 <listitem>
3218 <para>
3219 Add module <application><link
3220 linkend="basebackup-to-shell">basebackup_to_shell</link></application>
3221 as a custom backup target (Robert Haas) contrib module.
3222 </para>
3223 </listitem>
3225 <!--
3226 Author: Michael Paquier <michael@paquier.xyz>
3227 2022-04-08 [76cbf7edb] pg_stat_statements: Track I/O timing for temporary file
3230 <listitem>
3231 <para>
3232 Add <link
3233 linkend="pgstatstatements"><application>pg_stat_statements</application></link>
3234 output for temporary file block I/O (Masahiko Sawada)
3235 </para>
3236 </listitem>
3238 <!--
3239 Author: Magnus Hagander <magnus@hagander.net>
3240 2022-04-08 [57d6aea00] Add JIT counters to pg_stat_statements
3243 <listitem>
3244 <para>
3245 Add <acronym>JIT</acronym> counters to pg_stat_statements (Magnus
3246 Hagander)
3247 </para>
3248 </listitem>
3250 <!--
3251 Author: Peter Eisentraut <peter@eisentraut.org>
3252 2021-09-28 [c3b011d99] Support amcheck of sequences
3255 <listitem>
3256 <para>
3257 Allow <link
3258 linkend="amcheck"><application>amcheck</application></link> to
3259 check sequences (Mark Dilger)
3260 </para>
3261 </listitem>
3263 <!--
3264 Author: Robert Haas <rhaas@postgresql.org>
3265 2021-11-05 [bd807be69] amcheck: Add additional TOAST pointer checks.
3268 <listitem>
3269 <para>
3270 Improve <application>amcheck</application> sanity checks for
3271 <acronym>TOAST</acronym> tables (Mark Dilger)
3272 </para>
3273 </listitem>
3275 <!--
3276 Author: Tomas Vondra <tomas.vondra@postgresql.org>
3277 2021-11-06 [57e3c5160] Add bool GiST opclass to btree_gist
3278 Author: Tomas Vondra <tomas.vondra@postgresql.org>
3279 2021-11-08 [e2fbb8837] Fix gist_bool_ops to use gbtreekey2
3280 Author: Tomas Vondra <tomas.vondra@postgresql.org>
3281 2021-12-11 [4c6145b51] Add bool to btree_gist documentation
3284 <listitem>
3285 <para>
3286 Allow <link
3287 linkend="btree-gist"><application>btree_gist</application></link>
3288 indexes on boolean columns (Emre Hasegeli)
3289 </para>
3291 <para>
3292 These can be used for exclusion constraints.
3293 </para>
3294 </listitem>
3296 <!--
3297 Author: Tom Lane <tgl@sss.pgh.pa.us>
3298 2022-01-12 [134d97463] Include permissive/enforcing state in sepgsql log messag
3301 <listitem>
3302 <para>
3303 Indicate the permissive/enforcing state in <link
3304 linkend="sepgsql"><application>sepgsql</application></link> log
3305 messages (Dave Page)
3306 </para>
3307 </listitem>
3309 <!--
3310 Author: Michael Paquier <michael@paquier.xyz>
3311 2021-07-12 [127404fbe] pageinspect: Improve page_header() for pages of 32kB
3314 <listitem>
3315 <para>
3316 Fix <link
3317 linkend="pageinspect"><application>pageinspect</application></link>'s
3318 <function>page_header()</function> to handle 32 kilobyte page sizes
3319 (Quan Zongliang)
3320 </para>
3322 <para>
3323 Previously improper negative values could be returned in certain
3324 cases.
3325 </para>
3326 </listitem>
3328 </itemizedlist>
3330 <sect4>
3331 <title><link linkend="postgres-fdw"><application>postgres_fdw</application></link></title>
3333 <itemizedlist>
3335 <!--
3336 Author: Tom Lane <tgl@sss.pgh.pa.us>
3337 2021-07-30 [5d44fff01] In postgres_fdw, allow CASE expressions to be pushed to
3340 <listitem>
3341 <para>
3342 Allow postgres_fdw to push down <literal>CASE</literal> expressions
3343 (Alexander Pyhalov)
3344 </para>
3345 </listitem>
3347 <!--
3348 Author: Fujii Masao <fujii@postgresql.org>
3349 2021-09-07 [449ab6350] postgres_fdw: Allow application_name of remote connectio
3350 Author: Fujii Masao <fujii@postgresql.org>
3351 2021-12-24 [6e0cb3dec] postgres_fdw: Allow postgres_fdw.application_name to inc
3352 Author: Fujii Masao <fujii@postgresql.org>
3353 2022-02-18 [94c49d534] postgres_fdw: Make postgres_fdw.application_name support
3356 <listitem>
3357 <para>
3358 Add server variable
3359 <varname>postgres_fdw.application_name</varname> to control the
3360 application name of postgres_fdw connections (Hayato Kuroda)
3361 </para>
3363 <para>
3364 Previously the remote <link
3365 linkend="guc-application-name"><varname>application_name</varname></link>
3366 could only be set on the remote server or via
3367 <application>postgres_fdw</application> connection specification.
3368 <varname>postgres_fdw.application_name</varname> also supports
3369 escape sequences for customization.
3370 </para>
3371 </listitem>
3373 <!--
3374 Author: Etsuro Fujita <efujita@postgresql.org>
3375 2022-02-24 [04e706d42] postgres_fdw: Add support for parallel commit.
3378 <listitem>
3379 <para>
3380 Allow parallel commit on <application>postgres_fdw</application>
3381 servers (Etsuro Fujita)
3382 </para>
3384 <para>
3385 This is enabled with the <literal>CREATE SERVER</literal> option
3386 <literal>parallel_commit</literal> when using postgres_fdw.
3387 </para>
3388 </listitem>
3390 </itemizedlist>
3392 </sect4>
3394 </sect3>
3396 </sect2>
3398 <sect2 id="release-15-acknowledgements">
3399 <title>Acknowledgments</title>
3401 <para>
3402 The following individuals (in alphabetical order) have contributed
3403 to this release as patch authors, committers, reviewers, testers,
3404 or reporters of issues.
3405 </para>
3407 <simplelist>
3408 <member></member>
3409 </simplelist>
3410 </sect2>
3412 </sect1>