doc PG 17 relnotes: adjust vacuum memory item
[pgsql.git] / doc / src / sgml / release-17.sgml
blobd7fd87f3d5c784527d5068ae5a3c9f25347b6d23
1 <!-- doc/src/sgml/release-16.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-??-??, AS OF 2024-05-14</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><para>TO BE COMPLETED LATER</para></listitem>
22 </itemizedlist>
24 <para>
25 The above items and other new features of
26 <productname>PostgreSQL</productname> 17 are explained in more detail
27 in the sections below.
28 </para>
30 </sect2>
32 <sect2 id="release-17-migration">
34 <title>Migration to Version 17</title>
36 <para>
37 A dump/restore using <xref linkend="app-pg-dumpall"/> or use of
38 <xref linkend="pgupgrade"/> or logical replication is required for
39 those wishing to migrate data from any previous release. See <xref
40 linkend="upgrading"/> for general information on migrating to new
41 major releases.
42 </para>
44 <para>
45 Version 17 contains a number of changes that may affect compatibility
46 with previous releases. Observe the following incompatibilities:
47 </para>
49 <itemizedlist>
51 <!--
52 Author: Jeff Davis <jdavis@postgresql.org>
53 2024-03-04 [2af07e2f7] Fix search_path to a safe value during maintenance opera
54 -->
56 <listitem>
57 <para>
58 Change functions to use a safe search_path during maintenance operations (Jeff Davis)
59 </para>
61 <para>
62 This prevents maintenance operations (ANALYZE, CLUSTER, REFRESH MATERIALIZED VIEW, REINDEX, or VACUUM) from performing unsafe access. Functions used by expression indexes and
63 materialized views that need to reference non-default schemas must specify a search path during function creation.
64 </para>
65 </listitem>
67 <!--
68 Author: Michael Paquier <michael@paquier.xyz>
69 2023-08-28 [165d581f1] Tighten handling of "ago" in interval values
70 Author: Michael Paquier <michael@paquier.xyz>
71 2023-08-28 [617f9b7d4] Tighten unit parsing in internal values
72 -->
74 <listitem>
75 <para>
76 Restrict "ago" to only appear at the end in interval values (Joseph Koshakow)
77 </para>
79 <para>
80 Also, prevent empty interval units and interval units from appearing multiple times.
81 </para>
82 </listitem>
84 <!--
85 Author: Thomas Munro <tmunro@postgresql.org>
86 2023-09-05 [f691f5b80] Remove the "snapshot too old" feature.
87 -->
89 <listitem>
90 <para>
91 Remove server variable old_snapshot_threshold (Thomas Munro)
92 </para>
94 <para>
95 This variable allowed vacuum to remove rows that potentially could be still visible to running transactions, causing "snapshot too old" error later if accessed. This feature
96 might be re-added to Postgres later if an improved implementation is found.
97 </para>
98 </listitem>
100 <!--
101 Author: Nathan Bossart <nathan@postgresql.org>
102 2023-07-12 [0fef87753] Rename session_auth_is_superuser to current_role_is_supe
105 <listitem>
106 <para>
107 Rename server variable session_auth_is_superuser to the more accurate current_role_is_superuser (Nathan Bossart)
108 </para>
109 </listitem>
111 <!--
112 Author: Nathan Bossart <nathan@postgresql.org>
113 2023-07-13 [a0363ab7a] Fix privilege check for SET SESSION AUTHORIZATION.
116 <listitem>
117 <para>
118 Change SET SESSION AUTHORIZATION handling of the initial session user's superuser status (Joseph Koshakow)
119 </para>
121 <para>
122 The new behavior is based on the session user's superuser status at the time the SET SESSION AUTHORIZATION command is issued, rather than their superuser status at connection time.
123 </para>
124 </listitem>
126 <!--
127 Author: Nathan Bossart <nathan@postgresql.org>
128 2023-07-17 [884eee5bf] Remove db_user_namespace.
131 <listitem>
132 <para>
133 Remove feature which simulated per-database users (Nathan Bossart)
134 </para>
136 <para>
137 The feature, db_user_namespace, was rarely used.
138 </para>
139 </listitem>
141 <!--
142 Author: Thomas Munro <tmunro@postgresql.org>
143 2023-07-14 [d0c28601e] Remove wal_sync_method=fsync_writethrough on Windows.
146 <listitem>
147 <para>
148 Remove wal_sync_method value fsync_writethrough on Windows (Thomas Munro)
149 </para>
151 <para>
152 This value was the same as "fsync" on Windows.
153 </para>
154 </listitem>
156 <!--
157 Author: Bruce Momjian <bruce@momjian.us>
158 2023-11-24 [344afc776] modify segno. for pg_walfile_name() and pg_walfile_name_
161 <listitem>
162 <para>
163 Change file boundary handling of two WAL file name functions (Kyotaro Horiguchi, Andres Freund, Bruce Momjian)
164 </para>
166 <para>
167 The functions pg_walfile_name() and pg_walfile_name_offset() used to report the previous LSN segment number when the LSN was on a file segment boundary; it now returns the LSN segment.
168 </para>
169 </listitem>
171 <!--
172 Author: Michael Paquier <michael@paquier.xyz>
173 2023-12-11 [c7a3e6b46] Remove trace_recovery_messages
176 <listitem>
177 <para>
178 Remove server variable trace_recovery_messages since it is no longer needed (Bharath Rupireddy)
179 </para>
180 </listitem>
182 <!--
183 Author: Peter Eisentraut <peter@eisentraut.org>
184 2023-08-16 [78806a950] Remove incorrect field from information schema
187 <listitem>
188 <para>
189 Remove information schema column element_types.domain_default (Peter Eisentraut)
190 </para>
191 </listitem>
193 <!--
194 Author: Bruce Momjian <bruce@momjian.us>
195 2023-09-26 [15d5d7405] pgrowlocks: change lock mode output labels for consiste
198 <listitem>
199 <para>
200 Change pgrowlocks lock mode output labels (Bruce Momjian)
201 </para>
202 </listitem>
204 <!--
205 Author: Michael Paquier <michael@paquier.xyz>
206 2023-10-19 [13d00729d] Rename I/O timing statistics columns to shared_blk_{read
209 <listitem>
210 <para>
211 Rename I/O block read/write timing statistics columns of pg_stat_statements (Nazir Bilal Yavuz)
212 </para>
214 <para>
215 This renames "blk_read_time" to "shared_blk_read_time", and "blk_write_time" to "shared_blk_write_time".
216 </para>
217 </listitem>
219 <!--
220 Author: Michael Paquier <michael@paquier.xyz>
221 2023-10-27 [74604a37f] Remove buffers_backend and buffers_backend_fsync from pg
224 <listitem>
225 <para>
226 Remove buffers_backend and buffers_backend_fsync from pg_stat_checkpointer (Bharath Rupireddy)
227 </para>
229 <para>
230 These fields are considered redundant to similar columns in pg_stat_io.
231 </para>
232 </listitem>
234 <!--
235 Author: Peter Eisentraut <peter@eisentraut.org>
236 2024-01-13 [4f622503d] Make attstattarget nullable
237 Author: Peter Eisentraut <peter@eisentraut.org>
238 2024-03-17 [012460ee9] Make stxstattarget nullable
241 <listitem>
242 <para>
243 Change pg_attribute.attstattarget and pg_attribute.stxstattarget to represent the default statistics target as NULL (Peter Eisentraut)
244 </para>
245 </listitem>
247 <!--
248 Author: Masahiko Sawada <msawada@postgresql.org>
249 2024-04-02 [667e65aac] Use TidStore for dead tuple TIDs storage during lazy vac
252 <listitem>
253 <para>
254 Change pg_stat_progress_vacuum columns max_dead_tuples to max_dead_tuple_bytes and num_dead_tuples to dead_tuple_bytes (Masahiko Sawada)
255 </para>
257 <para>
258 These columns now report bytes instead of tuples.
259 </para>
260 </listitem>
262 <!--
263 Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
264 2024-02-28 [bcdfa5f2e] Rename SLRU elements in view pg_stat_slru
267 <listitem>
268 <para>
269 Rename SLRU columns in system view pg_stat_slru (Alvaro Herrera)
270 </para>
272 <para>
273 The column names accepted by pg_stat_slru_rest() are also changed.
274 </para>
275 </listitem>
277 </itemizedlist>
279 </sect2>
281 <sect2 id="release-17-changes">
282 <title>Changes</title>
284 <para>
285 Below you will find a detailed account of the changes between
286 <productname>PostgreSQL</productname> 17 and the previous major
287 release.
288 </para>
290 <sect3 id="release-17-server">
291 <title>Server</title>
293 <sect4 id="release-17-optimizer">
294 <title>Optimizer</title>
296 <itemizedlist>
298 <!--
299 Author: Tom Lane <tgl@sss.pgh.pa.us>
300 2023-11-17 [f7816aec2] Extract column statistics from CTE references, if possib
303 <listitem>
304 <para>
305 Allow the optimizer to improve CTE plans by considering the statistics of columns referenced in earlier row output clauses (Jian Guo, Tom Lane)
306 </para>
307 </listitem>
309 <!--
310 Author: Tom Lane <tgl@sss.pgh.pa.us>
311 2024-03-26 [a65724dfa] Propagate pathkeys from CTEs up to the outer query.
314 <listitem>
315 <para>
316 Allow the optimizer to improve CTE plans by considering the sort order of columns referenced in earlier row output clauses (Richard Guo)
317 </para>
318 </listitem>
320 <!--
321 Author: David Rowley <drowley@postgresql.org>
322 2024-01-23 [b262ad440] Add better handling of redundant IS [NOT] NULL quals
323 Author: David Rowley <drowley@postgresql.org>
324 2024-04-12 [3af704098] Fix IS [NOT] NULL qual optimization for inheritance tabl
327 <listitem>
328 <para>
329 Improve optimization of IS NOT NULL and IS NULL query restrictions (David Rowley, Richard Guo, Andy Fan)
330 </para>
332 <para>
333 Remove IS NOT NULL query restrictions on NOT NULL columns and eliminate scans on NOT NULL columns if IS NULL is specified.
334 </para>
335 </listitem>
337 <!--
338 Author: David Rowley <drowley@postgresql.org>
339 2024-03-04 [07c36c133] Support partition pruning on boolcol IS [NOT] UNKNOWN
342 <listitem>
343 <para>
344 Allow partition pruning on boolean columns on IS [NOT] UNKNOWN conditionals (David Rowley)
345 </para>
346 </listitem>
348 <!--
349 Author: Tom Lane <tgl@sss.pgh.pa.us>
350 2024-01-20 [075df6b20] Add planner support functions for range operators &lt;@ and
353 <listitem>
354 <para>
355 Improve optimization of range values when using containment operators &lt;@ and @&gt; (Kim Johan Andersson, Jian He)
356 </para>
357 </listitem>
359 <!--
360 Author: Alexander Korotkov <akorotkov@postgresql.org>
361 2024-02-15 [9f1337639] Pull up ANY-SUBLINK with the necessary lateral support.
364 <listitem>
365 <para>
366 Allow correlated IN subqueries to be transformed into joins (Andy Fan, Tom Lane)
367 </para>
368 </listitem>
370 <!--
371 Author: David Rowley <drowley@postgresql.org>
372 2023-10-05 [a8a968a82] Consider cheap startup paths in add_paths_to_append_rel
375 <listitem>
376 <para>
377 Improve optimization of the LIMIT clause on partitioned tables, inheritance parents, and UNION ALL queries (Andy Fan, David Rowley)
378 </para>
379 </listitem>
381 <!--
382 Author: Tom Lane <tgl@sss.pgh.pa.us>
383 2023-07-14 [e08d74ca1] Allow plan nodes with initPlans to be considered paralle
386 <listitem>
387 <para>
388 Allow query nodes to be run in parallel in more cases (Tom Lane)
389 </para>
390 </listitem>
392 <!--
393 Author: Alexander Korotkov <akorotkov@postgresql.org>
394 2024-01-21 [0452b461b] Explore alternative orderings of group-by pathkeys durin
397 <listitem>
398 <para>
399 Allow GROUP BY columns to be internally ordered to match ORDER BY (Andrei Lepikhov, Teodor Sigaev)
400 </para>
402 <para>
403 This can be disabled using server variable enable_group_by_reordering.
404 </para>
405 </listitem>
407 <!--
408 Author: David Rowley <drowley@postgresql.org>
409 2024-03-25 [66c0185a3] Allow planner to use Merge Append to efficiently impleme
412 <listitem>
413 <para>
414 Allow UNION (without ALL) to use MergeAppend (David Rowley)
415 </para>
416 </listitem>
418 <!--
419 Author: David Rowley <drowley@postgresql.org>
420 2024-02-01 [9d1a5354f] Fix costing bug in MergeAppend
423 <listitem>
424 <para>
425 Fix MergeAppend plans to more accurately compute the number of rows that need to be sorted (Alexander Kuzmenkov)
426 </para>
427 </listitem>
429 <!--
430 Author: David Rowley <drowley@postgresql.org>
431 2023-07-04 [625d5b3ca] Allow Incremental Sorts on GiST and SP-GiST indexes
434 <listitem>
435 <para>
436 Allow GiST and SP-GiST indexes to be part of incremental sorts (Miroslav Bendik)
437 </para>
439 <para>
440 This is particularly useful for ORDER BY clauses where the first column has a GiST and SP-GiST index, and other columns do not.
441 </para>
442 </listitem>
444 <!--
445 Author: Alexander Korotkov <akorotkov@postgresql.org>
446 2023-11-27 [bc3c8db8a] Display length and bounds histograms in pg_stats
449 <listitem>
450 <para>
451 Add columns to pg_stats to report range-type histogram information (Egor Rogov, Soumyadeep Chakraborty)
452 </para>
453 </listitem>
455 </itemizedlist>
457 </sect4>
459 <sect4 id="release-17-indexes">
460 <title>Indexes</title>
462 <itemizedlist>
463 <!--
464 Author: Peter Geoghegan <pg@bowt.ie>
465 2024-04-06 [5bf748b86] Enhance nbtree ScalarArrayOp execution.
468 <listitem>
469 <para>
470 Allow btree indexes to more efficiently find array matches (Peter Geoghegan, Matthias van de Meent)
471 </para>
472 </listitem>
474 <!--
475 Author: Tomas Vondra <tomas.vondra@postgresql.org>
476 2023-12-08 [b43757171] Allow parallel CREATE INDEX for BRIN indexes
479 <listitem>
480 <para>
481 Allow BRIN indexes to be created using parallel workers (Tomas Vondra, Matthias van de Meent)
482 </para>
483 </listitem>
485 <!--
486 Author: Peter Eisentraut <peter@eisentraut.org>
487 2024-01-19 [6db4598fc] Add stratnum GiST support function
490 <listitem>
491 <para>
492 Add stratnum GiST support function (Paul A. Jungwirth)
493 </para>
494 </listitem>
496 </itemizedlist>
498 </sect4>
500 <sect4 id="release-17-performance">
501 <title>General Performance</title>
503 <itemizedlist>
505 <!--
506 Author: John Naylor <john.naylor@postgresql.org>
507 2024-03-07 [ee1b30f12] Add template for adaptive radix tree
508 Author: Masahiko Sawada <msawada@postgresql.org>
509 2024-03-21 [30e144287] Add TIDStore, to store sets of TIDs (ItemPointerData) ef
510 Author: Masahiko Sawada <msawada@postgresql.org>
511 2024-04-02 [667e65aac] Use TidStore for dead tuple TIDs storage during lazy vac
512 Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
513 2024-04-03 [6dbb49026] Combine freezing and pruning steps in VACUUM
516 <listitem>
517 <para>
518 Allow vacuum to more efficiently remove and freeze tuples (Masahiko Sawada, John Naylor, Melanie Plageman)
519 </para>
520 </listitem>
522 <!--
523 Author: Masahiko Sawada <msawada@postgresql.org>
524 2024-03-21 [30e144287] Add TIDStore, to store sets of TIDs (ItemPointerData) ef
525 Author: Masahiko Sawada <msawada@postgresql.org>
526 2024-04-02 [667e65aac] Use TidStore for dead tuple TIDs storage during lazy vac
527 Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
528 2024-04-03 [6dbb49026] Combine freezing and pruning steps in VACUUM
531 <listitem>
532 <para>
533 Allow vacuum to more efficiently store tuple references (Masahiko Sawada, John Naylor)
534 </para>
536 <para>
537 Additionally, vacuum is no longer silently limited to one gigabyte of memory when maintenance_work_mem and autovacuum_work_mem are higher. WAL traffic caused by
538 vacuum is also more compact.
539 </para>
540 </listitem>
542 <!--
543 Author: Robert Haas <rhaas@postgresql.org>
544 2024-01-18 [c120550ed] Optimize vacuuming of relations with no indexes.
547 <listitem>
548 <para>
549 Optimize vacuuming of relations with no indexes (Melanie Plageman)
550 </para>
551 </listitem>
553 <!--
554 Author: Thomas Munro <tmunro@postgresql.org>
555 2024-04-06 [98f320eb2] Increase default vacuum_buffer_usage_limit to 2MB.
558 <listitem>
559 <para>
560 Increase default vacuum_buffer_usage_limit to 2MB (Thomas Munro)
561 </para>
562 </listitem>
564 <!--
565 Author: Nathan Bossart <nathan@postgresql.org>
566 2024-03-26 [d365ae705] Optimize roles_is_member_of() with a Bloom filter.
569 <listitem>
570 <para>
571 Improve performance when checking roles with many memberships (Nathan Bossart)
572 </para>
573 </listitem>
575 <!--
576 Author: Michael Paquier <michael@paquier.xyz>
577 2023-07-25 [71e4cc6b8] Optimize WAL insertion lock acquisition and release with
580 <listitem>
581 <para>
582 Improve performance of heavily-contended WAL writes (Bharath Rupireddy)
583 </para>
584 </listitem>
586 <!--
587 Author: David Rowley <drowley@postgresql.org>
588 2024-04-07 [c4ab7da60] Avoid needless large memcpys in libpq socket writing
591 <listitem>
592 <para>
593 Improve performance when transferring large blocks of data to a client (Melih Mutlu)
594 </para>
595 </listitem>
597 <!--
598 Author: Thomas Munro <tmunro@postgresql.org>
599 2024-04-03 [210622c60] Provide vectored variant of ReadBuffer().
600 Author: Thomas Munro <tmunro@postgresql.org>
601 2024-04-08 [b7b0f3f27] Use streaming I/O in sequential scans.
602 Author: Thomas Munro <tmunro@postgresql.org>
603 2024-04-08 [041b96802] Use streaming I/O in ANALYZE.
606 <listitem>
607 <para>
608 Allow the grouping of file system reads with the new system variable io_combine_limit (Thomas Munro, Andres Freund, Melanie Plageman, Nazir Bilal Yavuz)
609 </para>
610 </listitem>
612 </itemizedlist>
614 </sect4>
616 <sect4 id="release-17-monitoring">
617 <title>Monitoring</title>
619 <itemizedlist>
621 <!--
622 Author: Michael Paquier <michael@paquier.xyz>
623 2023-10-30 [96f052613] Introduce pg_stat_checkpointer
624 Author: Alexander Korotkov <akorotkov@postgresql.org>
625 2023-12-25 [12915a58e] Enhance checkpointer restartpoint statistics
626 Author: Alexander Korotkov <akorotkov@postgresql.org>
627 2024-03-14 [e820db5b5] Improve documentation for pg_stat_checkpointer fields
630 <listitem>
631 <para>
632 Create system view pg_stat_checkpointer (Bharath Rupireddy, Anton A. Melnikov, Alexander Korotkov)
633 </para>
635 <para>
636 Relevant columns have been removed from pg_stat_bgwriter and added to this new system view.
637 </para>
638 </listitem>
640 <!--
641 Author: Michael Paquier <michael@paquier.xyz>
642 2023-11-12 [23c8c0c8f] Add ability to reset all shared stats types in pg_stat_r
645 <listitem>
646 <para>
647 Allow pg_stat_reset_shared() to reset all shared statistics (Atsushi Torikoshi)
648 </para>
650 <para>
651 This is done by passing NULL.
652 </para>
653 </listitem>
655 <!--
656 Author: Michael Paquier <michael@paquier.xyz>
657 2023-11-16 [2e8a0edc2] Add target "slru" to pg_stat_reset_shared()
660 <listitem>
661 <para>
662 Allow pg_stat_reset_shared("slru") to clear SLRU statistics (Atsushi Torikoshi)
663 </para>
665 <para>
666 Now pg_stat_reset_shared(NULL) also resets SLRU statistics.
667 </para>
668 </listitem>
670 <!--
671 Author: Michael Paquier <michael@paquier.xyz>
672 2023-11-14 [e5cca6288] Add support for pg_stat_reset_slru without argument
675 <listitem>
676 <para>
677 Allow pg_stat_reset_slru() to reset all SLRU statistics (Bharath Rupireddy)
678 </para>
680 <para>
681 The command pg_stat_reset_slru(NULL) already did this.
682 </para>
683 </listitem>
685 <!--
686 Author: Michael Paquier <michael@paquier.xyz>
687 2024-01-25 [1d35f705e] Add more LOG messages when starting and ending recovery
690 <listitem>
691 <para>
692 Add log messages related to WAL recovery from backup (Andres Freund)
693 </para>
694 </listitem>
696 <!--
697 Author: Michael Paquier <michael@paquier.xyz>
698 2023-08-26 [e48b19c5d] Generate new LOG for "trust" connections under log_conne
701 <listitem>
702 <para>
703 Add log_connections log line for "trust" connections (Jacob Champion)
704 </para>
705 </listitem>
707 <!--
708 Author: Amit Kapila <akapila@postgresql.org>
709 2023-11-21 [7c3fb505b] Log messages for replication slot acquisition and releas
712 <listitem>
713 <para>
714 Add log message to report walsender acquisition and release of replication slots (Bharath Rupireddy)
715 </para>
717 <para>
718 This is enabled by the server variable log_replication_commands.
719 </para>
720 </listitem>
722 <!--
723 Author: Michael Paquier <michael@paquier.xyz>
724 2024-04-04 [2a217c371] Coordinate emit_log_hook and all log destinations to sha
727 <listitem>
728 <para>
729 Fix emit_log_hook to use the same time value as other log records for the same query (Kambam Vinay, Michael Paquier)
730 </para>
731 </listitem>
733 <!--
734 Author: Michael Paquier <michael@paquier.xyz>
735 2023-08-20 [1e68e43d3] Add system view pg_wait_events
738 <listitem>
739 <para>
740 Add system view pg_wait_events that reports wait event types (Bertrand Drouvot)
741 </para>
743 <para>
744 This is useful for adding descriptions to wait events reported in pg_stat_activity.
745 </para>
746 </listitem>
748 <!--
749 Author: Thomas Munro <tmunro@postgresql.org>
750 2023-10-13 [0013ba290] Add wait events for checkpoint delay mechanism.
753 <listitem>
754 <para>
755 Add wait events for checkpoint delays (Thomas Munro)
756 </para>
757 </listitem>
759 <!--
760 Author: Masahiko Sawada <msawada@postgresql.org>
761 2023-07-11 [46ebdfe16] Report index vacuum progress.
764 <listitem>
765 <para>
766 Allow vacuum to report the progress of index processing (Sami Imseih)
767 </para>
769 <para>
770 This appears in system view columns pg_stat_progress_vacuum.indexes_total and pg_stat_progress_vacuum.indexes_processed.
771 </para>
772 </listitem>
774 <!--
775 Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
776 2024-04-08 [705843d29] Enhance libpq encryption negotiation tests with new GUC
777 Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
778 2024-04-08 [3dbd2ff78] Adjust wording of trace_connection_negotiation GUC's des
781 <listitem>
782 <para>
783 Add server variable trace_connection_negotiation to allow debugging of connection encryption (Heikki Linnakangas, Kyotaro Horiguchi)
784 </para>
785 </listitem>
787 </itemizedlist>
789 </sect4>
791 <sect4 id="release-17-privileges">
792 <title>Privileges</title>
794 <itemizedlist>
796 <!--
797 Author: Nathan Bossart <nathan@postgresql.org>
798 2024-03-13 [ecb0fd337] Reintroduce MAINTAIN privilege and pg_maintain predefine
801 <listitem>
802 <para>
803 Add per-table GRANT permission MAINTAIN to control maintenance operations (Nathan Bossart)
804 </para>
806 <para>
807 The operations are VACUUM, ANALYZE, REINDEX, REFRESH MATERIALIZED VIEW, CLUSTER, and LOCK TABLE.
808 </para>
809 </listitem>
811 <!--
812 Author: Nathan Bossart <nathan@postgresql.org>
813 2024-03-13 [ecb0fd337] Reintroduce MAINTAIN privilege and pg_maintain predefine
816 <listitem>
817 <para>
818 Add user-grantable role pg_maintain to control maintenance operations (Nathan Bossart)
819 </para>
821 <para>
822 The operations are VACUUM, ANALYZE, REINDEX, REFRESH MATERIALIZED VIEW, CLUSTER, and LOCK TABLE.
823 </para>
824 </listitem>
826 <!--
827 Author: Nathan Bossart <nathan@postgresql.org>
828 2024-02-14 [8d8afd48d] Allow pg_monitor to execute pg_current_logfile().
831 <listitem>
832 <para>
833 Allow roles with pg_monitor membership to execute pg_current_logfile() (Pavlo Golub, Nathan Bossart)
834 </para>
835 </listitem>
837 </itemizedlist>
839 </sect4>
841 <sect4 id="release-17-server-config">
842 <title>Server Configuration</title>
844 <itemizedlist>
846 <!--
847 Author: Robert Haas <rhaas@postgresql.org>
848 2024-03-29 [d3ae2a24f] Add allow_alter_system GUC.
851 <listitem>
852 <para>
853 Add system variable allow_alter_system to disallow ALTER SYSTEM (Jelte Fennema-Nio, Gabriele Bartolini)
854 </para>
855 </listitem>
857 <!--
858 Author: Tom Lane <tgl@sss.pgh.pa.us>
859 2023-10-21 [2d870b4ae] Allow ALTER SYSTEM to set unrecognized custom GUCs.
862 <listitem>
863 <para>
864 Allow ALTER SYSTEM to set unrecognized custom server variables (Tom Lane)
865 </para>
867 <para>
868 This is also possible with GRANT ON PARAMETER.
869 </para>
870 </listitem>
872 <!--
873 Author: Alexander Korotkov <akorotkov@postgresql.org>
874 2024-02-15 [51efe38cb] Introduce transaction_timeout
875 Author: Alexander Korotkov <akorotkov@postgresql.org>
876 2024-02-16 [bf82f4379] Followup fixes for transaction_timeout
877 Author: Alexander Korotkov <akorotkov@postgresql.org>
878 2024-02-25 [28e858c0f] Improve documentation and GUC description for transactio
881 <listitem>
882 <para>
883 Add server variable transaction_timeout to restrict the duration of transactions (Andrey Borodin, Japin Li, Junwang Zhao, Alexander Korotkov)
884 </para>
885 </listitem>
887 <!--
888 Author: Jeff Davis <jdavis@postgresql.org>
889 2024-03-13 [2d819a08a] Introduce "builtin" collation provider.
890 Author: Jeff Davis <jdavis@postgresql.org>
891 2024-03-18 [846311051] Address more review comments on commit 2d819a08a1.
892 Author: Jeff Davis <jdavis@postgresql.org>
893 2024-03-19 [f69319f2f] Support C.UTF-8 locale in the new builtin collation prov
894 Author: Jeff Davis <jdavis@postgresql.org>
895 2024-03-20 [9acae56ce] Inline basic UTF-8 functions.
898 <listitem>
899 <para>
900 Create a "builtin" collation provider similar to libc's C locale (Jeff Davis)
901 </para>
903 <para>
904 It uses a "C" locale which is identical but independent of libc, but it allows the use of non-"C" collations like "en_US" and "C.UTF-8" with the "C" locale, which libc does not. MORE?
905 </para>
906 </listitem>
908 <!--
909 Author: Michael Paquier <michael@paquier.xyz>
910 2023-07-06 [a14354cac] Add GUC parameter "huge_pages_status"
913 <listitem>
914 <para>
915 Add server variable huge_pages_status to report the use of huge pages by Postgres (Justin Pryzby)
916 </para>
918 <para>
919 This is useful when huge_pages is set to "try".
920 </para>
921 </listitem>
923 <!--
924 Author: Daniel Gustafsson <dgustafsson@postgresql.org>
925 2023-09-25 [7750fefdb] Add GUC for temporarily disabling event triggers
928 <listitem>
929 <para>
930 Add server variable to disable event triggers (Daniel Gustafsson)
931 </para>
933 <para>
934 The setting, event_triggers, allows for the temporary disabling of event triggers for debugging.
935 </para>
936 </listitem>
938 <!--
939 Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
940 2024-02-28 [53c2a97a9] Improve performance of subsystems on top of SLRU
943 <listitem>
944 <para>
945 Allow the SLRU cache sizes to be configured (Andrey Borodin, Dilip Kumar)
946 </para>
948 <para>
949 The new server variables are commit_timestamp_buffers, multixact_member_buffers, multixact_offset_buffers, notify_buffers, serializable_buffers, subtransaction_buffers, and
950 transaction_buffers.
951 </para>
952 </listitem>
954 </itemizedlist>
956 </sect4>
958 <sect4 id="release-17-replication">
959 <title>Streaming Replication and Recovery</title>
961 <itemizedlist>
963 <!--
964 Author: Robert Haas <rhaas@postgresql.org>
965 2023-12-20 [dc2123400] Add support for incremental backup.
966 Author: Tomas Vondra <tomas.vondra@postgresql.org>
967 2024-04-05 [f8ce4ed78] Allow copying files using clone/copy_file_range
970 <listitem>
971 <para>
972 Add support for incremental file system backup (Robert Haas, Jakub Wartak, Tomas Vondra)
973 </para>
975 <para>
976 Incremental backups can be created using pg_basebackup's new --incremental option. The new application pg_combinebackup allows manipulation of base and incremental file system backups.
977 </para>
978 </listitem>
980 <!--
981 Author: Robert Haas <rhaas@postgresql.org>
982 2023-12-20 [174c48050] Add a new WAL summarizer process.
983 Author: Nathan Bossart <nathan@postgresql.org>
984 2024-01-09 [d97ef756a] Fix documentation for wal_summary_keep_time.
985 Author: Robert Haas <rhaas@postgresql.org>
986 2024-01-09 [f896057e4] Document WAL summarization information functions.
987 Author: Robert Haas <rhaas@postgresql.org>
988 2024-01-11 [d9ef650fc] Add new function pg_get_wal_summarizer_state().
991 <listitem>
992 <para>
993 Allow the creation of WAL summarization files (Robert Haas, Nathan Bossart, Hubert Depesz Lubaczewski)
994 </para>
996 <para>
997 These files record the block numbers that have changed within an LSN range and are useful for incremental file system backups. This is controlled by the server variables
998 summarize_wal and wal_summarize_keep_time, and introspected with pg_available_wal_summaries(), pg_wal_summary_contents(), and pg_get_wal_summarizer_state().
999 </para>
1000 </listitem>
1002 <!--
1003 Author: Robert Haas <rhaas@postgresql.org>
1004 2024-03-13 [2041bc427] Add the system identifier to backup manifests.
1007 <listitem>
1008 <para>
1009 Add the system identifier to file system backup manifest files (Amul Sul)
1010 </para>
1012 <para>
1013 This helps detect invalid WAL usage.
1014 </para>
1015 </listitem>
1017 <!--
1018 Author: Amit Kapila <akapila@postgresql.org>
1019 2024-03-21 [a145f424d] Allow dbname to be written as part of connstring via pg_
1022 <listitem>
1023 <para>
1024 Allow connection string value dbname to be written when pg_basebackup writes connection information to postgresql.auto.conf (Vignesh C, Hayato Kuroda)
1025 </para>
1026 </listitem>
1028 <!--
1029 Author: Amit Kapila <akapila@postgresql.org>
1030 2024-01-04 [007693f2a] Track conflict_reason in pg_replication_slots.
1031 Author: Amit Kapila <akapila@postgresql.org>
1032 2024-03-22 [6ae701b43] Track invalidation_reason in pg_replication_slots.
1035 <listitem>
1036 <para>
1037 Add column pg_replication_slots.invalidation_reason to report the reason for invalid slots (Shveta Malik, Bharath Rupireddy)
1038 </para>
1039 </listitem>
1041 <!--
1042 Author: Amit Kapila <akapila@postgresql.org>
1043 2024-03-25 [a11f330b5] Track last_inactive_time in pg_replication_slots.
1044 Author: Amit Kapila <akapila@postgresql.org>
1045 2024-03-27 [6d49c8d4b] Change last_inactive_time to inactive_since in pg_replic
1046 Author: Amit Kapila <akapila@postgresql.org>
1047 2024-04-05 [6f132ed69] Allow synced slots to have their inactive_since.
1050 <listitem>
1051 <para>
1052 Add pg_replication_slots.inactive_since to report slot inactivity duration (Bharath Rupireddy)
1053 </para>
1054 </listitem>
1056 <!--
1057 Author: Amit Kapila <akapila@postgresql.org>
1058 2024-02-14 [ddd5f4f54] Add a slot synchronization function.
1059 Author: Amit Kapila <akapila@postgresql.org>
1060 2024-02-16 [7a424ece4] Add more LOG and DEBUG messages for slot synchronization
1063 <listitem>
1064 <para>
1065 Add function pg_sync_replication_slots() to synchronize logical replication slots (Hou Zhijie, Shveta Malik, Ajin Cherian, Peter Eisentraut)
1066 </para>
1067 </listitem>
1069 <!--
1070 Author: Amit Kapila <akapila@postgresql.org>
1071 2024-01-29 [732924043] Allow setting failover property in the replication comma
1074 <listitem>
1075 <para>
1076 Add the failover property to the replication protocol (Hou Zhijie, Shveta Malik)
1077 </para>
1078 </listitem>
1080 </itemizedlist>
1082 </sect4>
1084 <sect4 id="release-17-logical">
1085 <title><link linkend="logical-replication">Logical Replication</link></title>
1087 <itemizedlist>
1089 <!--
1090 Author: Peter Eisentraut <peter@eisentraut.org>
1091 2024-03-25 [d44032d01] pg_createsubscriber: creates a new logical replica from
1094 <listitem>
1095 <para>
1096 Add application pg_createsubscriber to create a logical replica from a physical standby server (Euler Taveira)
1097 </para>
1098 </listitem>
1100 <!--
1101 Author: Amit Kapila <akapila@postgresql.org>
1102 2023-10-26 [29d0a77fa] Migrate logical slots to the new node during an upgrade.
1103 Author: Amit Kapila <akapila@postgresql.org>
1104 2024-01-02 [9a17be1e2] Allow upgrades to preserve the full subscription's state
1107 <listitem>
1108 <para>
1109 Have pg_upgrade migrate valid logical slots and subscriptions (Hayato Kuroda, Hou Zhijie, Vignesh C, Julien Rouhaud, Shlok Kyal)
1110 </para>
1112 <para>
1113 This allows logical replication to continue quickly after the upgrade. This only works for old clusters of PostgreSQL version 17.0 or later.
1114 </para>
1115 </listitem>
1117 <!--
1118 Author: Amit Kapila <akapila@postgresql.org>
1119 2024-01-25 [c393308b6] Allow to enable failover property for replication slots
1122 <listitem>
1123 <para>
1124 Enable the failover of logical slots (Hou Zhijie, Shveta Malik, Ajin Cherian)
1125 </para>
1127 <para>
1128 This is controlled by an optional fifth argument to pg_create_logical_replication_slot().
1129 </para>
1130 </listitem>
1132 <!--
1133 Author: Amit Kapila <akapila@postgresql.org>
1134 2024-02-22 [93db6cbda] Add a new slot sync worker to synchronize logical slots
1135 Author: Amit Kapila <akapila@postgresql.org>
1136 2024-03-06 [60c07820d] Doc: Improve replication slot synchronization section.
1139 <listitem>
1140 <para>
1141 Add server variable sync_replication_slots to enable failover logical slot synchronization (Shveta Malik, Hou Zhijie, Peter Smith)
1142 </para>
1143 </listitem>
1145 <!--
1146 Author: Amit Kapila <akapila@postgresql.org>
1147 2024-01-30 [776621a5e] Add a failover option to subscriptions.
1148 Author: Amit Kapila <akapila@postgresql.org>
1149 2024-02-07 [22f7e61a6] Clean-ups for 776621a5e4 and 7329240437.
1152 <listitem>
1153 <para>
1154 Add logical replication failover control to CREATE/ALTER SUBSCRIPTION (Shveta Malik, Hou Zhijie, Ajin Cherian)
1155 </para>
1156 </listitem>
1158 <!--
1159 Author: Amit Kapila <akapila@postgresql.org>
1160 2023-07-14 [edca34243] Allow the use of a hash index on the subscriber during r
1163 <listitem>
1164 <para>
1165 Allow the application of logical replication changes to use hash indexes on the subscriber (Hayato Kuroda)
1166 </para>
1168 <para>
1169 Previously only btree indexes could be used for this purpose.
1170 </para>
1171 </listitem>
1173 <!--
1174 Author: Masahiko Sawada <msawada@postgresql.org>
1175 2024-04-03 [5bec1d6bc] Improve eviction algorithm in ReorderBuffer using max-he
1178 <listitem>
1179 <para>
1180 Improve logical decoding performance in cases where there are many subtransactions (Masahiko Sawada)
1181 </para>
1182 </listitem>
1184 <!--
1185 Author: Amit Kapila <akapila@postgresql.org>
1186 2023-10-17 [79243de13] Restart the apply worker if the privileges have been rev
1189 <listitem>
1190 <para>
1191 Restart apply workers if subscription owner's superuser privileges are revoked (Vignesh C)
1192 </para>
1194 <para>
1195 This forces reauthentication.
1196 </para>
1197 </listitem>
1199 <!--
1200 Author: Michael Paquier <michael@paquier.xyz>
1201 2023-10-18 [173b56f1e] Add flush option to pg_logical_emit_message()
1204 <listitem>
1205 <para>
1206 Add "flush" option to pg_logical_emit_message() (Michael Paquier)
1207 </para>
1209 <para>
1210 This makes the message durable.
1211 </para>
1212 </listitem>
1214 <!--
1215 Author: Amit Kapila <akapila@postgresql.org>
1216 2024-03-08 [bf279ddd1] Introduce a new GUC 'standby_slot_names'.
1219 <listitem>
1220 <para>
1221 Allow specification of physical standbys that must be synchronized before they are visible to subscribers (Hou Zhijie, Shveta Malik)
1222 </para>
1224 <para>
1225 The server variable is standby_slot_names.
1226 </para>
1227 </listitem>
1229 <!--
1230 Author: Nathan Bossart <nathan@postgresql.org>
1231 2023-09-25 [13aeaf079] Add worker type to pg_stat_subscription.
1234 <listitem>
1235 <para>
1236 Add worker type column to pg_stat_subscription (Peter Smith)
1237 </para>
1238 </listitem>
1240 </itemizedlist>
1242 </sect4>
1244 </sect3>
1246 <sect3 id="release-17-utility">
1247 <title>Utility Commands</title>
1249 <itemizedlist>
1251 <!--
1252 Author: Alexander Korotkov <akorotkov@postgresql.org>
1253 2024-01-16 [9e2d87011] Add new COPY option SAVE_ERROR_TO
1254 Author: Alexander Korotkov <akorotkov@postgresql.org>
1255 2024-01-19 [b725b7eec] Rename COPY option from SAVE_ERROR_TO to ON_ERROR
1256 Author: Alexander Korotkov <akorotkov@postgresql.org>
1257 2024-02-03 [40bbc8cf0] Improve documentation for COPY ... ON_ERROR ...
1258 Author: Masahiko Sawada <msawada@postgresql.org>
1259 2024-04-17 [a6d0fa5ef] Disallow specifying ON_ERROR option without value.
1262 <listitem>
1263 <para>
1264 Add new COPY option "ON_ERROR ignore" to discard error rows (Damir Belyalov, Atsushi Torikoshi, Alex Shulgin, Jian He, Yugo Nagata)
1265 </para>
1267 <para>
1268 The default behavior is "ON_ERROR stop".
1269 </para>
1270 </listitem>
1272 <!--
1273 Author: Masahiko Sawada <msawada@postgresql.org>
1274 2024-04-01 [f5a227895] Add new COPY option LOG_VERBOSITY.
1277 <listitem>
1278 <para>
1279 Add new COPY option LOG_VERBOSITY which reports COPY FROM ignored error rows (Bharath Rupireddy)
1280 </para>
1281 </listitem>
1283 <!--
1284 Author: Masahiko Sawada <msawada@postgresql.org>
1285 2024-01-25 [729439607] Add progress reporting of skipped tuples during COPY FRO
1288 <listitem>
1289 <para>
1290 Allow COPY FROM to report the number of skipped rows during processing (Atsushi Torikoshi)
1291 </para>
1293 <para>
1294 This appears in system view column pg_stat_progress_copy.tuples_skipped.
1295 </para>
1296 </listitem>
1298 <!--
1299 Author: Andrew Dunstan <andrew@dunslane.net>
1300 2023-09-30 [f6d4c9cf1] Provide FORCE_NULL * and FORCE_NOT_NULL * options for CO
1303 <listitem>
1304 <para>
1305 In COPY FROM, allow easy specification that all columns should be forced null or not null (Zhang Mingli)
1306 </para>
1307 </listitem>
1309 <!--
1310 Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
1311 2024-01-29 [5de890e36] Add EXPLAIN (MEMORY) to report planner memory consumptio
1314 <listitem>
1315 <para>
1316 Allow EXPLAIN to report optimizer memory usage (Ashutosh Bapat)
1317 </para>
1319 <para>
1320 The option is called "MEMORY".
1321 </para>
1322 </listitem>
1324 <!--
1325 Author: Tom Lane <tgl@sss.pgh.pa.us>
1326 2024-04-03 [06286709e] Invent SERIALIZE option for EXPLAIN.
1329 <listitem>
1330 <para>
1331 Add EXPLAIN option SERIALIZE to report the cost of converting data for network transmission (Stepan Rutz, Matthias van de Meent)
1332 </para>
1333 </listitem>
1335 <!--
1336 Author: Michael Paquier <michael@paquier.xyz>
1337 2023-10-19 [295c36c0c] Add local_blk_{read|write}_time I/O timing statistics fo
1340 <listitem>
1341 <para>
1342 Add local I/O block read/write timing statistics to EXPLAIN (Nazir Bilal Yavuz)
1343 </para>
1344 </listitem>
1346 <!--
1347 Author: Tom Lane <tgl@sss.pgh.pa.us>
1348 2024-03-19 [fd0398fcb] Improve EXPLAIN's display of SubPlan nodes and output pa
1351 <listitem>
1352 <para>
1353 Improve EXPLAIN's display of SubPlan nodes and output parameters (Tom Lane, Dean Rasheed)
1354 </para>
1355 </listitem>
1357 <!--
1358 Author: Daniel Gustafsson <dgustafsson@postgresql.org>
1359 2023-09-08 [5a3423ad8] Add JIT deform_counter
1362 <listitem>
1363 <para>
1364 Add JIT deform_counter details to EXPLAIN (Dmitry Dolgov)
1365 </para>
1366 </listitem>
1368 <!--
1369 Author: Alexander Korotkov <akorotkov@postgresql.org>
1370 2024-04-07 [1adf16b8f] Implement ALTER TABLE ... MERGE PARTITIONS ... command
1373 <listitem>
1374 <para>
1375 Allow partitions to be merged using ALTER TABLE ... MERGE PARTITIONS (Dmitry Koval)
1376 </para>
1377 </listitem>
1379 <!--
1380 Author: Alexander Korotkov <akorotkov@postgresql.org>
1381 2024-04-07 [87c21bb94] Implement ALTER TABLE ... SPLIT PARTITION ... command
1384 <listitem>
1385 <para>
1386 Allow partitions to be split using ALTER TABLE ... SPLIT PARTITION (Dmitry Koval)
1387 </para>
1388 </listitem>
1390 <!--
1391 Author: Peter Eisentraut <peter@eisentraut.org>
1392 2024-01-16 [699586315] Support identity columns in partitioned tables
1395 <listitem>
1396 <para>
1397 Allow partitioned tables to have identity columns (Ashutosh Bapat)
1398 </para>
1399 </listitem>
1401 <!--
1402 Author: Peter Eisentraut <peter@eisentraut.org>
1403 2023-07-12 [8c852ba9a] Allow some exclusion constraints on partitions
1406 <listitem>
1407 <para>
1408 Allow exclusion constraints on partitioned tables (Paul A. Jungwirth)
1409 </para>
1411 <para>
1412 As long as exclusion constraints compare partition key columns for equality, other columns can use exclusion constraint-specific comparisons.
1413 </para>
1414 </listitem>
1416 <!--
1417 Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
1418 2024-03-25 [374c7a229] Allow specifying an access method for partitioned tables
1419 Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
1420 2024-03-28 [e2395cdbe] ALTER TABLE: rework determination of access method ID
1423 <listitem>
1424 <para>
1425 Allow specification of partitioned table access methods (Justin Pryzby, Soumyadeep Chakraborty, Michael Paquier)
1426 </para>
1427 </listitem>
1429 <!--
1430 Author: Peter Eisentraut <peter@eisentraut.org>
1431 2024-01-13 [4f622503d] Make attstattarget nullable
1434 <listitem>
1435 <para>
1436 Add clearer ALTER TABLE method to set a column to the default statistics target (Peter Eisentraut)
1437 </para>
1439 <para>
1440 The command is ALTER TABLE ... SET STATISTICS DEFAULT; using "SET STATISTICS -1" is still supported.
1441 </para>
1442 </listitem>
1444 <!--
1445 Author: Peter Eisentraut <peter@eisentraut.org>
1446 2024-01-04 [5d06e99a3] ALTER TABLE command to change generation expression
1449 <listitem>
1450 <para>
1451 Allow ALTER TABLE to change a columns generation expression (Amul Sul)
1452 </para>
1454 <para>
1455 The syntax is "ALTER TABLE ... ALTER COLUMN ... SET EXPRESSION".
1456 </para>
1457 </listitem>
1459 <!--
1460 Author: Michael Paquier <michael@paquier.xyz>
1461 2024-03-08 [d61a6cad6] Add support for DEFAULT in ALTER TABLE .. SET ACCESS MET
1464 <listitem>
1465 <para>
1466 Add DEFAULT setting for ALTER TABLE .. SET ACCESS METHOD (Michael Paquier)
1467 </para>
1468 </listitem>
1470 <!--
1471 Author: Peter Eisentraut <peter@eisentraut.org>
1472 2024-03-24 [34768ee36] Add temporal FOREIGN KEY contraints
1475 <listitem>
1476 <para>
1477 Allow foreign keys to reference WITHOUT OVERLAPS primary keys (Paul A. Jungwirth)
1478 </para>
1480 <para>
1481 The keyword PERIOD is used for this purpose.
1482 </para>
1483 </listitem>
1485 <!--
1486 Author: Peter Eisentraut <peter@eisentraut.org>
1487 2024-01-24 [46a0cd4ce] Add temporal PRIMARY KEY and UNIQUE constraints
1488 Author: Peter Eisentraut <peter@eisentraut.org>
1489 2024-03-05 [030e10ff1] Rename pg_constraint.conwithoutoverlaps to conperiod
1492 <listitem>
1493 <para>
1494 Allow PRIMARY KEY and UNIQUE constraints to use WITHOUT OVERLAPS for non-overlapping exclusion constraints (Paul A. Jungwirth)
1495 </para>
1496 </listitem>
1498 <!--
1499 Author: Alexander Korotkov <akorotkov@postgresql.org>
1500 2023-10-16 [e83d1b0c4] Add support event triggers on authenticated login
1503 <listitem>
1504 <para>
1505 Add support for event triggers that fire at connection time (Konstantin Knizhnik, Mikhail Gribkov)
1506 </para>
1507 </listitem>
1509 <!--
1510 Author: Michael Paquier <michael@paquier.xyz>
1511 2023-12-04 [f21848de2] Add support for REINDEX in event triggers
1514 <listitem>
1515 <para>
1516 Add event trigger support for REINDEX (Garrett Thornburg, Jian He)
1517 </para>
1518 </listitem>
1520 <!--
1521 Author: Nathan Bossart <nathan@postgresql.org>
1522 2023-07-19 [cdaedfc96] Support parenthesized syntax for CLUSTER without a table
1525 <listitem>
1526 <para>
1527 Allow parenthesized syntax for CLUSTER options if a table name is not specified (Nathan Bossart)
1528 </para>
1529 </listitem>
1531 </itemizedlist>
1533 </sect3>
1535 <sect3 id="release-17-datatypes">
1536 <title>Data Types</title>
1538 <itemizedlist>
1540 <!--
1541 Author: Dean Rasheed <dean.a.rasheed@gmail.com>
1542 2023-11-14 [519fc1bd9] Support +/- infinity in the interval data type.
1545 <listitem>
1546 <para>
1547 Allow the interval data type to support +/-infinity values (Joseph Koshakow, Jian He, Ashutosh Bapat)
1548 </para>
1549 </listitem>
1551 <!--
1552 Author: Tom Lane <tgl@sss.pgh.pa.us>
1553 2024-03-24 [af1d39584] Allow more cases to pass the unsafe-use-of-new-enum-valu
1556 <listitem>
1557 <para>
1558 Allow the use of an ENUM added via ALTER TYPE if the type was created in the same transaction (Tom Lane)
1559 </para>
1561 <para>
1562 This was previously disallowed.
1563 </para>
1564 </listitem>
1566 </itemizedlist>
1568 </sect3>
1570 <sect3 id="release-17-merge">
1571 <title><link linkend="sql-merge">MERGE</link></title>
1574 <itemizedlist>
1576 <!--
1577 Author: Dean Rasheed <dean.a.rasheed@gmail.com>
1578 2024-02-29 [5f2e179bd] Support MERGE into updatable views.
1581 <listitem>
1582 <para>
1583 Allow MERGE to modify updatable views (Dean Rasheed)
1584 </para>
1585 </listitem>
1587 <!--
1588 Author: Dean Rasheed <dean.a.rasheed@gmail.com>
1589 2024-03-30 [0294df2f1] Add support for MERGE ... WHEN NOT MATCHED BY SOURCE.
1592 <listitem>
1593 <para>
1594 Add WHEN NOT MATCHED BY SOURCE to MERGE (Dean Rasheed)
1595 </para>
1597 <para>
1598 "WHEN NOT MATCHED" on target rows was already supported.
1599 </para>
1600 </listitem>
1602 <!--
1603 Author: Dean Rasheed <dean.a.rasheed@gmail.com>
1604 2024-03-17 [c649fa24a] Add RETURNING support to MERGE.
1607 <listitem>
1608 <para>
1609 Allow MERGE to use the RETURNING clause (Dean Rasheed)
1610 </para>
1612 <para>
1613 The new RETURNING function merge_action() reports on the DML that generated the row.
1614 </para>
1615 </listitem>
1617 </itemizedlist>
1619 </sect3>
1621 <sect3 id="release-17-functions">
1622 <title>Functions</title>
1624 <itemizedlist>
1626 <!--
1627 Author: Amit Langote <amitlan@postgresql.org>
1628 2024-04-04 [de3600452] Add basic JSON_TABLE() functionality
1629 Author: Amit Langote <amitlan@postgresql.org>
1630 2024-04-08 [bb766cde6] JSON_TABLE: Add support for NESTED paths and columns
1633 <listitem>
1634 <para>
1635 Add function JSON_TABLE() to convert JSON data to a table representation (Nikita Glukhov, Teodor Sigaev, Oleg Bartunov, Alexander Korotkov, Andrew Dunstan, Amit Langote, Jian He)
1636 </para>
1638 <para>
1639 This function can be used in the FROM clause of SELECT queries as a tuple source.
1640 </para>
1641 </listitem>
1643 <!--
1644 Author: Amit Langote <amitlan@postgresql.org>
1645 2023-07-26 [03734a7fe] Add more SQL/JSON constructor functions
1648 <listitem>
1649 <para>
1650 Add SQL/JSON constructor functions JSON(), JSON_SCALAR(), and JSON_SERIALIZE() (Amit Langote)
1651 </para>
1652 </listitem>
1654 <!--
1655 Author: Amit Langote <amitlan@postgresql.org>
1656 2024-01-24 [aaaf9449e] Add soft error handling to some expression nodes
1657 Author: Amit Langote <amitlan@postgresql.org>
1658 2024-01-24 [1edb3b491] Adjust populate_record_field() to handle errors softly
1659 Author: Amit Langote <amitlan@postgresql.org>
1660 2024-03-21 [6185c9737] Add SQL/JSON query functions
1661 Author: Amit Langote <amitlan@postgresql.org>
1662 2024-04-18 [c0fc07518] SQL/JSON: Fix issues with DEFAULT .. ON ERROR / EMPTY
1663 Author: Amit Langote <amitlan@postgresql.org>
1664 2024-04-18 [ef744ebb7] SQL/JSON: Miscellaneous fixes and improvements
1667 <listitem>
1668 <para>
1669 Add SQL/JSON query functions JSON_EXISTS(), JSON_QUERY(), and JSON_VALUE() (Nikita Glukhov, Teodor Sigaev, Oleg Bartunov, Alexander Korotkov, Andrew Dunstan, Amit Langote,
1670 Peter Eisentraut, Jian He)
1671 </para>
1672 </listitem>
1674 <!--
1675 Author: Andrew Dunstan <andrew@dunslane.net>
1676 2024-01-25 [66ea94e8e] Implement various jsonpath methods
1679 <listitem>
1680 <para>
1681 Add jsonpath methods to convert JSON values to different data types (Jeevan Chalke)
1682 </para>
1684 <para>
1685 The jsonpath methods are .bigint(), .boolean(), .date(), .decimal([precision [, scale]]), .integer(), .number(), .string(), .time(), .time_tz(), .timestamp(), and .timestamp_tz().
1686 </para>
1687 </listitem>
1689 <!--
1690 Author: Tom Lane <tgl@sss.pgh.pa.us>
1691 2024-01-25 [8ba6fdf90] Support TZ and OF format codes in to_timestamp().
1694 <listitem>
1695 <para>
1696 Add to_timestamp() time zone format specifiers (Tom Lane)
1697 </para>
1699 <para>
1700 "TZ" accepts time zone abbreviations or numeric offsets, while "OF" accepts only numeric offsets.
1701 </para>
1702 </listitem>
1704 <!--
1705 Author: Michael Paquier <michael@paquier.xyz>
1706 2023-10-13 [97957fdba] Add support for AT LOCAL
1709 <listitem>
1710 <para>
1711 Allow the session time zone to be specified by AS LOCAL (Vik Fearing)
1712 </para>
1714 <para>
1715 This is useful when converting adding and removing time zones from time stamps values, rather than specifying the literal session time zone.
1716 </para>
1717 </listitem>
1719 <!--
1720 Author: Peter Eisentraut <peter@eisentraut.org>
1721 2024-03-19 [794f10f6b] Add some UUID support functions
1724 <listitem>
1725 <para>
1726 Add functions uuid_extract_timestamp() and uuid_extract_version() to return UUID information (Andrey Borodin)
1727 </para>
1728 </listitem>
1730 <!--
1731 Author: Dean Rasheed <dean.a.rasheed@gmail.com>
1732 2024-03-27 [e6341323a] Add functions to generate random numbers in a specified
1735 <listitem>
1736 <para>
1737 Add functions to generate random numbers in a specified range (Dean Rasheed)
1738 </para>
1740 <para>
1741 The functions are random(min, max) and they take values of type integer, bigint, and numeric.
1742 </para>
1743 </listitem>
1745 <!--
1746 Author: Nathan Bossart <nathan@postgresql.org>
1747 2023-08-23 [260a1f18d] Add to_bin() and to_oct().
1750 <listitem>
1751 <para>
1752 Add functions to convert integers to hex and binary strings (Eric Radman, Nathan Bossart)
1753 </para>
1755 <para>
1756 The functions are to_bin() and to_oct().
1757 </para>
1758 </listitem>
1760 <!--
1761 Author: Jeff Davis <jdavis@postgresql.org>
1762 2023-11-01 [a02b37fc0] Additional unicode primitive functions.
1765 <listitem>
1766 <para>
1767 Add Unicode informational functions (Jeff Davis)
1768 </para>
1770 <para>
1771 Function unicode_version() returns the Unicode version, icu_unicode_version() returns the ICU version, and unicode_assigned() returns if the characters are assigned Unicode codepoints.
1772 </para>
1773 </listitem>
1775 <!--
1776 Author: Daniel Gustafsson <dgustafsson@postgresql.org>
1777 2023-11-06 [526fe0d79] Add XMLText function (SQL/XML X038)
1780 <listitem>
1781 <para>
1782 Add function xmltext() to convert text to a single XML text node (Jim Jones)
1783 </para>
1784 </listitem>
1786 <!--
1787 Author: Tom Lane <tgl@sss.pgh.pa.us>
1788 2024-03-20 [1218ca995] Add to_regtypemod function to extract typemod from a str
1791 <listitem>
1792 <para>
1793 Add function to_regtypemod() to return the type modifier of a type specification (David Wheeler, Erik Wienhold)
1794 </para>
1795 </listitem>
1797 <!--
1798 Author: Tom Lane <tgl@sss.pgh.pa.us>
1799 2024-03-30 [b154d8a6d] Add pg_basetype() function to extract a domain's base ty
1802 <listitem>
1803 <para>
1804 Add pg_basetype() function to return a domain's base type (Steve Chavez)
1805 </para>
1806 </listitem>
1808 <!--
1809 Author: Nathan Bossart <nathan@postgresql.org>
1810 2024-03-14 [d1162cfda] Add pg_column_toast_chunk_id().
1813 <listitem>
1814 <para>
1815 Add function pg_column_toast_chunk_id() to return a value's TOAST identifier (Yugo Nagata)
1816 </para>
1818 <para>
1819 This returns NULL if the value is not stored in TOAST.
1820 </para>
1821 </listitem>
1823 </itemizedlist>
1825 </sect3>
1827 <sect3 id="release-17-plpgsql">
1828 <title><link linkend="plpgsql">PL/pgSQL</link></title>
1830 <itemizedlist>
1832 <!--
1833 Author: Tom Lane <tgl@sss.pgh.pa.us>
1834 2024-01-04 [5e8674dc8] In plpgsql, allow %TYPE and %ROWTYPE to be followed by a
1837 <listitem>
1838 <para>
1839 Allow plpgsql %TYPE and %ROWTYPE specifications to represent arrays of non-array types (Quan Zongliang, Pavel Stehule)
1840 </para>
1841 </listitem>
1843 <!--
1844 Author: Tom Lane <tgl@sss.pgh.pa.us>
1845 2024-01-05 [43b46aae1] Clean up some edge cases in plpgsql's %TYPE parsing.
1848 <listitem>
1849 <para>
1850 Allow plpgsql %TYPE specification to reference composite column (Tom Lane)
1851 </para>
1852 </listitem>
1854 </itemizedlist>
1856 </sect3>
1858 <sect3 id="release-17-libpq">
1859 <title><link linkend="libpq">libpq</link></title>
1861 <itemizedlist>
1863 <!--
1864 Author: Joe Conway <mail@joeconway.com>
1865 2024-01-09 [a7be2a6c2] Add new function, PQchangePassword(), to libpq
1868 <listitem>
1869 <para>
1870 Add libpq function to change role passwords (Joe Conway)
1871 </para>
1873 <para>
1874 The new function, PQchangePassword(), hashes the new password before sending it to the server.
1875 </para>
1876 </listitem>
1878 <!--
1879 Author: Michael Paquier <michael@paquier.xyz>
1880 2023-07-04 [28b572656] libpq: Add support for Close on portals and statements
1883 <listitem>
1884 <para>
1885 Add libpq functions to close portals and prepared statements (Jelte Fennema-Nio)
1886 </para>
1888 <para>
1889 The functions are PQclosePrepared(), PQclosePortal(), PQsendClosePrepared(), and PQsendClosePortal().
1890 </para>
1891 </listitem>
1893 <!--
1894 Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
1895 2024-03-12 [61461a300] libpq: Add encrypted and non-blocking query cancellation
1898 <listitem>
1899 <para>
1900 Add libpq API which allows for blocking and non-blocking cancel requests, with encryption if already in use (Jelte Fennema-Nio)
1901 </para>
1903 <para>
1904 Previously only blocking, unencrypted cancel requests were supported.
1905 </para>
1906 </listitem>
1908 <!--
1909 Author: Robert Haas <rhaas@postgresql.org>
1910 2024-04-02 [f5e4dedfa] Expose PQsocketPoll via libpq
1913 <listitem>
1914 <para>
1915 Add libpq function PQsocketPoll to allow polling of network sockets (Tristan Partin)
1916 </para>
1917 </listitem>
1919 <!--
1920 Author: Michael Paquier <michael@paquier.xyz>
1921 2024-01-16 [4794c2d31] libpq: Add PQsendPipelineSync()
1924 <listitem>
1925 <para>
1926 Add libpq function PQsendPipelineSync() to send a pipeline synchronization point (Anton Kirilov)
1927 </para>
1929 <para>
1930 This is similar to PQpipelineSync() but it does not flush to the server unless the size threshold of the output buffer is reached.
1931 </para>
1932 </listitem>
1934 <!--
1935 Author: Tom Lane <tgl@sss.pgh.pa.us>
1936 2024-04-06 [4643a2b26] Support retrieval of results in chunks with libpq.
1939 <listitem>
1940 <para>
1941 Add libpq function PQsetChunkedRowsMode to allow retrieval of results in chunks (Daniel Vérité)
1942 </para>
1943 </listitem>
1945 <!--
1946 Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
1947 2024-04-08 [d39a49c1e] Support TLS handshake directly without SSLRequest negoti
1948 Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
1949 2024-04-08 [91044ae4b] Send ALPN in TLS handshake, require it in direct SSL con
1950 Author: Daniel Gustafsson <dgustafsson@postgresql.org>
1951 2024-04-24 [44e27f0a6] Support disallowing SSL renegotiation when using LibreSS
1952 Author: Daniel Gustafsson <dgustafsson@postgresql.org>
1953 2024-04-24 [d80f2ce29] Support SSL_R_VERSION_TOO_LOW when using LibreSSL
1954 Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
1955 2024-04-29 [03a0e0d4b] libpq: Enforce ALPN in direct SSL connections
1956 Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
1957 2024-04-29 [17a834a04] Reject SSL connection if ALPN is used but there's no com
1958 Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
1959 2024-05-11 [407e0b023] Change ALPN protocol ID to IANA-approved "postgresql"
1962 <listitem>
1963 <para>
1964 Allow TLS connections without requiring a network round-trip negotiation (Greg Stark, Heikki Linnakangas, Peter Eisentraut, Michael Paquier, Daniel Gustafsson)
1965 </para>
1967 <para>
1968 This is enabled with the client-side option sslnegotation=direct, requires ALPN, and only works on PostgreSQL 17 and later servers.
1969 </para>
1970 </listitem>
1972 </itemizedlist>
1974 </sect3>
1976 <sect3 id="release-17-psql">
1977 <title><xref linkend="app-psql"/></title>
1979 <itemizedlist>
1981 <!--
1982 Author: Tom Lane <tgl@sss.pgh.pa.us>
1983 2023-11-13 [d1379ebf4] Improve default and empty privilege outputs in psql.
1986 <listitem>
1987 <para>
1988 Improve psql display of default and empty privileges (Erik Wienhold, Laurenz Albe)
1989 </para>
1991 <para>
1992 Command \dp now displays "(none)" for empty privileges; default still display as empty.
1993 </para>
1994 </listitem>
1996 <!--
1997 Author: Tom Lane <tgl@sss.pgh.pa.us>
1998 2023-11-13 [d1379ebf4] Improve default and empty privilege outputs in psql.
2001 <listitem>
2002 <para>
2003 Have backslash commands honor "\pset null" (Erik Wienhold, Laurenz Albe)
2004 </para>
2006 <para>
2007 Previously "\pset null" was ignored.
2008 </para>
2009 </listitem>
2011 <!--
2012 Author: Daniel Gustafsson <dgustafsson@postgresql.org>
2013 2023-08-29 [f347ec76e] Allow \watch queries to stop on minimum rows returned
2016 <listitem>
2017 <para>
2018 Allow psql's \watch to stop after a minimum number of rows returned (Greg Sabino Mullane)
2019 </para>
2021 <para>
2022 The parameter is "min_rows".
2023 </para>
2024 </listitem>
2026 <!--
2027 Author: Robert Haas <rhaas@postgresql.org>
2028 2024-04-02 [cafe10565] Allow SIGINT to cancel psql database reconnections.
2031 <listitem>
2032 <para>
2033 Allow psql connections to be canceled with control-C (Tristan Partin)
2034 </para>
2035 </listitem>
2037 <!--
2038 Author: Tom Lane <tgl@sss.pgh.pa.us>
2039 2024-04-06 [90f517821] Re-implement psql's FETCH_COUNT feature atop libpq's chu
2042 <listitem>
2043 <para>
2044 Allow psql to honor FETCH_COUNT for non-SELECT queries (Daniel Vérité)
2045 </para>
2046 </listitem>
2048 <!--
2049 Author: Michael Paquier <michael@paquier.xyz>
2050 2023-06-30 [c951e9042] Add tab completion for CREATE SCHEMA in psql
2051 Author: Michael Paquier <michael@paquier.xyz>
2052 2023-10-13 [d16eb83ab] psql: Add completion support for AT [ LOCAL | TIME ZONE
2053 Author: Dean Rasheed <dean.a.rasheed@gmail.com>
2054 2023-11-28 [cd3424748] psql: Add tab completion for view options.
2055 Author: Michael Paquier <michael@paquier.xyz>
2056 2023-11-16 [816f10564] psql: Add some completion support for CREATE TABLE .. AS
2057 Author: Alexander Korotkov <akorotkov@postgresql.org>
2058 2024-03-16 [927332b95] psql: fix variable existence tab completion
2059 Author: Masahiko Sawada <msawada@postgresql.org>
2060 2024-03-28 [f1bb9284f] Improve tab completion for ALTER TABLE ALTER COLUMN SET
2061 Author: Masahiko Sawada <msawada@postgresql.org>
2062 2024-04-08 [304b6b1a6] Add more tab completion support for ALTER DEFAULT PRIVIL
2063 Author: Alexander Korotkov <akorotkov@postgresql.org>
2064 2024-04-30 [60ae37a8b] Add tab completion for partition MERGE/SPLIT operations
2067 <listitem>
2068 <para>
2069 Improve psql tab completion (Dagfinn Ilmari Mannsåker, Gilles Darold, Christoph Heiss, Steve Chavez, Vignesh C, Pavel Borisov)
2070 </para>
2071 </listitem>
2073 </itemizedlist>
2075 </sect3>
2077 <sect3 id="release-17-server-apps">
2078 <title>Server Applications</title>
2080 <itemizedlist>
2082 <!--
2083 Author: Robert Haas <rhaas@postgresql.org>
2084 2024-01-11 [ee1bfd168] Add new pg_walsummary tool.
2087 <listitem>
2088 <para>
2089 Add application pg_walsummary to dump WAL summary files (Robert Haas)
2090 </para>
2091 </listitem>
2093 <!--
2094 Author: Tom Lane <tgl@sss.pgh.pa.us>
2095 2024-04-01 [a45c78e32] Rearrange pg_dump's handling of large objects for better
2098 <listitem>
2099 <para>
2100 Allow pg_dump's large objects to be restorable in batches (Tom Lane)
2101 </para>
2103 <para>
2104 This allows the restoration of many large objects to avoid transaction limits and to be restored in parallel.
2105 </para>
2106 </listitem>
2108 <!--
2109 Author: Dean Rasheed <dean.a.rasheed@gmail.com>
2110 2024-03-20 [522ed12f7] Add "- -exclude-extension" to pg_dump's options.
2113 <listitem>
2114 <para>
2115 Add pg_dump option --exclude-extension (Ayush Vatsa)
2116 </para>
2117 </listitem>
2119 <!--
2120 Author: Daniel Gustafsson <dgustafsson@postgresql.org>
2121 2023-11-29 [a5cf808be] Read include/exclude commands for dump/restore from file
2124 <listitem>
2125 <para>
2126 Allow pg_dump, pg_dumpall, and pg_restore to specify include/exclude objects in a file (Pavel Stehule, Daniel Gustafsson)
2127 </para>
2129 <para>
2130 The option is called "--filter".
2131 </para>
2132 </listitem>
2134 <!--
2135 Author: Nathan Bossart <nathan@postgresql.org>
2136 2023-09-06 [8c16ad3b4] Allow using syncfs() in frontend utilities.
2139 <listitem>
2140 <para>
2141 Add the --sync-method parameter to several client applications (Justin Pryzby, Nathan Bossart)
2142 </para>
2144 <para>
2145 The applications are initdb, pg_basebackup, pg_checksums, pg_dump, pg_rewind, and pg_upgrade.
2146 </para>
2147 </listitem>
2149 <!--
2150 Author: Tom Lane <tgl@sss.pgh.pa.us>
2151 2024-04-01 [959b38d77] Invent - -transaction-size option for pg_restore.
2154 <listitem>
2155 <para>
2156 Add pg_restore option --transaction-size to allow object restore in transaction batches (Tom Lane)
2157 </para>
2159 <para>
2160 This allows the performance benefits of transaction batches without the problems of excessively large transaction blocks.
2161 </para>
2162 </listitem>
2164 <!--
2165 Author: Nathan Bossart <nathan@postgresql.org>
2166 2024-03-25 [3ff01b2b6] Adjust pgbench option for debug mode.
2169 <listitem>
2170 <para>
2171 Change pgbench debug mode option from -d to --debug (Greg Sabino Mullane)
2172 </para>
2174 <para>
2175 Option -d is now used for the database name, and the new --dbname option can be used as well.
2176 </para>
2177 </listitem>
2179 <!--
2180 Author: Tatsuo Ishii <ishii@postgresql.org>
2181 2023-08-30 [3c662643c] Allow pgbench to exit immediately when any client is abo
2184 <listitem>
2185 <para>
2186 Add pgbench option "--exit-on-abort" to exit after any client aborts (Yugo Nagata)
2187 </para>
2188 </listitem>
2190 <!--
2191 Author: Michael Paquier <michael@paquier.xyz>
2192 2024-01-24 [94edfe250] pgbench: Add \syncpipeline
2195 <listitem>
2196 <para>
2197 Add pgbench command \syncpipeline to allow sending of sync messages (Anthonin Bonnefoy)
2198 </para>
2199 </listitem>
2201 <!--
2202 Author: Michael Paquier <michael@paquier.xyz>
2203 2023-07-19 [3f8c98d0b] pg_archivecleanup: Add - -clean-backup-history
2206 <listitem>
2207 <para>
2208 Allow pg_archivecleanup to remove backup history files (Atsushi Torikoshi)
2209 </para>
2211 <para>
2212 The option is --clean-backup-history.
2213 </para>
2214 </listitem>
2216 <!--
2217 Author: Michael Paquier <michael@paquier.xyz>
2218 2023-06-30 [dd7c60f19] Introduce long options in pg_archivecleanup
2221 <listitem>
2222 <para>
2223 Add some long options to pg_archivecleanup (Atsushi Torikoshi)
2224 </para>
2226 <para>
2227 The long options are --debug, --dry-run, and --strip-extension.
2228 </para>
2229 </listitem>
2231 <!--
2232 Author: Daniel Gustafsson <dgustafsson@postgresql.org>
2233 2023-09-21 [cca97ce6a] Allow dbname in pg_basebackup/pg_receivewal connstring
2236 <listitem>
2237 <para>
2238 Allow pg_basebackup and pg_receivewal to use dbname in their connection specification (Jelte Fennema-Nio)
2239 </para>
2241 <para>
2242 This is useful for connection poolers that are sensitive to the database name.
2243 </para>
2244 </listitem>
2246 <!--
2247 Author: Thomas Munro <tmunro@postgresql.org>
2248 2024-03-06 [d93627bcb] Add - -copy-file-range option to pg_upgrade.
2251 <listitem>
2252 <para>
2253 Add pg_upgrade option --copy-file-range (Thomas Munro)
2254 </para>
2256 <para>
2257 This is supported on Linux and FreeBSD.
2258 </para>
2259 </listitem>
2261 <!--
2262 Author: Alexander Korotkov <akorotkov@postgresql.org>
2263 2024-03-25 [47f99a407] reindexdb: Add the index-level REINDEX with multiple job
2266 <listitem>
2267 <para>
2268 Allow reindexdb --index to process indexes from different tables in parallel (Maxim Orlov, Svetlana Derevyanko, Alexander Korotkov)
2269 </para>
2270 </listitem>
2272 <!--
2273 Author: Nathan Bossart <nathan@postgresql.org>
2274 2024-03-11 [24c928ad9] reindexdb: Allow specifying objects to process in all da
2277 <listitem>
2278 <para>
2279 Allow reindexdb to process objects in all databases matching a pattern (Nathan Bossart)
2280 </para>
2282 <para>
2283 Specifically, --all can now be used with --table, --schema, --index, and --system.
2284 </para>
2285 </listitem>
2287 <!--
2288 Author: Nathan Bossart <nathan@postgresql.org>
2289 2024-03-11 [648928c79] vacuumdb: Allow specifying objects to process in all dat
2292 <listitem>
2293 <para>
2294 Allow vacuumdb to process objects in all databases matching a pattern (Nathan Bossart)
2295 </para>
2297 <para>
2298 Specifically, --all can now be used with --table, --schema, and --exclude-schema.
2299 </para>
2300 </listitem>
2302 <!--
2303 Author: Nathan Bossart <nathan@postgresql.org>
2304 2024-03-11 [1b49d56d3] clusterdb: Allow specifying tables to process in all dat
2307 <listitem>
2308 <para>
2309 Allow clusterdb to process objects in all databases matching a pattern (Nathan Bossart)
2310 </para>
2312 <para>
2313 Specifically, --all can now be used with --table.
2314 </para>
2315 </listitem>
2317 </itemizedlist>
2319 </sect3>
2321 <sect3 id="release-17-source-code">
2322 <title>Source Code</title>
2324 <itemizedlist>
2326 <!--
2327 Author: Michael Paquier <michael@paquier.xyz>
2328 2023-07-03 [8e278b657] Remove support for OpenSSL 1.0.1
2331 <listitem>
2332 <para>
2333 Remove support for OpenSSL 1.0.1 (Michael Paquier)
2334 </para>
2335 </listitem>
2337 <!--
2338 Author: Peter Eisentraut <peter@eisentraut.org>
2339 2023-11-17 [284cbaea7] Allow tests to pass in OpenSSL FIPS mode (TAP tests)
2340 Author: Peter Eisentraut <peter@eisentraut.org>
2341 2023-11-17 [3c44e7d8d] Allow tests to pass in OpenSSL FIPS mode (rest)
2344 <listitem>
2345 <para>
2346 Allow tests to pass in OpenSSL FIPS mode (Peter Eisentraut)
2347 </para>
2348 </listitem>
2350 <!--
2351 Author: Nathan Bossart <nathan@postgresql.org>
2352 2024-04-06 [792752af4] Optimize pg_popcount() with AVX-512 instructions.
2353 Author: Nathan Bossart <nathan@postgresql.org>
2354 2024-04-06 [41c51f0c6] Optimize visibilitymap_count() with AVX-512 instructions
2357 <listitem>
2358 <para>
2359 Use CPU AVX-512 instructions for bit counting (Paul Amonson, Nathan Bossart, Ants Aasma)
2360 </para>
2361 </listitem>
2363 <!--
2364 Author: Thomas Munro <tmunro@postgresql.org>
2365 2024-01-25 [820b5af73] jit: Require at least LLVM 10.
2368 <listitem>
2369 <para>
2370 Require LLVM version 10 or later (Thomas Munro)
2371 </para>
2372 </listitem>
2374 <!--
2375 Author: John Naylor <john.naylor@postgresql.org>
2376 2023-08-10 [4d14ccd6a] Use native CRC instructions on 64-bit LoongArch
2379 <listitem>
2380 <para>
2381 Use native CRC instructions on 64-bit LoongArch CPUs (YANG Xudong)
2382 </para>
2383 </listitem>
2385 <!--
2386 Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
2387 2024-02-28 [0b16bb877] Remove AIX support
2390 <listitem>
2391 <para>
2392 Remove AIX support (Heikki Linnakangas)
2393 </para>
2394 </listitem>
2396 <!--
2397 Author: Michael Paquier <michael@paquier.xyz>
2398 2023-12-20 [1301c80b2] Remove MSVC scripts
2401 <listitem>
2402 <para>
2403 Remove the Microsoft Visual Studio-specific Postgres build option (Michael Paquier)
2404 </para>
2406 <para>
2407 Meson is now the only available method for Visual Studio builds.
2408 </para>
2409 </listitem>
2411 <!--
2412 Author: Thomas Munro <tmunro@postgresql.org>
2413 2023-07-12 [68a4b58ec] Remove - -disable-thread-safety and related code.
2414 Author: Thomas Munro <tmunro@postgresql.org>
2415 2023-07-12 [ce0b0fa3e] Doc: Adjust libpq docs about thread safety.
2418 <listitem>
2419 <para>
2420 Remove configure option --disable-thread-safety (Thomas Munro, Heikki Linnakangas)
2421 </para>
2423 <para>
2424 We now assume all supported platforms have sufficient thread support.
2425 </para>
2426 </listitem>
2428 <!--
2429 Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
2430 2024-02-28 [1c1eec0f2] Remove configure - -with-CC option
2433 <listitem>
2434 <para>
2435 Remove configure option --with-CC (Heikki Linnakangas)
2436 </para>
2438 <para>
2439 Setting the CC environment variable is now the only supported method for specifying the compiler.
2440 </para>
2441 </listitem>
2443 <!--
2444 Author: David Rowley <drowley@postgresql.org>
2445 2023-10-26 [f0efa5aec] Introduce the concept of read-only StringInfos
2448 <listitem>
2449 <para>
2450 User-defined data type receive functions will no longer receive their data null-terminated (David Rowley)
2451 </para>
2452 </listitem>
2454 <!--
2455 Author: Nathan Bossart <nathan@postgresql.org>
2456 2024-02-28 [363eb0599] Convert README to Markdown.
2459 <listitem>
2460 <para>
2461 Convert source code README to Markdown (Nathan Bossart)
2462 </para>
2463 </listitem>
2465 <!--
2466 Author: Tom Lane <tgl@sss.pgh.pa.us>
2467 2023-12-22 [e2b73f4a4] Stop generating plain-text INSTALL instructions.
2470 <listitem>
2471 <para>
2472 Remove no longer needed top-level INSTALL file (Tom Lane)
2473 </para>
2474 </listitem>
2476 <!--
2477 Author: Peter Eisentraut <peter@eisentraut.org>
2478 2023-11-06 [721856ff2] Remove distprep
2481 <listitem>
2482 <para>
2483 Remove make's distprep option (Peter Eisentraut)
2484 </para>
2485 </listitem>
2487 <!--
2488 Author: Peter Eisentraut <peter@eisentraut.org>
2489 2024-01-23 [79b03dbb3] Support shared libraries on Android (using make)
2492 <listitem>
2493 <para>
2494 Add 'make' support for Android shared libraries (Peter Eisentraut)
2495 </para>
2496 </listitem>
2498 <!--
2499 Author: Michael Paquier <michael@paquier.xyz>
2500 2024-01-22 [d86d20f0b] Add backend support for injection points
2501 Author: Michael Paquier <michael@paquier.xyz>
2502 2024-03-04 [37b369dc6] injection_points: Add wait and wakeup of processes
2503 Author: Michael Paquier <michael@paquier.xyz>
2504 2024-04-08 [f587338de] injection_points: Introduce runtime conditions
2507 <listitem>
2508 <para>
2509 Add backend support for injection points (Michael Paquier)
2510 </para>
2512 <para>
2513 This is used for server debugging and they must be enabled at server compile time.
2514 </para>
2515 </listitem>
2517 <!--
2518 Author: Tom Lane <tgl@sss.pgh.pa.us>
2519 2024-01-25 [7014c9a4b] Doc: improve documentation for jsonpath behavior.
2522 <listitem>
2523 <para>
2524 Improve documentation for using jsonpath for predicate checks (David Wheeler)
2525 </para>
2526 </listitem>
2528 </itemizedlist>
2530 </sect3>
2532 <sect3 id="release-17-modules">
2533 <title>Additional Modules</title>
2535 <itemizedlist>
2537 <!--
2538 Author: Etsuro Fujita <efujita@postgresql.org>
2539 2023-08-15 [9e9931d2b] Re-allow FDWs and custom scan providers to replace joins
2542 <listitem>
2543 <para>
2544 Allow joins with non-join qualifications to be pushed down to foreign servers and custom scans (Richard Guo, Etsuro Fujita)
2545 </para>
2547 <para>
2548 Foreign data wrappers and custom scans will need to be modified to handle these cases.
2549 </para>
2550 </listitem>
2552 <!--
2553 Author: Alexander Korotkov <akorotkov@postgresql.org>
2554 2023-12-05 [824dbea3e] Add support for deparsing semi-joins to contrib/postgres
2557 <listitem>
2558 <para>
2559 Allow pushdown of EXISTS and IN subqueries to the postgres_fdw foreign server (Alexander Pyhalov)
2560 </para>
2561 </listitem>
2563 <!--
2564 Author: David Rowley <drowley@postgresql.org>
2565 2023-11-02 [cac169d68] Increase DEFAULT_FDW_TUPLE_COST from 0.01 to 0.2
2566 Author: John Naylor <john.naylor@postgresql.org>
2567 2024-01-11 [f7f694b21] Update documentation of default fdw_tuple_cost
2570 <listitem>
2571 <para>
2572 Increase the default foreign data wrapper tuple cost (David Rowley, Umair Shahid)
2573 </para>
2575 <para>
2576 This value is used by the optimizer.
2577 </para>
2578 </listitem>
2580 <!--
2581 Author: Michael Paquier <michael@paquier.xyz>
2582 2023-10-05 [d61f2538a] postgres_fdw: Replace WAIT_EVENT_EXTENSION with custom w
2585 <listitem>
2586 <para>
2587 Create custom wait events for postgres_fdw (Masahiro Ikeda)
2588 </para>
2589 </listitem>
2591 <!--
2592 Author: Michael Paquier <michael@paquier.xyz>
2593 2023-10-05 [c789f0f6c] dblink: Replace WAIT_EVENT_EXTENSION with custom wait ev
2596 <listitem>
2597 <para>
2598 Create custom wait events for dblink (Masahiro Ikeda)
2599 </para>
2600 </listitem>
2602 <!--
2603 Author: Noah Misch <noah@leadboat.com>
2604 2024-01-08 [d3c5f37dd] Make dblink interruptible, via new libpqsrv APIs.
2607 <listitem>
2608 <para>
2609 Allow dblink database operations to be interrupted (Noah Misch)
2610 </para>
2611 </listitem>
2613 <!--
2614 Author: Tom Lane <tgl@sss.pgh.pa.us>
2615 2024-03-21 [485f0aa85] Add hash support functions and hash opclass for contrib/
2618 <listitem>
2619 <para>
2620 Allow the creation of hash indexes on ltree columns (Tommy Pavlicek)
2621 </para>
2623 <para>
2624 This also enables hash join and hash aggregation on ltree columns.
2625 </para>
2626 </listitem>
2628 <!--
2629 Author: Michael Paquier <michael@paquier.xyz>
2630 2023-09-20 [59f47fb98] unaccent: Add support for quoted translated characters
2633 <listitem>
2634 <para>
2635 Allow unaccent character translation rules to contain whitespace and quotes (Michael Paquier)
2636 </para>
2638 <para>
2639 The syntax for unaccent.rules has changed.
2640 </para>
2641 </listitem>
2643 <!--
2644 Author: Alexander Korotkov <akorotkov@postgresql.org>
2645 2023-10-28 [5ae208720] Teach contrib/amcheck to check the unique constraint vio
2648 <listitem>
2649 <para>
2650 Allow amcheck to check for unique constraint violations (Anastasia Lubennikova, Pavel Borisov, Maxim Orlov)
2651 </para>
2653 <para>
2654 The pg_amcheck option --checkunique will check all the unique indexes.
2655 </para>
2656 </listitem>
2658 <!--
2659 Author: Peter Eisentraut <peter@eisentraut.org>
2660 2023-11-07 [3c551ebed] citext: Allow tests to pass in OpenSSL FIPS mode
2663 <listitem>
2664 <para>
2665 Allow citext tests to pass in OpenSSL FIPS mode (Peter Eisentraut)
2666 </para>
2667 </listitem>
2669 <!--
2670 Author: Peter Eisentraut <peter@eisentraut.org>
2671 2023-11-17 [795592865] pgcrypto: Allow tests to pass in OpenSSL FIPS mode
2674 <listitem>
2675 <para>
2676 Allow pgcrypto tests to pass in OpenSSL FIPS mode (Peter Eisentraut)
2677 </para>
2678 </listitem>
2680 <!--
2681 Author: Nathan Bossart <nathan@postgresql.org>
2682 2023-11-27 [75680c3d8] Retire a few backwards compatibility macros.
2685 <listitem>
2686 <para>
2687 Remove some unused SPI macros (Bharath Rupireddy)
2688 </para>
2689 </listitem>
2691 <!--
2692 Author: Daniel Gustafsson <dgustafsson@postgresql.org>
2693 2024-03-04 [cc09e6549] Remove the adminpack contrib extension
2696 <listitem>
2697 <para>
2698 Remove adminpack contrib extension (Daniel Gustafsson)
2699 </para>
2701 <para>
2702 This was used by now end-of-life pgAdmin III.
2703 </para>
2704 </listitem>
2706 <!--
2707 Author: Tom Lane <tgl@sss.pgh.pa.us>
2708 2023-10-20 [2b5154bea] Extend ALTER OPERATOR to allow setting more optimization
2711 <listitem>
2712 <para>
2713 Allow ALTER OPERATOR to set more optimization attributes (Tommy Pavlicek)
2714 </para>
2716 <para>
2717 This is useful for extensions.
2718 </para>
2719 </listitem>
2721 <!--
2722 Author: Michael Paquier <michael@paquier.xyz>
2723 2023-07-31 [c9af05465] Support custom wait events for wait event type "Extensio
2724 Author: Michael Paquier <michael@paquier.xyz>
2725 2023-10-04 [c8e318b1b] worker_spi: Rename custom wait event to "WorkerSpiMain"
2728 <listitem>
2729 <para>
2730 Allow extensions to define custom wait events (Masahiro Ikeda)
2731 </para>
2732 </listitem>
2734 <!--
2735 Author: Thomas Munro <tmunro@postgresql.org>
2736 2024-04-08 [13453eedd] Add pg_buffercache_evict() function for testing.
2739 <listitem>
2740 <para>
2741 Add pg_buffercache function pg_buffercache_evict() to allow shared buffer eviction (Palak Chaturvedi, Thomas Munro)
2742 </para>
2744 <para>
2745 This is useful for testing.
2746 </para>
2747 </listitem>
2749 </itemizedlist>
2751 <sect4 id="release-17-pgstatstatements">
2752 <title><link linkend="pgstatstatements"><application>pg_statstatements</application></link></title>
2754 <itemizedlist>
2756 <!--
2757 Author: Michael Paquier <michael@paquier.xyz>
2758 2023-09-28 [11c34b342] Show parameters of CALL as constants in pg_stat_statemen
2761 <listitem>
2762 <para>
2763 Replace CALL parameters in pg_stat_statements with placeholders (Sami Imseih)
2764 </para>
2765 </listitem>
2767 <!--
2768 Author: Michael Paquier <michael@paquier.xyz>
2769 2023-07-27 [31de7e60d] Show savepoint names as constants in pg_stat_statements
2772 <listitem>
2773 <para>
2774 Replace savepoint names stored in pg_stat_statements with placeholders (Greg Sabino Mullane)
2775 </para>
2777 <para>
2778 This greatly reduces the number of entries needed to record SAVEPOINT, RELEASE SAVEPOINT, and ROLLBACK TO SAVEPOINT commands.
2779 </para>
2780 </listitem>
2782 <!--
2783 Author: Michael Paquier <michael@paquier.xyz>
2784 2023-08-12 [638d42a3c] Show GIDs of two-phase commit commands as constants in p
2787 <listitem>
2788 <para>
2789 Replace two-phase commit GIDs stored in pg_stat_statements with placeholders (Michael Paquier)
2790 </para>
2792 <para>
2793 This greatly reduces the number of entries needed to record PREPARE TRANSACTION, COMMIT PREPARED, and ROLLBACK PREPARED.
2794 </para>
2795 </listitem>
2797 <!--
2798 Author: Michael Paquier <michael@paquier.xyz>
2799 2023-08-27 [bb45156f3] Show names of DEALLOCATE as constants in pg_stat_stateme
2802 <listitem>
2803 <para>
2804 Track DEALLOCATE in pg_stat_statements (Dagfinn Ilmari Mannsåker, Michael Paquier)
2805 </para>
2807 <para>
2808 DEALLOCATE names are stored in pg_stat_statements as placeholders.
2809 </para>
2810 </listitem>
2812 <!--
2813 Author: Michael Paquier <michael@paquier.xyz>
2814 2023-10-19 [295c36c0c] Add local_blk_{read|write}_time I/O timing statistics fo
2815 Author: Michael Paquier <michael@paquier.xyz>
2816 2023-10-19 [5147ab1dd] pg_stat_statements: Add local_blk_{read|write}_time
2819 <listitem>
2820 <para>
2821 Add local I/O block read/write timing statistics columns of pg_stat_statements (Nazir Bilal Yavuz)
2822 </para>
2824 <para>
2825 The new columns are "local_blk_read_time" and "local_blk_write_time".
2826 </para>
2827 </listitem>
2829 <!--
2830 Author: Daniel Gustafsson <dgustafsson@postgresql.org>
2831 2023-09-08 [5a3423ad8] Add JIT deform_counter
2834 <listitem>
2835 <para>
2836 Add JIT deform_counter details to pg_stat_statements (Dmitry Dolgov)
2837 </para>
2838 </listitem>
2840 <!--
2841 Author: Alexander Korotkov <akorotkov@postgresql.org>
2842 2023-11-27 [dc9f8a798] Track statement entry timestamp in contrib/pg_stat_state
2845 <listitem>
2846 <para>
2847 Add optional fourth argument (minmax_only) to pg_stat_statements_reset() to allow for the resetting of only min/max statistics (Andrei Zubkov)
2848 </para>
2850 <para>
2851 This argument defaults to "false".
2852 </para>
2853 </listitem>
2855 <!--
2856 Author: Alexander Korotkov <akorotkov@postgresql.org>
2857 2023-11-27 [dc9f8a798] Track statement entry timestamp in contrib/pg_stat_state
2860 <listitem>
2861 <para>
2862 Add pg_stat_statements columns "stats_since" and "minmax_stats_since" to track entry creation time and last min/max reset time (Andrei Zubkov)
2863 </para>
2864 </listitem>
2866 </itemizedlist>
2868 </sect4>
2870 </sect3>
2872 </sect2>
2874 <sect2 id="release-17-acknowledgements">
2875 <title>Acknowledgments</title>
2877 <para>
2878 The following individuals (in alphabetical order) have contributed
2879 to this release as patch authors, committers, reviewers, testers,
2880 or reporters of issues.
2881 </para>
2883 <simplelist>
2884 <member></member>
2885 </simplelist>
2886 </sect2>
2888 </sect1>