# PostgreSQL 16 New Features

> GA source edition · 98 pages · 2023-09-19

---

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/16/">Print this book</a><a href="https://github.com/nori-shinoda/documents/blob/1773200c5362476c4a549222b7d17fa91f546cae/postgresql16_ga_new_features_en_20230919-1.pdf">Original PDF on GitHub</a></div></div>

<div class="feature-source-note"><span class="feature-edition-badge">GA</span><span>2023-09-19</span><span>98 PDF pages</span><span>9 chapters</span></div>

## Contents

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

## Reference indexes

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

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

- [Table 1](/en/16/01-about/#pg16-tbl-1) — Version
- [Table 2](/en/16/01-about/#pg16-tbl-2) — Examples of notation
- [Table 3](/en/16/01-about/#pg16-tbl-3) — Syntax rules
- [Table 4](/en/16/02-summary/#pg16-tbl-4) — WAL archive module API
- [Table 5](/en/16/02-summary/#pg16-tbl-5) — ASCII Conversion rule
- [Table 6](/en/16/02-summary/#pg16-tbl-6) — Modified options
- [Table 7](/en/16/03-architecture/#pg16-tbl-7) — Add system catalogs and views
- [Table 8](/en/16/03-architecture/#pg16-tbl-8) — System catalogs\/views with additional columns
- [Table 9](/en/16/03-architecture/#pg16-tbl-9) — System catalogs\/views with modified output
- [Table 10](/en/16/03-architecture/#pg16-tbl-10) — The pg\_stat\_io view
- [Table 11](/en/16/03-architecture/#pg16-tbl-11) — The origin option setting
- [Table 12](/en/16/03-architecture/#pg16-tbl-12) — Replication mode setting \(PUBLISHER side\)
- [Table 13](/en/16/03-architecture/#pg16-tbl-13) — Replication mode setting \(SUBSCRIBER side\)
- [Table 14](/en/16/03-architecture/#pg16-tbl-14) — Add syntaxes
- [Table 15](/en/16/03-architecture/#pg16-tbl-15) — Add predefined roles
- [Table 16](/en/16/03-architecture/#pg16-tbl-16) — Add Wait Events
- [Table 17](/en/16/03-architecture/#pg16-tbl-17) — Renamed Wait Event
- [Table 18](/en/16/03-architecture/#pg16-tbl-18) — Connection string require\_auth
- [Table 19](/en/16/03-architecture/#pg16-tbl-19) — Setting value
- [Table 20](/en/16/03-architecture/#pg16-tbl-20) — Setting value
- [Table 21](/en/16/04-sql/#pg16-tbl-21) — Integer literal description
- [Table 22](/en/16/04-sql/#pg16-tbl-22) — Access privileges and the possible lock modes
- [Table 23](/en/16/05-configuration/#pg16-tbl-23) — Added parameters
- [Table 24](/en/16/05-configuration/#pg16-tbl-24) — Possible values
- [Table 25](/en/16/05-configuration/#pg16-tbl-25) — Modified Parameters
- [Table 26](/en/16/05-configuration/#pg16-tbl-26) — Parameters with default values changed
- [Table 27](/en/16/05-configuration/#pg16-tbl-27) — Removed parameters
- [Table 28](/en/16/06-utilities/#pg16-tbl-28) — Add\/Remove options
- [Table 29](/en/16/06-utilities/#pg16-tbl-29) — Add\/Modify options
- [Table 30](/en/16/06-utilities/#pg16-tbl-30) — Add\/change options
- [Table 31](/en/16/06-utilities/#pg16-tbl-31) — Compression level range
- [Table 32](/en/16/06-utilities/#pg16-tbl-32) — File name explanation
- [Table 33](/en/16/06-utilities/#pg16-tbl-33) — Command execution status
- [Table 34](/en/16/06-utilities/#pg16-tbl-34) — Possible values
- [Table 35](/en/16/07-modules/#pg16-tbl-35) — Results of the pg\_buffercache\_summary function
- [Table 36](/en/16/07-modules/#pg16-tbl-36) — Return value of the pg\_get\_wal\_block\_info function
- [Table 37](/en/16/07-modules/#pg16-tbl-37) — Possible values for the analyze\_sampling option

</details>

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

- [Example 1](/en/16/02-summary/#pg16-eg-1) — Modify attributes of the bootstrap user
- [Example 2](/en/16/02-summary/#pg16-eg-2) — Duplicate error in WAL archive settings
- [Example 3](/en/16/02-summary/#pg16-eg-3) — Datetime expression that causes an error in PostgreSQL 16
- [Example 4](/en/16/02-summary/#pg16-eg-4) — PostgreSQL 16 behavior
- [Example 5](/en/16/02-summary/#pg16-eg-5) — Failure of the ALTER TABLE statement
- [Example 6](/en/16/02-summary/#pg16-eg-6) — System column foreign key specification error
- [Example 7](/en/16/02-summary/#pg16-eg-7) — Failure of the GRANT statement
- [Example 8](/en/16/02-summary/#pg16-eg-8) — PostgreSQL 15 behavior
- [Example 9](/en/16/02-summary/#pg16-eg-9) — PostgreSQL 16 behavior
- [Example 10](/en/16/02-summary/#pg16-eg-10) — Failure of the RESET statement
- [Example 11](/en/16/02-summary/#pg16-eg-11) — PostgreSQL 15 behavior
- [Example 12](/en/16/02-summary/#pg16-eg-12) — PostgreSQL 16 behavior
- [Example 13](/en/16/02-summary/#pg16-eg-13) — PostgreSQL 16 behavior
- [Example 14](/en/16/02-summary/#pg16-eg-14) — PostgreSQL 16 behavior
- [Example 15](/en/16/02-summary/#pg16-eg-15) — ECPG program with error
- [Example 16](/en/16/03-architecture/#pg16-eg-16) — Reference to the pg\_ident\_file\_mapping view\.
- [Example 17](/en/16/03-architecture/#pg16-eg-17) — Reset of the pg\_stat\_io view
- [Example 18](/en/16/03-architecture/#pg16-eg-18) — Setting for parallel apply
- [Example 19](/en/16/03-architecture/#pg16-eg-19) — The origin option setting
- [Example 20](/en/16/03-architecture/#pg16-eg-20) — Log of the COPY statements executed in initial data synchronization
- [Example 21](/en/16/03-architecture/#pg16-eg-21) — SUBSCRIPTION creation role
- [Example 22](/en/16/03-architecture/#pg16-eg-22) — Execute pg\_log\_standby\_snapshot function \(Primary instance\)
- [Example 23](/en/16/03-architecture/#pg16-eg-23) — Parallel Hash Full Join execution plan
- [Example 24](/en/16/03-architecture/#pg16-eg-24) — Execute string\_agg function
- [Example 25](/en/16/03-architecture/#pg16-eg-25) — Pg\_hba\.conf file with regular expressions
- [Example 26](/en/16/03-architecture/#pg16-eg-26) — Settings to include files
- [Example 27](/en/16/03-architecture/#pg16-eg-27) — Conversion of ICU locale \&\#x27\;C\&\#x27\;
- [Example 28](/en/16/03-architecture/#pg16-eg-28) — Specifying custom rules
- [Example 29](/en/16/03-architecture/#pg16-eg-29) — Check custom rules
- [Example 30](/en/16/03-architecture/#pg16-eg-30) — Check UNICODE locale
- [Example 31](/en/16/03-architecture/#pg16-eg-31) — Checkpoint log
- [Example 32](/en/16/03-architecture/#pg16-eg-32) — Auto vacuum log
- [Example 33](/en/16/03-architecture/#pg16-eg-33) — Setting the required authentication method
- [Example 34](/en/16/03-architecture/#pg16-eg-34) — Random selection of connection destination
- [Example 35](/en/16/03-architecture/#pg16-eg-35) — Get PG\_ROUTINE\_OID
- [Example 36](/en/16/03-architecture/#pg16-eg-36) — The WAL sender process name
- [Example 37](/en/16/03-architecture/#pg16-eg-37) — Part of the test\_ext\_req\_schema2\-\-1\.0\.sql
- [Example 38](/en/16/03-architecture/#pg16-eg-38) — Part of the test\_ext\_req\_schema3\.control
- [Example 39](/en/16/04-sql/#pg16-eg-39) — \+Infinity notation
- [Example 40](/en/16/04-sql/#pg16-eg-40) — Notation for integer literals
- [Example 41](/en/16/04-sql/#pg16-eg-41) — Integer literal in the JSONPATH
- [Example 42](/en/16/04-sql/#pg16-eg-42) — Hexadecimal notation of type NUMERIC
- [Example 43](/en/16/04-sql/#pg16-eg-43) — Specifying underscores in the numeric literals
- [Example 44](/en/16/04-sql/#pg16-eg-44) — Specify the DEFAULT option
- [Example 45](/en/16/04-sql/#pg16-eg-45) — Specifying the DEFAULT option \(file\_fdw\)
- [Example 46](/en/16/04-sql/#pg16-eg-46) — User creation by the CREATEROLE attribute user
- [Example 47](/en/16/04-sql/#pg16-eg-47) — SET ROLE statement for creation role
- [Example 48](/en/16/04-sql/#pg16-eg-48) — Name abbreviation in the CREATE STATISTICS statement
- [Example 49](/en/16/04-sql/#pg16-eg-49) — STORAGE clause of the CREATE TABLE statement
- [Example 50](/en/16/04-sql/#pg16-eg-50) — STORAGE DEFAULT clause in the ALTER TABLE statement
- [Example 51](/en/16/04-sql/#pg16-eg-51) — Setting the GENERIC\_PLAN option
- [Example 52](/en/16/04-sql/#pg16-eg-52) — WITH INHERIT clause
- [Example 53](/en/16/04-sql/#pg16-eg-53) — WITH SET clause
- [Example 54](/en/16/04-sql/#pg16-eg-54) — JSON Constructor
- [Example 55](/en/16/04-sql/#pg16-eg-55) — IS JSON Clause
- [Example 56](/en/16/04-sql/#pg16-eg-56) — Fractional seconds
- [Example 57](/en/16/04-sql/#pg16-eg-57) — Omitting the database name
- [Example 58](/en/16/04-sql/#pg16-eg-58) — Execute the VACUUM statement
- [Example 59](/en/16/04-sql/#pg16-eg-59) — TOAST only VACUUM
- [Example 60](/en/16/04-sql/#pg16-eg-60) — The BUFFER\_USAGE\_LIMIT option
- [Example 61](/en/16/04-sql/#pg16-eg-61) — Subquery with the FROM clause
- [Example 62](/en/16/04-sql/#pg16-eg-62) — PostgreSQL 16 behavior
- [Example 63](/en/16/04-sql/#pg16-eg-63) — PostgreSQL 15 behavior
- [Example 64](/en/16/04-sql/#pg16-eg-64) — SELECT statement for the example
- [Example 65](/en/16/04-sql/#pg16-eg-65) — Execution plan in PostgreSQL 15
- [Example 66](/en/16/04-sql/#pg16-eg-66) — Execution plan in PostgreSQL 16
- [Example 67](/en/16/04-sql/#pg16-eg-67) — Execution plan in PostgreSQL 16
- [Example 68](/en/16/04-sql/#pg16-eg-68) — Execution plan in PostgreSQL 15
- [Example 69](/en/16/04-sql/#pg16-eg-69) — Execution plan in PostgreSQL 16
- [Example 70](/en/16/04-sql/#pg16-eg-70) — Array\_sample \/ array\_shuffle function
- [Example 71](/en/16/04-sql/#pg16-eg-71) — Any\_value function
- [Example 72](/en/16/04-sql/#pg16-eg-72) — Date\_add \/ date\_subtract function
- [Example 73](/en/16/04-sql/#pg16-eg-73) — Erf \/ erfc functions
- [Example 74](/en/16/04-sql/#pg16-eg-74) — Execution of generate\_series function with specified interval
- [Example 75](/en/16/04-sql/#pg16-eg-75) — Random\_normal function
- [Example 76](/en/16/04-sql/#pg16-eg-76) — Pg\_read\_file function
- [Example 77](/en/16/04-sql/#pg16-eg-77) — Pg\_split\_walfile\_name function
- [Example 78](/en/16/04-sql/#pg16-eg-78) — Pg\_stat\_get\_backend\_subxact function
- [Example 79](/en/16/04-sql/#pg16-eg-79) — Pg\_input\_is\_valid function
- [Example 80](/en/16/04-sql/#pg16-eg-80) — Pg\_input\_is\_valid \/ pg\_input\_error\_info function
- [Example 81](/en/16/04-sql/#pg16-eg-81) — Pg\_size\_bytes function
- [Example 82](/en/16/04-sql/#pg16-eg-82) — System\_user function
- [Example 83](/en/16/04-sql/#pg16-eg-83) — Specify the INDENT clause
- [Example 84](/en/16/06-utilities/#pg16-eg-84) — Execute the createuser command
- [Example 85](/en/16/06-utilities/#pg16-eg-85) — Execute initdb command with the \-\-icu\-rules option
- [Example 86](/en/16/06-utilities/#pg16-eg-86) — initdb command with the \-\-set option
- [Example 87](/en/16/06-utilities/#pg16-eg-87) — Specifying the compression level to \&\#x27\;long\&\#x27\;
- [Example 88](/en/16/06-utilities/#pg16-eg-88) — Execute the pg\_bsd\_indent command
- [Example 89](/en/16/06-utilities/#pg16-eg-89) — Execute the pg\_dump command
- [Example 90](/en/16/06-utilities/#pg16-eg-90) — Help message of the pg\_dump command
- [Example 91](/en/16/06-utilities/#pg16-eg-91) — Execute the pg\_verifybackup command
- [Example 92](/en/16/06-utilities/#pg16-eg-92) — Execute the pg\_waldump command with the \-\-save\-fullpage option
- [Example 93](/en/16/06-utilities/#pg16-eg-93) — Execute the pg\_waldump command with the \-\-timeline option
- [Example 94](/en/16/06-utilities/#pg16-eg-94) — Check command execution status
- [Example 95](/en/16/06-utilities/#pg16-eg-95) — External table partition information
- [Example 96](/en/16/06-utilities/#pg16-eg-96) — Binding variable settings
- [Example 97](/en/16/06-utilities/#pg16-eg-97) — Specifying the xheader\_width option
- [Example 98](/en/16/06-utilities/#pg16-eg-98) — \\watch metacommand with rerun count
- [Example 99](/en/16/06-utilities/#pg16-eg-99) — \\drg metacommand
- [Example 100](/en/16/06-utilities/#pg16-eg-100) — vacuumdb command with specifying schema
- [Example 101](/en/16/06-utilities/#pg16-eg-101) — With the \-\-no\-process\-main option
- [Example 102](/en/16/06-utilities/#pg16-eg-102) — The vacuumdb command with \-\-buffer\-usage\-limit option
- [Example 103](/en/16/07-modules/#pg16-eg-103) — Output of the query ID
- [Example 104](/en/16/07-modules/#pg16-eg-104) — Execute the daitch\_mokotoff function
- [Example 105](/en/16/07-modules/#pg16-eg-105) — Execute the bt\_multi\_page\_stats function
- [Example 106](/en/16/07-modules/#pg16-eg-106) — Execute the pg\_buffercache\_summary function
- [Example 107](/en/16/07-modules/#pg16-eg-107) — Execute the pg\_buffercache\_usage\_counts function
- [Example 108](/en/16/07-modules/#pg16-eg-108) — Select the pg\_stat\_statements view
- [Example 109](/en/16/07-modules/#pg16-eg-109) — Execute the pg\_get\_wal\_block\_info function
- [Example 110](/en/16/07-modules/#pg16-eg-110) — Execution log on the external table side
- [Example 111](/en/16/07-modules/#pg16-eg-111) — Execute the ANALYZE statement

</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/pg16-semantic.json) · [About the collection](/en/materials/)

---

Section pages:

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