doc: Fix mention of AT LOCAL in release notes
[pgsql.git] / doc / src / sgml / release-17.sgml
blob8d433c9957da19e36d23c583b90fec0d43d58cad
1 <!-- doc/src/sgml/release-17.sgml -->
2 <!-- See header comment in release.sgml about typical markup -->
4 <sect1 id="release-17">
5 <title>Release 17</title>
7 <formalpara>
8 <title>Release date:</title>
9 <para>2024-09-26</para>
10 </formalpara>
12 <sect2 id="release-17-highlights">
13 <title>Overview</title>
15 <para>
16 <productname>PostgreSQL</productname> 17 contains many new features
17 and enhancements, including:
18 </para>
20 <itemizedlist>
21 <listitem>
22 <para>
23 New memory management system for <command>VACUUM</command>, which reduces
24 memory consumption and can improve overall vacuuming performance.
25 </para>
26 </listitem>
28 <listitem>
29 <para>
30 New <acronym>SQL/JSON</acronym> capabilities, including constructors,
31 identity functions, and the <link
32 linkend="functions-sqljson-table"><function>JSON_TABLE()</function></link>
33 function, which converts JSON data into a table representation.
34 </para>
35 </listitem>
37 <listitem>
38 <para>
39 Various query performance improvements, including for sequential reads
40 using streaming I/O, write throughput under high concurrency, and
41 searches over multiple values in a <link linkend="btree">btree</link>
42 index.
43 </para>
44 </listitem>
46 <listitem>
47 <para>
48 Logical replication enhancements, including:
49 <itemizedlist>
50 <listitem>
51 <para>
52 Failover control
53 </para>
54 </listitem>
55 <listitem>
56 <para>
57 <link
58 linkend="app-pgcreatesubscriber"><application>pg_createsubscriber</application></link>,
59 a utility that creates logical replicas from physical standbys
60 </para>
61 </listitem>
62 <listitem>
63 <para>
64 <link
65 linkend="pgupgrade"><application>pg_upgrade</application></link> now
66 preserves replication slots on both publishers and subscribers
67 </para>
68 </listitem>
69 </itemizedlist>
70 </para>
71 </listitem>
73 <listitem>
74 <para>
75 New client-side connection option, <link
76 linkend="libpq-connect-sslnegotiation"><literal>sslnegotiation=direct</literal></link>,
77 that performs a direct TLS handshake to avoid a round-trip negotiation.
78 </para>
79 </listitem>
81 <listitem>
82 <para>
83 <link
84 linkend="app-pgbasebackup"><application>pg_basebackup</application></link>
85 now supports incremental backup.
86 </para>
87 </listitem>
89 <listitem>
90 <para>
91 <link linkend="sql-copy"><command>COPY</command></link> adds a new option,
92 <literal>ON_ERROR ignore</literal>, that allows a copy operation to
93 continue in the event of an error.
94 </para>
95 </listitem>
96 </itemizedlist>
98 <para>
99 The above items and other new features of
100 <productname>PostgreSQL</productname> 17 are explained in more detail
101 in the sections below.
102 </para>
104 </sect2>
106 <sect2 id="release-17-migration">
108 <title>Migration to Version 17</title>
110 <para>
111 A dump/restore using <xref linkend="app-pg-dumpall"/> or use of
112 <xref linkend="pgupgrade"/> or logical replication is required for
113 those wishing to migrate data from any previous release. See <xref
114 linkend="upgrading"/> for general information on migrating to new
115 major releases.
116 </para>
118 <para>
119 Version 17 contains a number of changes that may affect compatibility
120 with previous releases. Observe the following incompatibilities:
121 </para>
123 <itemizedlist>
125 <!--
126 Author: Jeff Davis <jdavis@postgresql.org>
127 2024-03-04 [2af07e2f7] Fix search_path to a safe value during maintenance opera
130 <listitem>
131 <para>
132 Change functions to use a safe <xref linkend="guc-search-path"/>
133 during maintenance operations (Jeff Davis)
134 <ulink url="&commit_baseurl;2af07e2f7">&sect;</ulink>
135 </para>
137 <para>
138 This prevents maintenance operations (<command>ANALYZE</command>,
139 <command>CLUSTER</command>, <command>REFRESH
140 MATERIALIZED VIEW</command>, <command>REINDEX</command>,
141 or <command>VACUUM</command>) from performing unsafe access.
142 Functions used by expression indexes and materialized views that
143 need to reference non-default schemas must specify a search path
144 during function creation.
145 </para>
146 </listitem>
148 <!--
149 Author: Michael Paquier <michael@paquier.xyz>
150 2023-08-28 [165d581f1] Tighten handling of "ago" in interval values
151 Author: Michael Paquier <michael@paquier.xyz>
152 2023-08-28 [617f9b7d4] Tighten unit parsing in internal values
155 <listitem>
156 <para>
157 Restrict <literal>ago</literal> to only appear at the end in
158 <type>interval</type> values (Joseph Koshakow)
159 <ulink url="&commit_baseurl;165d581f1">&sect;</ulink>
160 <ulink url="&commit_baseurl;617f9b7d4">&sect;</ulink>
161 </para>
163 <para>
164 Also, prevent empty interval units from appearing multiple times.
165 </para>
166 </listitem>
168 <!--
169 Author: Thomas Munro <tmunro@postgresql.org>
170 2023-09-05 [f691f5b80] Remove the "snapshot too old" feature.
173 <listitem>
174 <para>
175 Remove server variable old_snapshot_threshold (Thomas Munro)
176 <ulink url="&commit_baseurl;f691f5b80">&sect;</ulink>
177 </para>
179 <para>
180 This variable allowed vacuum to remove rows that potentially could
181 be still visible to running transactions, causing "snapshot too
182 old" errors later if accessed. This feature might be re-added
183 to <application>PostgreSQL</application> later if an improved
184 implementation is found.
185 </para>
186 </listitem>
188 <!--
189 Author: Nathan Bossart <nathan@postgresql.org>
190 2023-07-13 [a0363ab7a] Fix privilege check for SET SESSION AUTHORIZATION.
193 <listitem>
194 <para>
195 Change <link linkend="sql-set-session-authorization"><command>SET
196 SESSION AUTHORIZATION</command></link> handling of the initial
197 session user's superuser status (Joseph Koshakow)
198 <ulink url="&commit_baseurl;a0363ab7a">&sect;</ulink>
199 </para>
201 <para>
202 The new behavior is based on the session user's superuser status at
203 the time the <command>SET SESSION AUTHORIZATION</command> command
204 is issued, rather than their superuser status at connection time.
205 </para>
206 </listitem>
208 <!--
209 Author: Nathan Bossart <nathan@postgresql.org>
210 2023-07-17 [884eee5bf] Remove db_user_namespace.
213 <listitem>
214 <para>
215 Remove feature which simulated per-database users (Nathan Bossart)
216 <ulink url="&commit_baseurl;884eee5bf">&sect;</ulink>
217 </para>
219 <para>
220 The feature, <literal>db_user_namespace</literal>, was rarely used.
221 </para>
222 </listitem>
224 <!--
225 Author: Daniel Gustafsson <dgustafsson@postgresql.org>
226 2024-03-04 [cc09e6549] Remove the adminpack contrib extension
229 <listitem>
230 <para>
231 Remove <application>adminpack</application> contrib extension
232 (Daniel Gustafsson)
233 <ulink url="&commit_baseurl;cc09e6549">&sect;</ulink>
234 </para>
236 <para>
237 This was used by now end-of-life <productname>pgAdmin
238 III</productname>.
239 </para>
240 </listitem>
242 <!--
243 Author: Thomas Munro <tmunro@postgresql.org>
244 2023-07-14 [d0c28601e] Remove wal_sync_method=fsync_writethrough on Windows.
247 <listitem>
248 <para>
249 Remove <xref linkend="guc-wal-sync-method"/> value
250 <literal>fsync_writethrough</literal> on <systemitem
251 class="osname">Windows</systemitem> (Thomas Munro)
252 <ulink url="&commit_baseurl;d0c28601e">&sect;</ulink>
253 </para>
255 <para>
256 This value was the same as <literal>fsync</literal> on <systemitem
257 class="osname">Windows</systemitem>.
258 </para>
259 </listitem>
261 <!--
262 Author: Bruce Momjian <bruce@momjian.us>
263 2023-11-24 [344afc776] modify segno. for pg_walfile_name() and pg_walfile_name_
266 <listitem>
267 <para>
268 Change file boundary handling of two <acronym>WAL</acronym> file
269 name functions (Kyotaro Horiguchi, Andres Freund, Bruce Momjian)
270 <ulink url="&commit_baseurl;344afc776">&sect;</ulink>
271 </para>
273 <para>
274 The functions <link
275 linkend="functions-admin-backup-table"><function>pg_walfile_name()</function></link>
276 and <function>pg_walfile_name_offset()</function> used to report
277 the previous <acronym>LSN</acronym> segment number when the
278 <acronym>LSN</acronym> was on a file segment boundary; it now
279 returns the current <acronym>LSN</acronym> segment.
280 </para>
281 </listitem>
283 <!--
284 Author: Michael Paquier <michael@paquier.xyz>
285 2023-12-11 [c7a3e6b46] Remove trace_recovery_messages
288 <listitem>
289 <para>
290 Remove server variable <literal>trace_recovery_messages</literal>
291 since it is no longer needed (Bharath Rupireddy)
292 <ulink url="&commit_baseurl;c7a3e6b46">&sect;</ulink>
293 </para>
294 </listitem>
296 <!--
297 Author: Peter Eisentraut <peter@eisentraut.org>
298 2023-08-16 [78806a950] Remove incorrect field from information schema
301 <listitem>
302 <para>
303 Remove <link
304 linkend="information-schema">information schema</link> column
305 <structname>element_types</structname>.<structfield>domain_default</structfield>
306 (Peter Eisentraut)
307 <ulink url="&commit_baseurl;78806a950">&sect;</ulink>
308 </para>
309 </listitem>
311 <!--
312 Author: Bruce Momjian <bruce@momjian.us>
313 2023-09-26 [15d5d7405] pgrowlocks: change lock mode output labels for consiste
316 <listitem>
317 <para>
318 Change <application><xref linkend="pgrowlocks"/></application>
319 lock mode output labels (Bruce Momjian)
320 <ulink url="&commit_baseurl;15d5d7405">&sect;</ulink>
321 </para>
322 </listitem>
324 <!--
325 Author: Michael Paquier <michael@paquier.xyz>
326 2023-10-27 [74604a37f] Remove buffers_backend and buffers_backend_fsync from pg
329 <listitem>
330 <para>
331 Remove <structfield>buffers_backend</structfield> and
332 <structfield>buffers_backend_fsync</structfield> from <link
333 linkend="monitoring-pg-stat-bgwriter-view"><structname>pg_stat_bgwriter</structname></link>
334 (Bharath Rupireddy)
335 <ulink url="&commit_baseurl;74604a37f">&sect;</ulink>
336 </para>
338 <para>
339 These fields are considered redundant to similar columns in <link
340 linkend="monitoring-pg-stat-io-view"><structname>pg_stat_io</structname></link>.
341 </para>
342 </listitem>
344 <!--
345 Author: Michael Paquier <michael@paquier.xyz>
346 2023-10-19 [13d00729d] Rename I/O timing statistics columns to shared_blk_{read
349 <listitem>
350 <para>
351 Rename I/O block read/write timing statistics columns of
352 <application><xref linkend="pgstatstatements"/></application>
353 (Nazir Bilal Yavuz)
354 <ulink url="&commit_baseurl;13d00729d">&sect;</ulink>
355 </para>
357 <para>
358 This renames <structfield>blk_read_time</structfield>
359 to <structfield>shared_blk_read_time</structfield>,
360 and <structfield>blk_write_time</structfield> to
361 <structfield>shared_blk_write_time</structfield>.
362 </para>
363 </listitem>
365 <!--
366 Author: Peter Eisentraut <peter@eisentraut.org>
367 2024-01-13 [4f622503d] Make attstattarget nullable
368 Author: Peter Eisentraut <peter@eisentraut.org>
369 2024-03-17 [012460ee9] Make stxstattarget nullable
372 <listitem>
373 <para>
374 Change <link
375 linkend="catalog-pg-attribute"><structname>pg_attribute</structname>.<structfield>attstattarget</structfield></link>
377 <structname>pg_statistic_ext</structname>.<structfield>stxstattarget</structfield>
378 to represent the default statistics target as <literal>NULL</literal>
379 (Peter Eisentraut)
380 <ulink url="&commit_baseurl;4f622503d">&sect;</ulink>
381 <ulink url="&commit_baseurl;012460ee9">&sect;</ulink>
382 </para>
383 </listitem>
385 <!--
386 Author: Jeff Davis <jdavis@postgresql.org>
387 2024-03-09 [f696c0cd5] Catalog changes preparing for builtin collation provider
390 <listitem>
391 <para>
392 Rename <link
393 linkend="catalog-pg-collation"><structname>pg_collation</structname>.<structfield>colliculocale</structfield></link>
394 to <structfield>colllocale</structfield> and
395 <link linkend="catalog-pg-database"><structname>pg_database</structname>.<structfield>daticulocale</structfield></link>
396 to <structfield>datlocale</structfield> (Jeff Davis)
397 <ulink url="&commit_baseurl;f696c0cd5">&sect;</ulink>
398 </para>
399 </listitem>
401 <!--
402 Author: Masahiko Sawada <msawada@postgresql.org>
403 2024-04-02 [667e65aac] Use TidStore for dead tuple TIDs storage during lazy vac
404 Author: Masahiko Sawada <msawada@postgresql.org>
405 2024-06-14 [f1affb670] Reintroduce dead tuple counter in pg_stat_progress_vacuu
408 <listitem>
409 <para>
410 Rename <link
411 linkend="vacuum-progress-reporting"><structname>pg_stat_progress_vacuum</structname></link>
412 column <structfield>max_dead_tuples</structfield>
413 to <structfield>max_dead_tuple_bytes</structfield>,
414 rename <structfield>num_dead_tuples</structfield> to
415 <structfield>num_dead_item_ids</structfield>, and add
416 <structfield>dead_tuple_bytes</structfield> (Masahiko Sawada)
417 <ulink url="&commit_baseurl;667e65aac">&sect;</ulink>
418 <ulink url="&commit_baseurl;f1affb670">&sect;</ulink>
419 </para>
420 </listitem>
422 <!--
423 Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
424 2024-02-28 [bcdfa5f2e] Rename SLRU elements in view pg_stat_slru
427 <listitem>
428 <para>
429 Rename <acronym>SLRU</acronym> columns in system view <link
430 linkend="monitoring-pg-stat-slru-view"><structname>pg_stat_slru</structname></link>
431 (Alvaro Herrera)
432 <ulink url="&commit_baseurl;bcdfa5f2e">&sect;</ulink>
433 </para>
435 <para>
436 The column names accepted by <link
437 linkend="monitoring-stats-funcs-table"><function>pg_stat_reset_slru()</function></link>
438 are also changed.
439 </para>
440 </listitem>
442 </itemizedlist>
444 </sect2>
446 <sect2 id="release-17-changes">
447 <title>Changes</title>
449 <para>
450 Below you will find a detailed account of the changes between
451 <productname>PostgreSQL</productname> 17 and the previous major
452 release.
453 </para>
455 <sect3 id="release-17-server">
456 <title>Server</title>
458 <sect4 id="release-17-optimizer">
459 <title>Optimizer</title>
461 <itemizedlist>
463 <!--
464 Author: Tom Lane <tgl@sss.pgh.pa.us>
465 2023-11-17 [f7816aec2] Extract column statistics from CTE references, if possib
466 Author: Tom Lane <tgl@sss.pgh.pa.us>
467 2024-03-26 [a65724dfa] Propagate pathkeys from CTEs up to the outer query.
470 <listitem>
471 <para>
472 Allow the optimizer to improve <acronym>CTE</acronym> plans by
473 considering the statistics and sort order of columns referenced in earlier row
474 output clauses (Jian Guo, Richard Guo, Tom Lane)
475 <ulink url="&commit_baseurl;f7816aec2">&sect;</ulink>
476 <ulink url="&commit_baseurl;a65724dfa">&sect;</ulink>
477 </para>
478 </listitem>
480 <!--
481 Author: David Rowley <drowley@postgresql.org>
482 2024-01-23 [b262ad440] Add better handling of redundant IS [NOT] NULL quals
483 Author: David Rowley <drowley@postgresql.org>
484 2024-04-12 [3af704098] Fix IS [NOT] NULL qual optimization for inheritance tabl
487 <listitem>
488 <para>
489 Improve optimization of <literal>IS NOT NULL</literal> and
490 <literal>IS NULL</literal> query restrictions (David Rowley,
491 Richard Guo, Andy Fan)
492 <ulink url="&commit_baseurl;b262ad440">&sect;</ulink>
493 <ulink url="&commit_baseurl;3af704098">&sect;</ulink>
494 </para>
496 <para>
497 Remove <literal>IS NOT NULL</literal> restrictions from queries on
498 <literal>NOT NULL</literal> columns and eliminate scans on
499 <literal>NOT NULL</literal> columns if <literal>IS NULL</literal>
500 is specified.
501 </para>
502 </listitem>
504 <!--
505 Author: David Rowley <drowley@postgresql.org>
506 2024-03-04 [07c36c133] Support partition pruning on boolcol IS [NOT] UNKNOWN
509 <listitem>
510 <para>
511 Allow partition pruning on boolean columns on <literal>IS [NOT]
512 UNKNOWN</literal> conditionals (David Rowley)
513 <ulink url="&commit_baseurl;07c36c133">&sect;</ulink>
514 </para>
515 </listitem>
517 <!--
518 Author: Tom Lane <tgl@sss.pgh.pa.us>
519 2024-01-20 [075df6b20] Add planner support functions for range operators &lt;@ and
522 <listitem>
523 <para>
524 Improve optimization of range values when using containment
525 operators &lt;@ and @&gt; (Kim Johan Andersson, Jian He)
526 <ulink url="&commit_baseurl;075df6b20">&sect;</ulink>
527 </para>
528 </listitem>
530 <!--
531 Author: Alexander Korotkov <akorotkov@postgresql.org>
532 2024-02-15 [9f1337639] Pull up ANY-SUBLINK with the necessary lateral support.
535 <listitem>
536 <para>
537 Allow correlated <literal>IN</literal> subqueries to be transformed
538 into joins (Andy Fan, Tom Lane)
539 <ulink url="&commit_baseurl;9f1337639">&sect;</ulink>
540 </para>
541 </listitem>
543 <!--
544 Author: David Rowley <drowley@postgresql.org>
545 2023-10-05 [a8a968a82] Consider cheap startup paths in add_paths_to_append_rel
548 <listitem>
549 <para>
550 Improve optimization of the <literal>LIMIT</literal> clause
551 on partitioned tables, inheritance parents, and <literal>UNION
552 ALL</literal> queries (Andy Fan, David Rowley)
553 <ulink url="&commit_baseurl;a8a968a82">&sect;</ulink>
554 </para>
555 </listitem>
557 <!--
558 Author: Tom Lane <tgl@sss.pgh.pa.us>
559 2023-07-14 [e08d74ca1] Allow plan nodes with initPlans to be considered paralle
562 <listitem>
563 <para>
564 Allow query nodes to be run in parallel in more cases (Tom Lane)
565 <ulink url="&commit_baseurl;e08d74ca1">&sect;</ulink>
566 </para>
567 </listitem>
569 <!--
570 Author: Alexander Korotkov <akorotkov@postgresql.org>
571 2024-01-21 [0452b461b] Explore alternative orderings of group-by pathkeys durin
574 <listitem>
575 <para>
576 Allow <literal>GROUP BY</literal> columns to be internally
577 ordered to match <literal>ORDER BY</literal> (Andrei Lepikhov,
578 Teodor Sigaev)
579 <ulink url="&commit_baseurl;0452b461b">&sect;</ulink>
580 </para>
582 <para>
583 This can be disabled using server variable
584 <xref linkend="guc-enable-groupby-reordering"/>.
585 </para>
586 </listitem>
588 <!--
589 Author: David Rowley <drowley@postgresql.org>
590 2024-03-25 [66c0185a3] Allow planner to use Merge Append to efficiently impleme
593 <listitem>
594 <para>
595 Allow <literal>UNION</literal> (without <literal>ALL</literal>)
596 to use MergeAppend (David Rowley)
597 <ulink url="&commit_baseurl;66c0185a3">&sect;</ulink>
598 </para>
599 </listitem>
601 <!--
602 Author: David Rowley <drowley@postgresql.org>
603 2024-02-01 [9d1a5354f] Fix costing bug in MergeAppend
606 <listitem>
607 <para>
608 Fix MergeAppend plans to more accurately compute the number of
609 rows that need to be sorted (Alexander Kuzmenkov)
610 <ulink url="&commit_baseurl;9d1a5354f">&sect;</ulink>
611 </para>
612 </listitem>
614 <!--
615 Author: David Rowley <drowley@postgresql.org>
616 2023-07-04 [625d5b3ca] Allow Incremental Sorts on GiST and SP-GiST indexes
619 <listitem>
620 <para>
621 Allow <link linkend="gist">GiST</link> and <link
622 linkend="spgist">SP-GiST</link> indexes to be part of incremental
623 sorts (Miroslav Bendik)
624 <ulink url="&commit_baseurl;625d5b3ca">&sect;</ulink>
625 </para>
627 <para>
628 This is particularly useful for <literal>ORDER BY</literal>
629 clauses where the first column has a GiST and SP-GiST index,
630 and other columns do not.
631 </para>
632 </listitem>
634 <!--
635 Author: Alexander Korotkov <akorotkov@postgresql.org>
636 2023-11-27 [bc3c8db8a] Display length and bounds histograms in pg_stats
639 <listitem>
640 <para>
641 Add columns to <link
642 linkend="view-pg-stats"><structname>pg_stats</structname></link>
643 to report range-type histogram information (Egor Rogov, Soumyadeep
644 Chakraborty)
645 <ulink url="&commit_baseurl;bc3c8db8a">&sect;</ulink>
646 </para>
647 </listitem>
649 </itemizedlist>
651 </sect4>
653 <sect4 id="release-17-indexes">
654 <title>Indexes</title>
656 <itemizedlist>
657 <!--
658 Author: Peter Geoghegan <pg@bowt.ie>
659 2024-04-06 [5bf748b86] Enhance nbtree ScalarArrayOp execution.
662 <listitem>
663 <para>
664 Allow <link linkend="btree">btree</link> indexes to more
665 efficiently find a set of values, such as those supplied by
666 <literal>IN</literal> clauses using constants (Peter Geoghegan,
667 Matthias van de Meent)
668 <ulink url="&commit_baseurl;5bf748b86">&sect;</ulink>
669 </para>
670 </listitem>
672 <!--
673 Author: Tomas Vondra <tomas.vondra@postgresql.org>
674 2023-12-08 [b43757171] Allow parallel CREATE INDEX for BRIN indexes
677 <listitem>
678 <para>
679 Allow <link linkend="brin"><acronym>BRIN</acronym></link> indexes
680 to be created using parallel workers (Tomas Vondra, Matthias van
681 de Meent)
682 <ulink url="&commit_baseurl;b43757171">&sect;</ulink>
683 </para>
684 </listitem>
686 </itemizedlist>
688 </sect4>
690 <sect4 id="release-17-performance">
691 <title>General Performance</title>
693 <itemizedlist>
695 <!--
696 Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
697 2024-04-03 [6dbb49026] Combine freezing and pruning steps in VACUUM
700 <listitem>
701 <para>
702 Allow vacuum to more efficiently remove and freeze tuples (Melanie
703 Plageman, Heikki Linnakangas)
704 <ulink url="&commit_baseurl;6dbb49026">&sect;</ulink>
705 </para>
707 <para>
708 <acronym>WAL</acronym> traffic caused by vacuum is also more
709 compact.
710 </para>
711 </listitem>
713 <!--
714 Author: John Naylor <john.naylor@postgresql.org>
715 2024-03-07 [ee1b30f12] Add template for adaptive radix tree
716 Author: Masahiko Sawada <msawada@postgresql.org>
717 2024-03-21 [30e144287] Add TIDStore, to store sets of TIDs (ItemPointerData) ef
718 Author: Masahiko Sawada <msawada@postgresql.org>
719 2024-04-02 [667e65aac] Use TidStore for dead tuple TIDs storage during lazy vac
720 Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
721 2024-04-03 [6dbb49026] Combine freezing and pruning steps in VACUUM
724 <listitem>
725 <para>
726 Allow vacuum to more efficiently store tuple references (Masahiko
727 Sawada, John Naylor)
728 <ulink url="&commit_baseurl;ee1b30f12">&sect;</ulink>
729 <ulink url="&commit_baseurl;30e144287">&sect;</ulink>
730 <ulink url="&commit_baseurl;667e65aac">&sect;</ulink>
731 <ulink url="&commit_baseurl;6dbb49026">&sect;</ulink>
732 </para>
734 <para>
735 Additionally, vacuum is no longer silently limited to one gigabyte
736 of memory when <xref linkend="guc-maintenance-work-mem"/> or <xref
737 linkend="guc-autovacuum-work-mem"/> are higher.
738 </para>
739 </listitem>
741 <!--
742 Author: Robert Haas <rhaas@postgresql.org>
743 2024-01-18 [c120550ed] Optimize vacuuming of relations with no indexes.
746 <listitem>
747 <para>
748 Optimize vacuuming of relations with no indexes (Melanie Plageman)
749 <ulink url="&commit_baseurl;c120550ed">&sect;</ulink>
750 </para>
751 </listitem>
753 <!--
754 Author: Thomas Munro <tmunro@postgresql.org>
755 2024-04-06 [98f320eb2] Increase default vacuum_buffer_usage_limit to 2MB.
758 <listitem>
759 <para>
760 Increase default <xref linkend="guc-vacuum-buffer-usage-limit"/>
761 to 2MB (Thomas Munro)
762 <ulink url="&commit_baseurl;98f320eb2">&sect;</ulink>
763 </para>
764 </listitem>
766 <!--
767 Author: Nathan Bossart <nathan@postgresql.org>
768 2024-03-26 [d365ae705] Optimize roles_is_member_of() with a Bloom filter.
771 <listitem>
772 <para>
773 Improve performance when checking roles with many memberships
774 (Nathan Bossart)
775 <ulink url="&commit_baseurl;d365ae705">&sect;</ulink>
776 </para>
777 </listitem>
779 <!--
780 Author: Michael Paquier <michael@paquier.xyz>
781 2023-07-25 [71e4cc6b8] Optimize WAL insertion lock acquisition and release with
784 <listitem>
785 <para>
786 Improve performance of heavily-contended <acronym>WAL</acronym>
787 writes (Bharath Rupireddy)
788 <ulink url="&commit_baseurl;71e4cc6b8">&sect;</ulink>
789 </para>
790 </listitem>
792 <!--
793 Author: David Rowley <drowley@postgresql.org>
794 2024-04-07 [c4ab7da60] Avoid needless large memcpys in libpq socket writing
797 <listitem>
798 <para>
799 Improve performance when transferring large blocks of data to a
800 client (Melih Mutlu)
801 <ulink url="&commit_baseurl;c4ab7da60">&sect;</ulink>
802 </para>
803 </listitem>
805 <!--
806 Author: Thomas Munro <tmunro@postgresql.org>
807 2024-04-03 [210622c60] Provide vectored variant of ReadBuffer().
808 Author: Thomas Munro <tmunro@postgresql.org>
809 2024-04-08 [b7b0f3f27] Use streaming I/O in sequential scans.
810 Author: Thomas Munro <tmunro@postgresql.org>
811 2024-04-08 [041b96802] Use streaming I/O in ANALYZE.
814 <listitem>
815 <para>
816 Allow the grouping of file system reads with the new system variable
817 <xref linkend="guc-io-combine-limit"/> (Thomas Munro, Andres Freund,
818 Melanie Plageman, Nazir Bilal Yavuz)
819 <ulink url="&commit_baseurl;210622c60">&sect;</ulink>
820 <ulink url="&commit_baseurl;b7b0f3f27">&sect;</ulink>
821 <ulink url="&commit_baseurl;041b96802">&sect;</ulink>
822 </para>
823 </listitem>
825 </itemizedlist>
827 </sect4>
829 <sect4 id="release-17-monitoring">
830 <title>Monitoring</title>
832 <itemizedlist>
834 <!--
835 Author: Michael Paquier <michael@paquier.xyz>
836 2023-10-30 [96f052613] Introduce pg_stat_checkpointer
837 Author: Alexander Korotkov <akorotkov@postgresql.org>
838 2023-12-25 [12915a58e] Enhance checkpointer restartpoint statistics
839 Author: Alexander Korotkov <akorotkov@postgresql.org>
840 2024-03-14 [e820db5b5] Improve documentation for pg_stat_checkpointer fields
843 <listitem>
844 <para>
845 Create system view <link
846 linkend="monitoring-pg-stat-checkpointer-view"><structname>pg_stat_checkpointer</structname></link>
847 (Bharath Rupireddy, Anton A. Melnikov, Alexander Korotkov)
848 <ulink url="&commit_baseurl;96f052613">&sect;</ulink>
849 <ulink url="&commit_baseurl;12915a58e">&sect;</ulink>
850 <ulink url="&commit_baseurl;e820db5b5">&sect;</ulink>
851 </para>
853 <para>
854 Relevant columns have been removed from <link
855 linkend="pg-stat-bgwriter-view"><structname>pg_stat_bgwriter</structname></link>
856 and added to this new system view.
857 </para>
858 </listitem>
860 <!--
861 Author: Michael Paquier <michael@paquier.xyz>
862 2023-11-12 [23c8c0c8f] Add ability to reset all shared stats types in pg_stat_r
863 Author: Michael Paquier <michael@paquier.xyz>
864 2023-11-16 [2e8a0edc2] Add target "slru" to pg_stat_reset_shared()
865 Author: Michael Paquier <michael@paquier.xyz>
866 2023-11-14 [e5cca6288] Add support for pg_stat_reset_slru without argument
869 <listitem>
870 <para>
871 Improve control over resetting statistics (Atsushi Torikoshi,
872 Bharath Rupireddy)
873 <ulink url="&commit_baseurl;23c8c0c8f">&sect;</ulink>
874 <ulink url="&commit_baseurl;2e8a0edc2">&sect;</ulink>
875 <ulink url="&commit_baseurl;e5cca6288">&sect;</ulink>
876 </para>
878 <para>
879 Allow <link
880 linkend="monitoring-stats-funcs-table"><function>pg_stat_reset_shared()</function></link>
881 (with no arguments) and
882 pg_stat_reset_shared(<literal>NULL</literal>) to reset all
883 shared statistics. Allow pg_stat_reset_shared('slru') and <link
884 linkend="monitoring-stats-funcs-table"><function>pg_stat_reset_slru()</function></link>
885 (with no arguments) to reset <acronym>SLRU</acronym> statistics,
886 which was already possible with pg_stat_reset_slru(NULL).
887 </para>
888 </listitem>
890 <!--
891 Author: Michael Paquier <michael@paquier.xyz>
892 2024-01-25 [1d35f705e] Add more LOG messages when starting and ending recovery
895 <listitem>
896 <para>
897 Add log messages related to <acronym>WAL</acronym> recovery from
898 backups (Andres Freund)
899 <ulink url="&commit_baseurl;1d35f705e">&sect;</ulink>
900 </para>
901 </listitem>
903 <!--
904 Author: Michael Paquier <michael@paquier.xyz>
905 2023-08-26 [e48b19c5d] Generate new LOG for "trust" connections under log_conne
908 <listitem>
909 <para>
910 Add <xref linkend="guc-log-connections"/> log line for
911 <literal>trust</literal> connections (Jacob Champion)
912 <ulink url="&commit_baseurl;e48b19c5d">&sect;</ulink>
913 </para>
914 </listitem>
916 <!--
917 Author: Amit Kapila <akapila@postgresql.org>
918 2023-11-21 [7c3fb505b] Log messages for replication slot acquisition and releas
921 <listitem>
922 <para>
923 Add log message to report walsender acquisition and release of
924 replication slots (Bharath Rupireddy)
925 <ulink url="&commit_baseurl;7c3fb505b">&sect;</ulink>
926 </para>
928 <para>
929 This is enabled by the server variable <xref
930 linkend="guc-log-replication-commands"/>.
931 </para>
932 </listitem>
934 <!--
935 Author: Michael Paquier <michael@paquier.xyz>
936 2023-08-20 [1e68e43d3] Add system view pg_wait_events
939 <listitem>
940 <para>
941 Add system view <link
942 linkend="view-pg-wait-events"><structname>pg_wait_events</structname></link>
943 that reports wait event types (Bertrand Drouvot)
944 <ulink url="&commit_baseurl;1e68e43d3">&sect;</ulink>
945 </para>
947 <para>
948 This is useful for adding descriptions
949 to wait events reported in <link
950 linkend="monitoring-pg-stat-activity-view"><structname>pg_stat_activity</structname></link>.
951 </para>
952 </listitem>
954 <!--
955 Author: Thomas Munro <tmunro@postgresql.org>
956 2023-10-13 [0013ba290] Add wait events for checkpoint delay mechanism.
959 <listitem>
960 <para>
961 Add <link linkend="view-pg-wait-events">wait events</link> for
962 checkpoint delays (Thomas Munro)
963 <ulink url="&commit_baseurl;0013ba290">&sect;</ulink>
964 </para>
965 </listitem>
967 <!--
968 Author: Masahiko Sawada <msawada@postgresql.org>
969 2023-07-11 [46ebdfe16] Report index vacuum progress.
972 <listitem>
973 <para>
974 Allow vacuum to report the progress of index processing (Sami
975 Imseih)
976 <ulink url="&commit_baseurl;46ebdfe16">&sect;</ulink>
977 </para>
979 <para>
980 This appears in system view <link
981 linkend="pg-stat-progress-vacuum-view"><structname>pg_stat_progress_vacuum</structname></link>
982 columns <structfield>indexes_total</structfield> and
983 <structfield>indexes_processed</structfield>.
984 </para>
985 </listitem>
987 </itemizedlist>
989 </sect4>
991 <sect4 id="release-17-privileges">
992 <title>Privileges</title>
994 <itemizedlist>
996 <!--
997 Author: Nathan Bossart <nathan@postgresql.org>
998 2024-03-13 [ecb0fd337] Reintroduce MAINTAIN privilege and pg_maintain predefine
1001 <listitem>
1002 <para>
1003 Allow granting the right to perform maintenance operations
1004 (Nathan Bossart)
1005 <ulink url="&commit_baseurl;ecb0fd337">&sect;</ulink>
1006 </para>
1008 <para>
1009 The permission can be granted on a per-table basis using the <link
1010 linkend="ddl-priv-maintain"><literal>MAINTAIN</literal></link>
1011 privilege and on a per-role basis via the <link
1012 linkend="predefined-roles"><literal>pg_maintain</literal></link>
1013 predefined role. Permitted operations are
1014 <command>VACUUM</command>, <command>ANALYZE</command>,
1015 <command>REINDEX</command>, <command>REFRESH MATERIALIZED
1016 VIEW</command>, <command>CLUSTER</command>, and <command>LOCK
1017 TABLE</command>.
1018 </para>
1019 </listitem>
1021 <!--
1022 Author: Nathan Bossart <nathan@postgresql.org>
1023 2024-02-14 [8d8afd48d] Allow pg_monitor to execute pg_current_logfile().
1026 <listitem>
1027 <para>
1028 Allow roles with <link
1029 linkend="predefined-roles"><literal>pg_monitor</literal></link>
1030 membership to execute <link
1031 linkend="functions-info-session-table"><function>pg_current_logfile()</function></link>
1032 (Pavlo Golub, Nathan Bossart)
1033 <ulink url="&commit_baseurl;8d8afd48d">&sect;</ulink>
1034 </para>
1035 </listitem>
1037 </itemizedlist>
1039 </sect4>
1041 <sect4 id="release-17-server-config">
1042 <title>Server Configuration</title>
1044 <itemizedlist>
1046 <!--
1047 Author: Robert Haas <rhaas@postgresql.org>
1048 2024-03-29 [d3ae2a24f] Add allow_alter_system GUC.
1051 <listitem>
1052 <para>
1053 Add system variable <xref linkend="guc-allow-alter-system"/>
1054 to disallow <link linkend="sql-altersystem"><command>ALTER
1055 SYSTEM</command></link> (Jelte Fennema-Nio, Gabriele Bartolini)
1056 <ulink url="&commit_baseurl;d3ae2a24f">&sect;</ulink>
1057 </para>
1058 </listitem>
1060 <!--
1061 Author: Tom Lane <tgl@sss.pgh.pa.us>
1062 2023-10-21 [2d870b4ae] Allow ALTER SYSTEM to set unrecognized custom GUCs.
1065 <listitem>
1066 <para>
1067 Allow <link linkend="sql-altersystem"><command>ALTER
1068 SYSTEM</command></link> to set unrecognized custom server variables
1069 (Tom Lane)
1070 <ulink url="&commit_baseurl;2d870b4ae">&sect;</ulink>
1071 </para>
1073 <para>
1074 This is also possible with <link linkend="sql-grant"><literal>GRANT
1075 ON PARAMETER</literal></link>.
1076 </para>
1077 </listitem>
1079 <!--
1080 Author: Alexander Korotkov <akorotkov@postgresql.org>
1081 2024-02-15 [51efe38cb] Introduce transaction_timeout
1082 Author: Alexander Korotkov <akorotkov@postgresql.org>
1083 2024-02-16 [bf82f4379] Followup fixes for transaction_timeout
1084 Author: Alexander Korotkov <akorotkov@postgresql.org>
1085 2024-02-25 [28e858c0f] Improve documentation and GUC description for transactio
1088 <listitem>
1089 <para>
1090 Add server variable <xref linkend="guc-transaction-timeout"/> to
1091 restrict the duration of transactions (Andrey Borodin, Japin Li,
1092 Junwang Zhao, Alexander Korotkov)
1093 <ulink url="&commit_baseurl;51efe38cb">&sect;</ulink>
1094 <ulink url="&commit_baseurl;bf82f4379">&sect;</ulink>
1095 <ulink url="&commit_baseurl;28e858c0f">&sect;</ulink>
1096 </para>
1097 </listitem>
1099 <!--
1100 Author: Jeff Davis <jdavis@postgresql.org>
1101 2024-03-13 [2d819a08a] Introduce "builtin" collation provider.
1102 Author: Jeff Davis <jdavis@postgresql.org>
1103 2024-03-18 [846311051] Address more review comments on commit 2d819a08a1.
1104 Author: Jeff Davis <jdavis@postgresql.org>
1105 2024-03-19 [f69319f2f] Support C.UTF-8 locale in the new builtin collation prov
1106 Author: Jeff Davis <jdavis@postgresql.org>
1107 2024-03-20 [9acae56ce] Inline basic UTF-8 functions.
1110 <listitem>
1111 <para>
1112 Add a builtin platform-independent collation provider (Jeff Davis)
1113 <ulink url="&commit_baseurl;2d819a08a">&sect;</ulink>
1114 <ulink url="&commit_baseurl;846311051">&sect;</ulink>
1115 <ulink url="&commit_baseurl;f69319f2f">&sect;</ulink>
1116 <ulink url="&commit_baseurl;9acae56ce">&sect;</ulink>
1117 </para>
1119 <para>
1120 This supports <literal>C</literal> and <literal>C.UTF-8</literal>
1121 collations.
1122 </para>
1123 </listitem>
1125 <!--
1126 Author: Michael Paquier <michael@paquier.xyz>
1127 2023-07-06 [a14354cac] Add GUC parameter "huge_pages_status"
1130 <listitem>
1131 <para>
1132 Add server variable <xref linkend="guc-huge-pages-status"/> to
1133 report the use of huge pages by Postgres (Justin Pryzby)
1134 <ulink url="&commit_baseurl;a14354cac">&sect;</ulink>
1135 </para>
1137 <para>
1138 This is useful when <xref linkend="guc-huge-pages"/> is set to
1139 <literal>try</literal>.
1140 </para>
1141 </listitem>
1143 <!--
1144 Author: Daniel Gustafsson <dgustafsson@postgresql.org>
1145 2023-09-25 [7750fefdb] Add GUC for temporarily disabling event triggers
1148 <listitem>
1149 <para>
1150 Add server variable to disable event triggers (Daniel Gustafsson)
1151 <ulink url="&commit_baseurl;7750fefdb">&sect;</ulink>
1152 </para>
1154 <para>
1155 The setting, <xref linkend="guc-event-triggers"/>, allows for the
1156 temporary disabling of event triggers for debugging.
1157 </para>
1158 </listitem>
1160 <!--
1161 Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
1162 2024-02-28 [53c2a97a9] Improve performance of subsystems on top of SLRU
1165 <listitem>
1166 <para>
1167 Allow the <link
1168 linkend="monitoring-pg-stat-slru-view"><acronym>SLRU</acronym></link>
1169 cache sizes to be configured (Andrey Borodin, Dilip Kumar,
1170 Alvaro Herrera)
1171 <ulink url="&commit_baseurl;53c2a97a9">&sect;</ulink>
1172 </para>
1174 <para>
1175 The new server variables are <xref
1176 linkend="guc-commit-timestamp-buffers"/>,
1177 <xref linkend="guc-multixact-member-buffers"/>,
1178 <xref linkend="guc-multixact-offset-buffers"/>,
1179 <xref linkend="guc-notify-buffers"/>, <xref
1180 linkend="guc-serializable-buffers"/>, <xref
1181 linkend="guc-subtransaction-buffers"/>, and
1182 <xref linkend="guc-transaction-buffers"/>. <xref
1183 linkend="guc-commit-timestamp-buffers"/>, <xref
1184 linkend="guc-transaction-buffers"/>, and <xref
1185 linkend="guc-subtransaction-buffers"/> scale up automatically with
1186 <xref linkend="guc-shared-buffers"/>.
1187 </para>
1188 </listitem>
1190 </itemizedlist>
1192 </sect4>
1194 <sect4 id="release-17-replication">
1195 <title>Streaming Replication and Recovery</title>
1197 <itemizedlist>
1199 <!--
1200 Author: Robert Haas <rhaas@postgresql.org>
1201 2023-12-20 [dc2123400] Add support for incremental backup.
1202 Author: Tomas Vondra <tomas.vondra@postgresql.org>
1203 2024-04-05 [f8ce4ed78] Allow copying files using clone/copy_file_range
1206 <listitem>
1207 <para>
1208 Add support for incremental file system backup (Robert Haas,
1209 Jakub Wartak, Tomas Vondra)
1210 <ulink url="&commit_baseurl;dc2123400">&sect;</ulink>
1211 <ulink url="&commit_baseurl;f8ce4ed78">&sect;</ulink>
1212 </para>
1214 <para>
1215 Incremental backups can be created using <link
1216 linkend="app-pgbasebackup"><application>pg_basebackup</application></link>'s
1217 new <option>--incremental</option>
1218 option. The new application <link
1219 linkend="app-pgcombinebackup"><application>pg_combinebackup</application></link>
1220 allows manipulation of base and incremental file system backups.
1221 </para>
1222 </listitem>
1224 <!--
1225 Author: Robert Haas <rhaas@postgresql.org>
1226 2023-12-20 [174c48050] Add a new WAL summarizer process.
1227 Author: Nathan Bossart <nathan@postgresql.org>
1228 2024-01-09 [d97ef756a] Fix documentation for wal_summary_keep_time.
1229 Author: Robert Haas <rhaas@postgresql.org>
1230 2024-01-09 [f896057e4] Document WAL summarization information functions.
1231 Author: Robert Haas <rhaas@postgresql.org>
1232 2024-01-11 [d9ef650fc] Add new function pg_get_wal_summarizer_state().
1235 <listitem>
1236 <para>
1237 Allow the creation of <acronym>WAL</acronym> summarization files
1238 (Robert Haas, Nathan Bossart, Hubert Depesz Lubaczewski)
1239 <ulink url="&commit_baseurl;174c48050">&sect;</ulink>
1240 <ulink url="&commit_baseurl;d97ef756a">&sect;</ulink>
1241 <ulink url="&commit_baseurl;f896057e4">&sect;</ulink>
1242 <ulink url="&commit_baseurl;d9ef650fc">&sect;</ulink>
1243 </para>
1245 <para>
1246 These files record the block numbers that have changed within an
1247 <link linkend="datatype-pg-lsn"><acronym>LSN</acronym></link>
1248 range and are useful for incremental file
1249 system backups. This is controlled by the server
1250 variables <xref linkend="guc-summarize-wal"/> and <xref
1251 linkend="guc-wal-summary-keep-time"/>, and introspected with <link
1252 linkend="functions-wal-summary"><function>pg_available_wal_summaries()</function></link>,
1253 <function>pg_wal_summary_contents()</function>, and
1254 <function>pg_get_wal_summarizer_state()</function>.
1255 </para>
1256 </listitem>
1258 <!--
1259 Author: Robert Haas <rhaas@postgresql.org>
1260 2024-03-13 [2041bc427] Add the system identifier to backup manifests.
1263 <listitem>
1264 <para>
1265 Add the system identifier to file system <link
1266 linkend="backup-manifest-format">backup manifest</link> files
1267 (Amul Sul)
1268 <ulink url="&commit_baseurl;2041bc427">&sect;</ulink>
1269 </para>
1271 <para>
1272 This helps detect invalid <acronym>WAL</acronym> usage.
1273 </para>
1274 </listitem>
1276 <!--
1277 Author: Amit Kapila <akapila@postgresql.org>
1278 2024-03-21 [a145f424d] Allow dbname to be written as part of connstring via pg_
1281 <listitem>
1282 <para>
1283 Allow connection string value
1284 <literal>dbname</literal> to be written when <link
1285 linkend="app-pgbasebackup"><application>pg_basebackup</application></link>
1286 writes connection information to
1287 <filename>postgresql.auto.conf</filename> (Vignesh C, Hayato Kuroda)
1288 <ulink url="&commit_baseurl;a145f424d">&sect;</ulink>
1289 </para>
1290 </listitem>
1292 <!--
1293 Author: Amit Kapila <akapila@postgresql.org>
1294 2024-01-04 [007693f2a] Track conflict_reason in pg_replication_slots.
1295 Author: Amit Kapila <akapila@postgresql.org>
1296 2024-03-22 [6ae701b43] Track invalidation_reason in pg_replication_slots.
1299 <listitem>
1300 <para>
1301 Add column <link
1302 linkend="view-pg-replication-slots"><structname>pg_replication_slots</structname>.<structfield>invalidation_reason</structfield></link>
1303 to report the reason for invalid slots (Shveta Malik, Bharath
1304 Rupireddy)
1305 <ulink url="&commit_baseurl;007693f2a">&sect;</ulink>
1306 <ulink url="&commit_baseurl;6ae701b43">&sect;</ulink>
1307 </para>
1308 </listitem>
1310 <!--
1311 Author: Amit Kapila <akapila@postgresql.org>
1312 2024-03-25 [a11f330b5] Track last_inactive_time in pg_replication_slots.
1313 Author: Amit Kapila <akapila@postgresql.org>
1314 2024-03-27 [6d49c8d4b] Change last_inactive_time to inactive_since in pg_replic
1315 Author: Amit Kapila <akapila@postgresql.org>
1316 2024-04-05 [6f132ed69] Allow synced slots to have their inactive_since.
1319 <listitem>
1320 <para>
1321 Add column <link
1322 linkend="view-pg-replication-slots"><structname>pg_replication_slots</structname>.<structfield>inactive_since</structfield></link>
1323 to report slot inactivity duration (Bharath Rupireddy)
1324 <ulink url="&commit_baseurl;a11f330b5">&sect;</ulink>
1325 <ulink url="&commit_baseurl;6d49c8d4b">&sect;</ulink>
1326 <ulink url="&commit_baseurl;6f132ed69">&sect;</ulink>
1327 </para>
1328 </listitem>
1330 <!--
1331 Author: Amit Kapila <akapila@postgresql.org>
1332 2024-02-14 [ddd5f4f54] Add a slot synchronization function.
1333 Author: Amit Kapila <akapila@postgresql.org>
1334 2024-02-16 [7a424ece4] Add more LOG and DEBUG messages for slot synchronization
1337 <listitem>
1338 <para>
1339 Add function <link
1340 linkend="functions-replication-table"><function>pg_sync_replication_slots()</function></link>
1341 to synchronize logical replication slots (Hou Zhijie, Shveta Malik,
1342 Ajin Cherian, Peter Eisentraut)
1343 <ulink url="&commit_baseurl;ddd5f4f54">&sect;</ulink>
1344 <ulink url="&commit_baseurl;7a424ece4">&sect;</ulink>
1345 </para>
1346 </listitem>
1348 <!--
1349 Author: Amit Kapila <akapila@postgresql.org>
1350 2024-01-29 [732924043] Allow setting failover property in the replication comma
1353 <listitem>
1354 <para>
1355 Add the <literal>failover</literal> property to the <link
1356 linkend="protocol-replication">replication protocol</link> (Hou
1357 Zhijie, Shveta Malik)
1358 <ulink url="&commit_baseurl;732924043">&sect;</ulink>
1359 </para>
1360 </listitem>
1362 </itemizedlist>
1364 </sect4>
1366 <sect4 id="release-17-logical">
1367 <title><link linkend="logical-replication">Logical Replication</link></title>
1369 <itemizedlist>
1371 <!--
1372 Author: Peter Eisentraut <peter@eisentraut.org>
1373 2024-03-25 [d44032d01] pg_createsubscriber: creates a new logical replica from
1376 <listitem>
1377 <para>
1378 Add application <link
1379 linkend="app-pgcreatesubscriber"><application>pg_createsubscriber</application></link>
1380 to create a logical replica from a physical standby server
1381 (Euler Taveira)
1382 <ulink url="&commit_baseurl;d44032d01">&sect;</ulink>
1383 </para>
1384 </listitem>
1386 <!--
1387 Author: Amit Kapila <akapila@postgresql.org>
1388 2023-10-26 [29d0a77fa] Migrate logical slots to the new node during an upgrade.
1389 Author: Amit Kapila <akapila@postgresql.org>
1390 2024-01-02 [9a17be1e2] Allow upgrades to preserve the full subscription's state
1393 <listitem>
1394 <para>
1395 Have <link
1396 linkend="pgupgrade"><application>pg_upgrade</application></link>
1397 migrate valid logical slots and subscriptions (Hayato Kuroda,
1398 Hou Zhijie, Vignesh C, Julien Rouhaud, Shlok Kyal)
1399 <ulink url="&commit_baseurl;29d0a77fa">&sect;</ulink>
1400 <ulink url="&commit_baseurl;9a17be1e2">&sect;</ulink>
1401 </para>
1403 <para>
1404 This allows logical replication to continue
1405 quickly after the upgrade. This only works for old
1406 <productname>PostgreSQL</productname> clusters that are version
1407 17 or later.
1408 </para>
1409 </listitem>
1411 <!--
1412 Author: Amit Kapila <akapila@postgresql.org>
1413 2024-01-25 [c393308b6] Allow to enable failover property for replication slots
1416 <listitem>
1417 <para>
1418 Enable the failover of <link
1419 linkend="logical-replication-subscription-slot">logical slots</link>
1420 (Hou Zhijie, Shveta Malik, Ajin Cherian)
1421 <ulink url="&commit_baseurl;c393308b6">&sect;</ulink>
1422 </para>
1424 <para>
1425 This is controlled by an optional fifth argument to <link
1426 linkend="functions-replication-table"><function>pg_create_logical_replication_slot()</function></link>.
1427 </para>
1428 </listitem>
1430 <!--
1431 Author: Amit Kapila <akapila@postgresql.org>
1432 2024-02-22 [93db6cbda] Add a new slot sync worker to synchronize logical slots
1433 Author: Amit Kapila <akapila@postgresql.org>
1434 2024-03-06 [60c07820d] Doc: Improve replication slot synchronization section.
1437 <listitem>
1438 <para>
1439 Add server variable <xref linkend="guc-sync-replication-slots"/>
1440 to enable failover logical slot synchronization (Shveta Malik,
1441 Hou Zhijie, Peter Smith)
1442 <ulink url="&commit_baseurl;93db6cbda">&sect;</ulink>
1443 <ulink url="&commit_baseurl;60c07820d">&sect;</ulink>
1444 </para>
1445 </listitem>
1447 <!--
1448 Author: Amit Kapila <akapila@postgresql.org>
1449 2024-01-30 [776621a5e] Add a failover option to subscriptions.
1450 Author: Amit Kapila <akapila@postgresql.org>
1451 2024-02-07 [22f7e61a6] Clean-ups for 776621a5e4 and 7329240437.
1454 <listitem>
1455 <para>
1456 Add logical replication failover control to <link
1457 linkend="sql-createsubscription"><literal>CREATE/ALTER
1458 SUBSCRIPTION</literal></link> (Shveta Malik, Hou Zhijie, Ajin
1459 Cherian)
1460 <ulink url="&commit_baseurl;776621a5e">&sect;</ulink>
1461 <ulink url="&commit_baseurl;22f7e61a6">&sect;</ulink>
1462 </para>
1463 </listitem>
1465 <!--
1466 Author: Amit Kapila <akapila@postgresql.org>
1467 2023-07-14 [edca34243] Allow the use of a hash index on the subscriber during r
1470 <listitem>
1471 <para>
1472 Allow the application of logical replication changes to use
1473 <link linkend="hash-index">hash</link> indexes on the subscriber
1474 (Hayato Kuroda)
1475 <ulink url="&commit_baseurl;edca34243">&sect;</ulink>
1476 </para>
1478 <para>
1479 Previously only <link linkend="btree">btree</link> indexes could
1480 be used for this purpose.
1481 </para>
1482 </listitem>
1484 <!--
1485 Author: Masahiko Sawada <msawada@postgresql.org>
1486 2024-04-03 [5bec1d6bc] Improve eviction algorithm in ReorderBuffer using max-he
1489 <listitem>
1490 <para>
1491 Improve <link linkend="logicaldecoding">logical decoding</link>
1492 performance in cases where there are many subtransactions
1493 (Masahiko Sawada)
1494 <ulink url="&commit_baseurl;5bec1d6bc">&sect;</ulink>
1495 </para>
1496 </listitem>
1498 <!--
1499 Author: Amit Kapila <akapila@postgresql.org>
1500 2023-10-17 [79243de13] Restart the apply worker if the privileges have been rev
1503 <listitem>
1504 <para>
1505 Restart apply workers if subscription owner's superuser privileges
1506 are revoked (Vignesh C)
1507 <ulink url="&commit_baseurl;79243de13">&sect;</ulink>
1508 </para>
1510 <para>
1511 This forces reauthentication.
1512 </para>
1513 </listitem>
1515 <!--
1516 Author: Michael Paquier <michael@paquier.xyz>
1517 2023-10-18 [173b56f1e] Add flush option to pg_logical_emit_message()
1520 <listitem>
1521 <para>
1522 Add <literal>flush</literal> option to <link
1523 linkend="functions-replication-table"><function>pg_logical_emit_message()</function></link>
1524 (Michael Paquier)
1525 <ulink url="&commit_baseurl;173b56f1e">&sect;</ulink>
1526 </para>
1528 <para>
1529 This makes the message durable.
1530 </para>
1531 </listitem>
1533 <!--
1534 Author: Amit Kapila <akapila@postgresql.org>
1535 2024-03-08 [bf279ddd1] Introduce a new GUC 'standby_slot_names'.
1536 Author: Amit Kapila <akapila@postgresql.org>
1537 2024-07-01 [0f934b073] Rename standby_slot_names to synchronized_standby_slots.
1540 <listitem>
1541 <para>
1542 Allow specification of physical standbys that must be synchronized
1543 before they are visible to subscribers (Hou Zhijie, Shveta Malik)
1544 <ulink url="&commit_baseurl;bf279ddd1">&sect;</ulink>
1545 <ulink url="&commit_baseurl;0f934b073">&sect;</ulink>
1546 </para>
1548 <para>
1549 The new server variable is <xref linkend="guc-synchronized-standby-slots"/>.
1550 </para>
1551 </listitem>
1553 <!--
1554 Author: Nathan Bossart <nathan@postgresql.org>
1555 2023-09-25 [13aeaf079] Add worker type to pg_stat_subscription.
1558 <listitem>
1559 <para>
1560 Add worker type column to <link
1561 linkend="monitoring-pg-stat-subscription"><structname>pg_stat_subscription</structname></link>
1562 (Peter Smith)
1563 <ulink url="&commit_baseurl;13aeaf079">&sect;</ulink>
1564 </para>
1565 </listitem>
1567 </itemizedlist>
1569 </sect4>
1571 </sect3>
1573 <sect3 id="release-17-utility">
1574 <title>Utility Commands</title>
1576 <itemizedlist>
1578 <!--
1579 Author: Alexander Korotkov <akorotkov@postgresql.org>
1580 2024-01-16 [9e2d87011] Add new COPY option SAVE_ERROR_TO
1581 Author: Alexander Korotkov <akorotkov@postgresql.org>
1582 2024-01-19 [b725b7eec] Rename COPY option from SAVE_ERROR_TO to ON_ERROR
1583 Author: Alexander Korotkov <akorotkov@postgresql.org>
1584 2024-02-03 [40bbc8cf0] Improve documentation for COPY ... ON_ERROR ...
1585 Author: Masahiko Sawada <msawada@postgresql.org>
1586 2024-04-17 [a6d0fa5ef] Disallow specifying ON_ERROR option without value.
1589 <listitem>
1590 <para>
1591 Add new <link linkend="sql-copy"><command>COPY</command></link>
1592 option <literal>ON_ERROR ignore</literal> to discard error rows
1593 (Damir Belyalov, Atsushi Torikoshi, Alex Shulgin, Jian He, Yugo
1594 Nagata)
1595 <ulink url="&commit_baseurl;9e2d87011">&sect;</ulink>
1596 <ulink url="&commit_baseurl;b725b7eec">&sect;</ulink>
1597 <ulink url="&commit_baseurl;40bbc8cf0">&sect;</ulink>
1598 <ulink url="&commit_baseurl;a6d0fa5ef">&sect;</ulink>
1599 </para>
1601 <para>
1602 The default behavior is <literal>ON_ERROR stop</literal>.
1603 </para>
1604 </listitem>
1606 <!--
1607 Author: Masahiko Sawada <msawada@postgresql.org>
1608 2024-04-01 [f5a227895] Add new COPY option LOG_VERBOSITY.
1611 <listitem>
1612 <para>
1613 Add new <command>COPY</command> option
1614 <literal>LOG_VERBOSITY</literal> which reports <literal>COPY
1615 FROM</literal> ignored error rows (Bharath Rupireddy)
1616 <ulink url="&commit_baseurl;f5a227895">&sect;</ulink>
1617 </para>
1618 </listitem>
1620 <!--
1621 Author: Masahiko Sawada <msawada@postgresql.org>
1622 2024-01-25 [729439607] Add progress reporting of skipped tuples during COPY FRO
1625 <listitem>
1626 <para>
1627 Allow <literal>COPY FROM</literal> to report the number of skipped
1628 rows during processing (Atsushi Torikoshi)
1629 <ulink url="&commit_baseurl;729439607">&sect;</ulink>
1630 </para>
1632 <para>
1633 This appears in system view column <link
1634 linkend="copy-progress-reporting"><structname>pg_stat_progress_copy</structname>.<structfield>tuples_skipped</structfield></link>.
1635 </para>
1636 </listitem>
1638 <!--
1639 Author: Andrew Dunstan <andrew@dunslane.net>
1640 2023-09-30 [f6d4c9cf1] Provide FORCE_NULL * and FORCE_NOT_NULL * options for CO
1643 <listitem>
1644 <para>
1645 In <literal>COPY FROM</literal>, allow easy specification that all
1646 columns should be forced null or not null (Zhang Mingli)
1647 <ulink url="&commit_baseurl;f6d4c9cf1">&sect;</ulink>
1648 </para>
1649 </listitem>
1651 <!--
1652 Author: Peter Eisentraut <peter@eisentraut.org>
1653 2024-01-16 [699586315] Support identity columns in partitioned tables
1656 <listitem>
1657 <para>
1658 Allow partitioned tables to have identity columns (Ashutosh Bapat)
1659 <ulink url="&commit_baseurl;699586315">&sect;</ulink>
1660 </para>
1661 </listitem>
1663 <!--
1664 Author: Peter Eisentraut <peter@eisentraut.org>
1665 2023-07-12 [8c852ba9a] Allow some exclusion constraints on partitions
1668 <listitem>
1669 <para>
1670 Allow <link linkend="ddl-constraints-exclusion">exclusion
1671 constraints</link> on partitioned tables (Paul A. Jungwirth)
1672 <ulink url="&commit_baseurl;8c852ba9a">&sect;</ulink>
1673 </para>
1675 <para>
1676 As long as exclusion constraints compare partition key columns
1677 for equality, other columns can use exclusion constraint-specific
1678 comparisons.
1679 </para>
1680 </listitem>
1682 <!--
1683 Author: Peter Eisentraut <peter@eisentraut.org>
1684 2024-01-13 [4f622503d] Make attstattarget nullable
1687 <listitem>
1688 <para>
1689 Add clearer <link linkend="sql-altertable"><command>ALTER
1690 TABLE</command></link> method to set a column to the default
1691 statistics target (Peter Eisentraut)
1692 <ulink url="&commit_baseurl;4f622503d">&sect;</ulink>
1693 </para>
1695 <para>
1696 The new syntax is <literal>ALTER TABLE ... SET STATISTICS
1697 DEFAULT</literal>; using <literal>SET STATISTICS -1</literal>
1698 is still supported.
1699 </para>
1700 </listitem>
1702 <!--
1703 Author: Peter Eisentraut <peter@eisentraut.org>
1704 2024-01-04 [5d06e99a3] ALTER TABLE command to change generation expression
1707 <listitem>
1708 <para>
1709 Allow <literal>ALTER TABLE</literal> to change a column's generation
1710 expression (Amul Sul)
1711 <ulink url="&commit_baseurl;5d06e99a3">&sect;</ulink>
1712 </para>
1714 <para>
1715 The syntax is <literal>ALTER TABLE ... ALTER COLUMN ... SET
1716 EXPRESSION</literal>.
1717 </para>
1718 </listitem>
1720 <!--
1721 Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
1722 2024-03-25 [374c7a229] Allow specifying an access method for partitioned tables
1723 Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
1724 2024-03-28 [e2395cdbe] ALTER TABLE: rework determination of access method ID
1727 <listitem>
1728 <para>
1729 Allow specification of <link linkend="tableam">table access
1730 methods</link> on partitioned tables (Justin Pryzby, Soumyadeep
1731 Chakraborty, Michael Paquier)
1732 <ulink url="&commit_baseurl;374c7a229">&sect;</ulink>
1733 <ulink url="&commit_baseurl;e2395cdbe">&sect;</ulink>
1734 </para>
1735 </listitem>
1737 <!--
1738 Author: Michael Paquier <michael@paquier.xyz>
1739 2024-03-08 [d61a6cad6] Add support for DEFAULT in ALTER TABLE .. SET ACCESS MET
1742 <listitem>
1743 <para>
1744 Add <literal>DEFAULT</literal> setting for <literal>ALTER TABLE
1745 .. SET ACCESS METHOD</literal> (Michael Paquier)
1746 <ulink url="&commit_baseurl;d61a6cad6">&sect;</ulink>
1747 </para>
1748 </listitem>
1750 <!--
1751 Author: Alexander Korotkov <akorotkov@postgresql.org>
1752 2023-10-16 [e83d1b0c4] Add support event triggers on authenticated login
1755 <listitem>
1756 <para>
1757 Add support for <link linkend="sql-createeventtrigger">event
1758 triggers</link> that fire at connection time (Konstantin Knizhnik,
1759 Mikhail Gribkov)
1760 <ulink url="&commit_baseurl;e83d1b0c4">&sect;</ulink>
1761 </para>
1762 </listitem>
1764 <!--
1765 Author: Michael Paquier <michael@paquier.xyz>
1766 2023-12-04 [f21848de2] Add support for REINDEX in event triggers
1769 <listitem>
1770 <para>
1771 Add event trigger support for <link
1772 linkend="sql-reindex"><command>REINDEX</command></link> (Garrett
1773 Thornburg, Jian He)
1774 <ulink url="&commit_baseurl;f21848de2">&sect;</ulink>
1775 </para>
1776 </listitem>
1778 <!--
1779 Author: Nathan Bossart <nathan@postgresql.org>
1780 2023-07-19 [cdaedfc96] Support parenthesized syntax for CLUSTER without a table
1783 <listitem>
1784 <para>
1785 Allow parenthesized syntax for <link
1786 linkend="sql-cluster"><command>CLUSTER</command></link> options if
1787 a table name is not specified (Nathan Bossart)
1788 <ulink url="&commit_baseurl;cdaedfc96">&sect;</ulink>
1789 </para>
1790 </listitem>
1792 </itemizedlist>
1794 <sect4 id="release-17-explain">
1795 <title><link linkend="sql-explain"><command>EXPLAIN</command></link></title>
1797 <itemizedlist>
1799 <!--
1800 Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
1801 2024-01-29 [5de890e36] Add EXPLAIN (MEMORY) to report planner memory consumptio
1804 <listitem>
1805 <para>
1806 Allow <command>EXPLAIN</command> to report
1807 optimizer memory usage (Ashutosh Bapat)
1808 <ulink url="&commit_baseurl;5de890e36">&sect;</ulink>
1809 </para>
1811 <para>
1812 The option is called <literal>MEMORY</literal>.
1813 </para>
1814 </listitem>
1816 <!--
1817 Author: Tom Lane <tgl@sss.pgh.pa.us>
1818 2024-04-03 [06286709e] Invent SERIALIZE option for EXPLAIN.
1821 <listitem>
1822 <para>
1823 Add <command>EXPLAIN</command> option <literal>SERIALIZE</literal>
1824 to report the cost of converting data for network transmission
1825 (Stepan Rutz, Matthias van de Meent)
1826 <ulink url="&commit_baseurl;06286709e">&sect;</ulink>
1827 </para>
1828 </listitem>
1830 <!--
1831 Author: Michael Paquier <michael@paquier.xyz>
1832 2023-10-19 [295c36c0c] Add local_blk_{read|write}_time I/O timing statistics fo
1835 <listitem>
1836 <para>
1837 Add local I/O block read/write timing statistics to
1838 <command>EXPLAIN</command>'s <literal>BUFFERS</literal> output
1839 (Nazir Bilal Yavuz)
1840 <ulink url="&commit_baseurl;295c36c0c">&sect;</ulink>
1841 </para>
1842 </listitem>
1844 <!--
1845 Author: Tom Lane <tgl@sss.pgh.pa.us>
1846 2024-03-19 [fd0398fcb] Improve EXPLAIN's display of SubPlan nodes and output pa
1849 <listitem>
1850 <para>
1851 Improve <command>EXPLAIN</command>'s display of SubPlan nodes and
1852 output parameters (Tom Lane, Dean Rasheed)
1853 <ulink url="&commit_baseurl;fd0398fcb">&sect;</ulink>
1854 </para>
1855 </listitem>
1857 <!--
1858 Author: Daniel Gustafsson <dgustafsson@postgresql.org>
1859 2023-09-08 [5a3423ad8] Add JIT deform_counter
1862 <listitem>
1863 <para>
1864 Add <acronym>JIT</acronym> <literal>deform_counter</literal>
1865 details to <command>EXPLAIN</command> (Dmitry Dolgov)
1866 <ulink url="&commit_baseurl;5a3423ad8">&sect;</ulink>
1867 </para>
1868 </listitem>
1870 </itemizedlist>
1872 </sect4>
1874 </sect3>
1876 <sect3 id="release-17-datatypes">
1877 <title>Data Types</title>
1879 <itemizedlist>
1881 <!--
1882 Author: Dean Rasheed <dean.a.rasheed@gmail.com>
1883 2023-11-14 [519fc1bd9] Support +/- infinity in the interval data type.
1886 <listitem>
1887 <para>
1888 Allow the <type>interval</type> data type to support
1889 <literal>+/-infinity</literal> values (Joseph Koshakow, Jian He,
1890 Ashutosh Bapat)
1891 <ulink url="&commit_baseurl;519fc1bd9">&sect;</ulink>
1892 </para>
1893 </listitem>
1895 <!--
1896 Author: Tom Lane <tgl@sss.pgh.pa.us>
1897 2024-03-24 [af1d39584] Allow more cases to pass the unsafe-use-of-new-enum-valu
1900 <listitem>
1901 <para>
1902 Allow the use of an <link
1903 linkend="datatype-enum"><type>ENUM</type></link> added via <link
1904 linkend="sql-altertype"><command>ALTER TYPE</command></link> if
1905 the type was created in the same transaction (Tom Lane)
1906 <ulink url="&commit_baseurl;af1d39584">&sect;</ulink>
1907 </para>
1909 <para>
1910 This was previously disallowed.
1911 </para>
1912 </listitem>
1914 </itemizedlist>
1916 </sect3>
1918 <sect3 id="release-17-merge">
1919 <title><link linkend="sql-merge">MERGE</link></title>
1922 <itemizedlist>
1924 <!--
1925 Author: Dean Rasheed <dean.a.rasheed@gmail.com>
1926 2024-02-29 [5f2e179bd] Support MERGE into updatable views.
1929 <listitem>
1930 <para>
1931 Allow <command>MERGE</command> to modify updatable views (Dean
1932 Rasheed)
1933 <ulink url="&commit_baseurl;5f2e179bd">&sect;</ulink>
1934 </para>
1935 </listitem>
1937 <!--
1938 Author: Dean Rasheed <dean.a.rasheed@gmail.com>
1939 2024-03-30 [0294df2f1] Add support for MERGE ... WHEN NOT MATCHED BY SOURCE.
1942 <listitem>
1943 <para>
1944 Add <literal>WHEN NOT MATCHED BY SOURCE</literal> to
1945 <command>MERGE</command> (Dean Rasheed)
1946 <ulink url="&commit_baseurl;0294df2f1">&sect;</ulink>
1947 </para>
1949 <para>
1950 <literal>WHEN NOT MATCHED</literal> on target rows was already
1951 supported.
1952 </para>
1953 </listitem>
1955 <!--
1956 Author: Dean Rasheed <dean.a.rasheed@gmail.com>
1957 2024-03-17 [c649fa24a] Add RETURNING support to MERGE.
1960 <listitem>
1961 <para>
1962 Allow <command>MERGE</command> to use the
1963 <literal>RETURNING</literal> clause (Dean Rasheed)
1964 <ulink url="&commit_baseurl;c649fa24a">&sect;</ulink>
1965 </para>
1967 <para>
1968 The new <literal>RETURNING</literal> function
1969 <function>merge_action()</function> reports on the
1970 <acronym>DML</acronym> that generated the row.
1971 </para>
1972 </listitem>
1974 </itemizedlist>
1976 </sect3>
1978 <sect3 id="release-17-functions">
1979 <title>Functions</title>
1981 <itemizedlist>
1983 <!--
1984 Author: Amit Langote <amitlan@postgresql.org>
1985 2024-04-04 [de3600452] Add basic JSON_TABLE() functionality
1986 Author: Amit Langote <amitlan@postgresql.org>
1987 2024-04-08 [bb766cde6] JSON_TABLE: Add support for NESTED paths and columns
1990 <listitem>
1991 <para>
1992 Add function <link
1993 linkend="functions-sqljson-table"><function>JSON_TABLE()</function></link>
1994 to convert <type>JSON</type> data to a table representation (Nikita
1995 Glukhov, Teodor Sigaev, Oleg Bartunov, Alexander Korotkov, Andrew
1996 Dunstan, Amit Langote, Jian He)
1997 <ulink url="&commit_baseurl;de3600452">&sect;</ulink>
1998 <ulink url="&commit_baseurl;bb766cde6">&sect;</ulink>
1999 </para>
2001 <para>
2002 This function can be used in the <literal>FROM</literal> clause of
2003 <command>SELECT</command> queries as a tuple source.
2004 </para>
2005 </listitem>
2007 <!--
2008 Author: Amit Langote <amitlan@postgresql.org>
2009 2023-07-26 [03734a7fe] Add more SQL/JSON constructor functions
2012 <listitem>
2013 <para>
2014 Add <acronym>SQL/JSON</acronym> constructor functions <link
2015 linkend="functions-json-creation-table"><function>JSON()</function></link>,
2016 <function>JSON_SCALAR()</function>, and
2017 <function>JSON_SERIALIZE()</function> (Nikita Glukhov, Teodor Sigaev,
2018 Oleg Bartunov, Alexander Korotkov, Andrew Dunstan, Amit Langote)
2019 <ulink url="&commit_baseurl;03734a7fe">&sect;</ulink>
2020 </para>
2021 </listitem>
2023 <!--
2024 Author: Amit Langote <amitlan@postgresql.org>
2025 2024-01-24 [aaaf9449e] Add soft error handling to some expression nodes
2026 Author: Amit Langote <amitlan@postgresql.org>
2027 2024-01-24 [1edb3b491] Adjust populate_record_field() to handle errors softly
2028 Author: Amit Langote <amitlan@postgresql.org>
2029 2024-03-21 [6185c9737] Add SQL/JSON query functions
2030 Author: Amit Langote <amitlan@postgresql.org>
2031 2024-04-18 [c0fc07518] SQL/JSON: Fix issues with DEFAULT .. ON ERROR / EMPTY
2032 Author: Amit Langote <amitlan@postgresql.org>
2033 2024-04-18 [ef744ebb7] SQL/JSON: Miscellaneous fixes and improvements
2036 <listitem>
2037 <para>
2038 Add <acronym>SQL/JSON</acronym> query functions <link
2039 linkend="functions-sqljson-querying"><function>JSON_EXISTS()</function></link>,
2040 <function>JSON_QUERY()</function>, and
2041 <function>JSON_VALUE()</function> (Nikita Glukhov, Teodor Sigaev,
2042 Oleg Bartunov, Alexander Korotkov, Andrew Dunstan, Amit Langote,
2043 Peter Eisentraut, Jian He)
2044 <ulink url="&commit_baseurl;aaaf9449e">&sect;</ulink>
2045 <ulink url="&commit_baseurl;1edb3b491">&sect;</ulink>
2046 <ulink url="&commit_baseurl;6185c9737">&sect;</ulink>
2047 <ulink url="&commit_baseurl;c0fc07518">&sect;</ulink>
2048 <ulink url="&commit_baseurl;ef744ebb7">&sect;</ulink>
2049 </para>
2050 </listitem>
2052 <!--
2053 Author: Andrew Dunstan <andrew@dunslane.net>
2054 2024-01-25 [66ea94e8e] Implement various jsonpath methods
2057 <listitem>
2058 <para>
2059 Add <link linkend="functions-sqljson-path-operators">jsonpath</link>
2060 methods to convert <type>JSON</type> values to other
2061 <type>JSON</type> data types (Jeevan Chalke)
2062 <ulink url="&commit_baseurl;66ea94e8e">&sect;</ulink>
2063 </para>
2065 <para>
2066 The jsonpath methods are <function>.bigint()</function>,
2067 <function>.boolean()</function>, <function>.date()</function>,
2068 <function>.decimal([precision [, scale]])</function>,
2069 <function>.integer()</function>, <function>.number()</function>,
2070 <function>.string()</function>, <function>.time()</function>,
2071 <function>.time_tz()</function>, <function>.timestamp()</function>,
2072 and <function>.timestamp_tz()</function>.
2073 </para>
2074 </listitem>
2076 <!--
2077 Author: Tom Lane <tgl@sss.pgh.pa.us>
2078 2024-01-25 [8ba6fdf90] Support TZ and OF format codes in <function>to_timestamp()</function>.
2081 <listitem>
2082 <para>
2083 Add <link
2084 linkend="functions-formatting-table"><function>to_timestamp()</function></link>
2085 time zone format specifiers (Tom Lane)
2086 <ulink url="&commit_baseurl;8ba6fdf90">&sect;</ulink>
2087 </para>
2089 <para>
2090 <literal>TZ</literal> accepts time zone abbreviations or numeric
2091 offsets, while <literal>OF</literal> accepts only numeric offsets.
2092 </para>
2093 </listitem>
2095 <!--
2096 Author: Michael Paquier <michael@paquier.xyz>
2097 2023-10-13 [97957fdba] Add support for AT LOCAL
2100 <listitem>
2101 <para>
2102 Allow the session <link linkend="guc-timezone">time zone</link>
2103 to be specified by <literal>AT LOCAL</literal> (Vik Fearing)
2104 <ulink url="&commit_baseurl;97957fdba">&sect;</ulink>
2105 </para>
2107 <para>
2108 This is useful when converting adding and removing time zones from
2109 time stamps values, rather than specifying the literal session
2110 time zone.
2111 </para>
2112 </listitem>
2114 <!--
2115 Author: Peter Eisentraut <peter@eisentraut.org>
2116 2024-03-19 [794f10f6b] Add some UUID support functions
2119 <listitem>
2120 <para>
2121 Add functions <link
2122 linkend="functions-uuid"><function>uuid_extract_timestamp()</function></link>
2123 and <function>uuid_extract_version()</function> to return
2124 <acronym>UUID</acronym> information (Andrey Borodin)
2125 <ulink url="&commit_baseurl;794f10f6b">&sect;</ulink>
2126 </para>
2127 </listitem>
2129 <!--
2130 Author: Dean Rasheed <dean.a.rasheed@gmail.com>
2131 2024-03-27 [e6341323a] Add functions to generate random numbers in a specified
2134 <listitem>
2135 <para>
2136 Add functions to generate random numbers in a specified range
2137 (Dean Rasheed)
2138 <ulink url="&commit_baseurl;e6341323a">&sect;</ulink>
2139 </para>
2141 <para>
2142 The functions are <link
2143 linkend="functions-math-random-table"><function>random(min,
2144 max)</function></link> and they take values of type
2145 <type>integer</type>, <type>bigint</type>, and <type>numeric</type>.
2146 </para>
2147 </listitem>
2149 <!--
2150 Author: Nathan Bossart <nathan@postgresql.org>
2151 2023-08-23 [260a1f18d] Add to_bin() and to_oct().
2154 <listitem>
2155 <para>
2156 Add functions to convert integers to binary and octal strings
2157 (Eric Radman, Nathan Bossart)
2158 <ulink url="&commit_baseurl;260a1f18d">&sect;</ulink>
2159 </para>
2161 <para>
2162 The functions are <link
2163 linkend="functions-string-other"><function>to_bin()</function></link>
2164 and <function>to_oct()</function>.
2165 </para>
2166 </listitem>
2168 <!--
2169 Author: Jeff Davis <jdavis@postgresql.org>
2170 2023-11-01 [a02b37fc0] Additional unicode primitive functions.
2173 <listitem>
2174 <para>
2175 Add Unicode informational functions (Jeff Davis)
2176 <ulink url="&commit_baseurl;a02b37fc0">&sect;</ulink>
2177 </para>
2179 <para>
2180 Function <link
2181 linkend="functions-info-version"><function>unicode_version()</function></link>
2182 returns the Unicode version,
2183 <function>icu_unicode_version()</function>
2184 returns the <acronym>ICU</acronym> version, and
2185 <function>unicode_assigned()</function> returns if the characters
2186 are assigned Unicode codepoints.
2187 </para>
2188 </listitem>
2190 <!--
2191 Author: Daniel Gustafsson <dgustafsson@postgresql.org>
2192 2023-11-06 [526fe0d79] Add XMLText function (SQL/XML X038)
2195 <listitem>
2196 <para>
2197 Add function <link
2198 linkend="functions-producing-xml-xmltext"><function>xmltext()</function></link>
2199 to convert text to a single <type>XML</type> text node (Jim Jones)
2200 <ulink url="&commit_baseurl;526fe0d79">&sect;</ulink>
2201 </para>
2202 </listitem>
2204 <!--
2205 Author: Tom Lane <tgl@sss.pgh.pa.us>
2206 2024-03-20 [1218ca995] Add to_regtypemod function to extract typemod from a str
2209 <listitem>
2210 <para>
2211 Add function <link
2212 linkend="functions-info-catalog-table"><function>to_regtypemod()</function></link>
2213 to return the type modifier of a type specification (David Wheeler,
2214 Erik Wienhold)
2215 <ulink url="&commit_baseurl;1218ca995">&sect;</ulink>
2216 </para>
2217 </listitem>
2219 <!--
2220 Author: Tom Lane <tgl@sss.pgh.pa.us>
2221 2024-03-30 [b154d8a6d] Add pg_basetype() function to extract a domain's base ty
2224 <listitem>
2225 <para>
2226 Add <link
2227 linkend="functions-info-catalog-table"><function>pg_basetype()</function></link>
2228 function to return a domain's base type (Steve Chavez)
2229 <ulink url="&commit_baseurl;b154d8a6d">&sect;</ulink>
2230 </para>
2231 </listitem>
2233 <!--
2234 Author: Nathan Bossart <nathan@postgresql.org>
2235 2024-03-14 [d1162cfda] Add pg_column_toast_chunk_id().
2238 <listitem>
2239 <para>
2240 Add function <link
2241 linkend="functions-admin-dbsize"><function>pg_column_toast_chunk_id()</function></link>
2242 to return a value's <link
2243 linkend="storage-toast"><acronym>TOAST</acronym></link> identifier
2244 (Yugo Nagata)
2245 <ulink url="&commit_baseurl;d1162cfda">&sect;</ulink>
2246 </para>
2248 <para>
2249 This returns <literal>NULL</literal> if the value is not stored
2250 in <acronym>TOAST</acronym>.
2251 </para>
2252 </listitem>
2254 </itemizedlist>
2256 </sect3>
2258 <sect3 id="release-17-plpgsql">
2259 <title><link linkend="plpgsql">PL/pgSQL</link></title>
2261 <itemizedlist>
2263 <!--
2264 Author: Tom Lane <tgl@sss.pgh.pa.us>
2265 2024-01-04 [5e8674dc8] In plpgsql, allow %TYPE and %ROWTYPE to be followed by a
2268 <listitem>
2269 <para>
2270 Allow plpgsql <link
2271 linkend="plpgsql-declaration-type"><literal>%TYPE</literal></link>
2272 and <literal>%ROWTYPE</literal> specifications to represent arrays
2273 of non-array types (Quan Zongliang, Pavel Stehule)
2274 <ulink url="&commit_baseurl;5e8674dc8">&sect;</ulink>
2275 </para>
2276 </listitem>
2278 <!--
2279 Author: Tom Lane <tgl@sss.pgh.pa.us>
2280 2024-01-05 [43b46aae1] Clean up some edge cases in plpgsql's %TYPE parsing.
2283 <listitem>
2284 <para>
2285 Allow plpgsql <literal>%TYPE</literal> specification to reference
2286 composite column (Tom Lane)
2287 <ulink url="&commit_baseurl;43b46aae1">&sect;</ulink>
2288 </para>
2289 </listitem>
2291 </itemizedlist>
2293 </sect3>
2295 <sect3 id="release-17-libpq">
2296 <title><link linkend="libpq">libpq</link></title>
2298 <itemizedlist>
2300 <!--
2301 Author: Joe Conway <mail@joeconway.com>
2302 2024-01-09 [a7be2a6c2] Add new function, PQchangePassword(), to libpq
2305 <listitem>
2306 <para>
2307 Add libpq function to change role passwords (Joe Conway)
2308 <ulink url="&commit_baseurl;a7be2a6c2">&sect;</ulink>
2309 </para>
2311 <para>
2312 The new function, <link
2313 linkend="libpq-PQchangePassword"><function>PQchangePassword()</function></link>,
2314 hashes the new password before sending it to the server.
2315 </para>
2316 </listitem>
2318 <!--
2319 Author: Michael Paquier <michael@paquier.xyz>
2320 2023-07-04 [28b572656] libpq: Add support for Close on portals and statements
2323 <listitem>
2324 <para>
2325 Add libpq functions to close portals and prepared statements
2326 (Jelte Fennema-Nio)
2327 <ulink url="&commit_baseurl;28b572656">&sect;</ulink>
2328 </para>
2330 <para>
2331 The functions are <link
2332 linkend="libpq-PQclosePrepared"><function>PQclosePrepared()</function></link>,
2333 <link
2334 linkend="libpq-PQclosePortal"><function>PQclosePortal()</function></link>,
2335 <link
2336 linkend="libpq-PQsendClosePrepared"><function>PQsendClosePrepared()</function></link>,
2337 and <link
2338 linkend="libpq-PQsendClosePortal"><function>PQsendClosePortal()</function></link>.
2339 </para>
2340 </listitem>
2342 <!--
2343 Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
2344 2024-03-12 [61461a300] libpq: Add encrypted and non-blocking query cancellation
2347 <listitem>
2348 <para>
2349 Add libpq <acronym>API</acronym> which allows for blocking and
2350 non-blocking <link linkend="libpq-cancel">cancel requests</link>,
2351 with encryption if already in use (Jelte Fennema-Nio)
2352 <ulink url="&commit_baseurl;61461a300">&sect;</ulink>
2353 </para>
2355 <para>
2356 Previously only blocking, unencrypted cancel requests were supported.
2357 </para>
2358 </listitem>
2360 <!--
2361 Author: Robert Haas <rhaas@postgresql.org>
2362 2024-04-02 [f5e4dedfa] Expose PQsocketPoll via libpq
2363 Author: Tom Lane <tgl@sss.pgh.pa.us>
2364 2024-06-13 [105024a47] Improve the granularity of PQsocketPoll's timeout parame
2367 <listitem>
2368 <para>
2369 Add libpq function <link
2370 linkend="libpq-PQsocketPoll"><function>PQsocketPoll()</function></link>
2371 to allow polling of network sockets (Tristan Partin, Tom Lane)
2372 <ulink url="&commit_baseurl;f5e4dedfa">&sect;</ulink>
2373 <ulink url="&commit_baseurl;105024a47">&sect;</ulink>
2374 </para>
2375 </listitem>
2377 <!--
2378 Author: Michael Paquier <michael@paquier.xyz>
2379 2024-01-16 [4794c2d31] libpq: Add PQsendPipelineSync()
2382 <listitem>
2383 <para>
2384 Add libpq function <link
2385 linkend="libpq-PQsendPipelineSync"><function>PQsendPipelineSync()</function></link>
2386 to send a pipeline synchronization point (Anton Kirilov)
2387 <ulink url="&commit_baseurl;4794c2d31">&sect;</ulink>
2388 </para>
2390 <para>
2391 This is similar to <link
2392 linkend="libpq-PQpipelineSync"><function>PQpipelineSync()</function></link>
2393 but it does not flush to the server unless the size threshold of
2394 the output buffer is reached.
2395 </para>
2396 </listitem>
2398 <!--
2399 Author: Tom Lane <tgl@sss.pgh.pa.us>
2400 2024-04-06 [4643a2b26] Support retrieval of results in chunks with libpq.
2403 <listitem>
2404 <para>
2405 Add libpq function <link
2406 linkend="libpq-PQsetChunkedRowsMode"><function>PQsetChunkedRowsMode()</function></link>
2407 to allow retrieval of results in chunks (Daniel V&eacute;rit&eacute;)
2408 <ulink url="&commit_baseurl;4643a2b26">&sect;</ulink>
2409 </para>
2410 </listitem>
2412 <!--
2413 Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
2414 2024-04-08 [d39a49c1e] Support TLS handshake directly without SSLRequest negoti
2415 Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
2416 2024-04-08 [91044ae4b] Send ALPN in TLS handshake, require it in direct SSL con
2417 Author: Daniel Gustafsson <dgustafsson@postgresql.org>
2418 2024-04-24 [44e27f0a6] Support disallowing SSL renegotiation when using LibreSS
2419 Author: Daniel Gustafsson <dgustafsson@postgresql.org>
2420 2024-04-24 [d80f2ce29] Support SSL_R_VERSION_TOO_LOW when using LibreSSL
2421 Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
2422 2024-04-29 [03a0e0d4b] libpq: Enforce ALPN in direct SSL connections
2423 Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
2424 2024-04-29 [17a834a04] Reject SSL connection if ALPN is used but there's no com
2425 Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
2426 2024-05-11 [407e0b023] Change ALPN protocol ID to IANA-approved "postgresql"
2427 Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
2428 2024-05-16 [fb5718f35] Remove option to fall back from direct to postgres SSL n
2431 <listitem>
2432 <para>
2433 Allow <acronym>TLS</acronym> connections without requiring a
2434 network round-trip negotiation (Greg Stark, Heikki Linnakangas,
2435 Peter Eisentraut, Michael Paquier, Daniel Gustafsson)
2436 <ulink url="&commit_baseurl;d39a49c1e">&sect;</ulink>
2437 <ulink url="&commit_baseurl;91044ae4b">&sect;</ulink>
2438 <ulink url="&commit_baseurl;44e27f0a6">&sect;</ulink>
2439 <ulink url="&commit_baseurl;d80f2ce29">&sect;</ulink>
2440 <ulink url="&commit_baseurl;03a0e0d4b">&sect;</ulink>
2441 <ulink url="&commit_baseurl;17a834a04">&sect;</ulink>
2442 <ulink url="&commit_baseurl;407e0b023">&sect;</ulink>
2443 <ulink url="&commit_baseurl;fb5718f35">&sect;</ulink>
2444 </para>
2446 <para>
2447 This is enabled with the client-side option <link
2448 linkend="libpq-connect-sslnegotiation"><literal>sslnegotiation=direct</literal></link>,
2449 requires <acronym>ALPN</acronym>, and only works on
2450 <productname>PostgreSQL</productname> 17 and later servers.
2451 </para>
2452 </listitem>
2454 </itemizedlist>
2456 </sect3>
2458 <sect3 id="release-17-psql">
2459 <title><xref linkend="app-psql"/></title>
2461 <itemizedlist>
2463 <!--
2464 Author: Tom Lane <tgl@sss.pgh.pa.us>
2465 2023-11-13 [d1379ebf4] Improve default and empty privilege outputs in psql.
2468 <listitem>
2469 <para>
2470 Improve <application>psql</application> display of default and
2471 empty privileges (Erik Wienhold, Laurenz Albe)
2472 <ulink url="&commit_baseurl;d1379ebf4">&sect;</ulink>
2473 </para>
2475 <para>
2476 Command <literal>\dp</literal> now displays <literal>(none)</literal>
2477 for empty privileges; default still displays as empty.
2478 </para>
2479 </listitem>
2481 <!--
2482 Author: Tom Lane <tgl@sss.pgh.pa.us>
2483 2023-11-13 [d1379ebf4] Improve default and empty privilege outputs in psql.
2486 <listitem>
2487 <para>
2488 Have backslash commands honor <literal>\pset null</literal> (Erik
2489 Wienhold, Laurenz Albe)
2490 <ulink url="&commit_baseurl;d1379ebf4">&sect;</ulink>
2491 </para>
2493 <para>
2494 Previously <literal>\pset null</literal> was ignored.
2495 </para>
2496 </listitem>
2498 <!--
2499 Author: Daniel Gustafsson <dgustafsson@postgresql.org>
2500 2023-08-29 [f347ec76e] Allow \watch queries to stop on minimum rows returned
2503 <listitem>
2504 <para>
2505 Allow <application>psql</application>'s <literal>\watch</literal>
2506 to stop after a minimum number of rows returned (Greg Sabino Mullane)
2507 <ulink url="&commit_baseurl;f347ec76e">&sect;</ulink>
2508 </para>
2510 <para>
2511 The parameter is <literal>min_rows</literal>.
2512 </para>
2513 </listitem>
2515 <!--
2516 Author: Robert Haas <rhaas@postgresql.org>
2517 2024-04-02 [cafe10565] Allow SIGINT to cancel psql database reconnections.
2520 <listitem>
2521 <para>
2522 Allow <application>psql</application> connection attempts to be
2523 canceled with control-C (Tristan Partin)
2524 <ulink url="&commit_baseurl;cafe10565">&sect;</ulink>
2525 </para>
2526 </listitem>
2528 <!--
2529 Author: Tom Lane <tgl@sss.pgh.pa.us>
2530 2024-04-06 [90f517821] Re-implement psql's FETCH_COUNT feature atop libpq's chu
2533 <listitem>
2534 <para>
2535 Allow <application>psql</application> to honor
2536 <literal>FETCH_COUNT</literal> for non-<command>SELECT</command>
2537 queries (Daniel V&eacute;rit&eacute;)
2538 <ulink url="&commit_baseurl;90f517821">&sect;</ulink>
2539 </para>
2540 </listitem>
2542 <!--
2543 Author: Michael Paquier <michael@paquier.xyz>
2544 2023-06-30 [c951e9042] Add tab completion for CREATE SCHEMA in psql
2545 Author: Michael Paquier <michael@paquier.xyz>
2546 2023-10-13 [d16eb83ab] psql: Add completion support for AT [ LOCAL | TIME ZONE
2547 Author: Dean Rasheed <dean.a.rasheed@gmail.com>
2548 2023-11-28 [cd3424748] psql: Add tab completion for view options.
2549 Author: Michael Paquier <michael@paquier.xyz>
2550 2023-11-16 [816f10564] psql: Add some completion support for CREATE TABLE .. AS
2551 Author: Alexander Korotkov <akorotkov@postgresql.org>
2552 2024-03-16 [927332b95] psql: fix variable existence tab completion
2553 Author: Masahiko Sawada <msawada@postgresql.org>
2554 2024-03-28 [f1bb9284f] Improve tab completion for ALTER TABLE ALTER COLUMN SET
2555 Author: Masahiko Sawada <msawada@postgresql.org>
2556 2024-04-08 [304b6b1a6] Add more tab completion support for ALTER DEFAULT PRIVIL
2557 Author: Michael Paquier <michael@paquier.xyz>
2558 2024-05-01 [2800fbb2b] Add tab completion for EXPLAIN (MEMORY|SERIALIZE)
2561 <listitem>
2562 <para>
2563 Improve <application>psql</application> tab completion (Dagfinn
2564 Ilmari Manns&aring;ker, Gilles Darold, Christoph Heiss, Steve Chavez,
2565 Vignesh C, Pavel Borisov, Jian He)
2566 <ulink url="&commit_baseurl;c951e9042">&sect;</ulink>
2567 <ulink url="&commit_baseurl;d16eb83ab">&sect;</ulink>
2568 <ulink url="&commit_baseurl;cd3424748">&sect;</ulink>
2569 <ulink url="&commit_baseurl;816f10564">&sect;</ulink>
2570 <ulink url="&commit_baseurl;927332b95">&sect;</ulink>
2571 <ulink url="&commit_baseurl;f1bb9284f">&sect;</ulink>
2572 <ulink url="&commit_baseurl;304b6b1a6">&sect;</ulink>
2573 <ulink url="&commit_baseurl;2800fbb2b">&sect;</ulink>
2574 </para>
2575 </listitem>
2577 </itemizedlist>
2579 </sect3>
2581 <sect3 id="release-17-server-apps">
2582 <title>Server Applications</title>
2584 <itemizedlist>
2586 <!--
2587 Author: Robert Haas <rhaas@postgresql.org>
2588 2024-01-11 [ee1bfd168] Add new pg_walsummary tool.
2591 <listitem>
2592 <para>
2593 Add application <link
2594 linkend="app-pgwalsummary"><application>pg_walsummary</application></link>
2595 to dump <acronym>WAL</acronym> summary files (Robert Haas)
2596 <ulink url="&commit_baseurl;ee1bfd168">&sect;</ulink>
2597 </para>
2598 </listitem>
2600 <!--
2601 Author: Tom Lane <tgl@sss.pgh.pa.us>
2602 2024-04-01 [a45c78e32] Rearrange pg_dump's handling of large objects for better
2605 <listitem>
2606 <para>
2607 Allow <link
2608 linkend="app-pgdump"><application>pg_dump</application></link>'s
2609 large objects to be restorable in batches (Tom Lane)
2610 <ulink url="&commit_baseurl;a45c78e32">&sect;</ulink>
2611 </para>
2613 <para>
2614 This allows the restoration of many large objects to avoid
2615 transaction limits and to be restored in parallel.
2616 </para>
2617 </listitem>
2619 <!--
2620 Author: Dean Rasheed <dean.a.rasheed@gmail.com>
2621 2024-03-20 [522ed12f7] Add "- -exclude-extension" to pg_dump's options.
2624 <listitem>
2625 <para>
2626 Add <application>pg_dump</application> option
2627 <option>--exclude-extension</option> (Ayush Vatsa)
2628 <ulink url="&commit_baseurl;522ed12f7">&sect;</ulink>
2629 </para>
2630 </listitem>
2632 <!--
2633 Author: Daniel Gustafsson <dgustafsson@postgresql.org>
2634 2023-11-29 [a5cf808be] Read include/exclude commands for dump/restore from file
2637 <listitem>
2638 <para>
2639 Allow <link
2640 linkend="app-pgdump"><application>pg_dump</application></link>, <link
2641 linkend="app-pg-dumpall"><application>pg_dumpall</application></link>,
2642 and <link
2643 linkend="app-pgrestore"><application>pg_restore</application></link>
2644 to specify include/exclude objects in a file (Pavel Stehule,
2645 Daniel Gustafsson)
2646 <ulink url="&commit_baseurl;a5cf808be">&sect;</ulink>
2647 </para>
2649 <para>
2650 The option is called <option>--filter</option>.
2651 </para>
2652 </listitem>
2654 <!--
2655 Author: Nathan Bossart <nathan@postgresql.org>
2656 2023-09-06 [8c16ad3b4] Allow using syncfs() in frontend utilities.
2659 <listitem>
2660 <para>
2661 Add the <option>--sync-method</option> parameter to several client
2662 applications (Justin Pryzby, Nathan Bossart)
2663 <ulink url="&commit_baseurl;8c16ad3b4">&sect;</ulink>
2664 </para>
2666 <para>
2667 The applications are <link
2668 linkend="app-initdb"><application>initdb</application></link>, <link
2669 linkend="app-pgbasebackup"><application>pg_basebackup</application></link>,
2670 <link
2671 linkend="app-pgchecksums"><application>pg_checksums</application></link>,
2672 <link linkend="app-pgdump"><application>pg_dump</application></link>,
2673 <link linkend="app-pgrewind"><application>pg_rewind</application></link>,
2674 and <link
2675 linkend="pgupgrade"><application>pg_upgrade</application></link>.
2676 </para>
2677 </listitem>
2679 <!--
2680 Author: Tom Lane <tgl@sss.pgh.pa.us>
2681 2024-04-01 [959b38d77] Invent - -transaction-size option for pg_restore.
2684 <listitem>
2685 <para>
2686 Add <link
2687 linkend="app-pgrestore"><application>pg_restore</application></link>
2688 option <option>--transaction-size</option> to allow object restores
2689 in transaction batches (Tom Lane)
2690 <ulink url="&commit_baseurl;959b38d77">&sect;</ulink>
2691 </para>
2693 <para>
2694 This allows the performance benefits of transaction batches without
2695 the problems of excessively large transaction blocks.
2696 </para>
2697 </listitem>
2699 <!--
2700 Author: Nathan Bossart <nathan@postgresql.org>
2701 2024-03-25 [3ff01b2b6] Adjust pgbench option for debug mode.
2704 <listitem>
2705 <para>
2706 Change <link
2707 linkend="pgbench"><application>pgbench</application></link> debug
2708 mode option from <option>-d</option> to <option>--debug</option>
2709 (Greg Sabino Mullane)
2710 <ulink url="&commit_baseurl;3ff01b2b6">&sect;</ulink>
2711 </para>
2713 <para>
2714 Option <option>-d</option> is now used for the database name,
2715 and the new <option>--dbname</option> option can be used as well.
2716 </para>
2717 </listitem>
2719 <!--
2720 Author: Tatsuo Ishii <ishii@postgresql.org>
2721 2023-08-30 [3c662643c] Allow pgbench to exit immediately when any client is abo
2724 <listitem>
2725 <para>
2726 Add pgbench option <option>--exit-on-abort</option> to exit after
2727 any client aborts (Yugo Nagata)
2728 <ulink url="&commit_baseurl;3c662643c">&sect;</ulink>
2729 </para>
2730 </listitem>
2732 <!--
2733 Author: Michael Paquier <michael@paquier.xyz>
2734 2024-01-24 [94edfe250] pgbench: Add \syncpipeline
2737 <listitem>
2738 <para>
2739 Add pgbench command <literal>\syncpipeline</literal> to allow
2740 sending of sync messages (Anthonin Bonnefoy)
2741 <ulink url="&commit_baseurl;94edfe250">&sect;</ulink>
2742 </para>
2743 </listitem>
2745 <!--
2746 Author: Michael Paquier <michael@paquier.xyz>
2747 2023-07-19 [3f8c98d0b] pg_archivecleanup: Add - -clean-backup-history
2750 <listitem>
2751 <para>
2752 Allow <link
2753 linkend="pgarchivecleanup"><application>pg_archivecleanup</application></link>
2754 to remove backup history files (Atsushi Torikoshi)
2755 <ulink url="&commit_baseurl;3f8c98d0b">&sect;</ulink>
2756 </para>
2758 <para>
2759 The option is <option>--clean-backup-history</option>.
2760 </para>
2761 </listitem>
2763 <!--
2764 Author: Michael Paquier <michael@paquier.xyz>
2765 2023-06-30 [dd7c60f19] Introduce long options in pg_archivecleanup
2768 <listitem>
2769 <para>
2770 Add some long options to <application>pg_archivecleanup</application>
2771 (Atsushi Torikoshi)
2772 <ulink url="&commit_baseurl;dd7c60f19">&sect;</ulink>
2773 </para>
2775 <para>
2776 The long options are <option>--debug</option>,
2777 <option>--dry-run</option>, and <option>--strip-extension</option>.
2778 </para>
2779 </listitem>
2781 <!--
2782 Author: Daniel Gustafsson <dgustafsson@postgresql.org>
2783 2023-09-21 [cca97ce6a] Allow dbname in pg_basebackup/pg_receivewal connstring
2786 <listitem>
2787 <para>
2788 Allow <link
2789 linkend="app-pgbasebackup"><application>pg_basebackup</application></link>
2790 and <link
2791 linkend="app-pgreceivewal"><application>pg_receivewal</application></link>
2792 to use dbname in their connection specification (Jelte Fennema-Nio)
2793 <ulink url="&commit_baseurl;cca97ce6a">&sect;</ulink>
2794 </para>
2796 <para>
2797 This is useful for connection poolers that are sensitive to the
2798 database name.
2799 </para>
2800 </listitem>
2802 <!--
2803 Author: Thomas Munro <tmunro@postgresql.org>
2804 2024-03-06 [d93627bcb] Add - -copy-file-range option to pg_upgrade.
2807 <listitem>
2808 <para>
2809 Add <link
2810 linkend="pgupgrade"><application>pg_upgrade</application></link>
2811 option <option>--copy-file-range</option> (Thomas Munro)
2812 <ulink url="&commit_baseurl;d93627bcb">&sect;</ulink>
2813 </para>
2815 <para>
2816 This is supported on <systemitem class="osname">Linux</systemitem>
2817 and <systemitem class="osname">FreeBSD</systemitem>.
2818 </para>
2819 </listitem>
2821 <!--
2822 Author: Alexander Korotkov <akorotkov@postgresql.org>
2823 2024-03-25 [47f99a407] reindexdb: Add the index-level REINDEX with multiple job
2826 <listitem>
2827 <para>
2828 Allow <link
2829 linkend="app-reindexdb"><application>reindexdb</application></link>
2830 <option>--index</option> to process indexes from different tables
2831 in parallel (Maxim Orlov, Svetlana Derevyanko, Alexander Korotkov)
2832 <ulink url="&commit_baseurl;47f99a407">&sect;</ulink>
2833 </para>
2834 </listitem>
2836 <!--
2837 Author: Nathan Bossart <nathan@postgresql.org>
2838 2024-03-11 [24c928ad9] reindexdb: Allow specifying objects to process in all da
2839 Author: Nathan Bossart <nathan@postgresql.org>
2840 2024-03-11 [648928c79] vacuumdb: Allow specifying objects to process in all dat
2841 Author: Nathan Bossart <nathan@postgresql.org>
2842 2024-03-11 [1b49d56d3] clusterdb: Allow specifying tables to process in all dat
2845 <listitem>
2846 <para>
2847 Allow <link linkend="app-reindexdb">reindexdb</link>,
2848 <link linkend="app-vacuumdb">vacuumdb</link>, and <link
2849 linkend="app-clusterdb">clusterdb</link> to process objects in all
2850 databases matching a pattern (Nathan Bossart)
2851 <ulink url="&commit_baseurl;24c928ad9">&sect;</ulink>
2852 <ulink url="&commit_baseurl;648928c79">&sect;</ulink>
2853 <ulink url="&commit_baseurl;1b49d56d3">&sect;</ulink>
2854 </para>
2856 <para>
2857 The new option <option>--all</option> controls this behavior.
2858 </para>
2859 </listitem>
2861 </itemizedlist>
2863 </sect3>
2865 <sect3 id="release-17-source-code">
2866 <title>Source Code</title>
2868 <itemizedlist>
2870 <!--
2871 Author: Michael Paquier <michael@paquier.xyz>
2872 2023-07-03 [8e278b657] Remove support for OpenSSL 1.0.1
2875 <listitem>
2876 <para>
2877 Remove support for <productname>OpenSSL</productname> 1.0.1
2878 (Michael Paquier)
2879 <ulink url="&commit_baseurl;8e278b657">&sect;</ulink>
2880 </para>
2881 </listitem>
2883 <!--
2884 Author: Peter Eisentraut <peter@eisentraut.org>
2885 2023-11-17 [284cbaea7] Allow tests to pass in OpenSSL FIPS mode (TAP tests)
2886 Author: Peter Eisentraut <peter@eisentraut.org>
2887 2023-11-17 [3c44e7d8d] Allow tests to pass in OpenSSL FIPS mode (rest)
2890 <listitem>
2891 <para>
2892 Allow tests to pass in <productname>OpenSSL</productname>
2893 <acronym>FIPS</acronym> mode (Peter Eisentraut)
2894 <ulink url="&commit_baseurl;284cbaea7">&sect;</ulink>
2895 <ulink url="&commit_baseurl;3c44e7d8d">&sect;</ulink>
2896 </para>
2897 </listitem>
2899 <!--
2900 Author: Nathan Bossart <nathan@postgresql.org>
2901 2024-04-06 [792752af4] Optimize pg_popcount() with AVX-512 instructions.
2902 Author: Nathan Bossart <nathan@postgresql.org>
2903 2024-04-06 [41c51f0c6] Optimize visibilitymap_count() with AVX-512 instructions
2906 <listitem>
2907 <para>
2908 Use <acronym>CPU AVX</acronym>-512 instructions for bit counting
2909 (Paul Amonson, Nathan Bossart, Ants Aasma)
2910 <ulink url="&commit_baseurl;792752af4">&sect;</ulink>
2911 <ulink url="&commit_baseurl;41c51f0c6">&sect;</ulink>
2912 </para>
2913 </listitem>
2915 <!--
2916 Author: Thomas Munro <tmunro@postgresql.org>
2917 2024-01-25 [820b5af73] jit: Require at least LLVM 10.
2920 <listitem>
2921 <para>
2922 Require <productname><acronym>LLVM</acronym></productname> version
2923 10 or later (Thomas Munro)
2924 <ulink url="&commit_baseurl;820b5af73">&sect;</ulink>
2925 </para>
2926 </listitem>
2928 <!--
2929 Author: John Naylor <john.naylor@postgresql.org>
2930 2023-08-10 [4d14ccd6a] Use native CRC instructions on 64-bit LoongArch
2933 <listitem>
2934 <para>
2935 Use native <acronym>CRC</acronym> instructions on 64-bit
2936 <productname>LoongArch</productname> CPUs (Xudong Yang)
2937 <ulink url="&commit_baseurl;4d14ccd6a">&sect;</ulink>
2938 </para>
2939 </listitem>
2941 <!--
2942 Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
2943 2024-02-28 [0b16bb877] Remove AIX support
2946 <listitem>
2947 <para>
2948 Remove <systemitem class="osname"><acronym>AIX</acronym></systemitem>
2949 support (Heikki Linnakangas)
2950 <ulink url="&commit_baseurl;0b16bb877">&sect;</ulink>
2951 </para>
2952 </listitem>
2954 <!--
2955 Author: Michael Paquier <michael@paquier.xyz>
2956 2023-12-20 [1301c80b2] Remove MSVC scripts
2959 <listitem>
2960 <para>
2961 Remove the <productname>Microsoft Visual
2962 Studio</productname>-specific <productname>PostgreSQL</productname>
2963 build option (Michael Paquier)
2964 <ulink url="&commit_baseurl;1301c80b2">&sect;</ulink>
2965 </para>
2967 <para>
2968 <productname>Meson</productname> is now the only available method
2969 for <productname>Visual Studio</productname> builds.
2970 </para>
2971 </listitem>
2973 <!--
2974 Author: Thomas Munro <tmunro@postgresql.org>
2975 2023-07-12 [68a4b58ec] Remove - -disable-thread-safety and related code.
2976 Author: Thomas Munro <tmunro@postgresql.org>
2977 2023-07-12 [ce0b0fa3e] Doc: Adjust libpq docs about thread safety.
2980 <listitem>
2981 <para>
2982 Remove configure option <option>--disable-thread-safety</option>
2983 (Thomas Munro, Heikki Linnakangas)
2984 <ulink url="&commit_baseurl;68a4b58ec">&sect;</ulink>
2985 <ulink url="&commit_baseurl;ce0b0fa3e">&sect;</ulink>
2986 </para>
2988 <para>
2989 We now assume all supported platforms have sufficient thread support.
2990 </para>
2991 </listitem>
2993 <!--
2994 Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
2995 2024-02-28 [1c1eec0f2] Remove configure - -with-CC option
2998 <listitem>
2999 <para>
3000 Remove <application>configure</application> option
3001 <option>--with-CC</option> (Heikki Linnakangas)
3002 <ulink url="&commit_baseurl;1c1eec0f2">&sect;</ulink>
3003 </para>
3005 <para>
3006 Setting the <envar>CC</envar> environment variable is now the only
3007 supported method for specifying the compiler.
3008 </para>
3009 </listitem>
3011 <!--
3012 Author: David Rowley <drowley@postgresql.org>
3013 2023-10-26 [f0efa5aec] Introduce the concept of read-only StringInfos
3016 <listitem>
3017 <para>
3018 User-defined data type receive functions will no longer receive
3019 their data null-terminated (David Rowley)
3020 <ulink url="&commit_baseurl;f0efa5aec">&sect;</ulink>
3021 </para>
3022 </listitem>
3024 <!--
3025 Author: Andrew Dunstan <andrew@dunslane.net>
3026 2024-04-04 [3311ea86e] Introduce a non-recursive JSON parser
3029 <listitem>
3030 <para>
3031 Add incremental <type>JSON</type> parser for use with huge
3032 <type>JSON</type> documents (Andrew Dunstan)
3033 <ulink url="&commit_baseurl;3311ea86e">&sect;</ulink>
3034 </para>
3035 </listitem>
3037 <!--
3038 Author: Nathan Bossart <nathan@postgresql.org>
3039 2024-02-28 [363eb0599] Convert README to Markdown.
3042 <listitem>
3043 <para>
3044 Convert top-level <filename>README</filename> file to
3045 <productname>Markdown</productname> (Nathan Bossart)
3046 <ulink url="&commit_baseurl;363eb0599">&sect;</ulink>
3047 </para>
3048 </listitem>
3050 <!--
3051 Author: Tom Lane <tgl@sss.pgh.pa.us>
3052 2023-12-22 [e2b73f4a4] Stop generating plain-text INSTALL instructions.
3055 <listitem>
3056 <para>
3057 Remove no longer needed top-level <filename>INSTALL</filename> file
3058 (Tom Lane)
3059 <ulink url="&commit_baseurl;e2b73f4a4">&sect;</ulink>
3060 </para>
3061 </listitem>
3063 <!--
3064 Author: Peter Eisentraut <peter@eisentraut.org>
3065 2023-11-06 [721856ff2] Remove distprep
3068 <listitem>
3069 <para>
3070 Remove <application>make</application>'s <literal>distprep</literal>
3071 option (Peter Eisentraut)
3072 <ulink url="&commit_baseurl;721856ff2">&sect;</ulink>
3073 </para>
3074 </listitem>
3076 <!--
3077 Author: Peter Eisentraut <peter@eisentraut.org>
3078 2024-01-23 [79b03dbb3] Support shared libraries on Android (using make)
3081 <listitem>
3082 <para>
3083 Add <application>make</application> support for
3084 <productname>Android</productname> shared libraries (Peter
3085 Eisentraut)
3086 <ulink url="&commit_baseurl;79b03dbb3">&sect;</ulink>
3087 </para>
3088 </listitem>
3090 <!--
3091 Author: Michael Paquier <michael@paquier.xyz>
3092 2024-01-22 [d86d20f0b] Add backend support for injection points
3093 Author: Michael Paquier <michael@paquier.xyz>
3094 2024-03-04 [37b369dc6] injection_points: Add wait and wakeup of processes
3095 Author: Michael Paquier <michael@paquier.xyz>
3096 2024-04-08 [f587338de] injection_points: Introduce runtime conditions
3097 Author: Noah Misch <noah@leadboat.com>
3098 2024-06-27 [bb93640a6] Add wait event type "InjectionPoint", a custom
3101 <listitem>
3102 <para>
3103 Add backend support for injection points (Michael Paquier)
3104 <ulink url="&commit_baseurl;d86d20f0b">&sect;</ulink>
3105 <ulink url="&commit_baseurl;37b369dc6">&sect;</ulink>
3106 <ulink url="&commit_baseurl;f587338de">&sect;</ulink>
3107 <ulink url="&commit_baseurl;bb93640a6">&sect;</ulink>
3108 </para>
3110 <para>
3111 This is used for server debugging and they must be enabled at server
3112 compile time.
3113 </para>
3114 </listitem>
3116 <!--
3117 Author: Nathan Bossart <nathan@postgresql.org>
3118 2024-01-19 [8b2bcf3f2] Introduce the dynamic shared memory registry.
3121 <listitem>
3122 <para>
3123 Add dynamic shared memory registry (Nathan Bossart)
3124 <ulink url="&commit_baseurl;8b2bcf3f2">&sect;</ulink>
3125 </para>
3127 <para>
3128 This allows shared libraries which are not initialized at startup
3129 to coordinate dynamic shared memory access.
3130 </para>
3131 </listitem>
3133 <!--
3134 Author: Michael Paquier <michael@paquier.xyz>
3135 2024-04-04 [2a217c371] Coordinate emit_log_hook and all log destinations to sha
3138 <listitem>
3139 <para>
3140 Fix <literal>emit_log_hook</literal> to use the same time value as
3141 other log records for the same query (Kambam Vinay, Michael Paquier)
3142 <ulink url="&commit_baseurl;2a217c371">&sect;</ulink>
3143 </para>
3144 </listitem>
3146 <!--
3147 Author: Tom Lane <tgl@sss.pgh.pa.us>
3148 2024-01-25 [7014c9a4b] Doc: improve documentation for jsonpath behavior.
3151 <listitem>
3152 <para>
3153 Improve documentation for using <literal>jsonpath</literal> for
3154 predicate checks (David Wheeler)
3155 <ulink url="&commit_baseurl;7014c9a4b">&sect;</ulink>
3156 </para>
3157 </listitem>
3159 </itemizedlist>
3161 </sect3>
3163 <sect3 id="release-17-modules">
3164 <title>Additional Modules</title>
3166 <itemizedlist>
3168 <!--
3169 Author: Etsuro Fujita <efujita@postgresql.org>
3170 2023-08-15 [9e9931d2b] Re-allow FDWs and custom scan providers to replace joins
3173 <listitem>
3174 <para>
3175 Allow joins with non-join qualifications to be pushed down to
3176 foreign servers and custom scans (Richard Guo, Etsuro Fujita)
3177 <ulink url="&commit_baseurl;9e9931d2b">&sect;</ulink>
3178 </para>
3180 <para>
3181 Foreign data wrappers and custom scans will need to be modified to
3182 handle these cases.
3183 </para>
3184 </listitem>
3186 <!--
3187 Author: Alexander Korotkov <akorotkov@postgresql.org>
3188 2023-12-05 [824dbea3e] Add support for deparsing semi-joins to contrib/postgres
3191 <listitem>
3192 <para>
3193 Allow pushdown of <literal>EXISTS</literal> and <literal>IN</literal>
3194 subqueries to <xref linkend="postgres-fdw"/> foreign servers
3195 (Alexander Pyhalov)
3196 <ulink url="&commit_baseurl;824dbea3e">&sect;</ulink>
3197 </para>
3198 </listitem>
3200 <!--
3201 Author: David Rowley <drowley@postgresql.org>
3202 2023-11-02 [cac169d68] Increase DEFAULT_FDW_TUPLE_COST from 0.01 to 0.2
3203 Author: John Naylor <john.naylor@postgresql.org>
3204 2024-01-11 [f7f694b21] Update documentation of default fdw_tuple_cost
3207 <listitem>
3208 <para>
3209 Increase the default foreign data wrapper tuple cost (David Rowley,
3210 Umair Shahid)
3211 <ulink url="&commit_baseurl;cac169d68">&sect;</ulink>
3212 <ulink url="&commit_baseurl;f7f694b21">&sect;</ulink>
3213 </para>
3215 <para>
3216 This value is used by the optimizer.
3217 </para>
3218 </listitem>
3220 <!--
3221 Author: Noah Misch <noah@leadboat.com>
3222 2024-01-08 [d3c5f37dd] Make dblink interruptible, via new libpqsrv APIs.
3225 <listitem>
3226 <para>
3227 Allow <link linkend="dblink"><application>dblink</application></link>
3228 database operations to be interrupted (Noah Misch)
3229 <ulink url="&commit_baseurl;d3c5f37dd">&sect;</ulink>
3230 </para>
3231 </listitem>
3233 <!--
3234 Author: Tom Lane <tgl@sss.pgh.pa.us>
3235 2024-03-21 [485f0aa85] Add hash support functions and hash opclass for contrib/
3238 <listitem>
3239 <para>
3240 Allow the creation of hash indexes on <application><xref
3241 linkend="ltree"/></application> columns (Tommy Pavlicek)
3242 <ulink url="&commit_baseurl;485f0aa85">&sect;</ulink>
3243 </para>
3245 <para>
3246 This also enables hash join and hash aggregation on
3247 <application>ltree</application> columns.
3248 </para>
3249 </listitem>
3251 <!--
3252 Author: Michael Paquier <michael@paquier.xyz>
3253 2023-09-20 [59f47fb98] unaccent: Add support for quoted translated characters
3256 <listitem>
3257 <para>
3258 Allow <application><xref linkend="unaccent"/></application> character
3259 translation rules to contain whitespace and quotes (Michael Paquier)
3260 <ulink url="&commit_baseurl;59f47fb98">&sect;</ulink>
3261 </para>
3263 <para>
3264 The syntax for the <filename>unaccent.rules</filename> file has
3265 changed.
3266 </para>
3267 </listitem>
3269 <!--
3270 Author: Alexander Korotkov <akorotkov@postgresql.org>
3271 2023-10-28 [5ae208720] Teach contrib/amcheck to check the unique constraint vio
3274 <listitem>
3275 <para>
3276 Allow <application><xref linkend="amcheck"/></application>
3277 to check for unique constraint violations using new option
3278 <option>--checkunique</option> (Anastasia Lubennikova, Pavel Borisov,
3279 Maxim Orlov)
3280 <ulink url="&commit_baseurl;5ae208720">&sect;</ulink>
3281 </para>
3282 </listitem>
3284 <!--
3285 Author: Peter Eisentraut <peter@eisentraut.org>
3286 2023-11-07 [3c551ebed] citext: Allow tests to pass in OpenSSL FIPS mode
3289 <listitem>
3290 <para>
3291 Allow <application><xref linkend="citext"/></application> tests to
3292 pass in OpenSSL <acronym>FIPS</acronym> mode (Peter Eisentraut)
3293 <ulink url="&commit_baseurl;3c551ebed">&sect;</ulink>
3294 </para>
3295 </listitem>
3297 <!--
3298 Author: Peter Eisentraut <peter@eisentraut.org>
3299 2023-11-17 [795592865] pgcrypto: Allow tests to pass in OpenSSL FIPS mode
3302 <listitem>
3303 <para>
3304 Allow <application><xref linkend="pgcrypto"/></application> tests
3305 to pass in OpenSSL <acronym>FIPS</acronym> mode (Peter Eisentraut)
3306 <ulink url="&commit_baseurl;795592865">&sect;</ulink>
3307 </para>
3308 </listitem>
3310 <!--
3311 Author: Nathan Bossart <nathan@postgresql.org>
3312 2023-11-27 [75680c3d8] Retire a few backwards compatibility macros.
3315 <listitem>
3316 <para>
3317 Remove some unused <link linkend="spi"><acronym>SPI</acronym></link>
3318 macros (Bharath Rupireddy)
3319 <ulink url="&commit_baseurl;75680c3d8">&sect;</ulink>
3320 </para>
3321 </listitem>
3323 <!--
3324 Author: Tom Lane <tgl@sss.pgh.pa.us>
3325 2023-10-20 [2b5154bea] Extend ALTER OPERATOR to allow setting more optimization
3328 <listitem>
3329 <para>
3330 Allow <link linkend="sql-alteroperator"><command>ALTER
3331 OPERATOR</command></link> to set more optimization attributes
3332 (Tommy Pavlicek)
3333 <ulink url="&commit_baseurl;2b5154bea">&sect;</ulink>
3334 </para>
3336 <para>
3337 This is useful for extensions.
3338 </para>
3339 </listitem>
3341 <!--
3342 Author: Michael Paquier <michael@paquier.xyz>
3343 2023-07-31 [c9af05465] Support custom wait events for wait event type "Extensio
3344 Author: Michael Paquier <michael@paquier.xyz>
3345 2023-10-04 [c8e318b1b] worker_spi: Rename custom wait event to "WorkerSpiMain"
3346 Author: Michael Paquier <michael@paquier.xyz>
3347 2023-10-05 [d61f2538a] postgres_fdw: Replace WAIT_EVENT_EXTENSION with custom w
3348 Author: Michael Paquier <michael@paquier.xyz>
3349 2023-10-05 [c789f0f6c] dblink: Replace WAIT_EVENT_EXTENSION with custom wait ev
3352 <listitem>
3353 <para>
3354 Allow extensions to define <link
3355 linkend="xfunc-addin-wait-events">custom wait events</link>
3356 (Masahiro Ikeda)
3357 <ulink url="&commit_baseurl;c9af05465">&sect;</ulink>
3358 <ulink url="&commit_baseurl;c8e318b1b">&sect;</ulink>
3359 <ulink url="&commit_baseurl;d61f2538a">&sect;</ulink>
3360 <ulink url="&commit_baseurl;c789f0f6c">&sect;</ulink>
3361 </para>
3363 <para>
3364 Custom wait events have been added to <application><xref
3365 linkend="postgres-fdw"/></application> and <application><xref
3366 linkend="dblink"/></application>.
3367 </para>
3368 </listitem>
3370 <!--
3371 Author: Thomas Munro <tmunro@postgresql.org>
3372 2024-04-08 [13453eedd] Add pg_buffercache_evict() function for testing.
3375 <listitem>
3376 <para>
3377 Add <application><xref linkend="pgbuffercache"/></application>
3378 function <function>pg_buffercache_evict()</function> to allow shared
3379 buffer eviction (Palak Chaturvedi, Thomas Munro)
3380 <ulink url="&commit_baseurl;13453eedd">&sect;</ulink>
3381 </para>
3383 <para>
3384 This is useful for testing.
3385 </para>
3386 </listitem>
3388 </itemizedlist>
3390 <sect4 id="release-17-pgstatstatements">
3391 <title><link linkend="pgstatstatements"><application>pg_stat_statements</application></link></title>
3393 <itemizedlist>
3395 <!--
3396 Author: Michael Paquier <michael@paquier.xyz>
3397 2023-09-28 [11c34b342] Show parameters of CALL as constants in pg_stat_statemen
3400 <listitem>
3401 <para>
3402 Replace <link linkend="sql-call"><command>CALL</command></link>
3403 parameters in <application>pg_stat_statements</application> with
3404 placeholders (Sami Imseih)
3405 <ulink url="&commit_baseurl;11c34b342">&sect;</ulink>
3406 </para>
3407 </listitem>
3409 <!--
3410 Author: Michael Paquier <michael@paquier.xyz>
3411 2023-07-27 [31de7e60d] Show savepoint names as constants in pg_stat_statements
3414 <listitem>
3415 <para>
3416 Replace savepoint names stored in
3417 <structname>pg_stat_statements</structname> with placeholders
3418 (Greg Sabino Mullane)
3419 <ulink url="&commit_baseurl;31de7e60d">&sect;</ulink>
3420 </para>
3422 <para>
3423 This greatly reduces the number of entries needed to record <link
3424 linkend="sql-savepoint"><command>SAVEPOINT</command></link>,
3425 <link linkend="sql-release-savepoint"><command>RELEASE
3426 SAVEPOINT</command></link>, and <link
3427 linkend="sql-rollback-to"><command>ROLLBACK TO
3428 SAVEPOINT</command></link> commands.
3429 </para>
3430 </listitem>
3432 <!--
3433 Author: Michael Paquier <michael@paquier.xyz>
3434 2023-08-12 [638d42a3c] Show GIDs of two-phase commit commands as constants in p
3437 <listitem>
3438 <para>
3439 Replace the two-phase commit <acronym>GID</acronym>s stored in
3440 <structname>pg_stat_statements</structname> with placeholders
3441 (Michael Paquier)
3442 <ulink url="&commit_baseurl;638d42a3c">&sect;</ulink>
3443 </para>
3445 <para>
3446 This greatly reduces the number of entries needed to record
3447 <link linkend="sql-prepare-transaction"><command>PREPARE
3448 TRANSACTION</command></link>, <link
3449 linkend="sql-commit-prepared"><command>COMMIT
3450 PREPARED</command></link>, and <link
3451 linkend="sql-rollback-prepared"><command>ROLLBACK
3452 PREPARED</command></link>.
3453 </para>
3454 </listitem>
3456 <!--
3457 Author: Michael Paquier <michael@paquier.xyz>
3458 2023-08-27 [bb45156f3] Show names of DEALLOCATE as constants in pg_stat_stateme
3461 <listitem>
3462 <para>
3463 Track <link
3464 linkend="sql-deallocate"><command>DEALLOCATE</command></link>
3465 in <structname>pg_stat_statements</structname> (Dagfinn Ilmari
3466 Manns&aring;ker, Michael Paquier)
3467 <ulink url="&commit_baseurl;bb45156f3">&sect;</ulink>
3468 </para>
3470 <para>
3471 <command>DEALLOCATE</command> names are stored in
3472 <structname>pg_stat_statements</structname> as placeholders.
3473 </para>
3474 </listitem>
3476 <!--
3477 Author: Michael Paquier <michael@paquier.xyz>
3478 2023-10-19 [295c36c0c] Add local_blk_{read|write}_time I/O timing statistics fo
3479 Author: Michael Paquier <michael@paquier.xyz>
3480 2023-10-19 [5147ab1dd] pg_stat_statements: Add local_blk_{read|write}_time
3483 <listitem>
3484 <para>
3485 Add local I/O block read/write timing statistics columns of
3486 <structname>pg_stat_statements</structname> (Nazir Bilal Yavuz)
3487 <ulink url="&commit_baseurl;295c36c0c">&sect;</ulink>
3488 <ulink url="&commit_baseurl;5147ab1dd">&sect;</ulink>
3489 </para>
3491 <para>
3492 The new columns are <structfield>local_blk_read_time</structfield>
3493 and <structfield>local_blk_write_time</structfield>.
3494 </para>
3495 </listitem>
3497 <!--
3498 Author: Daniel Gustafsson <dgustafsson@postgresql.org>
3499 2023-09-08 [5a3423ad8] Add JIT deform_counter
3502 <listitem>
3503 <para>
3504 Add <acronym>JIT</acronym> deform_counter details to
3505 <structname>pg_stat_statements</structname> (Dmitry Dolgov)
3506 <ulink url="&commit_baseurl;5a3423ad8">&sect;</ulink>
3507 </para>
3508 </listitem>
3510 <!--
3511 Author: Alexander Korotkov <akorotkov@postgresql.org>
3512 2023-11-27 [dc9f8a798] Track statement entry timestamp in contrib/pg_stat_state
3515 <listitem>
3516 <para>
3517 Add optional fourth argument (<literal>minmax_only</literal>)
3518 to <function>pg_stat_statements_reset()</function> to allow for
3519 the resetting of only min/max statistics (Andrei Zubkov)
3520 <ulink url="&commit_baseurl;dc9f8a798">&sect;</ulink>
3521 </para>
3523 <para>
3524 This argument defaults to <literal>false</literal>.
3525 </para>
3526 </listitem>
3528 <!--
3529 Author: Alexander Korotkov <akorotkov@postgresql.org>
3530 2023-11-27 [dc9f8a798] Track statement entry timestamp in contrib/pg_stat_state
3533 <listitem>
3534 <para>
3535 Add <structname>pg_stat_statements</structname>
3536 columns <structfield>stats_since</structfield> and
3537 <structfield>minmax_stats_since</structfield> to track entry
3538 creation time and last min/max reset time (Andrei Zubkov)
3539 <ulink url="&commit_baseurl;dc9f8a798">&sect;</ulink>
3540 </para>
3541 </listitem>
3543 </itemizedlist>
3545 </sect4>
3547 </sect3>
3549 </sect2>
3551 <sect2 id="release-17-acknowledgements">
3552 <title>Acknowledgments</title>
3554 <para>
3555 The following individuals (in alphabetical order) have contributed
3556 to this release as patch authors, committers, reviewers, testers,
3557 or reporters of issues.
3558 </para>
3560 <simplelist>
3561 <member>Abhijit Menon-Sen</member>
3562 <member>Adnan Dautovic</member>
3563 <member>Aidar Imamov</member>
3564 <member>Ajin Cherian</member>
3565 <member>Akash Shankaran</member>
3566 <member>Akshat Jaimini</member>
3567 <member>Alaa Attya</member>
3568 <member>Aleksander Alekseev</member>
3569 <member>Aleksej Orlov</member>
3570 <member>Alena Rybakina</member>
3571 <member>Alex Hsieh</member>
3572 <member>Alex Malek</member>
3573 <member>Alex Shulgin</member>
3574 <member>Alex Work</member>
3575 <member>Alexander Korotkov</member>
3576 <member>Alexander Kozhemyakin</member>
3577 <member>Alexander Kuzmenkov</member>
3578 <member>Alexander Lakhin</member>
3579 <member>Alexander Pyhalov</member>
3580 <member>Alexey Palazhchenko</member>
3581 <member>Alfons Kemper</member>
3582 <member>Álvaro Herrera</member>
3583 <member>Amadeo Gallardo</member>
3584 <member>Amit Kapila</member>
3585 <member>Amit Langote</member>
3586 <member>Amul Sul</member>
3587 <member>Anastasia Lubennikova</member>
3588 <member>Anatoly Zaretsky</member>
3589 <member>Andreas Karlsson</member>
3590 <member>Andreas Ulbrich</member>
3591 <member>Andrei Lepikhov</member>
3592 <member>Andrei Zubkov</member>
3593 <member>Andres Freund</member>
3594 <member>Andrew Alsup</member>
3595 <member>Andrew Atkinson</member>
3596 <member>Andrew Bille</member>
3597 <member>Andrew Dunstan</member>
3598 <member>Andrew Kane</member>
3599 <member>Andrey Borodin</member>
3600 <member>Andrey Rachitskiy</member>
3601 <member>Andrey Sokolov</member>
3602 <member>Andy Fan</member>
3603 <member>Anthonin Bonnefoy</member>
3604 <member>Anthony Hsu</member>
3605 <member>Anton Kirilov</member>
3606 <member>Anton Melnikov</member>
3607 <member>Anton Voloshin</member>
3608 <member>Antonin Houska</member>
3609 <member>Ants Aasma</member>
3610 <member>Antti Lampinen</member>
3611 <member>Aramaki Zyake</member>
3612 <member>Artem Anisimov</member>
3613 <member>Artur Zakirov</member>
3614 <member>Ashutosh Bapat</member>
3615 <member>Ashutosh Sharma</member>
3616 <member>Atsushi Torikoshi</member>
3617 <member>Attila Gulyás</member>
3618 <member>Ayush Tiwari</member>
3619 <member>Ayush Vatsa</member>
3620 <member>Bartosz Chrol</member>
3621 <member>Benoît Ryder</member>
3622 <member>Bernd Helmle</member>
3623 <member>Bertrand Drouvot</member>
3624 <member>Bharath Rupireddy</member>
3625 <member>Bo Andreson</member>
3626 <member>Boshomi Phenix</member>
3627 <member>Bowen Shi</member>
3628 <member>Boyu Yang</member>
3629 <member>Bruce Momjian</member>
3630 <member>Cameron Vogt</member>
3631 <member>Cary Huang</member>
3632 <member>Cédric Villemain</member>
3633 <member>Changhong Fei</member>
3634 <member>Chantal Keller</member>
3635 <member>Chapman Flack</member>
3636 <member>Chengxi Sun</member>
3637 <member>Chris Travers</member>
3638 <member>Christian Maurer</member>
3639 <member>Christian Stork</member>
3640 <member>Christoph Berg</member>
3641 <member>Christoph Heiss</member>
3642 <member>Christophe Courtois</member>
3643 <member>Christopher Kline</member>
3644 <member>Claudio Freire</member>
3645 <member>Colin Caine</member>
3646 <member>Corey Huinker</member>
3647 <member>Curt Kolovson</member>
3648 <member>Dag Lem</member>
3649 <member>Dagfinn Ilmari Mannsåker</member>
3650 <member>Damir Belyalov</member>
3651 <member>Daniel Fredouille</member>
3652 <member>Daniel Gustafsson</member>
3653 <member>Daniel Shelepanov</member>
3654 <member>Daniel Vérité</member>
3655 <member>Daniel Westermann</member>
3656 <member>Darren Rush</member>
3657 <member>Dave Cramer</member>
3658 <member>Dave Page</member>
3659 <member>David Christensen</member>
3660 <member>David Cook</member>
3661 <member>David G. Johnston</member>
3662 <member>David Geier</member>
3663 <member>David Hillman</member>
3664 <member>David Perez</member>
3665 <member>David Rowley</member>
3666 <member>David Steele</member>
3667 <member>David Wheeler</member>
3668 <member>David Zhang</member>
3669 <member>Dean Rasheed</member>
3670 <member>Denis Erokhin</member>
3671 <member>Denis Laxalde</member>
3672 <member>Devrim Gündüz</member>
3673 <member>Dilip Kumar</member>
3674 <member>Dimitrios Apostolou</member>
3675 <member>Dmitry Dolgov</member>
3676 <member>Dmitry Koval</member>
3677 <member>Dmitry Vasiliev</member>
3678 <member>Dominique Devienne</member>
3679 <member>Dong Wook Lee</member>
3680 <member>Donghang Lin</member>
3681 <member>Dongming Liu</member>
3682 <member>Drew Callahan</member>
3683 <member>Drew Kimball</member>
3684 <member>Dzmitry Jachnik</member>
3685 <member>Egor Chindyaskin</member>
3686 <member>Egor Rogov</member>
3687 <member>Ekaterina Kiryanova</member>
3688 <member>Elena Indrupskaya</member>
3689 <member>Elizabeth Christensen</member>
3690 <member>Emre Hasegeli</member>
3691 <member>Eric Cyr</member>
3692 <member>Eric Mutta</member>
3693 <member>Eric Radman</member>
3694 <member>Eric Ridge</member>
3695 <member>Erik Rijkers</member>
3696 <member>Erik Wienhold</member>
3697 <member>Erki Eessaar</member>
3698 <member>Ethan Mertz</member>
3699 <member>Etsuro Fujita</member>
3700 <member>Eugen Konkov</member>
3701 <member>Euler Taveira</member>
3702 <member>Evan Macbeth</member>
3703 <member>Evgeny Morozov</member>
3704 <member>Fabien Coelho</member>
3705 <member>Fabrízio de Royes Mello</member>
3706 <member>Farias de Oliveira</member>
3707 <member>Feliphe Pozzer</member>
3708 <member>Fire Emerald</member>
3709 <member>Flavien Guedez</member>
3710 <member>Floris Van Nee</member>
3711 <member>Francesco Degrassi</member>
3712 <member>Frank Streitzig</member>
3713 <member>Gabriele Bartolini</member>
3714 <member>Garrett Thornburg</member>
3715 <member>Gavin Flower</member>
3716 <member>Gavin Panella</member>
3717 <member>Gilles Darold</member>
3718 <member>Gilles Parc</member>
3719 <member>Grant Gryczan</member>
3720 <member>Greg Nancarrow</member>
3721 <member>Greg Sabino Mullane</member>
3722 <member>Greg Stark</member>
3723 <member>Gurjeet Singh</member>
3724 <member>Haiying Tang</member>
3725 <member>Hajime Matsunaga</member>
3726 <member>Hal Takahara</member>
3727 <member>Hanefi Onaldi</member>
3728 <member>Hannu Krosing</member>
3729 <member>Hans Buschmann</member>
3730 <member>Hao Wu</member>
3731 <member>Hao Zhang</member>
3732 <member>Hayato Kuroda</member>
3733 <member>Heikki Linnakangas</member>
3734 <member>Hemanth Sandrana</member>
3735 <member>Himanshu Upadhyaya</member>
3736 <member>Hironobu Suzuki</member>
3737 <member>Holger Reise</member>
3738 <member>Hongxu Ma</member>
3739 <member>Hongyu Song</member>
3740 <member>Horst Reiterer</member>
3741 <member>Hubert Lubaczewski</member>
3742 <member>Hywel Carver</member>
3743 <member>Ian Barwick</member>
3744 <member>Ian Ilyasov</member>
3745 <member>Ilya Nenashev</member>
3746 <member>Isaac Morland</member>
3747 <member>Israel Barth Rubio</member>
3748 <member>Ivan Kartyshov</member>
3749 <member>Ivan Kolombet</member>
3750 <member>Ivan Lazarev</member>
3751 <member>Ivan Panchenko</member>
3752 <member>Ivan Trofimov</member>
3753 <member>Jacob Champion</member>
3754 <member>Jacob Speidel</member>
3755 <member>Jacques Combrink</member>
3756 <member>Jaime Casanova</member>
3757 <member>Jakub Wartak</member>
3758 <member>James Coleman</member>
3759 <member>James Pang</member>
3760 <member>Jani Rahkola</member>
3761 <member>Japin Li</member>
3762 <member>Jeevan Chalke</member>
3763 <member>Jeff Davis</member>
3764 <member>Jeff Janes</member>
3765 <member>Jelte Fennema-Nio</member>
3766 <member>Jeremy Schneider</member>
3767 <member>Jian Guo</member>
3768 <member>Jian He</member>
3769 <member>Jim Jones</member>
3770 <member>Jim Keener</member>
3771 <member>Jim Nasby</member>
3772 <member>Jingtang Zhang</member>
3773 <member>Jingxian Li</member>
3774 <member>Jingzhou Fu</member>
3775 <member>Joe Conway</member>
3776 <member>Joel Jacobson</member>
3777 <member>John Ekins</member>
3778 <member>John Hsu</member>
3779 <member>John Morris</member>
3780 <member>John Naylor</member>
3781 <member>John Russell</member>
3782 <member>Jonathan Katz</member>
3783 <member>Jordi Gutiérrez</member>
3784 <member>Joseph Koshakow</member>
3785 <member>Josh Kupershmidt</member>
3786 <member>Joshua D. Drake</member>
3787 <member>Joshua Uyehara</member>
3788 <member>Jubilee Young</member>
3789 <member>Julien Rouhaud</member>
3790 <member>Junwang Zhao</member>
3791 <member>Justin Pryzby</member>
3792 <member>Kaido Vaikla</member>
3793 <member>Kambam Vinay</member>
3794 <member>Karen Talarico</member>
3795 <member>Karina Litskevich</member>
3796 <member>Karl O. Pinc</member>
3797 <member>Kashif Zeeshan</member>
3798 <member>Kim Johan Andersson</member>
3799 <member>Kirill Reshke</member>
3800 <member>Kirk Parker</member>
3801 <member>Kirk Wolak</member>
3802 <member>Kisoon Kwon</member>
3803 <member>Koen De Groote</member>
3804 <member>Kohei KaiGai</member>
3805 <member>Kong Man</member>
3806 <member>Konstantin Knizhnik</member>
3807 <member>Kouhei Sutou</member>
3808 <member>Krishnakumar R</member>
3809 <member>Kuntal Ghosh</member>
3810 <member>Kurt Roeckx</member>
3811 <member>Kyotaro Horiguchi</member>
3812 <member>Lang Liu</member>
3813 <member>Lars Kanis</member>
3814 <member>Laurenz Albe</member>
3815 <member>Lauri Laanmets</member>
3816 <member>Legs Mansion</member>
3817 <member>Lukas Fittl</member>
3818 <member>Magnus Hagander</member>
3819 <member>Mahendrakar Srinivasarao</member>
3820 <member>Maiquel Grassi</member>
3821 <member>Manos Emmanouilidis</member>
3822 <member>Marcel Hofstetter</member>
3823 <member>Marcos Pegoraro</member>
3824 <member>Marian Krucina</member>
3825 <member>Marina Polyakova</member>
3826 <member>Mark Dilger</member>
3827 <member>Mark Guertin</member>
3828 <member>Mark Sloan</member>
3829 <member>Markus Winand</member>
3830 <member>Marlene Reiterer</member>
3831 <member>Martín Marqués</member>
3832 <member>Martin Nash</member>
3833 <member>Martin Schlossarek</member>
3834 <member>Masahiko Sawada</member>
3835 <member>Masahiro Ikeda</member>
3836 <member>Masaki Kuwamura</member>
3837 <member>Masao Fujii</member>
3838 <member>Mason Sharp</member>
3839 <member>Matheus Alcantara</member>
3840 <member>Mats Kindahl</member>
3841 <member>Matthias Kuhn</member>
3842 <member>Matthias van de Meent</member>
3843 <member>Maxim Boguk</member>
3844 <member>Maxim Orlov</member>
3845 <member>Maxim Yablokov</member>
3846 <member>Maxime Boyer</member>
3847 <member>Melanie Plageman</member>
3848 <member>Melih Mutlu</member>
3849 <member>Merlin Moncure</member>
3850 <member>Micah Gate</member>
3851 <member>Michael Banck</member>
3852 <member>Michael Bondarenko</member>
3853 <member>Michael Paquier</member>
3854 <member>Michael Wang</member>
3855 <member>Michael Zhilin</member>
3856 <member>Michail Nikolaev</member>
3857 <member>Michal Bartak</member>
3858 <member>Michal Kleczek</member>
3859 <member>Mikhail Gribkov</member>
3860 <member>Mingli Zhang</member>
3861 <member>Miroslav Bendik</member>
3862 <member>Mitsuru Hinata</member>
3863 <member>Moaaz Assali</member>
3864 <member>Muralikrishna Bandaru</member>
3865 <member>Nathan Bossart</member>
3866 <member>Nazir Bilal Yavuz</member>
3867 <member>Neil Tiffin</member>
3868 <member>Ngigi Waithaka</member>
3869 <member>Nikhil Benesch</member>
3870 <member>Nikhil Raj</member>
3871 <member>Nikita Glukhov</member>
3872 <member>Nikita Kalinin</member>
3873 <member>Nikita Malakhov</member>
3874 <member>Nikolay Samokhvalov</member>
3875 <member>Nikolay Shaplov</member>
3876 <member>Nisha Moond</member>
3877 <member>Nishant Sharma</member>
3878 <member>Nitin Jadhav</member>
3879 <member>Noah Misch</member>
3880 <member>Noriyoshi Shinoda</member>
3881 <member>Ole Peder Brandtzæg</member>
3882 <member>Oleg Bartunov</member>
3883 <member>Oleg Sibiryakov</member>
3884 <member>Oleg Tselebrovskiy</member>
3885 <member>Olleg Samoylov</member>
3886 <member>Onder Kalaci</member>
3887 <member>Ondrej Navratil</member>
3888 <member>Pablo Kharo</member>
3889 <member>Palak Chaturvedi</member>
3890 <member>Pantelis Theodosiou</member>
3891 <member>Paul Amonson</member>
3892 <member>Paul Jungwirth</member>
3893 <member>Pavel Borisov</member>
3894 <member>Pavel Kulakov</member>
3895 <member>Pavel Luzanov</member>
3896 <member>Pavel Stehule</member>
3897 <member>Pavlo Golub</member>
3898 <member>Pedro Gallegos</member>
3899 <member>Pete Storer</member>
3900 <member>Peter Eisentraut</member>
3901 <member>Peter Geoghegan</member>
3902 <member>Peter Smith</member>
3903 <member>Philip Warner</member>
3904 <member>Philipp Salvisberg</member>
3905 <member>Pierre Ducroquet</member>
3906 <member>Pierre Fortin</member>
3907 <member>Przemyslaw Sztoch</member>
3908 <member>Quynh Tran</member>
3909 <member>Raghuveer Devulapalli</member>
3910 <member>Ranier Vilela</member>
3911 <member>Reid Thompson</member>
3912 <member>Rian McGuire</member>
3913 <member>Richard Guo</member>
3914 <member>Richard Vesely</member>
3915 <member>Ridvan Korkmaz</member>
3916 <member>Robert Haas</member>
3917 <member>Robert Scott</member>
3918 <member>Robert Treat</member>
3919 <member>Roberto Mello</member>
3920 <member>Robins Tharakan</member>
3921 <member>Roman Lozko</member>
3922 <member>Ronan Dunklau</member>
3923 <member>Rui Zhao</member>
3924 <member>Ryo Matsumura</member>
3925 <member>Ryoga Yoshida</member>
3926 <member>Sameer Kumar</member>
3927 <member>Sami Imseih</member>
3928 <member>Samuel Dussault</member>
3929 <member>Sanjay Minni</member>
3930 <member>Satoru Koizumi</member>
3931 <member>Sebastian Skalacki</member>
3932 <member>Sergei Glukhov</member>
3933 <member>Sergei Kornilov</member>
3934 <member>Sergey Prokhorenko</member>
3935 <member>Sergey Sargsyan</member>
3936 <member>Sergey Shinderuk</member>
3937 <member>Shaozhong Shi</member>
3938 <member>Shaun Thomas</member>
3939 <member>Shay Rojansky</member>
3940 <member>Shihao Zhong</member>
3941 <member>Shinya Kato</member>
3942 <member>Shlok Kyal</member>
3943 <member>Shruthi Gowda</member>
3944 <member>Shubham Khanna</member>
3945 <member>Shulin Zhou</member>
3946 <member>Shveta Malik</member>
3947 <member>Simon Riggs</member>
3948 <member>Soumyadeep Chakraborty</member>
3949 <member>Sravan Velagandula</member>
3950 <member>Stan Hu</member>
3951 <member>Stepan Neretin</member>
3952 <member>Stepan Rutz</member>
3953 <member>Stéphane Schildknecht</member>
3954 <member>Stephane Tachoires</member>
3955 <member>Stephen Frost</member>
3956 <member>Steve Atkins</member>
3957 <member>Steve Chavez</member>
3958 <member>Suraj Khamkar</member>
3959 <member>Suraj Kharage</member>
3960 <member>Svante Richter</member>
3961 <member>Svetlana Derevyanko</member>
3962 <member>Sylvain Frandaz</member>
3963 <member>Takayuki Tsunakawa</member>
3964 <member>Tatsuo Ishii</member>
3965 <member>Tatsuro Yamada</member>
3966 <member>Tender Wang</member>
3967 <member>Teodor Sigaev</member>
3968 <member>Thom Brown</member>
3969 <member>Thomas Munro</member>
3970 <member>Tim Carey-Smith</member>
3971 <member>Tim Needham</member>
3972 <member>Tim Palmer</member>
3973 <member>Tobias Bussmann</member>
3974 <member>Tom Lane</member>
3975 <member>Tomas Vondra</member>
3976 <member>Tommy Pavlicek</member>
3977 <member>Tomonari Katsumata</member>
3978 <member>Tristan Partin</member>
3979 <member>Tristen Raab</member>
3980 <member>Tung Nguyen</member>
3981 <member>Umair Shahid</member>
3982 <member>Uwe Binder</member>
3983 <member>Valerie Woolard</member>
3984 <member>Vallimaharajan G</member>
3985 <member>Vasya Boytsov</member>
3986 <member>Victor Wagner</member>
3987 <member>Victor Yegorov</member>
3988 <member>Victoria Shepard</member>
3989 <member>Vidushi Gupta</member>
3990 <member>Vignesh C</member>
3991 <member>Vik Fearing</member>
3992 <member>Viktor Leis</member>
3993 <member>Vinayak Pokale</member>
3994 <member>Vitaly Burovoy</member>
3995 <member>Vojtech Benes</member>
3996 <member>Wei Sun</member>
3997 <member>Wei Wang</member>
3998 <member>Wenjiang Zhang</member>
3999 <member>Will Mortensen</member>
4000 <member>Willi Mann</member>
4001 <member>Wolfgang Walther</member>
4002 <member>Xiang Liu</member>
4003 <member>Xiaoran Wang</member>
4004 <member>Xing Guo</member>
4005 <member>Xudong Yang</member>
4006 <member>Yahor Yuzefovich</member>
4007 <member>Yajun Hu</member>
4008 <member>Yaroslav Saburov</member>
4009 <member>Yong Li</member>
4010 <member>Yongtao Huang</member>
4011 <member>Yugo Nagata</member>
4012 <member>Yuhang Qiu</member>
4013 <member>Yuki Seino</member>
4014 <member>Yura Sokolov</member>
4015 <member>Yurii Rashkovskii</member>
4016 <member>Yuuki Fujii</member>
4017 <member>Yuya Watari</member>
4018 <member>Yves Colin</member>
4019 <member>Zhihong Yu</member>
4020 <member>Zhijie Hou</member>
4021 <member>Zongliang Quan</member>
4022 <member>Zubeyr Eryilmaz</member>
4023 <member>Zuming Jiang</member>
4024 </simplelist>
4025 </sect2>
4027 </sect1>