# PostgreSQL 17 New Features

> GA source edition · 108 pages · 2024-09-30

---

LLMS index: [llms.txt](/en/llms.txt)

---

<div class="feature-book-intro"><p class="feature-book-kicker">WITH EXAMPLES · ENGLISH SOURCE EDITION</p><p>Explore the features, SQL examples, and compatibility changes documented by <a href="https://github.com/nori-shinoda">Noriyoshi Shinoda</a>.</p><div class="feature-book-actions"><a class="feature-read-button" href="01-about/">Start reading <span aria-hidden="true">→</span></a><a href="/en/_print/17/">Print this book</a><a href="https://github.com/nori-shinoda/documents/blob/1773200c5362476c4a549222b7d17fa91f546cae/postgresql17_ga_new_features_en_20240930-1.pdf">Original PDF on GitHub</a></div></div>

<div class="feature-source-note"><span class="feature-edition-badge">GA</span><span>2024-09-30</span><span>108 PDF pages</span><span>9 chapters</span></div>

## Contents

- [1 About This Document](/en/17/01-about/)
- [2 New Features Summary](/en/17/02-summary/)
- [3 Architecture](/en/17/03-architecture/)
- [4 SQL Statements](/en/17/04-sql/)
- [5 Configuration Parameters](/en/17/05-configuration/)
- [6 Utilities](/en/17/06-utilities/)
- [7 Contrib Modules](/en/17/07-modules/)
- [8 URL List](/en/17/08-url-list/)
- [9 Change History](/en/17/09-change-history/)

## Reference indexes

