Doc: fix release date in release-16.sgml.
[pgsql.git] / doc / src / sgml / release-16.sgml
blob660476e9d4e47cbde291ff8675da8d1918ebd90f
1 <!-- doc/src/sgml/release-16.sgml -->
2 <!-- See header comment in release.sgml about typical markup -->
4 <sect1 id="release-16">
5 <title>Release 16</title>
7 <formalpara>
8 <title>Release date:</title>
9 <para>2023-09-14</para>
10 </formalpara>
12 <sect2 id="release-16-highlights">
13 <title>Overview</title>
15 <para>
16 <productname>PostgreSQL</productname> 16 contains many new features
17 and enhancements, including:
18 </para>
20 <itemizedlist>
22 <listitem>
23 <para>
24 Allow parallelization of <literal>FULL</literal> and internal right <literal>OUTER</literal> hash joins
25 </para>
26 </listitem>
28 <listitem>
29 <para>
30 Allow logical replication from standby servers
31 </para>
32 </listitem>
34 <listitem>
35 <para>
36 Allow logical replication subscribers to apply large transactions in parallel
37 </para>
38 </listitem>
40 <listitem>
41 <para>
42 Allow monitoring of <acronym>I/O</acronym> statistics using the new <structname>pg_stat_io</structname> view
43 </para>
44 </listitem>
46 <listitem>
47 <para>
48 Add <acronym>SQL/JSON</acronym> constructors and identity functions
49 </para>
50 </listitem>
52 <listitem>
53 <para>
54 Improve performance of vacuum freezing
55 </para>
56 </listitem>
58 <listitem>
59 <para>
60 Add support for regular expression matching of user and database names in <filename>pg_hba.conf</filename>, and user names in <filename>pg_ident.conf</filename>
61 </para>
62 </listitem>
64 </itemizedlist>
66 <para>
67 The above items and other new features of
68 <productname>PostgreSQL</productname> 16 are explained in more detail
69 in the sections below.
70 </para>
72 </sect2>
74 <sect2 id="release-16-migration">
76 <title>Migration to Version 16</title>
78 <para>
79 A dump/restore using <xref linkend="app-pg-dumpall"/> or use of
80 <xref linkend="pgupgrade"/> or logical replication is required for
81 those wishing to migrate data from any previous release. See <xref
82 linkend="upgrading"/> for general information on migrating to new
83 major releases.
84 </para>
86 <para>
87 Version 16 contains a number of changes that may affect compatibility
88 with previous releases. Observe the following incompatibilities:
89 </para>
91 <itemizedlist>
93 <!--
94 Author: Tom Lane <tgl@sss.pgh.pa.us>
95 2023-01-01 [d747dc85a] In plpgsql, don't preassign portal names to bound cursor
96 -->
98 <listitem>
99 <para>
100 Change assignment rules for <link
101 linkend="plpgsql-open-bound-cursor"><application>PL/pgSQL</application></link>
102 bound cursor variables (Tom Lane)
103 </para>
105 <para>
106 Previously, the string value of such variables
107 was set to match the variable name during cursor
108 assignment; now it will be assigned during <link
109 linkend="plpgsql-cursor-opening"><command>OPEN</command></link>,
110 and will not match the variable name. To restore the previous
111 behavior, assign the desired portal name to the cursor variable
112 before <command>OPEN</command>.
113 </para>
114 </listitem>
116 <!--
117 Author: Daniel Gustafsson <dgustafsson@postgresql.org>
118 2023-02-24 [d95952325] Disallow NULLS NOT DISTINCT indexes for primary keys
121 <listitem>
122 <para>
123 Disallow <link linkend="sql-createindex"><literal>NULLS NOT
124 DISTINCT</literal></link> indexes for primary keys (Daniel
125 Gustafsson)
126 </para>
127 </listitem>
129 <!--
130 Author: Michael Paquier <michael@paquier.xyz>
131 2022-07-19 [2cbc3c17a] Rework logic and simplify syntax of REINDEX DATABASE/SYS
132 Author: Michael Paquier <michael@paquier.xyz>
133 2022-07-26 [0a5f06b84] Fix a few issues with REINDEX grammar
136 <listitem>
137 <para>
138 Change <link linkend="sql-reindex"><command>REINDEX
139 DATABASE</command></link> and <link
140 linkend="app-reindexdb"><application>reindexdb</application></link>
141 to not process indexes on system catalogs (Simon Riggs)
142 </para>
144 <para>
145 Processing such indexes is still possible using <command>REINDEX
146 SYSTEM</command> and <link linkend="app-reindexdb"><command>reindexdb
147 --system</command></link>.
148 </para>
149 </listitem>
151 <!--
152 Author: Tom Lane <tgl@sss.pgh.pa.us>
153 2023-01-11 [8bf6ec3ba] Improve handling of inherited GENERATED expressions.
156 <listitem>
157 <para>
158 Tighten <link
159 linkend="ddl-generated-columns"><literal>GENERATED</literal></link>
160 expression restrictions on inherited and partitioned tables (Amit
161 Langote, Tom Lane)
162 </para>
164 <para>
165 Columns of parent/partitioned and child/partition tables must all
166 have the same generation status, though now the actual generation
167 expressions can be different.
168 </para>
169 </listitem>
171 <!--
172 Author: Michael Paquier <michael@paquier.xyz>
173 2023-03-14 [5c1b66280] Rework design of functions in pg_walinspect
176 <listitem>
177 <para>
178 Remove <link
179 linkend="pgwalinspect"><application>pg_walinspect</application></link>
180 functions
181 <function>pg_get_wal_records_info_till_end_of_wal()</function>
182 and <function>pg_get_wal_stats_till_end_of_wal()</function>
183 (Bharath Rupireddy)
184 </para>
185 </listitem>
187 <!--
188 Author: David Rowley <drowley@postgresql.org>
189 2023-02-15 [5352ca22e] Rename force_parallel_mode to debug_parallel_query
190 Author: David Rowley <drowley@postgresql.org>
191 2023-04-14 [0981846b9] Remove old GUC name mapping for "force_parallel_mode"
194 <listitem>
195 <para>
196 Rename server variable
197 <varname>force_parallel_mode</varname> to <link
198 linkend="guc-debug-parallel-query"><varname>debug_parallel_query</varname></link>
199 (David Rowley)
200 </para>
201 </listitem>
203 <!--
204 Author: Tom Lane <tgl@sss.pgh.pa.us>
205 2022-12-02 [b23cd185f] Remove logic for converting a table to a view.
208 <listitem>
209 <para>
210 Remove the ability to <link linkend="sql-createview">create
211 views</link> manually with <literal>ON SELECT</literal> rules
212 (Tom Lane)
213 </para>
214 </listitem>
216 <!--
217 Author: Andres Freund <andres@anarazel.de>
218 2023-04-24 [1118cd37e] Remove vacuum_defer_cleanup_age
221 <listitem>
222 <para>
223 Remove the server variable
224 <varname>vacuum_defer_cleanup_age</varname> (Andres Freund)
225 </para>
227 <para>
228 This has been unnecessary since <link
229 linkend="guc-hot-standby-feedback"><varname>hot_standby_feedback</varname></link>
230 and <link linkend="streaming-replication-slots">replication
231 slots</link> were added.
232 </para>
233 </listitem>
235 <!--
236 Author: Thomas Munro <tmunro@postgresql.org>
237 2022-11-29 [cd4329d93] Remove promote_trigger_file.
240 <listitem>
241 <para>
242 Remove server variable <varname>promote_trigger_file</varname>
243 (Simon Riggs)
244 </para>
246 <para>
247 This was used to promote a standby to primary, but is now easier
248 accomplished with <link linkend="app-pg-ctl"><literal>pg_ctl
249 promote</literal></link> or <link
250 linkend="functions-recovery-control-table"><function>pg_promote()</function></link>.
251 </para>
252 </listitem>
254 <!--
255 Author: Peter Eisentraut <peter@eisentraut.org>
256 2023-06-07 [b0f6c4371] Remove read-only server settings lc_collate and lc_ctype
259 <listitem>
260 <para>
261 Remove read-only server variables <varname>lc_collate</varname>
262 and <varname>lc_ctype</varname> (Peter Eisentraut)
263 </para>
265 <para>
266 Collations and locales can vary between databases so having them
267 as read-only server variables was unhelpful.
268 </para>
269 </listitem>
271 <!--
272 Author: Robert Haas <rhaas@postgresql.org>
273 2022-08-25 [e3ce2de09] Allow grant-level control of role inheritance behavior.
276 <listitem>
277 <para>
278 Role inheritance now controls the default
279 inheritance status of member roles added during <link
280 linkend="sql-grant"><command>GRANT</command></link> (Robert Haas)
281 </para>
283 <para>
284 The role's default inheritance behavior can be overridden with the
285 new <command>GRANT ... WITH INHERIT</command> clause. This allows
286 inheritance of some roles and not others because the members'
287 inheritance status is set at <command>GRANT</command> time.
288 Previously the inheritance status of member roles was controlled
289 only by the role's inheritance status, and changes to a role's
290 inheritance status affected all previous and future member roles.
291 </para>
292 </listitem>
294 <!--
295 Author: Robert Haas <rhaas@postgresql.org>
296 2023-01-10 [cf5eb37c5] Restrict the privileges of CREATEROLE users.
297 Author: Robert Haas <rhaas@postgresql.org>
298 2023-01-24 [f1358ca52] Adjust interaction of CREATEROLE with role properties.
301 <listitem>
302 <para>
303 Restrict the privileges of <link
304 linkend="sql-createrole"><literal>CREATEROLE</literal></link>
305 and its ability to modify other roles (Robert Haas)
306 </para>
308 <para>
309 Previously roles with <literal>CREATEROLE</literal> privileges could
310 change many aspects of any non-superuser role. Such changes,
311 including adding members, now require the role requesting
312 the change to have <literal>ADMIN OPTION</literal> permission.
313 For example, they can now change the <literal>CREATEDB</literal>,
314 <literal>REPLICATION</literal>, and <literal>BYPASSRLS</literal>
315 properties only if they also have those permissions.
316 </para>
317 </listitem>
319 <!--
320 Author: Peter Eisentraut <peter@eisentraut.org>
321 2023-01-26 [37e267335] Don't install postmaster symlink anymore
324 <listitem>
325 <para>
326 Remove symbolic links for the <application>postmaster</application>
327 binary (Peter Eisentraut)
328 </para>
329 </listitem>
331 </itemizedlist>
333 </sect2>
335 <sect2 id="release-16-changes">
336 <title>Changes</title>
338 <para>
339 Below you will find a detailed account of the changes between
340 <productname>PostgreSQL</productname> 16 and the previous major
341 release.
342 </para>
344 <sect3 id="release-16-server">
345 <title>Server</title>
347 <sect4 id="release-16-optimizer">
348 <title>Optimizer</title>
350 <itemizedlist>
352 <!--
353 Author: David Rowley <drowley@postgresql.org>
354 2022-08-02 [b59242209] Relax overly strict rules in select_outer_pathkeys_for_m
355 Author: David Rowley <drowley@postgresql.org>
356 2023-01-11 [3c6fc5820] Have the planner consider Incremental Sort for DISTINCT
359 <listitem>
360 <para>
361 Allow incremental sorts in more cases, including
362 <literal>DISTINCT</literal> (David Rowley)
363 </para>
364 </listitem>
366 <!--
367 Author: David Rowley <drowley@postgresql.org>
368 2022-08-02 [1349d2790] Improve performance of ORDER BY / DISTINCT aggregates
369 Author: David Rowley <drowley@postgresql.org>
370 2022-12-20 [3226f4728] Add enable_presorted_aggregate GUC
371 Author: David Rowley <drowley@postgresql.org>
372 2023-01-17 [da5800d5f] Don't presort ORDER BY/DISTINCT Aggrefs with volatile fu
375 <listitem>
376 <para>
377 Add the ability for aggregates having <literal>ORDER BY</literal>
378 or <literal>DISTINCT</literal> to use pre-sorted data (David
379 Rowley)
380 </para>
382 <para>
383 The new server variable <link
384 linkend="guc-enable-presorted-aggregate"><varname>enable_presorted_aggregate</varname></link>
385 can be used to disable this.
386 </para>
387 </listitem>
389 <!--
390 Author: Tom Lane <tgl@sss.pgh.pa.us>
391 2023-03-16 [9bfd2822b] Enable use of Memoize atop an Append that came from UNIO
394 <listitem>
395 <para>
396 Allow memoize atop a <literal>UNION ALL</literal> (Richard Guo)
397 </para>
398 </listitem>
400 <!--
401 Author: Tom Lane <tgl@sss.pgh.pa.us>
402 2023-04-05 [16dc2703c] Support "Right Anti Join" plan shapes.
405 <listitem>
406 <para>
407 Allow anti-joins to be performed with the non-nullable input as
408 the inner relation (Richard Guo)
409 </para>
410 </listitem>
412 <!--
413 Author: Thomas Munro <tmunro@postgresql.org>
414 2023-03-31 [11c2d6fdf] Parallel Hash Full Join.
417 <listitem>
418 <para>
419 Allow parallelization of <link
420 linkend="queries-join"><literal>FULL</literal></link> and internal
421 right <literal>OUTER</literal> hash joins (Melanie Plageman,
422 Thomas Munro)
423 </para>
424 </listitem>
426 <!--
427 Author: Alexander Korotkov <akorotkov@postgresql.org>
428 2023-01-08 [cd9479af2] Improve GIN cost estimation
431 <listitem>
432 <para>
433 Improve the accuracy of <link
434 linkend="gin"><literal>GIN</literal></link> index access optimizer
435 costs (Ronan Dunklau)
436 </para>
437 </listitem>
439 </itemizedlist>
441 </sect4>
443 <sect4 id="release-16-performance">
444 <title>General Performance</title>
446 <itemizedlist>
448 <!--
449 Author: Andres Freund <andres@anarazel.de>
450 2023-04-06 [00d1e02be] hio: Use ExtendBufferedRelBy() to extend tables more eff
451 Author: Andres Freund <andres@anarazel.de>
452 2023-04-06 [26158b852] Use ExtendBufferedRelTo() in XLogReadBufferExtended()
455 <listitem>
456 <para>
457 Allow more efficient addition of heap and index pages (Andres
458 Freund)
459 </para>
460 </listitem>
462 <!--
463 Author: Peter Geoghegan <pg@bowt.ie>
464 2022-09-08 [d977ffd92] Instrument freezing in autovacuum log reports.
465 Author: Peter Geoghegan <pg@bowt.ie>
466 2022-11-15 [9e5405993] Deduplicate freeze plans in freeze WAL records.
467 Author: Peter Geoghegan <pg@bowt.ie>
468 2022-12-28 [1de58df4f] Add page-level freezing to VACUUM.
471 <listitem>
472 <para>
473 During non-freeze operations, perform page <link
474 linkend="vacuum-for-wraparound">freezing</link> where appropriate
475 (Peter Geoghegan)
476 </para>
478 <para>
479 This makes full-table freeze vacuums less necessary.
480 </para>
481 </listitem>
483 <!--
484 Author: David Rowley <drowley@postgresql.org>
485 2022-12-23 [ed1a88dda] Allow window functions to adjust their frameOptions
488 <listitem>
489 <para>
490 Allow window functions to use the faster <link
491 linkend="syntax-window-functions"><literal>ROWS</literal></link>
492 mode internally when <literal>RANGE</literal> mode is active but
493 unnecessary (David Rowley)
494 </para>
495 </listitem>
497 <!--
498 Author: David Rowley <drowley@postgresql.org>
499 2023-01-27 [456fa635a] Teach planner about more monotonic window functions
502 <listitem>
503 <para>
504 Allow optimization of always-increasing window functions <link
505 linkend="functions-window-table"><function>ntile()</function></link>,
506 <function>cume_dist()</function> and
507 <function>percent_rank()</function> (David Rowley)
508 </para>
509 </listitem>
511 <!--
512 Author: David Rowley <drowley@postgresql.org>
513 2023-01-23 [16fd03e95] Allow parallel aggregate on string_agg and array_agg
516 <listitem>
517 <para>
518 Allow aggregate functions <link
519 linkend="functions-aggregate-table"><function>string_agg()</function></link>
520 and <function>array_agg()</function> to be parallelized (David
521 Rowley)
522 </para>
523 </listitem>
525 <!--
526 Author: David Rowley <drowley@postgresql.org>
527 2022-08-02 [3592e0ff9] Have ExecFindPartition cache the last found partition
530 <listitem>
531 <para>
532 Improve performance by caching <link
533 linkend="ddl-partitioning-overview"><literal>RANGE</literal></link>
534 and <literal>LIST</literal> partition lookups (Amit Langote,
535 Hou Zhijie, David Rowley)
536 </para>
537 </listitem>
539 <!--
540 Author: David Rowley <drowley@postgresql.org>
541 2023-04-07 [1cbbee033] Add VACUUM/ANALYZE BUFFER_USAGE_LIMIT option
542 Author: David Rowley <drowley@postgresql.org>
543 2023-04-07 [ae78cae3b] Add - -buffer-usage-limit option to vacuumdb
544 Author: Masahiko Sawada <msawada@postgresql.org>
545 2023-04-28 [b72f564d8] Add unit to vacuum_buffer_usage_limit value in postgresq
548 <listitem>
549 <para>
550 Allow control of the shared buffer usage by vacuum and analyze
551 (Melanie Plageman)
552 </para>
554 <para>
555 The <link
556 linkend="sql-vacuum"><command>VACUUM</command></link>/<link
557 linkend="sql-analyze"><command>ANALYZE</command></link>
558 option is <literal>BUFFER_USAGE_LIMIT</literal>, and the <link
559 linkend="app-vacuumdb"><application>vacuumdb</application></link>
560 option is <option>--buffer-usage-limit</option>.
561 The default value is set by server variable <link
562 linkend="guc-vacuum-buffer-usage-limit"><varname>vacuum_buffer_usage_limit</varname></link>,
563 which also controls autovacuum.
564 </para>
565 </listitem>
567 <!--
568 Author: Thomas Munro <tmunro@postgresql.org>
569 2022-07-20 [9430fb407] Add wal_sync_method=fdatasync for Windows.
572 <listitem>
573 <para>
574 Support <link
575 linkend="guc-wal-sync-method"><literal>wal_sync_method=fdatasync</literal></link>
576 on <systemitem class="osname">Windows</systemitem> (Thomas Munro)
577 </para>
578 </listitem>
580 <!--
581 Author: Tomas Vondra <tomas.vondra@postgresql.org>
582 2023-03-20 [19d8e2308] Ignore BRIN indexes when checking for HOT updates
585 <listitem>
586 <para>
587 Allow <link linkend="storage-hot"><acronym>HOT</acronym></link>
588 updates if only <literal>BRIN</literal>-indexed columns are updated
589 (Matthias van de Meent, Josef Simanek, Tomas Vondra)
590 </para>
591 </listitem>
593 <!--
594 Author: David Rowley <drowley@postgresql.org>
595 2023-02-20 [2cb82e2ac] Speedup and increase usability of set proc title functio
598 <listitem>
599 <para>
600 Improve the speed of updating the <link
601 linkend="guc-update-process-title">process title</link> (David
602 Rowley)
603 </para>
604 </listitem>
606 <!--
607 Author: John Naylor <john.naylor@postgresql.org>
608 2022-08-11 [37a6e5df3] Optimize xid/subxid searches in XidInMVCCSnapshot().
609 Author: John Naylor <john.naylor@postgresql.org>
610 2022-08-26 [121d2d3d7] Use SSE2 in is_valid_ascii() where available.
611 Author: John Naylor <john.naylor@postgresql.org>
612 2022-08-10 [b6ef16756] Introduce optimized routine for linear searches of array
613 Author: John Naylor <john.naylor@postgresql.org>
614 2022-08-26 [e813e0e16] Add optimized functions for linear search within byte ar
617 <listitem>
618 <para>
619 Allow <type>xid</type>/<type>subxid</type> searches and
620 <acronym>ASCII</acronym> string detection to use vector operations
621 (Nathan Bossart, John Naylor)
622 </para>
624 <para>
625 <acronym>ASCII</acronym> detection is particularly useful for
626 <link linkend="sql-copy"><command>COPY FROM</command></link>.
627 Vector operations are also used for some C array searches.
628 </para>
630 </listitem>
632 <!--
633 Author: David Rowley <drowley@postgresql.org>
634 2022-08-29 [c6e0fe1f2] Improve performance of and reduce overheads of memory ma
637 <listitem>
638 <para>
639 Reduce overhead of memory allocations (Andres Freund, David Rowley)
640 </para>
641 </listitem>
643 </itemizedlist>
645 </sect4>
647 <sect4 id="release-16-monitoring">
648 <title>Monitoring</title>
650 <itemizedlist>
652 <!--
653 Author: Andres Freund <andres@anarazel.de>
654 2023-02-11 [a9c70b46d] Add pg_stat_io view, providing more detailed IO statisti
655 Author: Andres Freund <andres@anarazel.de>
656 2023-03-30 [8aaa04b32] Track shared buffer hits in pg_stat_io
657 Author: Andres Freund <andres@anarazel.de>
658 2023-04-07 [ac8d53dae] Track IO times in pg_stat_io
659 Author: Michael Paquier <michael@paquier.xyz>
660 2023-04-21 [0ecb87e1f] Remove io prefix from pg_stat_io columns
661 Author: Andres Freund <andres@anarazel.de>
662 2023-05-17 [093e5c57d] Add writeback to pg_stat_io
665 <listitem>
666 <para>
667 Add system view <link
668 linkend="monitoring-pg-stat-io-view"><structname>pg_stat_io</structname></link>
669 view to track <acronym>I/O</acronym> statistics (Melanie Plageman)
670 </para>
671 </listitem>
673 <!--
674 Author: Andres Freund <andres@anarazel.de>
675 2022-10-14 [c03747183] pgstat: Track time of the last scan of a relation
678 <listitem>
679 <para>
680 Record statistics on the last sequential and index scans on tables
681 (Dave Page)
682 </para>
684 <para>
685 This information appears in <link
686 linkend="pg-stat-all-tables-view"><structname>pg_stat_*_tables</structname></link>
687 and <link
688 linkend="monitoring-pg-stat-all-indexes-view"><structname>pg_stat_*_indexes</structname></link>.
689 </para>
690 </listitem>
692 <!--
693 Author: Peter Geoghegan <pg@bowt.ie>
694 2023-03-23 [ae4fdde13] Count updates that move row to a new page.
697 <listitem>
698 <para>
699 Record statistics on the occurrence of updated rows moving to
700 new pages (Corey Huinker)
701 </para>
703 <para>
704 The <literal>pg_stat_*_tables</literal> column is <link
705 linkend="monitoring-pg-stat-all-tables-view"><structfield>n_tup_newpage_upd</structfield></link>.
706 </para>
707 </listitem>
709 <!--
710 Author: Amit Kapila <akapila@postgresql.org>
711 2023-01-10 [f74573969] Fix the display of lock information for specktoken.
714 <listitem>
715 <para>
716 Add speculative lock information to the <link
717 linkend="view-pg-locks"><structname>pg_locks</structname></link>
718 system view (Masahiko Sawada, Noriyoshi Shinoda)
719 </para>
721 <para>
722 The transaction id is displayed in the
723 <structfield>transactionid</structfield> column and
724 the speculative insertion token is displayed in the
725 <structfield>objid</structfield> column.
726 </para>
727 </listitem>
729 <!--
730 Author: Peter Eisentraut <peter@eisentraut.org>
731 2022-07-05 [84ad713cf] Add result_types column to pg_prepared_statements view
732 Author: Peter Eisentraut <peter@eisentraut.org>
733 2022-07-05 [6ffff0fd2] Fix pg_prepared_statements.result_types for DML statemen
736 <listitem>
737 <para>
738 Add the display of prepared statement result types to the <link
739 linkend="view-pg-prepared-statements"><structname>pg_prepared_statements</structname></link>
740 view (Dagfinn Ilmari Mannsåker)
741 </para>
742 </listitem>
744 <!--
745 Author: Andres Freund <andres@anarazel.de>
746 2022-10-06 [e0b014295] Create subscription stats entry at CREATE SUBSCRIPTION t
749 <listitem>
750 <para>
751 Create subscription statistics
752 entries at subscription creation time so <link
753 linkend="pg-stat-database-view"><structfield>stats_reset</structfield></link>
754 is accurate (Andres Freund)
755 </para>
757 <para>
758 Previously entries were created only when the first statistics
759 were reported.
760 </para>
761 </listitem>
763 <!--
764 Author: Andres Freund <andres@anarazel.de>
765 2023-04-07 [704261ecc] Improve IO accounting for temp relation writes
768 <listitem>
769 <para>
770 Correct the <acronym>I/O</acronym>
771 accounting for temp relation writes shown in <link
772 linkend="pg-stat-database-view"><structname>pg_stat_database</structname></link>
773 (Melanie Plageman)
774 </para>
775 </listitem>
777 <!--
778 Author: Robert Haas <rhaas@postgresql.org>
779 2022-12-19 [10ea0f924] Expose some information about backend subxact status.
782 <listitem>
783 <para>
784 Add function <link
785 linkend="monitoring-stats-backend-funcs-table"><function>pg_stat_get_backend_subxact()</function></link>
786 to report on a session's subtransaction cache (Dilip Kumar)
787 </para>
788 </listitem>
790 <!--
791 Author: Tom Lane <tgl@sss.pgh.pa.us>
792 2022-09-29 [d7e39d72c] Use actual backend IDs in pg_stat_get_backend_idset() an
795 <listitem>
796 <para>
797 Have <link
798 linkend="monitoring-stats-backend-funcs-table"><function>pg_stat_get_backend_idset()</function></link>,
799 <function>pg_stat_get_backend_activity()</function>, and related
800 functions use the unchanging backend id (Nathan Bossart)
801 </para>
803 <para>
804 Previously the index values might change during the lifetime of
805 the session.
806 </para>
807 </listitem>
809 <!--
810 Author: Andres Freund <andres@anarazel.de>
811 2022-08-22 [0c679464a] Add BackendType for standalone backends
814 <listitem>
815 <para>
816 Report stand-alone backends with a special backend type (Melanie
817 Plageman)
818 </para>
819 </listitem>
821 <!--
822 Author: Andres Freund <andres@anarazel.de>
823 2022-11-21 [92daeca45] Add wait event for pg_usleep() in perform_spin_delay()
826 <listitem>
827 <para>
828 Add wait event <link
829 linkend="wait-event-timeout-table"><literal>SpinDelay</literal></link>
830 to report spinlock sleep delays (Andres Freund)
831 </para>
832 </listitem>
834 <!--
835 Author: Thomas Munro <tmunro@postgresql.org>
836 2022-07-14 [7bae3bbf6] Create a distinct wait event for POSIX DSM allocation.
839 <listitem>
840 <para>
841 Create new wait event <link
842 linkend="wait-event-io-table"><literal>DSMAllocate</literal></link>
843 to indicate waiting for dynamic shared memory allocation (Thomas
844 Munro)
845 </para>
847 <para>
848 Previously this type of wait was reported as
849 <literal>DSMFillZeroWrite</literal>, which was also used by
850 <function>mmap()</function> allocations.
851 </para>
852 </listitem>
854 <!--
855 Author: Michael Paquier <michael@paquier.xyz>
856 2022-11-24 [af205152e] Add the database name to the ps display of logical WAL s
859 <listitem>
860 <para>
861 Add the database name to the <link
862 linkend="guc-update-process-title">process title</link> of logical
863 <acronym>WAL</acronym> senders (Tatsuhiro Nakamori)
864 </para>
866 <para>
867 Physical <acronym>WAL</acronym> senders do not display a database
868 name.
869 </para>
870 </listitem>
872 <!--
873 Author: Fujii Masao <fujii@postgresql.org>
874 2022-07-07 [62c46eee2] Add checkpoint and REDO LSN to log_checkpoints message.
877 <listitem>
878 <para>
879 Add checkpoint and <literal>REDO LSN</literal> information to <link
880 linkend="guc-log-checkpoints"><varname>log_checkpoints</varname></link>
881 messages (Bharath Rupireddy, Kyotaro Horiguchi)
882 </para>
883 </listitem>
885 <!--
886 Author: Peter Eisentraut <peter@eisentraut.org>
887 2022-07-15 [3a0e38504] Log details for client certificate failures
890 <listitem>
891 <para>
892 Provide additional details during client certificate failures
893 (Jacob Champion)
894 </para>
895 </listitem>
897 </itemizedlist>
899 </sect4>
901 <sect4 id="release-16-privileges">
902 <title>Privileges</title>
904 <itemizedlist>
906 <!--
907 Author: Robert Haas <rhaas@postgresql.org>
908 2023-03-30 [c3afe8cf5] Add new predefined role pg_create_subscription.
911 <listitem>
912 <para>
913 Add predefined role <link
914 linkend="predefined-roles"><literal>pg_create_subscription</literal></link>
915 with permission to create subscriptions (Robert Haas)
916 </para>
917 </listitem>
919 <!--
920 Author: Robert Haas <rhaas@postgresql.org>
921 2023-03-30 [c3afe8cf5] Add new predefined role pg_create_subscription.
922 Author: Amit Kapila <akapila@postgresql.org>
923 2023-04-20 [c1cc4e688] Restart the apply worker if the 'password_required' opti
924 Author: Amit Kapila <akapila@postgresql.org>
925 2023-04-24 [19e65dff3] Display 'password_required' option for \dRs+ command.
928 <listitem>
929 <para>
930 Allow subscriptions to not require passwords (Robert Haas)
931 </para>
933 <para>
934 This is accomplished with the option <link
935 linkend="sql-createsubscription"><literal>password_required=false</literal></link>.
936 </para>
937 </listitem>
939 <!--
940 Author: Jeff Davis <jdavis@postgresql.org>
941 2023-01-13 [c44f6334c] Simplify permissions for LOCK TABLE.
944 <listitem>
945 <para>
946 Simplify permissions for <link linkend="sql-lock"><command>LOCK
947 TABLE</command></link> (Jeff Davis)
948 </para>
950 <para>
951 Previously a user's ability to perform <command>LOCK
952 TABLE</command> at various lock levels was limited to the
953 lock levels required by the commands they had permission
954 to execute on the table. For example, someone with <link
955 linkend="sql-update"><command>UPDATE</command></link>
956 permission could perform all lock levels except <literal>ACCESS
957 SHARE</literal>, even though it was a lesser lock level. Now users
958 can issue lesser lock levels if they already have permission for
959 greater lock levels.
960 </para>
961 </listitem>
963 <!--
964 Author: Robert Haas <rhaas@postgresql.org>
965 2022-08-22 [ce6b672e4] Make role grant system more consistent with other privil
968 <listitem>
969 <para>
970 Allow <link linkend="sql-grant"><literal>GRANT group_name TO
971 user_name</literal></link> to be performed with <literal>ADMIN
972 OPTION</literal> (Robert Haas)
973 </para>
975 <para>
976 Previously <literal>CREATEROLE</literal> permission was required.
977 </para>
978 </listitem>
980 <!--
981 Author: Robert Haas <rhaas@postgresql.org>
982 2022-08-25 [e3ce2de09] Allow grant-level control of role inheritance behavior.
985 <listitem>
986 <para>
987 Allow <link linkend="sql-grant"><command>GRANT</command></link>
988 to use <literal>WITH ADMIN TRUE</literal>/<literal>FALSE</literal>
989 syntax (Robert Haas)
990 </para>
992 <para>
993 Previously only the <literal>WITH ADMIN OPTION</literal> syntax
994 was supported.
995 </para>
996 </listitem>
998 <!--
999 Author: Robert Haas <rhaas@postgresql.org>
1000 2023-01-10 [e5b8a4c09] Add new GUC createrole_self_grant.
1001 Author: Daniel Gustafsson <dgustafsson@postgresql.org>
1002 2023-02-22 [e00bc6c92] doc: Add default value of createrole_self_grant
1005 <listitem>
1006 <para>
1007 Allow roles that create other roles to automatically
1008 inherit the new role's rights or the ability to <link
1009 linkend="sql-set-role"><command>SET ROLE</command></link> to the
1010 new role (Robert Haas, Shi Yu)
1011 </para>
1013 <para>
1014 This is controlled by server variable <link
1015 linkend="guc-createrole-self-grant"><varname>createrole_self_grant</varname></link>.
1016 </para>
1017 </listitem>
1019 <!--
1020 Author: Robert Haas <rhaas@postgresql.org>
1021 2022-09-19 [48a257d44] Make ALTER DEFAULT PRIVILEGES require privileges, not me
1024 <listitem>
1025 <para>
1026 Prevent users from changing the default privileges of non-inherited
1027 roles (Robert Haas)
1028 </para>
1030 <para>
1031 This is now only allowed for inherited roles.
1032 </para>
1033 </listitem>
1035 <!--
1036 Author: Robert Haas <rhaas@postgresql.org>
1037 2022-08-22 [ce6b672e4] Make role grant system more consistent with other privil
1040 <listitem>
1041 <para>
1042 When granting role membership, require the granted-by role to be
1043 a role that has appropriate permissions (Robert Haas)
1044 </para>
1046 <para>
1047 This is a requirement even when a non-bootstrap superuser is
1048 granting role membership.
1049 </para>
1050 </listitem>
1052 <!--
1053 Author: Robert Haas <rhaas@postgresql.org>
1054 2022-08-22 [ce6b672e4] Make role grant system more consistent with other privil
1057 <listitem>
1058 <para>
1059 Allow non-superusers to grant permissions using a granted-by user
1060 that is not the current user (Robert Haas)
1061 </para>
1063 <para>
1064 The current user still must have sufficient permissions given by
1065 the specified granted-by user.
1066 </para>
1067 </listitem>
1069 <!--
1070 Author: Robert Haas <rhaas@postgresql.org>
1071 2022-11-18 [3d14e171e] Add a SET option to the GRANT command.
1074 <listitem>
1075 <para>
1076 Add <link linkend="sql-grant"><command>GRANT</command></link> to
1077 control permission to use <link linkend="sql-set-role"><command>SET
1078 ROLE</command></link> (Robert Haas)
1079 </para>
1081 <para>
1082 This is controlled by a new <literal>GRANT ... SET</literal>
1083 option.
1084 </para>
1085 </listitem>
1087 <!--
1088 Author: Robert Haas <rhaas@postgresql.org>
1089 2022-08-22 [ce6b672e4] Make role grant system more consistent with other privil
1092 <listitem>
1093 <para>
1094 Add dependency tracking to roles which have granted privileges
1095 (Robert Haas)
1096 </para>
1098 <para>
1099 For example, removing <literal>ADMIN OPTION</literal> will fail if
1100 there are privileges using that option; <literal>CASCADE</literal>
1101 must be used to revoke dependent permissions.
1102 </para>
1103 </listitem>
1105 <!--
1106 Author: Robert Haas <rhaas@postgresql.org>
1107 2022-08-18 [6566133c5] Ensure that pg_auth_members.grantor is always valid.
1110 <listitem>
1111 <para>
1112 Add dependency tracking of grantors for <link
1113 linkend="sql-grant"><command>GRANT</command></link> records
1114 (Robert Haas)
1115 </para>
1117 <para>
1118 This guarantees that <link
1119 linkend="catalog-pg-auth-members"><structname>pg_auth_members</structname></link>.<structfield>grantor</structfield>
1120 values are always valid.
1121 </para>
1122 </listitem>
1124 <!--
1125 Author: Robert Haas <rhaas@postgresql.org>
1126 2022-08-22 [ce6b672e4] Make role grant system more consistent with other privil
1127 Author: Robert Haas <rhaas@postgresql.org>
1128 2022-08-31 [0101f770a] Fix a bug in roles_is_member_of.
1131 <listitem>
1132 <para>
1133 Allow multiple role membership records (Robert Haas)
1134 </para>
1136 <para>
1137 Previously a new membership grant would remove a previous matching
1138 membership grant, even if other aspects of the grant did not match.
1139 </para>
1140 </listitem>
1142 <!--
1143 Author: Robert Haas <rhaas@postgresql.org>
1144 2022-07-26 [e530be2c5] Do not allow removal of superuser privileges from bootst
1147 <listitem>
1148 <para>
1149 Prevent removal of superuser privileges for the bootstrap user
1150 (Robert Haas)
1151 </para>
1153 <para>
1154 Restoring such users could lead to errors.
1155 </para>
1156 </listitem>
1158 <!--
1159 Author: Tom Lane <tgl@sss.pgh.pa.us>
1160 2022-07-03 [b762bbde3] Allow makeaclitem() to accept multiple privilege names.
1163 <listitem>
1164 <para>
1165 Allow <link
1166 linkend="functions-aclitem-fn-table"><function>makeaclitem()</function></link>
1167 to accept multiple privilege names (Robins Tharakan)
1168 </para>
1170 <para>
1171 Previously only a single privilege name, like <link
1172 linkend="sql-select"><command>SELECT</command></link>, was
1173 accepted.
1174 </para>
1175 </listitem>
1177 </itemizedlist>
1179 </sect4>
1181 <sect4 id="release-16-server-config">
1182 <title>Server Configuration</title>
1184 <itemizedlist>
1186 <!--
1187 Author: Stephen Frost <sfrost@snowman.net>
1188 2023-04-13 [6633cfb21] De-Revert "Add support for Kerberos credential delegatio
1189 Author: Bruce Momjian <bruce@momjian.us>
1190 2023-05-20 [9c0a0e2ed] rename "gss_accept_deleg" to "gss_accept_delegation".
1191 Author: Nathan Bossart <nathan@postgresql.org>
1192 2023-05-20 [f4001a553] Fix remaining references to gss_accept_deleg.
1193 Author: Tom Lane <tgl@sss.pgh.pa.us>
1194 2023-05-21 [a2eb99a01] Expand some more uses of "deleg" to "delegation" or "del
1197 <listitem>
1198 <para>
1199 Add support for <productname>Kerberos</productname> credential
1200 delegation (Stephen Frost)
1201 </para>
1203 <para>
1204 This is enabled with server variable <link
1205 linkend="guc-gss-accept-delegation"><varname>gss_accept_delegation</varname></link>
1206 and <application>libpq</application> connection parameter <link
1207 linkend="libpq-connect-gssdelegation"><literal>gssdelegation</literal></link>.
1208 </para>
1209 </listitem>
1211 <!--
1212 Author: Daniel Gustafsson <dgustafsson@postgresql.org>
1213 2023-03-27 [b57774300] Make SCRAM iteration count configurable
1216 <listitem>
1217 <para>
1218 Allow the <acronym>SCRAM</acronym> iteration
1219 count to be set with server variable <link
1220 linkend="guc-scram-iterations"><varname>scram_iterations</varname></link>
1221 (Daniel Gustafsson)
1222 </para>
1223 </listitem>
1225 <!--
1226 Author: Tom Lane <tgl@sss.pgh.pa.us>
1227 2022-10-14 [3057465ac] Replace the sorted array of GUC variables with a hash ta
1228 Author: Tom Lane <tgl@sss.pgh.pa.us>
1229 2022-10-14 [f13b2088f] Add auxiliary lists to GUC data structures for better pe
1232 <listitem>
1233 <para>
1234 Improve performance of server variable management (Tom Lane)
1235 </para>
1236 </listitem>
1238 <!--
1239 Author: Tom Lane <tgl@sss.pgh.pa.us>
1240 2022-09-27 [385366426] Introduce GUC_NO_RESET flag.
1243 <listitem>
1244 <para>
1245 Tighten restrictions on which server variables can be reset
1246 (Masahiko Sawada)
1247 </para>
1249 <para>
1250 Previously, while certain variables, like <link
1251 linkend="guc-default-transaction-isolation"><varname>transaction_isolation</varname></link>,
1252 were not affected by <link linkend="sql-reset"><command>RESET
1253 ALL</command></link>, they could be individually reset in
1254 inappropriate situations.
1255 </para>
1256 </listitem>
1258 <!--
1259 Author: Michael Paquier <michael@paquier.xyz>
1260 2022-08-09 [0b039e3a8] Fix some inconsistencies with GUC categories
1263 <listitem>
1264 <para>
1265 Move various <link
1266 linkend="config-setting-configuration-file"><filename>postgresql.conf</filename></link>
1267 items into new categories (Shinya Kato)
1268 </para>
1270 <para>
1271 This also affects the categories displayed in the <link
1272 linkend="view-pg-settings"><structname>pg_settings</structname></link>
1273 view.
1274 </para>
1275 </listitem>
1277 <!--
1278 Author: Michael Paquier <michael@paquier.xyz>
1279 2022-11-25 [d13b68411] Introduce variables for initial and max nesting depth on
1282 <listitem>
1283 <para>
1284 Prevent configuration file recursion beyond 10 levels (Julien
1285 Rouhaud)
1286 </para>
1287 </listitem>
1289 <!--
1290 Author: Daniel Gustafsson <dgustafsson@postgresql.org>
1291 2023-04-07 [7d71d3dd0] Refresh cost-based delay params more frequently in autov
1292 Author: Daniel Gustafsson <dgustafsson@postgresql.org>
1293 2023-04-20 [a9781ae11] Fix autovacuum cost debug logging
1296 <listitem>
1297 <para>
1298 Allow <link linkend="autovacuum">autovacuum</link> to more
1299 frequently honor changes to delay settings (Melanie Plageman)
1300 </para>
1302 <para>
1303 Rather than honor changes only at the start of each relation,
1304 honor them at the start of each block.
1305 </para>
1306 </listitem>
1308 <!--
1309 Author: Fujii Masao <fujii@postgresql.org>
1310 2022-07-26 [756e221db] Reduce overhead of renaming archive status files.
1311 Author: Fujii Masao <fujii@postgresql.org>
1312 2022-07-26 [3cabe45a8] doc: Add note about re-archiving of same WAL files in do
1315 <listitem>
1316 <para>
1317 Remove restrictions that archive files be durably renamed
1318 (Nathan Bossart)
1319 </para>
1321 <para>
1322 The <link
1323 linkend="guc-archive-command"><varname>archive_command</varname></link>
1324 command is now more likely to be called with already-archived
1325 files after a crash.
1326 </para>
1327 </listitem>
1329 <!--
1330 Author: Peter Eisentraut <peter@eisentraut.org>
1331 2022-11-15 [d627ce3b7] Disallow setting archive_library and archive_command at
1334 <listitem>
1335 <para>
1336 Prevent <link
1337 linkend="guc-archive-library"><varname>archive_library</varname></link>
1338 and <link
1339 linkend="guc-archive-command"><varname>archive_command</varname></link>
1340 from being set at the same time (Nathan Bossart)
1341 </para>
1343 <para>
1344 Previously <varname>archive_library</varname> would override
1345 <varname>archive_command</varname>.
1346 </para>
1347 </listitem>
1349 <!--
1350 Author: Tom Lane <tgl@sss.pgh.pa.us>
1351 2022-11-21 [51b5834cd] Provide options for postmaster to kill child processes w
1354 <listitem>
1355 <para>
1356 Allow the postmaster to terminate children with an abort signal
1357 (Tom Lane)
1358 </para>
1360 <para>
1361 This allows collection of a core dump for a
1362 stuck child process. This is controlled by <link
1363 linkend="guc-send-abort-for-crash"><varname>send_abort_for_crash</varname></link>
1364 and <link
1365 linkend="guc-send-abort-for-kill"><varname>send_abort_for_kill</varname></link>.
1366 The postmaster's <option>-T</option> switch is now the same as
1367 setting <varname>send_abort_for_crash</varname>.
1368 </para>
1369 </listitem>
1371 <!--
1372 Author: Tom Lane <tgl@sss.pgh.pa.us>
1373 2022-11-21 [51b5834cd] Provide options for postmaster to kill child processes w
1376 <listitem>
1377 <para>
1378 Remove the non-functional postmaster <option>-n</option> option
1379 (Tom Lane)
1380 </para>
1381 </listitem>
1383 <!--
1384 Author: Robert Haas <rhaas@postgresql.org>
1385 2023-01-20 [6e2775e4d] Add new GUC reserved_connections.
1388 <listitem>
1389 <para>
1390 Allow the server to reserve backend slots for roles with <link
1391 linkend="predefined-roles"><literal>pg_use_reserved_connections</literal></link>
1392 membership (Nathan Bossart)
1393 </para>
1395 <para>
1396 The number of reserved slots is set by server variable <link
1397 linkend="guc-reserved-connections"><varname>reserved_connections</varname></link>.
1398 </para>
1399 </listitem>
1401 <!--
1402 Author: Michael Paquier <michael@paquier.xyz>
1403 2022-09-17 [fdd8937c0] Fix huge_pages on Windows
1406 <listitem>
1407 <para>
1408 Allow <link linkend="guc-huge-pages">huge pages</link> to
1409 work on newer versions of <systemitem class="osname">Windows
1410 10</systemitem> (Thomas Munro)
1411 </para>
1413 <para>
1414 This adds the special handling required to enable huge pages
1415 on newer versions of <systemitem class="osname">Windows
1416 10</systemitem>.
1417 </para>
1418 </listitem>
1420 <!--
1421 Author: Thomas Munro <tmunro@postgresql.org>
1422 2023-04-08 [d4e71df6d] Add io_direct setting (developer-only).
1423 Author: Thomas Munro <tmunro@postgresql.org>
1424 2023-05-15 [319bae9a8] Rename io_direct to debug_io_direct.
1427 <listitem>
1428 <para>
1429 Add <link
1430 linkend="guc-debug-io-direct"><varname>debug_io_direct</varname></link>
1431 setting for developer usage (Thomas Munro, Andres Freund,
1432 Bharath Rupireddy)
1433 </para>
1435 <para>
1436 While primarily for developers, <link
1437 linkend="guc-wal-sync-method"><literal>wal_sync_method=open_sync</literal></link>/<literal>open_datasync</literal>
1438 has been modified to not use direct <acronym>I/O</acronym> with
1439 <literal>wal_level=minimal</literal>; this is now enabled with
1440 <literal>debug_io_direct=wal</literal>.
1441 </para>
1442 </listitem>
1444 <!--
1445 Author: Michael Paquier <michael@paquier.xyz>
1446 2022-12-20 [cca186348] Add pg_dissect_walfile_name()
1447 Author: Michael Paquier <michael@paquier.xyz>
1448 2022-12-23 [13e0d7a60] Rename pg_dissect_walfile_name() to pg_split_walfile_nam
1451 <listitem>
1452 <para>
1453 Add function <link
1454 linkend="functions-admin-backup-table"><function>pg_split_walfile_name()</function></link>
1455 to report the segment and timeline values of <acronym>WAL</acronym>
1456 file names (Bharath Rupireddy)
1457 </para>
1458 </listitem>
1460 </itemizedlist>
1462 </sect4>
1464 <sect4 id="release-16-pg-hba">
1465 <title><link linkend="auth-pg-hba-conf">pg_hba.conf</link></title>
1467 <itemizedlist>
1469 <!--
1470 Author: Michael Paquier <michael@paquier.xyz>
1471 2022-10-24 [8fea86830] Add support for regexps on database and user entries in
1474 <listitem>
1475 <para>
1476 Add support for regular expression matching on database and role
1477 entries in <filename>pg_hba.conf</filename> (Bertrand Drouvot)
1478 </para>
1480 <para>
1481 Regular expression patterns are prefixed with a slash. Database
1482 and role names that begin with slashes need to be double-quoted
1483 if referenced in <filename>pg_hba.conf</filename>.
1484 </para>
1485 </listitem>
1487 <!--
1488 Author: Michael Paquier <michael@paquier.xyz>
1489 2023-01-20 [efb6f4a4f] Support the same patterns for pg-user in pg_ident.conf a
1492 <listitem>
1493 <para>
1494 Improve user-column handling of <link
1495 linkend="runtime-config-file-locations"><filename>pg_ident.conf</filename></link>
1496 to match <filename>pg_hba.conf</filename> (Jelte Fennema)
1497 </para>
1499 <para>
1500 Specifically, add support for <literal>all</literal>, role
1501 membership with <literal>+</literal>, and regular expressions
1502 with a leading slash. Any user name that matches these patterns
1503 must be double-quoted.
1504 </para>
1505 </listitem>
1507 <!--
1508 Author: Michael Paquier <michael@paquier.xyz>
1509 2022-11-24 [a54b658ce] Add support for file inclusions in HBA and ident configu
1512 <listitem>
1513 <para>
1514 Allow include files in <filename>pg_hba.conf</filename> and
1515 <filename>pg_ident.conf</filename> (Julien Rouhaud)
1516 </para>
1518 <para>
1519 These are controlled by <literal>include</literal>,
1520 <literal>include_if_exists</literal>, and
1521 <literal>include_dir</literal>. System views <link
1522 linkend="view-pg-hba-file-rules"><structname>pg_hba_file_rules</structname></link>
1523 and <link
1524 linkend="view-pg-ident-file-mappings"><structname>pg_ident_file_mappings</structname></link>
1525 now display the file name.
1526 </para>
1527 </listitem>
1529 <!--
1530 Author: Tom Lane <tgl@sss.pgh.pa.us>
1531 2023-07-27 [de3f0e3fe] Eliminate fixed token-length limit in hba.c.
1534 <listitem>
1535 <para>
1536 Allow <filename>pg_hba.conf</filename> tokens to be of unlimited
1537 length (Tom Lane)
1538 </para>
1539 </listitem>
1541 <!--
1542 Author: Michael Paquier <michael@paquier.xyz>
1543 2022-10-26 [c591300a8] Add rule_number to pg_hba_file_rules and map_number to p
1546 <listitem>
1547 <para>
1548 Add rule and map numbers to the system view <link
1549 linkend="view-pg-hba-file-rules"><structname>pg_hba_file_rules</structname></link>
1550 (Julien Rouhaud)
1551 </para>
1552 </listitem>
1554 </itemizedlist>
1556 </sect4>
1558 <sect4 id="release-16-localization">
1559 <title><link linkend="charset">Localization</link></title>
1561 <itemizedlist>
1563 <!--
1564 Author: Jeff Davis <jdavis@postgresql.org>
1565 2023-03-10 [c45dc7ffb] initdb: derive encoding from locale for ICU; similar to
1568 <listitem>
1569 <para>
1570 Determine the default encoding from the locale when using
1571 <acronym>ICU</acronym> (Jeff Davis)
1572 </para>
1574 <para>
1575 Previously the default was always <literal>UTF-8</literal>.
1576 </para>
1577 </listitem>
1579 <!--
1580 Author: Jeff Davis <jdavis@postgresql.org>
1581 Date: Fri Jun 16 10:27:32 2023 -0700
1584 <listitem>
1585 <para>
1586 Have <link linkend="sql-createdatabase"><command>CREATE
1587 DATABASE</command></link> and <link
1588 linkend="sql-createcollation"><command>CREATE
1589 COLLATION</command></link>'s <literal>LOCALE</literal> options, and
1590 <link linkend="app-initdb"><application>initdb</application></link>
1591 and <link
1592 linkend="app-createdb"><application>createdb</application></link>
1593 <option>--locale</option> options, control
1594 non-<application>libc</application> collation providers (Jeff
1595 Davis)
1596 </para>
1598 <para>
1599 Previously they only controlled <application>libc</application>
1600 providers.
1601 </para>
1602 </listitem>
1604 <!--
1605 Author: Peter Eisentraut <peter@eisentraut.org>
1606 2023-03-10 [0d21d4b9b] Add standard collation UNICODE
1609 <listitem>
1610 <para>
1611 Add predefined collations <literal>unicode</literal> and
1612 <literal>ucs_basic</literal> (Peter Eisentraut)
1613 </para>
1615 <para>
1616 This only works if <acronym>ICU</acronym> support is enabled.
1617 </para>
1618 </listitem>
1620 <!--
1621 Author: Peter Eisentraut <peter@eisentraut.org>
1622 2023-03-08 [30a53b792] Allow tailoring of ICU locales with custom rules
1625 <listitem>
1626 <para>
1627 Allow custom <acronym>ICU</acronym> collation rules to be created
1628 (Peter Eisentraut)
1629 </para>
1631 <para>
1632 This is done using <link
1633 linkend="sql-createcollation"><command>CREATE
1634 COLLATION</command></link>'s new <literal>RULES</literal>
1635 clause, as well as new options for <link
1636 linkend="sql-createdatabase"><command>CREATE
1637 DATABASE</command></link>, <link
1638 linkend="app-createdb"><application>createdb</application></link>,
1639 and <link
1640 linkend="app-initdb"><application>initdb</application></link>.
1641 </para>
1642 </listitem>
1644 <!--
1645 Author: Peter Eisentraut <peter@eisentraut.org>
1646 2023-01-03 [bf03cfd16] Windows support in pg_import_system_collations
1649 <listitem>
1650 <para>
1651 Allow <systemitem class="osname">Windows</systemitem> to import
1652 system locales automatically (Juan José Santamaría Flecha)
1653 </para>
1655 <para>
1656 Previously, only <acronym>ICU</acronym> locales could be imported
1657 on <systemitem class="osname">Windows</systemitem>.
1658 </para>
1659 </listitem>
1661 </itemizedlist>
1663 </sect4>
1665 </sect3>
1667 <sect3 id="release-16-logical">
1668 <title><link linkend="logical-replication">Logical Replication</link></title>
1670 <itemizedlist>
1672 <!--
1673 Author: Andres Freund <andres@anarazel.de>
1674 2023-04-08 [0fdab27ad] Allow logical decoding on standbys
1675 Author: Andres Freund <andres@anarazel.de>
1676 2023-04-07 [be87200ef] Support invalidating replication slots due to horizon an
1677 Author: Andres Freund <andres@anarazel.de>
1678 2023-04-08 [26669757b] Handle logical slot conflicts on standby
1681 <listitem>
1682 <para>
1683 Allow <link linkend="logicaldecoding">logical decoding</link>
1684 on standbys (Bertrand Drouvot, Andres Freund, Amit Khandekar)
1685 </para>
1687 <para>
1688 Snapshot <acronym>WAL</acronym> records are
1689 required for logical slot creation but cannot be
1690 created on standbys. To avoid delays, the new function <link
1691 linkend="functions-snapshot-synchronization-table"><function>pg_log_standby_snapshot()</function></link>
1692 allows creation of such records.
1693 </para>
1694 </listitem>
1696 <!--
1697 Author: Amit Kapila <akapila@postgresql.org>
1698 2022-12-26 [5de94a041] Add 'logical_decoding_mode' GUC.
1699 Author: Amit Kapila <akapila@postgresql.org>
1700 2023-01-30 [1e8b61735] Rename GUC logical_decoding_mode to logical_replication_
1701 Author: Amit Kapila <akapila@postgresql.org>
1702 2023-02-02 [9f2213a7c] Allow the logical_replication_mode to be used on the sub
1705 <listitem>
1706 <para>
1707 Add server variable to control how logical decoding publishers
1708 transfer changes and how subscribers apply them (Shi Yu)
1709 </para>
1711 <para>
1712 The variable is <link
1713 linkend="guc-debug-logical-replication-streaming"><varname>debug_logical_replication_streaming</varname></link>.
1714 </para>
1715 </listitem>
1717 <!--
1718 Author: Amit Kapila <akapila@postgresql.org>
1719 2023-03-23 [ecb696527] Allow logical replication to copy tables in binary forma
1722 <listitem>
1723 <para>
1724 Allow logical replication initial table synchronization to copy
1725 rows in binary format (Melih Mutlu)
1726 </para>
1728 <para>
1729 This is only possible for subscriptions marked as binary.
1730 </para>
1731 </listitem>
1733 <!--
1734 Author: Amit Kapila <akapila@postgresql.org>
1735 2023-01-09 [216a78482] Perform apply of large transactions by parallel workers.
1736 Author: Amit Kapila <akapila@postgresql.org>
1737 2023-01-10 [cd06ccd78] Document the newly added wait events added by commit 216
1738 Author: Amit Kapila <akapila@postgresql.org>
1739 2023-02-16 [fce003cfd] Add a new wait state and use it when sending data in the
1742 <listitem>
1743 <para>
1744 Allow parallel application of logical replication (Hou Zhijie,
1745 Wang Wei, Amit Kapila)
1746 </para>
1748 <para>
1749 The <link linkend="sql-createsubscription"><command>CREATE
1750 SUBSCRIPTION</command></link> <option>STREAMING</option>
1751 option now supports <literal>parallel</literal> to enable
1752 application of large transactions by parallel workers. The number
1753 of parallel workers is controlled by the new server variable <link
1754 linkend="guc-max-parallel-apply-workers-per-subscription"><varname>max_parallel_apply_workers_per_subscription</varname></link>.
1755 Wait events <link
1756 linkend="wait-event-activity-table"><literal>LogicalParallelApplyMain</literal></link>,
1757 <literal>LogicalParallelApplyStateChange</literal>, and
1758 <literal>LogicalApplySendData</literal> were also added. Column
1759 <structfield>leader_pid</structfield> was added to system view <link
1760 linkend="monitoring-pg-stat-subscription"><structname>pg_stat_subscription</structname></link>
1761 to track parallel activity.
1762 </para>
1763 </listitem>
1765 <!--
1766 Author: Amit Kapila <akapila@postgresql.org>
1767 2023-03-15 [89e46da5e] Allow the use of indexes other than PK and REPLICA IDENT
1770 <listitem>
1771 <para>
1772 Improve performance for <link
1773 linkend="logical-replication-architecture">logical replication
1774 apply</link> without a primary key (Onder Kalaci, Amit Kapila)
1775 </para>
1777 <para>
1778 Specifically, <literal>REPLICA IDENTITY FULL</literal> can now
1779 use btree indexes rather than sequentially scanning the table to
1780 find matches.
1781 </para>
1782 </listitem>
1784 <!--
1785 Author: Amit Kapila <akapila@postgresql.org>
1786 2022-07-21 [366283961] Allow users to skip logical replication of data having o
1787 Author: Amit Kapila <akapila@postgresql.org>
1788 2022-09-08 [875693019] Raise a warning if there is a possibility of data from m
1791 <listitem>
1792 <para>
1793 Allow logical replication subscribers to process only changes that
1794 have no origin (Vignesh C, Amit Kapila)
1795 </para>
1797 <para>
1798 This can be used to avoid replication loops. This is controlled
1799 by the new <literal>CREATE SUBSCRIPTION ... ORIGIN</literal> option.
1800 </para>
1801 </listitem>
1803 <!--
1804 Author: Robert Haas <rhaas@postgresql.org>
1805 2023-04-04 [1e10d49b6] Perform logical replication actions as the table owner.
1806 Author: Robert Haas <rhaas@postgresql.org>
1807 2023-04-04 [482675987] Add a run_as_owner option to subscriptions.
1810 <listitem>
1811 <para>
1812 Perform logical replication <link
1813 linkend="sql-select"><command>SELECT</command></link> and
1814 <acronym>DML</acronym> actions as the table owner (Robert Haas)
1815 </para>
1817 <para>
1818 This improves security and now requires subscription
1819 owners to be either superusers or to have <link
1820 linkend="sql-set-role"><command>SET ROLE</command></link>
1821 permission on all roles owning tables in the replication set.
1822 The previous behavior of performing all operations as the
1823 subscription owner can be enabled with the subscription <link
1824 linkend="sql-createsubscription"><option>run_as_owner</option></link>
1825 option.
1826 </para>
1827 </listitem>
1829 <!--
1830 Author: Tom Lane <tgl@sss.pgh.pa.us>
1831 2023-01-22 [5a3a95385] Track logrep apply workers' last start times to avoid us
1834 <listitem>
1835 <para>
1836 Have <link
1837 linkend="guc-wal-retrieve-retry-interval"><varname>wal_retrieve_retry_interval</varname></link>
1838 operate on a per-subscription basis (Nathan Bossart)
1839 </para>
1841 <para>
1842 Previously the retry time was applied
1843 globally. This also adds wait events <link
1844 linkend="wait-event-lwlock-table">><literal>LogicalRepLauncherDSA</literal></link>
1845 and <literal>LogicalRepLauncherHash</literal>.
1846 </para>
1847 </listitem>
1849 </itemizedlist>
1851 </sect3>
1853 <sect3 id="release-16-utility">
1854 <title>Utility Commands</title>
1856 <itemizedlist>
1858 <!--
1859 Author: Tom Lane <tgl@sss.pgh.pa.us>
1860 2023-03-24 [3c05284d8] Invent GENERIC_PLAN option for EXPLAIN.
1863 <listitem>
1864 <para>
1865 Add <link linkend="sql-explain"><command>EXPLAIN</command></link>
1866 option <literal>GENERIC_PLAN</literal> to display the generic plan
1867 for a parameterized query (Laurenz Albe)
1868 </para>
1869 </listitem>
1871 <!--
1872 Author: Andrew Dunstan <andrew@dunslane.net>
1873 2023-03-13 [9f8377f7a] Add a DEFAULT option to COPY FROM
1876 <listitem>
1877 <para>
1878 Allow a <link linkend="sql-copy"><command>COPY FROM</command></link>
1879 value to map to a column's <literal>DEFAULT</literal> (Israel
1880 Barth Rubio)
1881 </para>
1882 </listitem>
1884 <!--
1885 Author: Etsuro Fujita <efujita@postgresql.org>
1886 2022-10-13 [97da48246] Allow batch insertion during COPY into a foreign table.
1889 <listitem>
1890 <para>
1891 Allow <link linkend="sql-copy"><command>COPY</command></link>
1892 into foreign tables to add rows in batches (Andrey Lepikhov,
1893 Etsuro Fujita)
1894 </para>
1896 <para>
1897 This is controlled by the <link
1898 linkend="postgres-fdw"><application>postgres_fdw</application></link>
1899 option <link
1900 linkend="postgres-fdw-options-cost-estimation"><option>batch_size</option></link>.
1901 </para>
1902 </listitem>
1904 <!--
1905 Author: Peter Eisentraut <peter@eisentraut.org>
1906 2022-07-13 [784cedda0] Allow specifying STORAGE attribute for a new table
1907 Author: Tom Lane <tgl@sss.pgh.pa.us>
1908 2022-11-10 [b9424d014] Support writing "CREATE/ALTER TABLE ... SET STORAGE DEFA
1911 <listitem>
1912 <para>
1913 Allow the <literal>STORAGE</literal> type to be specified by <link
1914 linkend="sql-createtable"><command>CREATE TABLE</command></link>
1915 (Teodor Sigaev, Aleksander Alekseev)
1916 </para>
1918 <para>
1919 Previously only <link linkend="sql-altertable"><command>ALTER
1920 TABLE</command></link> could control this.
1921 </para>
1922 </listitem>
1924 <!--
1925 Author: Fujii Masao <fujii@postgresql.org>
1926 2022-07-12 [3b00a944a] Support TRUNCATE triggers on foreign tables.
1929 <listitem>
1930 <para>
1931 Allow <link linkend="sql-createtrigger">truncate triggers</link>
1932 on foreign tables (Yugo Nagata)
1933 </para>
1934 </listitem>
1936 <!--
1937 Author: Michael Paquier <michael@paquier.xyz>
1938 2023-03-06 [4211fbd84] Add PROCESS_MAIN to VACUUM
1941 <listitem>
1942 <para>
1943 Allow <link
1944 linkend="sql-vacuum"><command>VACUUM</command></link> and <link
1945 linkend="app-vacuumdb"><application>vacuumdb</application></link>
1946 to only process <link
1947 linkend="storage-toast"><literal>TOAST</literal></link> tables
1948 (Nathan Bossart)
1949 </para>
1951 <para>
1952 This is accomplished by having <link
1953 linkend="sql-vacuum"><command>VACUUM</command></link>
1954 turn off <literal>PROCESS_MAIN</literal> or by <link
1955 linkend="app-vacuumdb"><application>vacuumdb</application></link>
1956 using the <option>--no-process-main</option> option.
1957 </para>
1958 </listitem>
1960 <!--
1961 Author: Tom Lane <tgl@sss.pgh.pa.us>
1962 2023-01-06 [a46a7011b] Add options to control whether VACUUM runs vac_update_da
1965 <listitem>
1966 <para>
1967 Add <link linkend="sql-vacuum"><command>VACUUM</command></link>
1968 options to skip or update all <link
1969 linkend="vacuum-for-wraparound">frozen</link> statistics (Tom Lane,
1970 Nathan Bossart)
1971 </para>
1973 <para>
1974 The options are <literal>SKIP_DATABASE_STATS</literal> and
1975 <literal>ONLY_DATABASE_STATS</literal>.
1976 </para>
1977 </listitem>
1979 <!--
1980 Author: Michael Paquier <michael@paquier.xyz>
1981 2022-07-19 [2cbc3c17a] Rework logic and simplify syntax of REINDEX DATABASE/SYS
1982 Author: Michael Paquier <michael@paquier.xyz>
1983 2022-07-26 [0a5f06b84] Fix a few issues with REINDEX grammar
1986 <listitem>
1987 <para>
1988 Change <link linkend="sql-reindex"><command>REINDEX
1989 DATABASE</command></link> and <link
1990 linkend="sql-reindex"><command>REINDEX SYSTEM</command></link>
1991 to no longer require an argument (Simon Riggs)
1992 </para>
1994 <para>
1995 Previously the database name had to be specified.
1996 </para>
1997 </listitem>
1999 <!--
2000 Author: Dean Rasheed <dean.a.rasheed@gmail.com>
2001 2022-07-21 [624aa2a13] Make the name optional in CREATE STATISTICS.
2004 <listitem>
2005 <para>
2006 Allow <link linkend="sql-createstatistics"><command>CREATE
2007 STATISTICS</command></link> to generate a statistics name if none
2008 is specified (Simon Riggs)
2009 </para>
2010 </listitem>
2012 </itemizedlist>
2014 </sect3>
2016 <sect3 id="release-16-datatypes">
2017 <title>Data Types</title>
2019 <itemizedlist>
2021 <!--
2022 Author: Peter Eisentraut <peter@eisentraut.org>
2023 2022-12-14 [6fcda9aba] Non-decimal integer literals
2026 <listitem>
2027 <para>
2028 Allow non-decimal <link linkend="sql-syntax-bit-strings">integer
2029 literals</link> (Peter Eisentraut)
2030 </para>
2032 <para>
2033 For example, <literal>0x42F</literal>, <literal>0o273</literal>,
2034 and <literal>0b100101</literal>.
2035 </para>
2036 </listitem>
2038 <!--
2039 Author: Dean Rasheed <dean.a.rasheed@gmail.com>
2040 2023-01-23 [6dfacbf72] Add non-decimal integer support to type numeric.
2043 <listitem>
2044 <para>
2045 Allow <link linkend="datatype-numeric"><type>NUMERIC</type></link>
2046 to process hexadecimal, octal, and binary integers of any size
2047 (Dean Rasheed)
2048 </para>
2050 <para>
2051 Previously only unquoted eight-byte integers were supported with
2052 these non-decimal bases.
2053 </para>
2054 </listitem>
2056 <!--
2057 Author: Dean Rasheed <dean.a.rasheed@gmail.com>
2058 2023-02-04 [faff8f8e4] Allow underscores in integer and numeric constants.
2061 <listitem>
2062 <para>
2063 Allow underscores in integer and numeric <link
2064 linkend="sql-syntax-bit-strings">constants</link> (Peter Eisentraut,
2065 Dean Rasheed)
2066 </para>
2068 <para>
2069 This can improve readability for long strings of digits.
2070 </para>
2071 </listitem>
2073 <!--
2074 Author: Tom Lane <tgl@sss.pgh.pa.us>
2075 2023-01-01 [2ceea5adb] Accept "+infinity" in date and timestamp[tz] input.
2078 <listitem>
2079 <para>
2080 Accept the spelling <literal>+infinity</literal> in datetime input
2081 (Vik Fearing)
2082 </para>
2083 </listitem>
2085 <!--
2086 Author: Tom Lane <tgl@sss.pgh.pa.us>
2087 2023-03-09 [bcc704b52] Reject combining "epoch" and "infinity" with other datet
2090 <listitem>
2091 <para>
2092 Prevent the specification of <literal>epoch</literal> and
2093 <literal>infinity</literal> together with other fields in datetime
2094 strings (Joseph Koshakow)
2095 </para>
2096 </listitem>
2098 <!--
2099 Author: Tom Lane <tgl@sss.pgh.pa.us>
2100 2023-03-16 [5b3c59535] Tighten error checks in datetime input, and remove bogus
2103 <listitem>
2104 <para>
2105 Remove undocumented support for date input in the form
2106 <literal>Y<replaceable>year</replaceable>M<replaceable>month</replaceable>D<replaceable>day</replaceable></literal>
2107 (Joseph Koshakow)
2108 </para>
2109 </listitem>
2111 <!--
2112 Author: Tom Lane <tgl@sss.pgh.pa.us>
2113 2022-12-09 [1939d2628] Add test scaffolding for soft error reporting from input
2114 Author: Michael Paquier <michael@paquier.xyz>
2115 2023-02-28 [b8da37b3a] Rework pg_input_error_message(), now renamed pg_input_er
2118 <listitem>
2119 <para>
2120 Add functions <link
2121 linkend="functions-info-validity-table"><function>pg_input_is_valid()</function></link>
2122 and <function>pg_input_error_info()</function> to check for type
2123 conversion errors (Tom Lane)
2124 </para>
2125 </listitem>
2127 </itemizedlist>
2129 </sect3>
2131 <sect3 id="release-16-general">
2132 <title>General Queries</title>
2134 <itemizedlist>
2136 <!--
2137 Author: Dean Rasheed <dean.a.rasheed@gmail.com>
2138 2022-07-20 [bcedd8f5f] Make subquery aliases optional in the FROM clause.
2141 <listitem>
2142 <para>
2143 Allow subqueries in the <literal>FROM</literal> clause to omit
2144 aliases (Dean Rasheed)
2145 </para>
2146 </listitem>
2148 <!--
2149 Author: Peter Eisentraut <peter@eisentraut.org>
2150 2023-03-05 [102a5c164] SQL JSON path enhanced numeric literals
2153 <listitem>
2154 <para>
2155 Add support for enhanced numeric literals in
2156 <acronym>SQL/JSON</acronym> paths (Peter Eisentraut)
2157 </para>
2159 <para>
2160 For example, allow hexadecimal, octal, and binary integers and
2161 underscores between digits.
2162 </para>
2163 </listitem>
2165 </itemizedlist>
2167 </sect3>
2169 <sect3 id="release-16-functions">
2170 <title>Functions</title>
2172 <itemizedlist>
2174 <!--
2175 Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
2176 2023-03-29 [7081ac46a] SQL/JSON: add standard JSON constructor functions
2179 <listitem>
2180 <para>
2181 Add <acronym>SQL/JSON</acronym> constructors (Nikita Glukhov,
2182 Teodor Sigaev, Oleg Bartunov, Alexander Korotkov, Amit Langote)
2183 </para>
2185 <para>
2186 The new functions <link
2187 linkend="functions-json-creation-table"><function>JSON_ARRAY()</function></link>,
2188 <link
2189 linkend="functions-aggregate-table"><function>JSON_ARRAYAGG()</function></link>,
2190 <function>JSON_OBJECT()</function>, and
2191 <function>JSON_OBJECTAGG()</function> are part of the
2192 <acronym>SQL</acronym> standard.
2193 </para>
2194 </listitem>
2196 <!--
2197 Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
2198 2023-03-31 [6ee30209a] SQL/JSON: support the IS JSON predicate
2201 <listitem>
2202 <para>
2203 Add <acronym>SQL/JSON</acronym> object checks (Nikita Glukhov,
2204 Teodor Sigaev, Oleg Bartunov, Alexander Korotkov, Amit Langote,
2205 Andrew Dunstan)
2206 </para>
2208 <para>
2209 The <link linkend="functions-sqljson-misc"><literal>IS
2210 JSON</literal></link> checks include checks for values, arrays,
2211 objects, scalars, and unique keys.
2212 </para>
2213 </listitem>
2215 <!--
2216 Author: John Naylor <john.naylor@postgresql.org>
2217 2022-09-02 [0a8de93a4] Speed up lexing of long JSON strings
2220 <listitem>
2221 <para>
2222 Allow <acronym>JSON</acronym> string parsing to use vector
2223 operations (John Naylor)
2224 </para>
2225 </listitem>
2227 <!--
2228 Author: Tom Lane <tgl@sss.pgh.pa.us>
2229 2023-01-19 [5a617d75d] Fix ts_headline() to handle ORs and phrase queries more
2232 <listitem>
2233 <para>
2234 Improve the handling of full text highlighting function <link
2235 linkend="textsearch-functions-table"><function>ts_headline()</function></link>
2236 for <literal>OR</literal> and <literal>NOT</literal> expressions
2237 (Tom Lane)
2238 </para>
2239 </listitem>
2241 <!--
2242 Author: Tom Lane <tgl@sss.pgh.pa.us>
2243 2023-03-18 [75bd846b6] Add functions to do timestamptz arithmetic in a non-defa
2246 <listitem>
2247 <para>
2248 Add functions to add, subtract, and generate
2249 <type>timestamptz</type> values in a specified time zone (Przemyslaw
2250 Sztoch, Gurjeet Singh)
2251 </para>
2253 <para>
2254 The functions are <link
2255 linkend="functions-datetime-table"><function>date_add()</function></link>,
2256 <function>date_subtract()</function>, and <link
2257 linkend="functions-srf-series"><function>generate_series()</function></link>.
2258 </para>
2259 </listitem>
2261 <!--
2262 Author: Tom Lane <tgl@sss.pgh.pa.us>
2263 2022-11-12 [533e02e92] Fix volatility marking of timestamptz_trunc_zone.
2266 <listitem>
2267 <para>
2268 Change <link
2269 linkend="functions-datetime-table"><function>date_trunc(unit,
2270 timestamptz, time_zone)</function></link> to be an immutable
2271 function (Przemyslaw Sztoch)
2272 </para>
2274 <para>
2275 This allows the creation of expression indexes using this function.
2276 </para>
2277 </listitem>
2279 <!--
2280 Author: Michael Paquier <michael@paquier.xyz>
2281 2022-09-29 [0823d061b] Introduce SYSTEM_USER
2284 <listitem>
2285 <para>
2286 Add server variable <link
2287 linkend="functions-info-session-table"><literal>SYSTEM_USER</literal></link>
2288 (Bertrand Drouvot)
2289 </para>
2291 <para>
2292 This reports the authentication method and its authenticated user.
2293 </para>
2294 </listitem>
2296 <!--
2297 Author: Tom Lane <tgl@sss.pgh.pa.us>
2298 2023-04-07 [888f2ea0a] Add array_sample() and array_shuffle() functions.
2301 <listitem>
2302 <para>
2303 Add functions <link
2304 linkend="array-functions-table"><function>array_sample()</function></link>
2305 and <function>array_shuffle()</function> (Martin Kalcher)
2306 </para>
2307 </listitem>
2309 <!--
2310 Author: Peter Eisentraut <peter@eisentraut.org>
2311 2023-02-22 [2ddab010c] Implement ANY_VALUE aggregate
2314 <listitem>
2315 <para>
2316 Add aggregate function <link
2317 linkend="functions-aggregate-table"><function>ANY_VALUE()</function></link>
2318 which returns any value from a set (Vik Fearing)
2319 </para>
2320 </listitem>
2322 <!--
2323 Author: Tom Lane <tgl@sss.pgh.pa.us>
2324 2023-01-09 [38d81760c] Invent random_normal() to provide normally-distributed r
2327 <listitem>
2328 <para>
2329 Add function <link
2330 linkend="functions-math-random-table"><function>random_normal()</function></link>
2331 to supply normally-distributed random numbers (Paul Ramsey)
2332 </para>
2333 </listitem>
2335 <!--
2336 Author: Dean Rasheed <dean.a.rasheed@gmail.com>
2337 2023-03-14 [d5d574146] Add support for the error functions erf() and erfc().
2340 <listitem>
2341 <para>
2342 Add error function <link
2343 linkend="functions-math-func-table"><function>erf()</function></link>
2344 and its complement <function>erfc()</function> (Dean Rasheed)
2345 </para>
2346 </listitem>
2348 <!--
2349 Author: Dean Rasheed <dean.a.rasheed@gmail.com>
2350 2022-10-20 [40c7fcbbe] Improve the accuracy of numeric power() for integer expo
2353 <listitem>
2354 <para>
2355 Improve the accuracy of numeric <link
2356 linkend="functions-math-func-table"><function>power()</function></link>
2357 for integer exponents (Dean Rasheed)
2358 </para>
2359 </listitem>
2361 <!--
2362 Author: Tom Lane <tgl@sss.pgh.pa.us>
2363 2023-03-15 [483bdb2af] Support [NO] INDENT option in XMLSERIALIZE().
2366 <listitem>
2367 <para>
2368 Add <link
2369 linkend="datatype-xml-creating"><function>XMLSERIALIZE()</function></link>
2370 option <literal>INDENT</literal> to pretty-print its output
2371 (Jim Jones)
2372 </para>
2373 </listitem>
2375 <!--
2376 Author: Jeff Davis <jdavis@postgresql.org>
2377 2022-10-31 [10932ed5e] Enable pg_collation_actual_version() to work on the defa
2380 <listitem>
2381 <para>
2382 Change <link
2383 linkend="functions-admin-collation"><function>pg_collation_actual_version()</function></link>
2384 to return a reasonable value for the default collation (Jeff Davis)
2385 </para>
2387 <para>
2388 Previously it returned <literal>NULL</literal>.
2389 </para>
2390 </listitem>
2392 <!--
2393 Author: Tom Lane <tgl@sss.pgh.pa.us>
2394 2022-07-29 [283129e32] Support pg_read_[binary_]file (filename, missing_ok).
2397 <listitem>
2398 <para>
2399 Allow <link
2400 linkend="functions-admin-genfile-table"><function>pg_read_file()</function></link>
2401 and <function>pg_read_binary_file()</function> to ignore missing
2402 files (Kyotaro Horiguchi)
2403 </para>
2404 </listitem>
2406 <!--
2407 Author: Peter Eisentraut <peter@eisentraut.org>
2408 2023-03-07 [ce1215d9b] Add support for unit "B" to pg_size_bytes()
2411 <listitem>
2412 <para>
2413 Add byte specification (<literal>B</literal>) to <link
2414 linkend="functions-admin-dbsize"><function>pg_size_bytes()</function></link>
2415 (Peter Eisentraut)
2416 </para>
2417 </listitem>
2419 <!--
2420 Author: Tom Lane <tgl@sss.pgh.pa.us>
2421 2022-12-27 [3ea7329c9] Simplify the implementations of the to_reg* functions.
2424 <listitem>
2425 <para>
2426 Allow <link
2427 linkend="functions-info-catalog-table"><function>to_reg</function></link>*
2428 functions to accept numeric <acronym>OID</acronym>s as input
2429 (Tom Lane)
2430 </para>
2431 </listitem>
2433 </itemizedlist>
2435 </sect3>
2437 <sect3 id="release-16-plpgsql">
2438 <title><link linkend="plpgsql">PL/pgSQL</link></title>
2440 <itemizedlist>
2442 <!--
2443 Author: Tom Lane <tgl@sss.pgh.pa.us>
2444 2023-04-04 [d3d53f955] Add a way to get the current function's OID in pl/pgsql.
2447 <listitem>
2448 <para>
2449 Add the ability to get the current function's <acronym>OID</acronym>
2450 in <application>PL/pgSQL</application> (Pavel Stehule)
2451 </para>
2453 <para>
2454 This is accomplished with <link
2455 linkend="plpgsql-statements-diagnostics"><command>GET DIAGNOSTICS
2456 variable = PG_ROUTINE_OID</command></link>.
2457 </para>
2458 </listitem>
2460 </itemizedlist>
2462 </sect3>
2464 <sect3 id="release-16-libpq">
2465 <title><link linkend="libpq">libpq</link></title>
2467 <itemizedlist>
2469 <!--
2470 Author: Michael Paquier <michael@paquier.xyz>
2471 2023-03-14 [3a465cc67] libpq: Add support for require_auth to control authorize
2474 <listitem>
2475 <para>
2476 Add <application>libpq</application> connection option <link
2477 linkend="libpq-connect-require-auth"><option>require_auth</option></link>
2478 to specify a list of acceptable authentication methods (Jacob
2479 Champion)
2480 </para>
2482 <para>
2483 This can also be used to disallow certain authentication methods.
2484 </para>
2485 </listitem>
2487 <!--
2488 Author: Daniel Gustafsson <dgustafsson@postgresql.org>
2489 2023-03-29 [7f5b19817] Support connection load balancing in libpq
2490 Author: Fujii Masao <fujii@postgresql.org>
2491 2023-04-21 [0a16512d4] doc: Add documentation for PGLOADBALANCEHOSTS environmen
2494 <listitem>
2495 <para>
2496 Allow multiple <application>libpq</application>-specified hosts
2497 to be randomly selected (Jelte Fennema)
2498 </para>
2500 <para>
2501 This is enabled with <link
2502 linkend="libpq-connect-load-balance-hosts"><literal>load_balance_hosts=random</literal></link>
2503 and can be used for load balancing.
2504 </para>
2505 </listitem>
2507 <!--
2508 Author: Michael Paquier <michael@paquier.xyz>
2509 2023-03-24 [36f40ce2d] libpq: Add sslcertmode option to control client certific
2512 <listitem>
2513 <para>
2514 Add <application>libpq</application> option <link
2515 linkend="libpq-connect-sslcertmode"><option>sslcertmode</option></link>
2516 to control transmission of the client certificate (Jacob Champion)
2517 </para>
2519 <para>
2520 The option values are <literal>disable</literal>,
2521 <literal>allow</literal>, and <literal>require</literal>.
2522 </para>
2523 </listitem>
2525 <!--
2526 Author: Daniel Gustafsson <dgustafsson@postgresql.org>
2527 2023-04-05 [8eda73146] Allow to use system CA pool for certificate verification
2530 <listitem>
2531 <para>
2532 Allow <application>libpq</application> to use the system certificate
2533 pool for certificate verification (Jacob Champion, Thomas Habets)
2534 </para>
2536 <para>
2537 This is enabled with <link
2538 linkend="libpq-connect-sslrootcert"><literal>sslrootcert=system</literal></link>,
2539 which also enables <link
2540 linkend="libpq-connect-sslmode"><literal>sslmode=verify-full</literal></link>.
2541 </para>
2542 </listitem>
2544 </itemizedlist>
2546 </sect3>
2548 <sect3 id="release-16-client-apps">
2549 <title>Client Applications</title>
2551 <itemizedlist>
2553 <!--
2554 Author: Tom Lane <tgl@sss.pgh.pa.us>
2555 2022-07-12 [83f1c7b74] Fix ECPG's handling of type names that match SQL keyword
2558 <listitem>
2559 <para>
2560 Allow <link linkend="ecpg"><command>ECPG</command></link>
2561 variable declarations to use typedef names that match unreserved
2562 <acronym>SQL</acronym> keywords (Tom Lane)
2563 </para>
2565 <para>
2566 This change does prevent keywords which match C typedef names from
2567 being processed as keywords in later <command>EXEC SQL</command>
2568 blocks.
2569 </para>
2570 </listitem>
2572 </itemizedlist>
2574 <sect4 id="release-16-psql">
2575 <title><xref linkend="app-psql"/></title>
2577 <itemizedlist>
2579 <!--
2580 Author: Andrew Dunstan <andrew@dunslane.net>
2581 2022-07-25 [a45388d6e] Add xheader_width pset option to psql
2584 <listitem>
2585 <para>
2586 Allow <application>psql</application> to control the maximum
2587 width of header lines in expanded format (Platon Pronko)
2588 </para>
2590 <para>
2591 This is controlled by <link
2592 linkend="app-psql-meta-command-pset-xheader-width"><option>xheader_width</option></link>.
2593 </para>
2594 </listitem>
2596 <!--
2597 Author: Dean Rasheed <dean.a.rasheed@gmail.com>
2598 2023-01-07 [d913928c9] psql: Add support for \dpS and \zS.
2599 Author: Tom Lane <tgl@sss.pgh.pa.us>
2600 2023-07-19 [d65ddaca9] Add psql \drg command to display role
2603 <listitem>
2604 <para>
2605 Add <application>psql</application> command <link
2606 linkend="app-psql-meta-command-drg"><command>\drg</command></link>
2607 to show role membership details (Pavel Luzanov)
2608 </para>
2610 <para>
2611 The <literal>Member of</literal> output column has been removed
2612 from <command>\du</command> and <command>\dg</command> because
2613 this new command displays this informaion in more detail.
2614 </para>
2615 </listitem>
2617 <!--
2618 Author: Dean Rasheed <dean.a.rasheed@gmail.com>
2619 2023-01-07 [d913928c9] psql: Add support for \dpS and \zS.
2620 Author: Tom Lane <tgl@sss.pgh.pa.us>
2621 2023-07-19 [d65ddaca9] Add psql \drg command to display role
2624 <listitem>
2625 <para>
2626 Allow <application>psql</application>'s access privilege commands
2627 to show system objects (Nathan Bossart)
2628 </para>
2630 <para>
2631 The options are <link
2632 linkend="app-psql-meta-command-dp-lc"><command>\dpS</command></link>
2633 and <link
2634 linkend="app-psql-meta-command-z"><command>\zS</command></link>.
2635 </para>
2636 </listitem>
2638 <!--
2639 Author: Michael Paquier <michael@paquier.xyz>
2640 2022-11-08 [bd95816f7] psql: Add information in \d+ about foreign partitions an
2643 <listitem>
2644 <para>
2645 Add <literal>FOREIGN</literal> designation
2646 to <application>psql</application> <link
2647 linkend="app-psql-meta-command-d"><command>\d+</command></link>
2648 for foreign table children and partitions (Ian Lawrence Barwick)
2649 </para>
2650 </listitem>
2652 <!--
2653 Author: Tom Lane <tgl@sss.pgh.pa.us>
2654 2023-03-02 [3dfae91f7] Show "internal name" not "source code" in psql's \df+ co
2657 <listitem>
2658 <para>
2659 Prevent <link
2660 linkend="app-psql-meta-command-df-uc"><command>\df+</command></link>
2661 from showing function source code (Isaac Morland)
2662 </para>
2664 <para>
2665 Function bodies are more easily viewed with <link
2666 linkend="app-psql-meta-command-sf"><command>\sf</command></link>.
2667 </para>
2668 </listitem>
2670 <!--
2671 Author: Peter Eisentraut <peter@eisentraut.org>
2672 2022-11-15 [5b66de343] psql: Add command to use extended query protocol
2675 <listitem>
2676 <para>
2677 Allow <application>psql</application> to submit queries using
2678 the extended query protocol (Peter Eisentraut)
2679 </para>
2681 <para>
2682 Passing arguments to such queries is done
2683 using the new <application>psql</application> <link
2684 linkend="app-psql-meta-command-bind"><command>\bind</command></link>
2685 command.
2686 </para>
2687 </listitem>
2689 <!--
2690 Author: Tom Lane <tgl@sss.pgh.pa.us>
2691 2023-04-06 [00beecfe8] psql: add an optional execution-count limit to \watch.
2694 <listitem>
2695 <para>
2696 Allow <application>psql</application> <link
2697 linkend="app-psql-meta-command-watch"><command>\watch</command></link>
2698 to limit the number of executions (Andrey Borodin)
2699 </para>
2701 <para>
2702 The <command>\watch</command> options can now be named when
2703 specified.
2704 </para>
2705 </listitem>
2707 <!--
2708 Author: Michael Paquier <michael@paquier.xyz>
2709 2023-03-16 [6f9ee74d4] Improve handling of psql \watch's interval argument
2712 <listitem>
2713 <para>
2714 Detect invalid values for <application>psql</application> <link
2715 linkend="app-psql-meta-command-watch"><command>\watch</command></link>,
2716 and allow zero to specify no delay (Andrey Borodin)
2717 </para>
2718 </listitem>
2720 <!--
2721 Author: Tom Lane <tgl@sss.pgh.pa.us>
2722 2023-03-21 [b0d8f2d98] Add SHELL_ERROR and SHELL_EXIT_CODE magic variables to p
2723 Author: Tom Lane <tgl@sss.pgh.pa.us>
2724 2023-04-06 [31ae2aa9d] psql: set SHELL_ERROR and SHELL_EXIT_CODE in more places
2727 <listitem>
2728 <para>
2729 Allow <application>psql</application> scripts to obtain the exit
2730 status of shell commands and queries
2731 (Corey Huinker, Tom Lane)
2732 </para>
2734 <para>
2735 The new <application>psql</application> control variables are <link
2736 linkend="app-psql-variables-shell-error"><literal>SHELL_ERROR</literal></link>
2737 and <link
2738 linkend="app-psql-variables-shell-exit-code"><literal>SHELL_EXIT_CODE</literal></link>.
2739 </para>
2740 </listitem>
2742 <!--
2743 Author: Michael Paquier <michael@paquier.xyz>
2744 2022-08-15 [f6c750d31] Improve tab completion of ALTER TYPE in psql
2745 Author: Michael Paquier <michael@paquier.xyz>
2746 2022-09-06 [4cbe57974] Add psql tab compression for SET COMPRESSION with ALTER
2747 Author: Michael Paquier <michael@paquier.xyz>
2748 2022-09-10 [6afcab6ac] Add psql tab compression for ALTER TABLE .. { OF | NOT O
2749 Author: Michael Paquier <michael@paquier.xyz>
2750 2022-10-05 [9aa58d48f] Add a few new patterns to the tab completion of psql
2751 Author: Michael Paquier <michael@paquier.xyz>
2752 2022-10-24 [3cf2f7af7] Improve tab completion for ALTER STATISTICS &lt;name&gt; SET i
2753 Author: Peter Eisentraut <peter@eisentraut.org>
2754 2022-11-01 [2ea5de296] psql: Improve tab completion for ALTER TABLE on identity
2755 Author: Michael Paquier <michael@paquier.xyz>
2756 2022-11-18 [07f7237c2] psql: Improve tab completion for GRANT/REVOKE
2757 Author: Michael Paquier <michael@paquier.xyz>
2758 2022-12-12 [9d0cf5749] Add support for GRANT SET in psql tab completion
2759 Author: Dean Rasheed <dean.a.rasheed@gmail.com>
2760 2023-01-06 [a3bc631ea] Improve tab completion for ALTER FUNCTION/PROCEDURE/ROUT
2761 Author: Michael Paquier <michael@paquier.xyz>
2762 2023-01-12 [2ff5ca86e] Add support for tab completion after ALTER EXTENSION ADD
2763 Author: Tom Lane <tgl@sss.pgh.pa.us>
2764 2023-04-19 [9e1e9d656] Add missed case for tab completion of GRANT/REVOKE MAINT
2765 Author: Amit Kapila <akapila@postgresql.org>
2766 2023-04-07 [96c498d2f] Add tab-completion for newly added SUBSCRIPTION options.
2769 <listitem>
2770 <para>
2771 Various <application>psql</application> tab completion improvements
2772 (Vignesh C, Aleksander Alekseev, Dagfinn Ilmari Mannsåker,
2773 Shi Yu, Michael Paquier, Ken Kato, Peter Smith)
2774 </para>
2775 </listitem>
2777 </itemizedlist>
2779 </sect4>
2781 <sect4 id="release-16-pgdump">
2782 <title><link linkend="app-pgdump"><application>pg_dump</application></link></title>
2784 <itemizedlist>
2786 <!--
2787 Author: Tom Lane <tgl@sss.pgh.pa.us>
2788 2023-03-14 [a563c24c9] Allow pg_dump to include/exclude child tables automatica
2791 <listitem>
2792 <para>
2793 Add <application>pg_dump</application> control of dumping child
2794 tables and partitions (Gilles Darold)
2795 </para>
2797 <para>
2798 The new options are <option>--table-and-children</option>,
2799 <option>--exclude-table-and-children</option>, and
2800 <option>--exclude-table-data-and-children</option>.
2801 </para>
2802 </listitem>
2804 <!--
2805 Author: Tomas Vondra <tomas.vondra@postgresql.org>
2806 2023-02-23 [0da243fed] Add LZ4 compression to pg_dump
2807 Author: Tomas Vondra <tomas.vondra@postgresql.org>
2808 2023-04-01 [0070b66fe] pg_dump: Use only LZ4 frame format for compression
2809 Author: Tomas Vondra <tomas.vondra@postgresql.org>
2810 2023-04-05 [84adc8e20] pg_dump: Add support for zstd compression-->
2812 <listitem>
2813 <para>
2814 Add <application>LZ4</application> and
2815 <application>Zstandard</application> compression to
2816 <application>pg_dump</application> (Georgios Kokolatos, Justin
2817 Pryzby)
2818 </para>
2819 </listitem>
2821 <!--
2822 Author: Tomas Vondra <tomas.vondra@postgresql.org>
2823 2023-04-06 [2820adf77] Support long distance matching for zstd compression
2826 <listitem>
2827 <para>
2828 Allow <application>pg_dump</application> and <link
2829 linkend="app-pgbasebackup"><application>pg_basebackup</application></link>
2830 to use <literal>long</literal> mode for compression (Justin Pryzby)
2831 </para>
2832 </listitem>
2834 <!--
2835 Author: Michael Paquier <michael@paquier.xyz>
2836 2022-12-02 [5e73a6048] Switch pg_dump to use compression specifications
2839 <listitem>
2840 <para>
2841 Improve <application>pg_dump</application> to accept a more
2842 consistent compression syntax (Georgios Kokolatos)
2843 </para>
2845 <para>
2846 Options like <option>--compress=gzip:5</option>.
2847 </para>
2848 </listitem>
2850 </itemizedlist>
2852 </sect4>
2854 </sect3>
2856 <sect3 id="release-16-server-apps">
2857 <title>Server Applications</title>
2859 <itemizedlist>
2861 <!--
2862 Author: Tom Lane <tgl@sss.pgh.pa.us> 2023-03-22
2863 [3e51b278d] Add "-c name=value" switch to initdb.
2866 <listitem>
2867 <para>
2868 Add <link
2869 linkend="app-initdb"><application>initdb</application></link>
2870 option to set server variables for the duration of
2871 <application>initdb</application> and all future server starts
2872 (Tom Lane)
2873 </para>
2875 <para>
2876 The option is <option>-c name=value</option>.
2877 </para>
2878 </listitem>
2880 <!--
2881 Author: Michael Paquier <michael@paquier.xyz>
2882 2022-07-13 [08951a7c9] createuser: Add support for more clause types through ne
2883 Author: Nathan Bossart <nathan@postgresql.org>
2884 2023-05-21 [2dcd1578c] Rename some createuser options.
2887 <listitem>
2888 <para>
2889 Add options to <link
2890 linkend="app-createuser"><application>createuser</application></link>
2891 to control more user options (Shinya Kato)
2892 </para>
2894 <para>
2895 Specifically, the new options control the valid-until date,
2896 bypassing of row-level security, and role membership.
2897 </para>
2898 </listitem>
2900 <!--
2901 Author: Nathan Bossart <nathan@postgresql.org>
2902 2023-05-21 [2dcd1578c] Rename some createuser options.
2903 Author: Nathan Bossart <nathan@postgresql.org>
2904 2023-05-23 [381d19b3e] Document deprecated createuser option.
2907 <listitem>
2908 <para>
2909 Deprecate <link
2910 linkend="app-createuser"><application>createuser</application></link>
2911 option <option>--role</option> (Nathan Bossart)
2912 </para>
2914 <para>
2915 This option could be easily confused with new
2916 <application>createuser</application> role membership options,
2917 so option <option>--member-of</option> has been added with the
2918 same functionality. The <option>--role</option> option can still
2919 be used.
2920 </para>
2921 </listitem>
2923 <!--
2924 Author: Andrew Dunstan <andrew@dunslane.net>
2925 2022-07-31 [7781f4e3e] Add - -schema and - -exclude-schema options to vacuumdb.
2928 <listitem>
2929 <para>
2930 Allow control of <link
2931 linkend="app-vacuumdb"><application>vacuumdb</application></link>
2932 schema processing (Gilles Darold)
2933 </para>
2935 <para>
2936 These are controlled by options <option>--schema</option> and
2937 <option>--exclude-schema</option>.
2938 </para>
2939 </listitem>
2941 <!--
2942 Author: Tom Lane <tgl@sss.pgh.pa.us>
2943 2023-01-06 [a46a7011b] Add options to control whether VACUUM runs vac_update_da
2946 <listitem>
2947 <para>
2948 Use new <link linkend="sql-vacuum"><command>VACUUM</command></link>
2949 options to improve the performance of <link
2950 linkend="app-vacuumdb"><application>vacuumdb</application></link>
2951 (Tom Lane, Nathan Bossart)
2952 </para>
2953 </listitem>
2955 <!--
2956 Author: Jeff Davis <jdavis@postgresql.org>
2957 2023-03-09 [9637badd9] pg_upgrade: copy locale and encoding information to new
2960 <listitem>
2961 <para>
2962 Have <link
2963 linkend="pgupgrade"><application>pg_upgrade</application></link>
2964 set the new cluster's locale and encoding (Jeff Davis)
2965 </para>
2967 <para>
2968 This removes the requirement that the new cluster be created with
2969 the same locale and encoding settings.
2970 </para>
2971 </listitem>
2973 <!--
2974 Author: Peter Eisentraut <peter@eisentraut.org>
2975 2022-12-16 [746915c68] pg_upgrade: Add - -copy option
2978 <listitem>
2979 <para>
2980 Add <link
2981 linkend="pgupgrade"><application>pg_upgrade</application></link>
2982 option to specify the default transfer mode (Peter Eisentraut)
2983 </para>
2985 <para>
2986 The option is <option>--copy</option>.
2987 </para>
2988 </listitem>
2990 <!--
2991 Author: Michael Paquier <michael@paquier.xyz>
2992 2022-11-30 [d18655cc0] Refactor code parsing compression option values (-Z/- -co
2995 <listitem>
2996 <para>
2997 Improve <link
2998 linkend="app-pgbasebackup"><application>pg_basebackup</application></link>
2999 to accept numeric compression options (Georgios Kokolatos,
3000 Michael Paquier)
3001 </para>
3003 <para>
3004 Options like <option>--compress=server-5</option> are now supported.
3005 </para>
3006 </listitem>
3008 <!--
3009 Author: Robert Haas <rhaas@postgresql.org>
3010 2023-04-18 [363e8f911] Fix pg_basebackup with in-place tablespaces some more.
3013 <listitem>
3014 <para>
3015 Fix <link
3016 linkend="app-pgbasebackup"><application>pg_basebackup</application></link>
3017 to handle tablespaces stored in the <envar>PGDATA</envar> directory
3018 (Robert Haas)
3019 </para>
3020 </listitem>
3022 <!--
3023 Author: Michael Paquier <michael@paquier.xyz>
3024 2022-12-27 [d497093cb] pg_waldump: Add - -save-fullpage=PATH to save full page i
3027 <listitem>
3028 <para>
3029 Add <link
3030 linkend="pgwaldump"><application>pg_waldump</application></link>
3031 option <option>--save-fullpage</option> to dump full page images
3032 (David Christensen)
3033 </para>
3034 </listitem>
3036 <!--
3037 Author: Peter Eisentraut <peter@eisentraut.org>
3038 2023-03-21 [4c8044c04] pg_waldump: Allow hexadecimal values for -t/- -timeline o
3041 <listitem>
3042 <para>
3043 Allow <link
3044 linkend="pgwaldump"><application>pg_waldump</application></link>
3045 options <option>-t</option>/<option>--timeline</option> to accept
3046 hexadecimal values (Peter Eisentraut)
3047 </para>
3048 </listitem>
3050 <!--
3051 Author: Michael Paquier <michael@paquier.xyz>
3052 2023-02-06 [d07c2948b] Add support for progress reporting to pg_verifybackup
3055 <listitem>
3056 <para>
3057 Add support for progress reporting to <link
3058 linkend="app-pgverifybackup"><application>pg_verifybackup</application></link>
3059 (Masahiko Sawada)
3060 </para>
3061 </listitem>
3063 <!--
3064 Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
3065 2023-02-23 [009eeee74] pg_rewind: Fix determining TLI when server was just prom
3066 Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
3067 2023-02-27 [0a0500207] pg_rewind: Remove notice in docs about running CHECKPOIN
3070 <listitem>
3071 <para>
3072 Allow <link
3073 linkend="app-pgrewind"><application>pg_rewind</application></link>
3074 to properly track timeline changes (Heikki Linnakangas)
3075 </para>
3077 <para>
3078 Previously if <application>pg_rewind</application> was run after
3079 a timeline switch but before a checkpoint was issued, it might
3080 incorrectly determine that a rewind was unnecessary.
3081 </para>
3082 </listitem>
3084 <!--
3085 Author: Daniel Gustafsson <dgustafsson@postgresql.org>
3086 2022-09-14 [8b60db774] Handle SIGTERM in pg_receivewal and pg_recvlogical
3089 <listitem>
3090 <para>
3091 Have <link
3092 linkend="app-pgreceivewal"><application>pg_receivewal</application></link>
3093 and <link
3094 linkend="app-pgrecvlogical"><application>pg_recvlogical</application></link>
3095 cleanly exit on <literal>SIGTERM</literal> (Christoph Berg)
3096 </para>
3098 <para>
3099 This signal is often used by <application>systemd</application>.
3100 </para>
3101 </listitem>
3103 </itemizedlist>
3105 </sect3>
3107 <sect3 id="release-16-source-code">
3108 <title>Source Code</title>
3110 <itemizedlist>
3112 <!--
3113 Author: Jeff Davis <jdavis@postgresql.org>
3114 2023-04-18 [fcb21b3ac] Build ICU support by default.
3117 <listitem>
3118 <para>
3119 Build <acronym>ICU</acronym> support by default (Jeff Davis)
3120 </para>
3122 <para>
3123 This removes <link linkend="installation">build
3124 flag</link> <option>--with-icu</option> and adds flag
3125 <option>--without-icu</option>.
3126 </para>
3127 </listitem>
3129 <!--
3130 Author: John Naylor <john.naylor@postgresql.org>
3131 2022-08-04 [56f2c7b58] Support SSE2 intrinsics where available
3134 <listitem>
3135 <para>
3136 Add support for SSE2 (Streaming <acronym>SIMD</acronym> Extensions
3137 2) vector operations on x86-64 architectures (John Naylor)
3138 </para>
3139 </listitem>
3141 <!--
3142 Author: John Naylor <john.naylor@postgresql.org>
3143 2022-08-29 [82739d4a8] Use ARM Advanced SIMD (NEON) intrinsics where available
3146 <listitem>
3147 <para>
3148 Add support for Advanced <acronym>SIMD</acronym> (Single
3149 Instruction Multiple Data) (<acronym>NEON</acronym>) instructions
3150 on <acronym>ARM</acronym> architectures (Nathan Bossart)
3151 </para>
3152 </listitem>
3154 <!--
3155 Author: Michael Paquier <michael@paquier.xyz>
3156 2022-08-28 [36389a060] Enable RandomizedBaseAddress (ASLR) on Windows with MSVC
3159 <listitem>
3160 <para>
3161 Have <systemitem class="osname">Windows</systemitem>
3162 binaries built with <productname>MSVC</productname> use
3163 <literal>RandomizedBaseAddress</literal> (<acronym>ASLR</acronym>)
3164 (Michael Paquier)
3165 </para>
3167 <para>
3168 This was already enabled on <productname>MinGW</productname> builds.
3169 </para>
3170 </listitem>
3172 <!--
3173 Author: Andres Freund <andres@anarazel.de>
3174 2022-07-17 [089480c07] Default to hidden visibility for extension libraries whe
3175 Author: Andres Freund <andres@anarazel.de>
3176 2022-07-17 [8cf64d35e] Mark all symbols exported from extension libraries PGDLL
3179 <listitem>
3180 <para>
3181 Prevent extension libraries from exporting their symbols by default
3182 (Andres Freund, Tom Lane)
3183 </para>
3185 <para>
3186 Functions that need to be called from the core backend
3187 or other extensions must now be explicitly marked
3188 <literal>PGDLLEXPORT</literal>.
3189 </para>
3190 </listitem>
3192 <!--
3193 Author: Michael Paquier <michael@paquier.xyz>
3194 2022-07-07 [495ed0ef2] Make Windows 10 the minimal runtime requirement for WIN3
3197 <listitem>
3198 <para>
3199 Require <systemitem class="osname">Windows 10</systemitem> or
3200 newer versions (Michael Paquier, Juan José Santamaría Flecha)
3201 </para>
3203 <para>
3204 Previously <systemitem class="osname">Windows Vista</systemitem> and
3205 <systemitem class="osname">Windows XP</systemitem> were supported.
3206 </para>
3207 </listitem>
3209 <!--
3210 Author: John Naylor <john.naylor@postgresql.org>
3211 2022-09-14 [4c1532763] Bump minimum Perl version to 5.14
3214 <listitem>
3215 <para>
3216 Require <productname>Perl</productname> version 5.14 or later
3217 (John Naylor)
3218 </para>
3219 </listitem>
3221 <!--
3222 Author: John Naylor <john.naylor@postgresql.org>
3223 2022-09-09 [b086a47a2] Bump minimum version of Bison to 2.3
3226 <listitem>
3227 <para>
3228 Require <productname>Bison</productname> version 2.3 or later
3229 (John Naylor)
3230 </para>
3231 </listitem>
3233 <!--
3234 Author: John Naylor <john.naylor@postgresql.org>
3235 2022-09-09 [8b878bffa] Bump minimum version of Flex to 2.5.35
3238 <listitem>
3239 <para>
3240 Require <productname>Flex</productname> version 2.5.35 or later
3241 (John Naylor)
3242 </para>
3243 </listitem>
3245 <!--
3246 Author: Stephen Frost <sfrost@snowman.net>
3247 2023-04-13 [f7431bca8] Explicitly require MIT Kerberos for GSSAPI
3250 <listitem>
3251 <para>
3252 Require <acronym>MIT</acronym> Kerberos for
3253 <acronym>GSSAPI</acronym> support (Stephen Frost)
3254 </para>
3255 </listitem>
3257 <!--
3258 Author: Michael Paquier <michael@paquier.xyz>
3259 2022-07-14 [6203583b7] Remove support for Visual Studio 2013
3262 <listitem>
3263 <para>
3264 Remove support for <productname>Visual Studio 2013</productname>
3265 (Michael Paquier)
3266 </para>
3267 </listitem>
3269 <!--
3270 Author: Thomas Munro <tmunro@postgresql.org>
3271 2022-07-08 [9db300ce6] Remove HP-UX port.
3274 <listitem>
3275 <para>
3276 Remove support for <systemitem class="osname">HP-UX</systemitem>
3277 (Thomas Munro)
3278 </para>
3279 </listitem>
3281 <!--
3282 Author: Thomas Munro <tmunro@postgresql.org>
3283 2022-07-08 [0ad5b48e5] Remove HP/Intel Itanium support.
3286 <listitem>
3287 <para>
3288 Remove support for <productname>HP/Intel Itanium</productname>
3289 (Thomas Munro)
3290 </para>
3291 </listitem>
3293 <!--
3294 Author: Thomas Munro <tmunro@postgresql.org>
3295 2022-07-12 [718aa43a4] Further tidy-up for old CPU architectures.
3296 Author: Thomas Munro <tmunro@postgresql.org>
3297 2022-07-12 [14168d3c6] Doc: Acknowledge historically supported CPUs and OSes.
3300 <listitem>
3301 <para>
3302 Remove support for <productname>M68K</productname>,
3303 <productname>M88K</productname>, <productname>M32R</productname>,
3304 and <productname>SuperH</productname> <acronym>CPU</acronym>
3305 architectures (Thomas Munro)
3306 </para>
3307 </listitem>
3309 <!--
3310 Author: Michael Paquier <michael@paquier.xyz>
3311 2023-03-17 [98ae2c84a] libpq: Remove code for SCM credential authentication
3314 <listitem>
3315 <para>
3316 Remove <link linkend="libpq"><application>libpq</application></link>
3317 support for <acronym>SCM</acronym> credential authentication
3318 (Michael Paquier)
3319 </para>
3321 <para>
3322 Backend support for this authentication method was removed in
3323 <productname>PostgresSQL</productname> 9.1.
3324 </para>
3325 </listitem>
3327 <!--
3328 Author: Andres Freund <andres@anarazel.de>
3329 2022-09-21 [e6927270c] meson: Add initial version of meson based build system
3332 <listitem>
3333 <para>
3334 Add <link
3335 linkend="install-meson"><application>meson</application></link>
3336 build system (Andres Freund, Nazir Bilal Yavuz, Peter Eisentraut)
3337 </para>
3339 <para>
3340 This eventually will replace the <productname>Autoconf</productname>
3341 and <systemitem class="osname">Windows</systemitem>-based
3342 <productname>MSVC</productname> build systems.
3343 </para>
3344 </listitem>
3346 <!--
3347 Author: Peter Eisentraut <peter@eisentraut.org>
3348 2022-10-20 [c8e4030d1] Make finding openssl program a configure or meson option
3351 <listitem>
3352 <para>
3353 Allow control of the location of the
3354 <application>openssl</application> binary used by the build system
3355 (Peter Eisentraut)
3356 </para>
3358 <para>
3359 Make finding <application>openssl</application>
3360 program a <application>configure</application> or
3361 <application>meson</application> option
3362 </para>
3363 </listitem>
3365 <!--
3366 Author: Andres Freund <andres@anarazel.de>
3367 2022-12-07 [d3b111e32] Add option to specify segment size in blocks
3370 <listitem>
3371 <para>
3372 Add build option to allow testing of small <acronym>WAL</acronym>
3373 segment sizes (Andres Freund)
3374 </para>
3376 <para>
3377 The build options are <link
3378 linkend="configure-option-with-segsize"><option>--with-segsize-blocks</option></link>
3379 and <option>-Dsegsize_blocks</option>.
3380 </para>
3381 </listitem>
3383 <!--
3384 Author: Andrew Dunstan <andrew@dunslane.net>
3385 2023-01-23 [b90f0b574] Add non-destructive modes to pgindent
3386 Author: Tom Lane <tgl@sss.pgh.pa.us>
3387 2023-01-23 [62e1e28bf] Fix pgindent - -show-diff option.
3388 Author: Andrew Dunstan <andrew@dunslane.net>
3389 2023-01-24 [124937163] Improve exclude pattern file processing in pgindent
3390 Author: Andrew Dunstan <andrew@dunslane.net>
3391 2023-01-27 [a1c4cd6f2] Allow multiple - -excludes options in pgindent
3392 Author: Andrew Dunstan <andrew@dunslane.net>
3393 2023-02-08 [068a243b7] pgindent: more ways to find files to indent
3394 Author: Andrew Dunstan <andrew@dunslane.net>
3395 2023-02-12 [dab07e8c6] pgindent: filter files for the - -commit option
3396 Author: Andrew Dunstan <andrew@dunslane.net>
3397 2023-02-13 [b16259b3c] Remove obsolete pgindent options - -code-base and - -build
3400 <listitem>
3401 <para>
3402 Add <link
3403 linkend="source"><application>pgindent</application></link> options
3404 (Andrew Dunstan)
3405 </para>
3407 <para>
3408 The new options are <option>--show-diff</option>,
3409 <option>--silent-diff</option>, <option>--commit</option>,
3410 and <option>--help</option>, and allow multiple
3411 <option>--exclude</option> options. Also require the typedef file
3412 to be explicitly specified. Options <option>--code-base</option>
3413 and <option>--build</option> were also removed.
3414 </para>
3415 </listitem>
3417 <!--
3418 Author: Tom Lane <tgl@sss.pgh.pa.us>
3419 2023-02-12 [4e831f4ce] Import pg_bsd_indent sources.
3422 <listitem>
3423 <para>
3424 Add <link
3425 linkend="source"><application>pg_bsd_indent</application></link>
3426 source code to the main tree (Tom Lane)
3427 </para>
3428 </listitem>
3430 <!--
3431 Author: Tatsuo Ishii <ishii@postgresql.org>
3432 2022-10-19 [d1e2a380c] Enhance make_ctags and make_etags.
3435 <listitem>
3436 <para>
3437 Improve <application>make_ctags</application> and
3438 <application>make_etags</application> (Yugo Nagata)
3439 </para>
3440 </listitem>
3442 <!--
3443 Author: Peter Eisentraut <peter@eisentraut.org>
3444 2023-03-28 [90189eefc] Save a few bytes in pg_attribute
3447 <listitem>
3448 <para>
3449 Adjust <link
3450 linkend="catalog-pg-attribute"><structname>pg_attribute</structname></link>
3451 columns for efficiency (Peter Eisentraut)
3452 </para>
3453 </listitem>
3455 </itemizedlist>
3457 </sect3>
3459 <sect3 id="release-16-modules">
3460 <title>Additional Modules</title>
3462 <itemizedlist>
3464 <!--
3465 Author: Tom Lane <tgl@sss.pgh.pa.us>
3466 2022-09-02 [ff720a597] Fix planner to consider matches to boolean columns in ex
3469 <listitem>
3470 <para>
3471 Improve use of extension-based indexes on boolean columns (Zongliang
3472 Quan, Tom Lane)
3473 </para>
3474 </listitem>
3476 <!--
3477 Author: Tom Lane <tgl@sss.pgh.pa.us>
3478 2023-04-07 [a290378a3] Add support for Daitch-Mokotoff Soundex in contrib/fuzzy
3481 <listitem>
3482 <para>
3483 Add support for Daitch-Mokotoff Soundex to <link
3484 linkend="fuzzystrmatch"><application>fuzzystrmatch</application></link>
3485 (Dag Lem)
3486 </para>
3487 </listitem>
3489 <!--
3490 Author: Michael Paquier <michael@paquier.xyz>
3491 2022-07-06 [d4bfe4128] autho_explain: Add GUC to log query parameters
3494 <listitem>
3495 <para>
3496 Allow <link
3497 linkend="auto-explain"><application>auto_explain</application></link>
3498 to log values passed to parameterized statements (Dagfinn Ilmari
3499 Mannsåker)
3500 </para>
3502 <para>
3503 This affects queries using server-side <link
3504 linkend="sql-prepare"><command>PREPARE</command></link>/<link
3505 linkend="sql-execute"><command>EXECUTE</command></link>
3506 and client-side parse/bind. Logging is controlled by <link
3507 linkend="auto-explain-configuration-parameters-log-parameter-max-length"><literal>auto_explain.log_parameter_max_length</literal></link>;
3508 by default query parameters will be logged with no length
3509 restriction.
3510 </para>
3511 </listitem>
3513 <!--
3514 Author: Michael Paquier <michael@paquier.xyz>
3515 2023-01-26 [9d2d9728b] Make auto_explain print the query identifier in verbose
3518 <listitem>
3519 <para>
3520 Have <link
3521 linkend="auto-explain"><application>auto_explain</application></link>'s
3522 <option>log_verbose</option> mode honor the value of <link
3523 linkend="guc-compute-query-id"><varname>compute_query_id</varname></link>
3524 (Atsushi Torikoshi)
3525 </para>
3527 <para>
3528 Previously even if
3529 <varname>compute_query_id</varname> was enabled, <link
3530 linkend="auto-explain-configuration-parameters-log-verbose"><option>log_verbose</option></link>
3531 was not showing the query identifier.
3532 </para>
3533 </listitem>
3535 <!--
3536 Author: Andrew Dunstan <andrew@dunslane.net>
3537 2023-01-06 [b1665bf01] Allow hyphens in ltree labels
3540 <listitem>
3541 <para>
3542 Change the maximum length of <link
3543 linkend="ltree"><application>ltree</application></link> labels
3544 from 256 to 1000 and allow hyphens (Garen Torikian)
3545 </para>
3546 </listitem>
3548 <!--
3549 Author: Michael Paquier <michael@paquier.xyz>
3550 2023-03-08 [daa8365a9] Reflect normalization of query strings for utilities in
3553 <listitem>
3554 <para>
3555 Have <link
3556 linkend="pgstatstatements"><structname>pg_stat_statements</structname></link>
3557 normalize constants used in utility commands (Michael Paquier)
3558 </para>
3560 <para>
3561 Previously constants appeared instead of placeholders, e.g.,
3562 <literal>$1</literal>.
3563 </para>
3564 </listitem>
3566 <!--
3567 Author: Michael Paquier <michael@paquier.xyz>
3568 2023-01-23 [c31cf1c03] pg_walinspect: Add pg_get_wal_fpi_info()
3569 Author: Michael Paquier <michael@paquier.xyz>
3570 2023-03-10 [9ecb134a9] pg_walinspect: pg_get_wal_fpi_info() -> pg_get_wal_block
3571 Author: Peter Geoghegan <pg@bowt.ie>
3572 2023-03-30 [122376f02] Show record information in pg_get_wal_block_info.
3573 Author: Peter Geoghegan <pg@bowt.ie>
3574 2023-03-31 [df4f3ab51] Add show_data option to pg_get_wal_block_info.
3577 <listitem>
3578 <para>
3579 Add <link
3580 linkend="pgwalinspect"><application>pg_walinspect</application></link>
3581 function <link
3582 linkend="pgwalinspect-funcs-pg-get-wal-block-info"><function>pg_get_wal_block_info()</function></link>
3583 to report <acronym>WAL</acronym> block information (Michael Paquier,
3584 Melanie Plageman, Bharath Rupireddy)
3585 </para>
3586 </listitem>
3588 <!--
3589 Author: Michael Paquier <michael@paquier.xyz>
3590 2023-03-14 [5c1b66280] Rework design of functions in pg_walinspect
3593 <listitem>
3594 <para>
3595 Change how <link
3596 linkend="pgwalinspect"><application>pg_walinspect</application></link>
3597 functions <link
3598 linkend="pgwalinspect-funcs-pg-get-wal-records-info"><function>pg_get_wal_records_info()</function></link>
3599 and <link
3600 linkend="pgwalinspect-funcs-pg-get-wal-stats"><function>pg_get_wal_stats()</function></link>
3601 interpret ending <acronym>LSN</acronym>s (Bharath Rupireddy)
3602 </para>
3604 <para>
3605 Previously ending <acronym>LSN</acronym>s which represent
3606 nonexistent <acronym>WAL</acronym> locations would generate
3607 an error, while they will now be interpreted as the end of the
3608 <acronym>WAL</acronym>.
3609 </para>
3610 </listitem>
3612 <!--
3613 Author: Peter Geoghegan <pg@bowt.ie>
3614 2023-04-07 [7d8219a44] Show more detail in heapam rmgr descriptions.
3615 Author: Peter Geoghegan <pg@bowt.ie>
3616 2023-04-07 [1c453cfd8] Show more detail in nbtree rmgr descriptions.
3617 Author: Peter Geoghegan <pg@bowt.ie>
3618 2023-04-11 [96149a180] Fix Heap rmgr's desc output for infobits arrays.
3619 Author: Peter Geoghegan <pg@bowt.ie>
3620 2023-04-19 [50547a3fa] Fix wal_consistency_checking enhanced desc output.
3623 <listitem>
3624 <para>
3625 Add detailed descriptions of <acronym>WAL</acronym> records in <link
3626 linkend="pgwalinspect"><application>pg_walinspect</application></link>
3627 and <link
3628 linkend="pgwaldump"><application>pg_waldump</application></link>
3629 (Melanie Plageman, Peter Geoghegan)
3630 </para>
3631 </listitem>
3633 <!--
3634 Author: Tom Lane <tgl@sss.pgh.pa.us>
3635 2023-01-02 [1fd3dd204] Add bt_multi_page_stats() function to contrib/pageinspec
3638 <listitem>
3639 <para>
3640 Add <link
3641 linkend="pageinspect"><application>pageinspect</application></link>
3642 function <link
3643 linkend="pageinspect-b-tree-funcs"><function>bt_multi_page_stats()</function></link>
3644 to report statistics on multiple pages (Hamid Akhtar)
3645 </para>
3647 <para>
3648 This is similar to <function>bt_page_stats()</function> except it
3649 can report on a range of pages.
3650 </para>
3651 </listitem>
3653 <!--
3654 Author: Tom Lane <tgl@sss.pgh.pa.us>
3655 2023-01-02 [1fd3dd204] Add bt_multi_page_stats() function to contrib/pageinspec
3658 <listitem>
3659 <para>
3660 Add empty range output column to <link
3661 linkend="pageinspect"><application>pageinspect</application></link>
3662 function <link
3663 linkend="pageinspect-brin-funcs"><function>brin_page_items()</function></link>
3664 (Tomas Vondra)
3665 </para>
3666 </listitem>
3668 <!--
3669 Author: Michael Paquier <michael@paquier.xyz>
3670 2023-02-17 [35739b87d] Redesign archive modules
3673 <listitem>
3674 <para>
3675 Redesign archive modules to be more flexible (Nathan Bossart)
3676 </para>
3678 <para>
3679 Initialization changes will require modules written for older
3680 versions of Postgres to be updated.
3681 </para>
3682 </listitem>
3684 <!--
3685 Author: Michael Paquier <michael@paquier.xyz>
3686 2023-04-06 [1d477a907] Fix row tracking in pg_stat_statements with extended que
3689 <listitem>
3690 <para>
3691 Correct inaccurate <link
3692 linkend="pgstatstatements"><application>pg_stat_statements</application></link>
3693 row tracking extended query protocol statements (Sami Imseih)
3694 </para>
3695 </listitem>
3697 <!--
3698 Author: Tom Lane <tgl@sss.pgh.pa.us>
3699 2023-04-07 [f3fa31327] Add pg_buffercache_usage_counts() to contrib/pg_bufferca
3702 <listitem>
3703 <para>
3704 Add <link
3705 linkend="pgbuffercache"><application>pg_buffercache</application></link>
3706 function <function>pg_buffercache_usage_counts()</function> to
3707 report usage totals (Nathan Bossart)
3708 </para>
3709 </listitem>
3711 <!--
3712 Author: Andres Freund <andres@anarazel.de>
3713 2022-10-13 [2589434ae] pg_buffercache: Add pg_buffercache_summary()
3716 <listitem>
3717 <para>
3718 Add <link
3719 linkend="pgbuffercache"><application>pg_buffercache</application></link>
3720 function <function>pg_buffercache_summary()</function> to report
3721 summarized buffer statistics (Melih Mutlu)
3722 </para>
3723 </listitem>
3725 <!--
3726 Author: Tom Lane <tgl@sss.pgh.pa.us>
3727 2023-03-20 [72a5b1fc8] Add @extschema:name@ and no_relocate options to extensio
3730 <listitem>
3731 <para>
3732 Allow the schemas of required extensions to be
3733 referenced in extension scripts using the new syntax
3734 <literal>@extschema:referenced_extension_name@</literal>
3735 (Regina Obe)
3736 </para>
3737 </listitem>
3739 <!--
3740 Author: Tom Lane <tgl@sss.pgh.pa.us>
3741 2023-03-20 [72a5b1fc8] Add @extschema:name@ and no_relocate options to extensio
3744 <listitem>
3745 <para>
3746 Allow required extensions to
3747 be marked as non-relocatable using <link
3748 linkend="extend-extensions-files-no-relocate"><literal>no_relocate</literal></link>
3749 (Regina Obe)
3750 </para>
3752 <para>
3753 This allows <literal>@extschema:referenced_extension_name@</literal>
3754 to be treated as a constant for the lifetime of the extension.
3755 </para>
3756 </listitem>
3758 </itemizedlist>
3760 <sect4 id="release-16-pgfdw">
3761 <title><link linkend="postgres-fdw"><application>postgres_fdw</application></link></title>
3763 <itemizedlist>
3765 <!--
3766 Author: Etsuro Fujita <efujita@postgresql.org>
3767 2023-04-06 [983ec2300] postgres_fdw: Add support for parallel abort.
3770 <listitem>
3771 <para>
3772 Allow <application>postgres_fdw</application> to do aborts in
3773 parallel (Etsuro Fujita)
3774 </para>
3776 <para>
3777 This is enabled with
3778 <application>postgres_fdw</application> option <link
3779 linkend="postgres-fdw-options-transaction-management"><option>parallel_abort</option></link>.
3780 </para>
3781 </listitem>
3783 <!--
3784 Author: Tomas Vondra <tomas.vondra@postgresql.org>
3785 2022-12-30 [8ad51b5f4] Sample postgres_fdw tables remotely during ANALYZE
3788 <listitem>
3789 <para>
3790 Make <link linkend="sql-analyze"><command>ANALYZE</command></link>
3791 on foreign <application>postgres_fdw</application> tables more
3792 efficient (Tomas Vondra)
3793 </para>
3795 <para>
3796 The <application>postgres_fdw</application> option <link
3797 linkend="postgres-fdw-options-cost-estimation"><option>analyze_sampling</option></link>
3798 controls the sampling method.
3799 </para>
3800 </listitem>
3802 <!--
3803 Author: Tom Lane <tgl@sss.pgh.pa.us>
3804 2022-07-17 [31e5b5029] postgres_fdw: be more wary about shippability of reg* co
3807 <listitem>
3808 <para>
3809 Restrict shipment of <link
3810 linkend="datatype-oid"><type>reg</type></link>* type constants
3811 in <application>postgres_fdw</application> to those referencing
3812 built-in objects or extensions marked as shippable (Tom Lane)
3813 </para>
3814 </listitem>
3816 <!--
3817 Author: Andres Freund <andres@anarazel.de>
3818 2023-01-23 [e4602483e] dblink, postgres_fdw: Handle interrupts during connectio
3821 <listitem>
3822 <para>
3823 Have <application>postgres_fdw</application> and <link
3824 linkend="dblink"><application>dblink</application></link> handle
3825 interrupts during connection establishment (Andres Freund)
3826 </para>
3827 </listitem>
3829 </itemizedlist>
3831 </sect4>
3833 </sect3>
3835 </sect2>
3837 <sect2 id="release-16-acknowledgements">
3838 <title>Acknowledgments</title>
3840 <para>
3841 The following individuals (in alphabetical order) have contributed
3842 to this release as patch authors, committers, reviewers, testers,
3843 or reporters of issues.
3844 </para>
3846 <simplelist>
3847 <member>Abhijit Menon-Sen</member>
3848 <member>Adam Mackler</member>
3849 <member>Adrian Klaver</member>
3850 <member>Ahsan Hadi</member>
3851 <member>Ajin Cherian</member>
3852 <member>Ajit Awekar</member>
3853 <member>Alan Hodgson</member>
3854 <member>Aleksander Alekseev</member>
3855 <member>Alex Denman</member>
3856 <member>Alex Kozhemyakin</member>
3857 <member>Alexander Korolev</member>
3858 <member>Alexander Korotkov</member>
3859 <member>Alexander Lakhin</member>
3860 <member>Alexander Pyhalov</member>
3861 <member>Alexey Borzov</member>
3862 <member>Alexey Ermakov</member>
3863 <member>Alexey Makhmutov</member>
3864 <member>Álvaro Herrera</member>
3865 <member>Amit Kapila</member>
3866 <member>Amit Khandekar</member>
3867 <member>Amit Langote</member>
3868 <member>Amul Sul</member>
3869 <member>Anastasia Lubennikova</member>
3870 <member>Anban Company</member>
3871 <member>Andreas Dijkman</member>
3872 <member>Andreas Karlsson</member>
3873 <member>Andreas Scherbaum</member>
3874 <member>Andrei Zubkov</member>
3875 <member>Andres Freund</member>
3876 <member>Andrew Alsup</member>
3877 <member>Andrew Bille</member>
3878 <member>Andrew Dunstan</member>
3879 <member>Andrew Gierth</member>
3880 <member>Andrew Kesper</member>
3881 <member>Andrey Borodin</member>
3882 <member>Andrey Lepikhov</member>
3883 <member>Andrey Sokolov</member>
3884 <member>Ankit Kumar Pandey</member>
3885 <member>Ante Kresic</member>
3886 <member>Anton Melnikov</member>
3887 <member>Anton Sidyakin</member>
3888 <member>Anton Voloshin</member>
3889 <member>Antonin Houska</member>
3890 <member>Arne Roland</member>
3891 <member>Artem Anisimov</member>
3892 <member>Arthur Zakirov</member>
3893 <member>Ashutosh Bapat</member>
3894 <member>Ashutosh Sharma</member>
3895 <member>Asim Praveen</member>
3896 <member>Atsushi Torikoshi</member>
3897 <member>Ayaki Tachikake</member>
3898 <member>Balazs Szilfai</member>
3899 <member>Benoit Lobréau</member>
3900 <member>Bernd Helmle</member>
3901 <member>Bertrand Drouvot</member>
3902 <member>Bharath Rupireddy</member>
3903 <member>Bilva Sanaba</member>
3904 <member>Bob Krier</member>
3905 <member>Boris Zentner</member>
3906 <member>Brad Nicholson</member>
3907 <member>Brar Piening</member>
3908 <member>Bruce Momjian</member>
3909 <member>Bruno da Silva</member>
3910 <member>Carl Sopchak</member>
3911 <member>Cary Huang</member>
3912 <member>Changhong Fei</member>
3913 <member>Chris Travers</member>
3914 <member>Christoph Berg</member>
3915 <member>Christophe Pettus</member>
3916 <member>Corey Huinker</member>
3917 <member>Craig Ringer</member>
3918 <member>Curt Kolovson</member>
3919 <member>Dag Lem</member>
3920 <member>Dagfinn Ilmari Mannsåker</member>
3921 <member>Daniel Gustafsson</member>
3922 <member>Daniel Vérité</member>
3923 <member>Daniel Watzinger</member>
3924 <member>Daniel Westermann</member>
3925 <member>Daniele Varrazzo</member>
3926 <member>Daniil Anisimov</member>
3927 <member>Danny Shemesh</member>
3928 <member>Dave Page</member>
3929 <member>David Christensen</member>
3930 <member>David G. Johnston</member>
3931 <member>David Geier</member>
3932 <member>David Gilman</member>
3933 <member>David Kimura</member>
3934 <member>David Rowley</member>
3935 <member>David Steele</member>
3936 <member>David Turon</member>
3937 <member>David Zhang</member>
3938 <member>Davinder Singh</member>
3939 <member>Dean Rasheed</member>
3940 <member>Denis Laxalde</member>
3941 <member>Dilip Kumar</member>
3942 <member>Dimos Stamatakis</member>
3943 <member>Dmitriy Kuzmin</member>
3944 <member>Dmitry Astapov</member>
3945 <member>Dmitry Dolgov</member>
3946 <member>Dmitry Koval</member>
3947 <member>Dong Wook Lee</member>
3948 <member>Dongming Liu</member>
3949 <member>Drew DeVault</member>
3950 <member>Duncan Sands</member>
3951 <member>Ed Maste</member>
3952 <member>Egor Chindyaskin</member>
3953 <member>Ekaterina Kiryanova</member>
3954 <member>Elena Indrupskaya</member>
3955 <member>Emmanuel Quincerot</member>
3956 <member>Eric Mutta</member>
3957 <member>Erik Rijkers</member>
3958 <member>Erki Eessaar</member>
3959 <member>Erwin Brandstetter</member>
3960 <member>Etsuro Fujita</member>
3961 <member>Eugeny Zhuzhnev</member>
3962 <member>Euler Taveira</member>
3963 <member>Evan Jones</member>
3964 <member>Evgeny Morozov</member>
3965 <member>Fabrízio de Royes Mello</member>
3966 <member>Farias de Oliveira</member>
3967 <member>Florin Irion</member>
3968 <member>Franz-Josef Färber</member>
3969 <member>Garen Torikian</member>
3970 <member>Georgios Kokolatos</member>
3971 <member>Gilles Darold</member>
3972 <member>Greg Stark</member>
3973 <member>Guillaume Lelarge</member>
3974 <member>Gunnar Bluth</member>
3975 <member>Gunnar Morling</member>
3976 <member>Gurjeet Singh</member>
3977 <member>Haiyang Wang</member>
3978 <member>Haiying Tang</member>
3979 <member>Hamid Akhtar</member>
3980 <member>Hans Buschmann</member>
3981 <member>Hao Wu</member>
3982 <member>Hayato Kuroda</member>
3983 <member>Heath Lord</member>
3984 <member>Heikki Linnakangas</member>
3985 <member>Himanshu Upadhyaya</member>
3986 <member>Hisahiro Kauchi</member>
3987 <member>Hongyu Song</member>
3988 <member>Hubert Lubaczewski</member>
3989 <member>Hung Nguyen</member>
3990 <member>Ian Barwick</member>
3991 <member>Ibrar Ahmed</member>
3992 <member>Ilya Gladyshev</member>
3993 <member>Ilya Nenashev</member>
3994 <member>Isaac Morland</member>
3995 <member>Israel Barth Rubio</member>
3996 <member>Jacob Champion</member>
3997 <member>Jacob Speidel</member>
3998 <member>Jaime Casanova</member>
3999 <member>Jakub Wartak</member>
4000 <member>James Coleman</member>
4001 <member>James Inform</member>
4002 <member>James Vanns</member>
4003 <member>Jan Wieck</member>
4004 <member>Japin Li</member>
4005 <member>Jeevan Ladhe</member>
4006 <member>Jeff Davis</member>
4007 <member>Jeff Janes</member>
4008 <member>Jehan-Guillaume de Rorthais</member>
4009 <member>Jelte Fennema</member>
4010 <member>Jian He</member>
4011 <member>Jim Jones</member>
4012 <member>Jinbao Chen</member>
4013 <member>Joe Conway</member>
4014 <member>Joel Jacobson</member>
4015 <member>John Naylor</member>
4016 <member>Jonathan Katz</member>
4017 <member>Josef Simanek</member>
4018 <member>Joseph Koshakow</member>
4019 <member>Juan José Santamaría Flecha</member>
4020 <member>Julien Rouhaud</member>
4021 <member>Julien Roze</member>
4022 <member>Junwang Zhao</member>
4023 <member>Justin Pryzby</member>
4024 <member>Justin Zhang</member>
4025 <member>Karina Litskevich</member>
4026 <member>Karl O. Pinc</member>
4027 <member>Keisuke Kuroda</member>
4028 <member>Ken Kato</member>
4029 <member>Kevin McKibbin</member>
4030 <member>Kieran McCusker</member>
4031 <member>Kirk Wolak</member>
4032 <member>Konstantin Knizhnik</member>
4033 <member>Koshi Shibagaki</member>
4034 <member>Kotaro Kawamoto</member>
4035 <member>Kui Liu</member>
4036 <member>Kyotaro Horiguchi</member>
4037 <member>Lakshmi Narayanan Sreethar</member>
4038 <member>Laurence Parry</member>
4039 <member>Laurenz Albe</member>
4040 <member>Luca Ferrari</member>
4041 <member>Lukas Fittl</member>
4042 <member>Maciek Sakrejda</member>
4043 <member>Magnus Hagander</member>
4044 <member>Maja Zaloznik</member>
4045 <member>Marcel Hofstetter</member>
4046 <member>Marina Polyakova</member>
4047 <member>Mark Dilger</member>
4048 <member>Marko Tiikkaja</member>
4049 <member>Markus Winand</member>
4050 <member>Martijn van Oosterhout</member>
4051 <member>Martin Jurca</member>
4052 <member>Martin Kalcher</member>
4053 <member>Mary Xu</member>
4054 <member>Masahiko Sawada</member>
4055 <member>Masahiro Ikeda</member>
4056 <member>Masao Fujii</member>
4057 <member>Mason Sharp</member>
4058 <member>Matheus Alcantara</member>
4059 <member>Mats Kindahl</member>
4060 <member>Matthias van de Meent</member>
4061 <member>Matthijs van der Vleuten</member>
4062 <member>Maxim Orlov</member>
4063 <member>Maxim Yablokov</member>
4064 <member>Mehmet Emin Karakas</member>
4065 <member>Melanie Plageman</member>
4066 <member>Melih Mutlu</member>
4067 <member>Micah Gate</member>
4068 <member>Michael Banck</member>
4069 <member>Michael Paquier</member>
4070 <member>Michail Nikolaev</member>
4071 <member>Michel Pelletier</member>
4072 <member>Mike Oh</member>
4073 <member>Mikhail Gribkov</member>
4074 <member>Mingli Zhang</member>
4075 <member>Miroslav Bendik</member>
4076 <member>Mitsuru Hinata</member>
4077 <member>Myo Wai Thant</member>
4078 <member>Naeem Akhter</member>
4079 <member>Naoki Okano</member>
4080 <member>Nathan Bossart</member>
4081 <member>Nazir Bilal Yavuz</member>
4082 <member>Neha Sharma</member>
4083 <member>Nick Babadzhanian</member>
4084 <member>Nicola Contu</member>
4085 <member>Nikhil Shetty</member>
4086 <member>Nikita Glukhov</member>
4087 <member>Nikolay Samokhvalov</member>
4088 <member>Nikolay Shaplov</member>
4089 <member>Nishant Sharma</member>
4090 <member>Nitin Jadhav</member>
4091 <member>Noah Misch</member>
4092 <member>Noboru Saito</member>
4093 <member>Noriyoshi Shinoda</member>
4094 <member>Nuko Yokohama</member>
4095 <member>Oleg Bartunov</member>
4096 <member>Oleg Tselebrovskiy</member>
4097 <member>Olly Betts</member>
4098 <member>Onder Kalaci</member>
4099 <member>Onur Tirtir</member>
4100 <member>Pablo Federico</member>
4101 <member>Palle Girgensohn</member>
4102 <member>Paul Guo</member>
4103 <member>Paul Jungwirth</member>
4104 <member>Paul Ramsey</member>
4105 <member>Pavel Borisov</member>
4106 <member>Pavel Kulakov</member>
4107 <member>Pavel Luzanov</member>
4108 <member>Pavel Stehule</member>
4109 <member>Peifeng Qiu</member>
4110 <member>Peter Eisentraut</member>
4111 <member>Peter Geoghegan</member>
4112 <member>Peter Smith</member>
4113 <member>Phil Florent</member>
4114 <member>Philippe Godfrin</member>
4115 <member>Platon Pronko</member>
4116 <member>Przemyslaw Sztoch</member>
4117 <member>Rachel Heaton</member>
4118 <member>Ranier Vilela</member>
4119 <member>Regina Obe</member>
4120 <member>Reid Thompson</member>
4121 <member>Reiner Peterke</member>
4122 <member>Richard Guo</member>
4123 <member>Riivo Kolka</member>
4124 <member>Rishu Bagga</member>
4125 <member>Robert Haas</member>
4126 <member>Robert Sjöblom</member>
4127 <member>Robert Treat</member>
4128 <member>Roberto Mello</member>
4129 <member>Robins Tharakan</member>
4130 <member>Roman Zharkov</member>
4131 <member>Ronan Dunklau</member>
4132 <member>Rushabh Lathia</member>
4133 <member>Ryo Matsumura</member>
4134 <member>Samay Sharma</member>
4135 <member>Sami Imseih</member>
4136 <member>Sandeep Thakkar</member>
4137 <member>Sandro Santilli</member>
4138 <member>Sebastien Flaesch</member>
4139 <member>Sébastien Lardière</member>
4140 <member>Sehrope Sarkuni</member>
4141 <member>Sergey Belyashov</member>
4142 <member>Sergey Pankov</member>
4143 <member>Sergey Shinderuk</member>
4144 <member>Shi Yu</member>
4145 <member>Shinya Kato</member>
4146 <member>Sho Kato</member>
4147 <member>Shruthi Gowda</member>
4148 <member>Shveta Mallik</member>
4149 <member>Simon Riggs</member>
4150 <member>Sindy Senorita</member>
4151 <member>Sirisha Chamarthi</member>
4152 <member>Sravan Kumar</member>
4153 <member>Stéphane Tachoires</member>
4154 <member>Stephen Frost</member>
4155 <member>Steve Chavez</member>
4156 <member>Stone Tickle</member>
4157 <member>Sven Klemm</member>
4158 <member>Takamichi Osumi</member>
4159 <member>Takeshi Ideriha</member>
4160 <member>Tatsuhiro Nakamori</member>
4161 <member>Tatsuo Ishii</member>
4162 <member>Ted Yu</member>
4163 <member>Teja Mupparti</member>
4164 <member>Tender Wang</member>
4165 <member>Teodor Sigaev</member>
4166 <member>Thiago Nunes</member>
4167 <member>Thom Brown</member>
4168 <member>Thomas Habets</member>
4169 <member>Thomas Mc Kay</member>
4170 <member>Thomas Munro</member>
4171 <member>Tim Carey-Smith</member>
4172 <member>Tim Field</member>
4173 <member>Timo Stolz</member>
4174 <member>Tom Lane</member>
4175 <member>Tomas Vondra</member>
4176 <member>Tor Erik Linnerud</member>
4177 <member>Torsten Förtsch</member>
4178 <member>Tristan Partin</member>
4179 <member>Troy Frericks</member>
4180 <member>Tushar Ahuja</member>
4181 <member>Valerie Woolard</member>
4182 <member>Vibhor Kumar</member>
4183 <member>Victor Spirin</member>
4184 <member>Victoria Shepard</member>
4185 <member>Vignesh C</member>
4186 <member>Vik Fearing</member>
4187 <member>Vitaly Burovoy</member>
4188 <member>Vitaly Davydov</member>
4189 <member>Wang Wei</member>
4190 <member>Wenjing Zeng</member>
4191 <member>Whale Song</member>
4192 <member>Will Mortensen</member>
4193 <member>Wolfgang Walther</member>
4194 <member>Xin Wen</member>
4195 <member>Xing Guo</member>
4196 <member>Xingwang Xu</member>
4197 <member>XueJing Zhao</member>
4198 <member>Yanliang Lei</member>
4199 <member>Youmiu Mo</member>
4200 <member>Yugo Nagata</member>
4201 <member>Yura Sokolov</member>
4202 <member>Yuta Katsuragi</member>
4203 <member>Zhen Mingyang</member>
4204 <member>Zheng Li</member>
4205 <member>Zhihong Yu</member>
4206 <member>Zhijie Hou</member>
4207 <member>Zongliang Quan</member>
4208 <member>Zuming Jiang</member>
4209 </simplelist>
4210 </sect2>
4212 </sect1>