The opening chapter includes the first numbered table, [Table 1](/en/17/01-about/#pg17-tbl-1). The indexes below collect the book's other native numbered components.

<details class="feature-index"><summary>Tables</summary>

- [Table 1](/en/17/01-about/#pg17-tbl-1) — Version
- [Table 2](/en/17/01-about/#pg17-tbl-2) — Examples of notation
- [Table 3](/en/17/01-about/#pg17-tbl-3) — Syntax rules
- [Table 4](/en/17/02-summary/#pg17-tbl-4) — Removed options
- [Table 5](/en/17/02-summary/#pg17-tbl-5) — Modes column output
- [Table 6](/en/17/03-architecture/#pg17-tbl-6) — Add system catalogs and views
- [Table 7](/en/17/03-architecture/#pg17-tbl-7) — System catalogs\/views with additional columns
- [Table 8](/en/17/03-architecture/#pg17-tbl-8) — System catalogs\/views with removed columns
- [Table 9](/en/17/03-architecture/#pg17-tbl-9) — System catalogs\/views with changed columns name
- [Table 10](/en/17/03-architecture/#pg17-tbl-10) — View which in information\_schema schema with removed column name
- [Table 11](/en/17/03-architecture/#pg17-tbl-11) — System catalogs\/views with modified output
- [Table 12](/en/17/03-architecture/#pg17-tbl-12) — The pg\_wait\_events view
- [Table 13](/en/17/03-architecture/#pg17-tbl-13) — The pg\_stat\_checkpointer view
- [Table 14](/en/17/03-architecture/#pg17-tbl-14) — WAL summary retrieval functions
- [Table 15](/en/17/03-architecture/#pg17-tbl-15) — Possible values for the option
- [Table 16](/en/17/03-architecture/#pg17-tbl-16) — Added functions
- [Table 17](/en/17/03-architecture/#pg17-tbl-17) — Added functions
- [Table 18](/en/17/03-architecture/#pg17-tbl-18) — Added functions
- [Table 19](/en/17/03-architecture/#pg17-tbl-19) — Added functions
- [Table 20](/en/17/03-architecture/#pg17-tbl-20) — Added functions
- [Table 21](/en/17/03-architecture/#pg17-tbl-21) — Added functions
- [Table 22](/en/17/03-architecture/#pg17-tbl-22) — Added functions
- [Table 23](/en/17/03-architecture/#pg17-tbl-23) — Added Wait Events
- [Table 24](/en/17/03-architecture/#pg17-tbl-24) — Renamed wait event
- [Table 25](/en/17/04-sql/#pg17-tbl-25) — Available value for the ON\_ERROR option
- [Table 26](/en/17/04-sql/#pg17-tbl-26) — Available value for the LOG\_VERBOSITY option
- [Table 27](/en/17/04-sql/#pg17-tbl-27) — Available value for the SERIALIZE option
- [Table 28](/en/17/04-sql/#pg17-tbl-28) — Added JSONPATH methods
- [Table 29](/en/17/04-sql/#pg17-tbl-29) — Changed Element Name
- [Table 30](/en/17/05-configuration/#pg17-tbl-30) — Added parameters
- [Table 31](/en/17/05-configuration/#pg17-tbl-31) — Possible values
- [Table 32](/en/17/05-configuration/#pg17-tbl-32) — Modified Parameters
- [Table 33](/en/17/05-configuration/#pg17-tbl-33) — Parameters with default values changed
- [Table 34](/en/17/05-configuration/#pg17-tbl-34) — Removed parameters
- [Table 35](/en/17/06-utilities/#pg17-tbl-35) — Add\/change options
- [Table 36](/en/17/06-utilities/#pg17-tbl-36) — Major options
- [Table 37](/en/17/06-utilities/#pg17-tbl-37) — Major options
- [Table 38](/en/17/06-utilities/#pg17-tbl-38) — Object type
- [Table 39](/en/17/06-utilities/#pg17-tbl-39) — Available options
- [Table 40](/en/17/06-utilities/#pg17-tbl-40) — Renamed options
- [Table 41](/en/17/06-utilities/#pg17-tbl-41) — Possible values for option
- [Table 42](/en/17/07-modules/#pg17-tbl-42) — Added function
- [Table 43](/en/17/07-modules/#pg17-tbl-43) — Added columns
- [Table 44](/en/17/07-modules/#pg17-tbl-44) — Removed column
- [Table 45](/en/17/07-modules/#pg17-tbl-45) — Added functions
- [Table 46](/en/17/07-modules/#pg17-tbl-46) — Added function
- [Table 47](/en/17/07-modules/#pg17-tbl-47) — Added functions
- [Table 48](/en/17/07-modules/#pg17-tbl-48) — Added functions
- [Table 49](/en/17/07-modules/#pg17-tbl-49) — Added modules

</details>

<details class="feature-index"><summary>Examples</summary>

- [Example 1](/en/17/02-summary/#pg17-eg-1) — Behavior of PostgreSQL 16\.2
- [Example 2](/en/17/02-summary/#pg17-eg-2) — Behavior of PostgreSQL 17
- [Example 3](/en/17/02-summary/#pg17-eg-3) — PostgreSQL 16 output
- [Example 4](/en/17/02-summary/#pg17-eg-4) — PostgreSQL 17 output
- [Example 5](/en/17/02-summary/#pg17-eg-5) — Execution result of pgrowlocks function
- [Example 6](/en/17/03-architecture/#pg17-eg-6) — Reference to the pg\_wait\_events view
- [Example 7](/en/17/03-architecture/#pg17-eg-7) — Reference to the pg\_stat\_checkpointer view
- [Example 8](/en/17/03-architecture/#pg17-eg-8) — Log when streaming replication standby instance downs
- [Example 9](/en/17/03-architecture/#pg17-eg-9) — Creating the Replication Slot with Failover Attribute
- [Example 10](/en/17/03-architecture/#pg17-eg-10) — Create SUBSCRIPTION with FAILOVER attribute
- [Example 11](/en/17/03-architecture/#pg17-eg-11) — Synchronization error log for replication slots
- [Example 12](/en/17/03-architecture/#pg17-eg-12) — Replication slot synchronization success log
- [Example 13](/en/17/03-architecture/#pg17-eg-13) — Forced synchronization of replication slots
- [Example 14](/en/17/03-architecture/#pg17-eg-14) — WAL summary files
- [Example 15](/en/17/03-architecture/#pg17-eg-15) — Functions for WAL summary information
- [Example 16](/en/17/03-architecture/#pg17-eg-16) — Execute the incremental backup
- [Example 17](/en/17/03-architecture/#pg17-eg-17) — Merge backup data
- [Example 18](/en/17/03-architecture/#pg17-eg-18) — Manifest file enhancements
- [Example 19](/en/17/03-architecture/#pg17-eg-19) — Check the system ID
- [Example 20](/en/17/03-architecture/#pg17-eg-20) — Allow exclude constraints
- [Example 21](/en/17/03-architecture/#pg17-eg-21) — Supports for IDENTITY column
- [Example 22](/en/17/03-architecture/#pg17-eg-22) — Behavior of PostgreSQL 16
- [Example 23](/en/17/03-architecture/#pg17-eg-23) — Grant MAINTAIN privilege
- [Example 24](/en/17/03-architecture/#pg17-eg-24) — Execution privilege of pg\_current\_logfile function
- [Example 25](/en/17/03-architecture/#pg17-eg-25) — Specifying a builtin locale provider
- [Example 26](/en/17/03-architecture/#pg17-eg-26) — Publishing login event trigger
- [Example 27](/en/17/03-architecture/#pg17-eg-27) — Generate REINDEX event trigger \(REINDEX start\)
- [Example 28](/en/17/03-architecture/#pg17-eg-28) — Generate REINDEX event trigger \(REINDEX finish\)
- [Example 29](/en/17/03-architecture/#pg17-eg-29) — Logging for trust connection \(PostgreSQL 16\)
- [Example 30](/en/17/03-architecture/#pg17-eg-30) — Logging for trust connection \(PostgreSQL 17\)
- [Example 31](/en/17/03-architecture/#pg17-eg-31) — Replication slot logging
- [Example 32](/en/17/03-architecture/#pg17-eg-32) — Recovery logging
- [Example 33](/en/17/03-architecture/#pg17-eg-33) — The part of wait\_event\_names\.txt
- [Example 34](/en/17/03-architecture/#pg17-eg-34) — Estimated number of tuples in PostgreSQL 17
- [Example 35](/en/17/03-architecture/#pg17-eg-35) — Estimated number of tuples in PostgreSQL 16
- [Example 36](/en/17/04-sql/#pg17-eg-36) — Attribute modification by ALTER OPERATOR statement
- [Example 37](/en/17/04-sql/#pg17-eg-37) — ALTER SYSTEM statement to change parameters for extensions
- [Example 38](/en/17/04-sql/#pg17-eg-38) — Change access method
- [Example 39](/en/17/04-sql/#pg17-eg-39) — Specifying the SET EXPRESSION clause
- [Example 40](/en/17/04-sql/#pg17-eg-40) — Specifying the SET STATISTICS clause
- [Example 41](/en/17/04-sql/#pg17-eg-41) — CLUSTER with VERBOSE clause
- [Example 42](/en/17/04-sql/#pg17-eg-42) — Specifying the FORCE\_NULL \* option
- [Example 43](/en/17/04-sql/#pg17-eg-43) — Specifying the ON\_ERROR option
- [Example 44](/en/17/04-sql/#pg17-eg-44) — Specifying the LOG\_VERBOSITY option
- [Example 45](/en/17/04-sql/#pg17-eg-45) — Specifying the access method
- [Example 46](/en/17/04-sql/#pg17-eg-46) — EXPLAIN statement in JSON format
- [Example 47](/en/17/04-sql/#pg17-eg-47) — EXPLAIN statement with MEMORY clause
- [Example 48](/en/17/04-sql/#pg17-eg-48) — EXPLAIN statement with SERIALIZE clause
- [Example 49](/en/17/04-sql/#pg17-eg-49) — Specifying the BY SOURCE clause
- [Example 50](/en/17/04-sql/#pg17-eg-50) — MERGE statement with the RETURNING clause
- [Example 51](/en/17/04-sql/#pg17-eg-51) — MERGE statement for updatable views
- [Example 52](/en/17/04-sql/#pg17-eg-52) — \%TYPE attribute and \%ROWTYPE attribute
- [Example 53](/en/17/04-sql/#pg17-eg-53) — Execution error occurs in PostgreSQL 16
- [Example 54](/en/17/04-sql/#pg17-eg-54) — INTERVAL type and Infinity
- [Example 55](/en/17/04-sql/#pg17-eg-55) — Specify the AT LOCAL clause
- [Example 56](/en/17/04-sql/#pg17-eg-56) — Behavior of PostgreSQL 17
- [Example 57](/en/17/04-sql/#pg17-eg-57) — Behavior of PostgreSQL 16
- [Example 58](/en/17/04-sql/#pg17-eg-58) — Added JSON constructor
- [Example 59](/en/17/04-sql/#pg17-eg-59) — JSONPATH methods
- [Example 60](/en/17/04-sql/#pg17-eg-60) — Timestamp with Time zone
- [Example 61](/en/17/04-sql/#pg17-eg-61) — JSON query
- [Example 62](/en/17/04-sql/#pg17-eg-62) — Execute JSON\_TABLE function
- [Example 63](/en/17/04-sql/#pg17-eg-63) — Execute jsonb\_populate\_record\_valid function
- [Example 64](/en/17/04-sql/#pg17-eg-64) — Execute pg\_basetype function
- [Example 65](/en/17/04-sql/#pg17-eg-65) — Execute random function
- [Example 66](/en/17/04-sql/#pg17-eg-66) — Execute to\_bin \/ to\_oct function
- [Example 67](/en/17/04-sql/#pg17-eg-67) — Execute to\_regtypemod function
- [Example 68](/en/17/04-sql/#pg17-eg-68) — Execute to\_timestamp function with TZ\/OF
- [Example 69](/en/17/04-sql/#pg17-eg-69) — Execute UNICODE related functions
- [Example 70](/en/17/04-sql/#pg17-eg-70) — Execute on EUC\_JP encoded database
- [Example 71](/en/17/04-sql/#pg17-eg-71) — Execute xmltext function
- [Example 72](/en/17/04-sql/#pg17-eg-72) — Execute UUID related functions
- [Example 73](/en/17/04-sql/#pg17-eg-73) — Execute pg\_column\_toast\_chunk\_id function
- [Example 74](/en/17/04-sql/#pg17-eg-74) — Execution Plan on PostgreSQL 17
- [Example 75](/en/17/04-sql/#pg17-eg-75) — Execution Plan on PostgreSQL 16
- [Example 76](/en/17/04-sql/#pg17-eg-76) — Execution Plan on PostgreSQL 17
- [Example 77](/en/17/04-sql/#pg17-eg-77) — Execution Plan on PostgreSQL 16
- [Example 78](/en/17/04-sql/#pg17-eg-78) — Execution Plan on PostgreSQL 17
- [Example 79](/en/17/04-sql/#pg17-eg-79) — Execution Plan on PostgreSQL 16
- [Example 80](/en/17/04-sql/#pg17-eg-80) — Execution Plan on PostgreSQL 17
- [Example 81](/en/17/04-sql/#pg17-eg-81) — Execution Plan on PostgreSQL 16
- [Example 82](/en/17/04-sql/#pg17-eg-82) — Execution Plan on PostgreSQL 17
- [Example 83](/en/17/04-sql/#pg17-eg-83) — Execution Plan on PostgreSQL 16
- [Example 84](/en/17/05-configuration/#pg17-eg-84) — Permission to execute ALTER SYSTEM statement
- [Example 85](/en/17/05-configuration/#pg17-eg-85) — Transaction timeout
- [Example 86](/en/17/06-utilities/#pg17-eg-86) — Specifying the \-\-all and \-\-table options
- [Example 87](/en/17/06-utilities/#pg17-eg-87) — Execution log of configure command
- [Example 88](/en/17/06-utilities/#pg17-eg-88) — Specifying the builtin locale provider
- [Example 89](/en/17/06-utilities/#pg17-eg-89) — Execute pg\_combinebackup command
- [Example 90](/en/17/06-utilities/#pg17-eg-90) — Execute pg\_createsubscriber command
- [Example 91](/en/17/06-utilities/#pg17-eg-91) — Add dbname to primary\_conninfo parameter
- [Example 92](/en/17/06-utilities/#pg17-eg-92) — \-\-help option outputs
- [Example 93](/en/17/06-utilities/#pg17-eg-93) — \-\-filter option
- [Example 94](/en/17/06-utilities/#pg17-eg-94) — Specifying the \-\-transaction\-size option
- [Example 95](/en/17/06-utilities/#pg17-eg-95) — \-\-help option output
- [Example 96](/en/17/06-utilities/#pg17-eg-96) — Execute the pg\_walsummary command
- [Example 97](/en/17/06-utilities/#pg17-eg-97) — View function information
- [Example 98](/en/17/06-utilities/#pg17-eg-98) — Ignore the semicolon at the end of the line
- [Example 99](/en/17/06-utilities/#pg17-eg-99) — Specify the minimum number of tuples
- [Example 100](/en/17/06-utilities/#pg17-eg-100) — Specifying \-\-all and \-\-schema options
- [Example 101](/en/17/06-utilities/#pg17-eg-101) — Specify \-\-index and \-\-jobs options
- [Example 102](/en/17/06-utilities/#pg17-eg-102) — Specifying \-\-all and \-\-exclude\-schema options
- [Example 103](/en/17/06-utilities/#pg17-eg-103) — Specify option \-\-sync\-method
- [Example 104](/en/17/07-modules/#pg17-eg-104) — Specify checkunique parameter
- [Example 105](/en/17/07-modules/#pg17-eg-105) — Specify \-\-checkunique option
- [Example 106](/en/17/07-modules/#pg17-eg-106) — Constant SAVEPOINT statement
- [Example 107](/en/17/07-modules/#pg17-eg-107) — Constant CALL statement
- [Example 108](/en/17/07-modules/#pg17-eg-108) — Constant PREPARE statement and COMMIT statement
- [Example 109](/en/17/07-modules/#pg17-eg-109) — Reset min\/max values
- [Example 110](/en/17/07-modules/#pg17-eg-110) — Execution Plan on PostgreSQL 17
- [Example 111](/en/17/07-modules/#pg17-eg-111) — Execution Plan on PostgreSQL 16
- [Example 112](/en/17/07-modules/#pg17-eg-112) — Using hash indexes for ltree types
- [Example 113](/en/17/07-modules/#pg17-eg-113) — Using the test\_radixtree extension
- [Example 114](/en/17/07-modules/#pg17-eg-114) — Burn through lots of transaction ID

</details>

<details class="feature-index"><summary>Figures</summary>



</details>

## Source edition



The source chapter order, wording, examples, and publication credits are retained.
PDF page markers link the reading edition to the original document.
[Source identity and coverage](/sources/pg17-semantic.json) · [About the collection](/en/materials/)

---

Section pages:

- [About This Document](/en/17/01-about/): Purpose, audience, scope, software versions, notation, and responsibility statement.
- [New Features Summary](/en/17/02-summary/): The source document's overview of the release, benefits, and incompatibilities.
- [Architecture](/en/17/03-architecture/): Architecture, catalogs, replication, execution, I/O, roles, and server internals.
- [SQL Statements](/en/17/04-sql/): SQL syntax, data types, functions, optimizer behavior, and worked examples.
- [Configuration Parameters](/en/17/05-configuration/): Added, modified, removed, and default-value changes for configuration parameters.
- [Utilities](/en/17/06-utilities/): Changes to configure, initdb, backup, restore, upgrade, psql, and maintenance tools.
- [Contrib Modules](/en/17/07-modules/): Changes to contrib extensions and the modules covered by the source document.
- [URL List](/en/17/08-url-list/): The external references and release links listed by the source PDF.
- [Change History](/en/17/09-change-history/): The source document's revision history.
