1
0
mirror of https://github.com/postgres/postgres.git synced 2026-01-05 23:38:41 +03:00
Files
postgres/doc/src/sgml/release-18.sgml
Tom Lane 91d070c7bb Last-minute updates for release notes.
Security: CVE-2025-12817, CVE-2025-12818
2025-11-10 13:36:13 -05:00

5972 lines
194 KiB
Plaintext

<!-- doc/src/sgml/release-18.sgml -->
<!-- See header comment in release.sgml about typical markup -->
<sect1 id="release-18-1">
<title>Release 18.1</title>
<formalpara>
<title>Release date:</title>
<para>2025-11-13</para>
</formalpara>
<para>
This release contains a variety of fixes from 18.0.
For information about new features in major release 18, see
<xref linkend="release-18"/>.
</para>
<sect2 id="release-18-1-migration">
<title>Migration to Version 18.1</title>
<para>
A dump/restore is not required for those running 18.X.
</para>
</sect2>
<sect2 id="release-18-1-changes">
<title>Changes</title>
<itemizedlist>
<listitem>
<!--
Author: Nathan Bossart <nathan@postgresql.org>
Branch: master [5e4fcbe53] 2025-11-10 09:00:00 -0600
Branch: REL_18_STABLE [00eb646ea] 2025-11-10 09:00:00 -0600
Branch: REL_17_STABLE [e2fb3dfa8] 2025-11-10 09:00:00 -0600
Branch: REL_16_STABLE [d20abb587] 2025-11-10 09:00:00 -0600
Branch: REL_15_STABLE [2393d374a] 2025-11-10 09:00:00 -0600
Branch: REL_14_STABLE [95cce5669] 2025-11-10 09:00:00 -0600
Branch: REL_13_STABLE [8a2530ebc] 2025-11-10 09:00:00 -0600
-->
<para>
Check for <literal>CREATE</literal> privileges on the schema
in <command>CREATE STATISTICS</command> (Jelte Fennema-Nio)
<ulink url="&commit_baseurl;00eb646ea">&sect;</ulink>
</para>
<para>
This omission allowed table owners to create statistics in any
schema, potentially leading to unexpected naming conflicts.
</para>
<para>
The <productname>PostgreSQL</productname> Project thanks
Jelte Fennema-Nio for reporting this problem.
(CVE-2025-12817)
</para>
</listitem>
<listitem>
<!--
Author: Jacob Champion <jchampion@postgresql.org>
Branch: master [600086f47] 2025-11-10 06:20:33 -0800
Branch: REL_18_STABLE [7eb8fcad8] 2025-11-10 06:03:01 -0800
Branch: REL_17_STABLE [f5999f018] 2025-11-10 06:03:03 -0800
Branch: REL_16_STABLE [585fd9b3c] 2025-11-10 06:03:04 -0800
Branch: REL_15_STABLE [91421565f] 2025-11-10 06:03:05 -0800
Branch: REL_14_STABLE [96d2c7e96] 2025-11-10 06:03:05 -0800
Branch: REL_13_STABLE [d6f0c0d6d] 2025-11-10 06:03:06 -0800
-->
<para>
Avoid integer overflow in allocation-size calculations
within <application>libpq</application> (Jacob Champion)
<ulink url="&commit_baseurl;7eb8fcad8">&sect;</ulink>
</para>
<para>
Several places in <application>libpq</application> were not
sufficiently careful about computing the required size of a memory
allocation. Sufficiently large inputs could cause integer overflow,
resulting in an undersized buffer, which would then lead to writing
past the end of the buffer.
</para>
<para>
The <productname>PostgreSQL</productname> Project thanks Aleksey
Solovev of Positive Technologies for reporting this problem.
(CVE-2025-12818)
</para>
</listitem>
<listitem>
<!--
Author: Amit Langote <amitlan@postgresql.org>
Branch: master [ef5e60a9d] 2025-10-09 01:07:59 -0400
Branch: REL_18_STABLE [dc9125111] 2025-10-09 01:07:52 -0400
Branch: REL_17_STABLE [09f86a42f] 2025-10-09 01:07:36 -0400
Author: Peter Eisentraut <peter@eisentraut.org>
Branch: master [c09a06918] 2025-11-04 12:25:04 +0100
Branch: REL_18_STABLE [1baae827e] 2025-11-04 12:25:14 +0100
Branch: REL_17_STABLE [1e6dfdaa0] 2025-11-04 12:25:20 +0100
-->
<para>
Prevent <quote>unrecognized node type</quote> errors when a SQL/JSON
function such as <function>JSON_VALUE</function> has
a <literal>DEFAULT</literal> clause containing
a <literal>COLLATE</literal> expression (Jian He)
<ulink url="&commit_baseurl;dc9125111">&sect;</ulink>
<ulink url="&commit_baseurl;1baae827e">&sect;</ulink>
</para>
</listitem>
<listitem>
<!--
Author: Richard Guo <rguo@postgresql.org>
Branch: master [18d261409] 2025-10-21 12:35:36 +0900
Branch: REL_18_STABLE [40c242830] 2025-10-21 12:38:16 +0900
Branch: REL_18_STABLE [ee49f2cf4] 2025-10-21 14:12:13 +0900
-->
<para>
Avoid incorrect optimization of
variable-free <literal>HAVING</literal> clauses with grouping sets
(Richard Guo)
<ulink url="&commit_baseurl;40c242830">&sect;</ulink>
<ulink url="&commit_baseurl;ee49f2cf4">&sect;</ulink>
</para>
</listitem>
<listitem>
<!--
Author: Richard Guo <rguo@postgresql.org>
Branch: master [257ee7834] 2025-10-30 11:58:45 +0900
Branch: REL_18_STABLE [ef6168baf] 2025-10-30 12:03:15 +0900
-->
<para>
Do not use parallelism in hash right semi joins (Richard Guo)
<ulink url="&commit_baseurl;ef6168baf">&sect;</ulink>
</para>
<para>
The case does not work reliably due to a race condition in updating
the join's shared hash table.
</para>
</listitem>
<listitem>
<!--
Author: Richard Guo <rguo@postgresql.org>
Branch: master [c1777f2d6] 2025-11-05 18:09:21 +0900
Branch: REL_18_STABLE [500f64636] 2025-11-05 18:15:02 +0900
-->
<para>
Avoid possible division-by-zero when creating ordered-append plans
(Richard Guo)
<ulink url="&commit_baseurl;500f64636">&sect;</ulink>
</para>
<para>
This mistake could result in incorrect selection of the cheapest
path, or in an assertion failure in debug builds.
</para>
</listitem>
<listitem>
<!--
Author: Peter Eisentraut <peter@eisentraut.org>
Branch: master [35e53b684] 2025-10-28 10:07:29 +0100
Branch: REL_18_STABLE [74197bdc8] 2025-10-28 10:11:35 +0100
-->
<para>
Fix planner failure with index types that can do ordered access but
not index-only scans (Maxime Schoemans)
<ulink url="&commit_baseurl;74197bdc8">&sect;</ulink>
</para>
<para>
This oversight resulted in errors like <quote>no data returned for
index-only scan</quote>. The case does not arise with any in-core
index type, but some extensions encountered the problem.
</para>
</listitem>
<listitem>
<!--
Author: Peter Geoghegan <pg@bowt.ie>
Branch: master [843e50208] 2025-10-10 14:52:25 -0400
Branch: REL_18_STABLE [61de81a49] 2025-10-10 14:52:23 -0400
Branch: REL_17_STABLE [ae15cebc2] 2025-10-10 14:52:21 -0400
Branch: REL_16_STABLE [c160fd469] 2025-10-10 14:52:19 -0400
Branch: REL_15_STABLE [ca0c93908] 2025-10-10 14:52:17 -0400
Branch: REL_14_STABLE [314004021] 2025-10-10 14:52:14 -0400
Branch: REL_13_STABLE [af302ff6b] 2025-10-10 14:52:12 -0400
-->
<para>
Remove faulty assertion in btree index cleanup (Peter Geoghegan)
<ulink url="&commit_baseurl;61de81a49">&sect;</ulink>
</para>
</listitem>
<listitem>
<!--
Author: Tomas Vondra <tomas.vondra@postgresql.org>
Branch: master [c98dffcb7] 2025-11-04 18:51:17 +0100
Branch: REL_18_STABLE [a26b753a0] 2025-11-04 18:47:14 +0100
-->
<para>
Avoid possible out-of-memory or <quote>invalid memory alloc request
size</quote> failures during parallel GIN index build (Tomas Vondra)
<ulink url="&commit_baseurl;a26b753a0">&sect;</ulink>
</para>
</listitem>
<listitem>
<!--
Author: Álvaro Herrera <alvherre@kurilemu.de>
Branch: master [a95e3d84c] 2025-11-04 13:23:26 +0100
Branch: REL_18_STABLE [419ffde23] 2025-11-04 13:23:26 +0100
Branch: REL_17_STABLE [f4b68b033] 2025-11-04 13:23:26 +0100
Branch: REL_16_STABLE [6ef33c805] 2025-11-04 13:23:26 +0100
Branch: REL_15_STABLE [23ddadf68] 2025-11-04 13:23:26 +0100
Branch: REL_14_STABLE [f0ad41716] 2025-11-04 13:23:26 +0100
Branch: REL_13_STABLE [3c7b47974] 2025-11-04 13:23:26 +0100
Branch: master [0a3d27bfe] 2025-11-04 20:31:43 +0100
Branch: REL_18_STABLE [8733f0b54] 2025-11-04 20:31:43 +0100
Branch: REL_17_STABLE [3b5007347] 2025-11-04 20:31:43 +0100
Branch: REL_16_STABLE [20442cf50] 2025-11-04 20:31:43 +0100
Branch: REL_15_STABLE [bcfbd3f74] 2025-11-04 20:31:43 +0100
Branch: REL_14_STABLE [65b0d1f74] 2025-11-04 20:31:43 +0100
Branch: REL_13_STABLE [ef81697fe] 2025-11-04 20:31:43 +0100
-->
<para>
Ensure that BRIN autosummarization provides a snapshot for index
expressions that need one (Álvaro Herrera)
<ulink url="&commit_baseurl;419ffde23">&sect;</ulink>
<ulink url="&commit_baseurl;8733f0b54">&sect;</ulink>
</para>
<para>
Previously, autosummarization would fail for such indexes, and then
leave placeholder index tuples behind, causing the index to bloat
over time.
</para>
</listitem>
<listitem>
<!--
Author: David Rowley <drowley@postgresql.org>
Branch: master [9fd29d7ff] 2025-10-21 20:46:14 +1300
Branch: REL_18_STABLE [715983a81] 2025-10-21 20:46:49 +1300
Branch: REL_17_STABLE [c4f5a59ab] 2025-10-21 20:47:10 +1300
Branch: REL_16_STABLE [ef915bf93] 2025-10-21 20:47:35 +1300
Branch: REL_15_STABLE [810aaf7f2] 2025-10-21 20:48:06 +1300
Branch: REL_14_STABLE [eea24eb0a] 2025-10-21 20:48:34 +1300
Branch: REL_13_STABLE [c28f8ca29] 2025-10-21 20:49:00 +1300
-->
<para>
Fix integer-overflow hazard in BRIN index scans when the table
contains close to 2<superscript>32</superscript> pages (Sunil S)
<ulink url="&commit_baseurl;715983a81">&sect;</ulink>
</para>
<para>
This oversight could result in an infinite loop or scanning of
unneeded table pages.
</para>
</listitem>
<listitem>
<!--
Author: David Rowley <drowley@postgresql.org>
Branch: master [6911f8037] 2025-10-23 13:11:02 +1300
Branch: REL_18_STABLE [ceb51d09b] 2025-10-23 13:12:03 +1300
Branch: REL_17_STABLE [10945148e] 2025-10-23 13:12:49 +1300
Branch: REL_16_STABLE [3398b0d02] 2025-10-23 13:13:19 +1300
Branch: REL_15_STABLE [b8ecfbe5a] 2025-10-23 13:13:44 +1300
Branch: REL_14_STABLE [e4316ec4d] 2025-10-23 13:14:08 +1300
Branch: REL_13_STABLE [4afab175b] 2025-10-23 13:14:33 +1300
-->
<para>
Fix incorrect zero-extension of stored values in JIT-generated tuple
deforming code (David Rowley)
<ulink url="&commit_baseurl;ceb51d09b">&sect;</ulink>
</para>
<para>
When not using JIT, the equivalent code does sign-extension not
zero-extension, leading to a different Datum representation of small
integer data types. This inconsistency was masked in most cases,
but it is known to lead to <quote>could not find memoization table
entry</quote> errors when using Memoize plan nodes, and there might
be other symptoms.
</para>
</listitem>
<listitem>
<!--
Author: David Rowley <drowley@postgresql.org>
Branch: master [5c0a20003] 2025-10-18 16:07:04 +1300
Branch: REL_18_STABLE [0b6a02f03] 2025-10-18 16:07:41 +1300
-->
<para>
Fix rare crash when processing hashed <literal>GROUPING
SETS</literal> queries (David Rowley)
<ulink url="&commit_baseurl;0b6a02f03">&sect;</ulink>
</para>
</listitem>
<listitem>
<!--
Author: Tomas Vondra <tomas.vondra@postgresql.org>
Branch: master [b85c4700f] 2025-10-17 22:21:50 +0200
Branch: REL_18_STABLE [aa151022e] 2025-10-17 22:27:49 +0200
-->
<para>
Repair faulty hash-table-size-choosing logic in hash joins
(Tomas Vondra)
<ulink url="&commit_baseurl;aa151022e">&sect;</ulink>
</para>
<para>
Hash joins sometimes used more memory than intended, or failed to
divide it in an efficient way.
</para>
</listitem>
<listitem>
<!--
Author: Nathan Bossart <nathan@postgresql.org>
Branch: master [688dc6299] 2025-10-15 12:47:33 -0500
Branch: REL_18_STABLE [c8af5019b] 2025-10-15 12:47:33 -0500
Branch: REL_18_STABLE [15d7dded0] 2025-10-15 13:14:00 -0500
-->
<para>
Improve relation lookup logic in statistics manipulation functions
(Nathan Bossart)
<ulink url="&commit_baseurl;c8af5019b">&sect;</ulink>
<ulink url="&commit_baseurl;15d7dded0">&sect;</ulink>
</para>
<para>
Fix <function>pg_restore_relation_stats()</function>,
<function>pg_clear_relation_stats()</function>,
<function>pg_restore_attribute_stats()</function>, and
<function>pg_clear_attribute_stats()</function> to check
privileges before acquiring lock on the target relation
rather than after.
</para>
</listitem>
<listitem>
<!--
Author: David Rowley <drowley@postgresql.org>
Branch: master [39dcfda2d] 2025-10-26 10:59:50 +1300
Branch: REL_18_STABLE [a2387c32f] 2025-10-26 11:01:32 +1300
Branch: REL_17_STABLE [0d3074615] 2025-10-26 11:01:53 +1300
Branch: REL_16_STABLE [a546964db] 2025-10-26 11:02:15 +1300
Branch: REL_15_STABLE [2992b9a07] 2025-10-26 11:02:36 +1300
-->
<para>
Fix incorrect logic for caching result-relation information for
triggers (David Rowley, Amit Langote)
<ulink url="&commit_baseurl;a2387c32f">&sect;</ulink>
</para>
<para>
In cases where partitions' column sets aren't physically identical
to their parent partitioned tables' column sets, this oversight
could lead to crashes.
</para>
</listitem>
<listitem>
<!--
Author: Amit Langote <amitlan@postgresql.org>
Branch: master [905e932f0] 2025-10-16 14:01:44 +0900
Branch: REL_18_STABLE [1296dcf18] 2025-10-16 14:01:50 +0900
-->
<para>
Fix crash during EvalPlanQual rechecks on partitioned tables (David
Rowley, Amit Langote)
<ulink url="&commit_baseurl;1296dcf18">&sect;</ulink>
</para>
</listitem>
<listitem>
<!--
Author: Etsuro Fujita <efujita@postgresql.org>
Branch: master [12609fbac] 2025-10-15 17:15:00 +0900
Branch: REL_18_STABLE [b14144325] 2025-10-15 17:15:01 +0900
Branch: REL_17_STABLE [2bb84ea7e] 2025-10-15 17:15:02 +0900
Branch: REL_16_STABLE [5a9af4868] 2025-10-15 17:15:03 +0900
Branch: REL_15_STABLE [4a08603a2] 2025-10-15 17:15:04 +0900
Branch: REL_14_STABLE [24e74b962] 2025-10-15 17:15:05 +0900
Branch: REL_13_STABLE [12b0c0e51] 2025-10-15 17:15:05 +0900
-->
<para>
Fix EvalPlanQual handling of foreign or custom joins that do not
have an alternative local-join plan prepared for EPQ (Masahiko
Sawada, Etsuro Fujita)
<ulink url="&commit_baseurl;b14144325">&sect;</ulink>
</para>
<para>
In such cases the foreign or custom access method should be invoked
normally, but that did not happen, typically leading to a crash.
</para>
</listitem>
<listitem>
<!--
Author: Álvaro Herrera <alvherre@kurilemu.de>
Branch: master [3231fd045] 2025-10-11 20:30:12 +0200
Branch: REL_18_STABLE [08c037dff] 2025-10-11 20:30:12 +0200
Branch: REL_17_STABLE [ea06f97ee] 2025-10-11 20:30:12 +0200
Branch: REL_16_STABLE [b835759ec] 2025-10-11 20:30:12 +0200
Branch: REL_15_STABLE [bdae98495] 2025-10-11 20:30:12 +0200
Branch: REL_14_STABLE [b753be38a] 2025-10-11 20:30:12 +0200
-->
<para>
Avoid duplicating hash partition constraints during <literal>DETACH
CONCURRENTLY</literal> (Haiyang Li)
<ulink url="&commit_baseurl;08c037dff">&sect;</ulink>
</para>
<para>
<command>ALTER TABLE DETACH PARTITION CONCURRENTLY</command> was
written to add a copy of the partitioning constraint to the
now-detached partition. This was misguided, partially because
non-concurrent <literal>DETACH</literal> doesn't do that, but mostly
because in the case of hash partitioning the constraint expression
contains references to the parent table's OID. That causes problems
during dump/restore, or if the parent table is dropped
after <literal>DETACH</literal>. In v19 and later, we'll no longer
create any such copied constraints at all. In released branches, to
minimize the risk of unforeseen consequences, only skip adding a
copied constraint if it is for hash partitioning.
</para>
</listitem>
<listitem>
<!--
Author: Peter Eisentraut <peter@eisentraut.org>
Branch: master [040cc5f3c] 2025-11-04 14:46:58 +0100
Branch: REL_18_STABLE [ba99c9491] 2025-11-04 14:47:15 +0100
Branch: REL_17_STABLE [0b44f2443] 2025-11-04 15:18:09 +0100
Branch: REL_16_STABLE [7180d56c5] 2025-11-04 15:22:17 +0100
Branch: REL_15_STABLE [643a5e96c] 2025-11-04 15:28:46 +0100
Branch: REL_14_STABLE [04345d7a4] 2025-11-04 15:37:08 +0100
Branch: REL_13_STABLE [7f239c72a] 2025-11-04 15:37:19 +0100
-->
<para>
Disallow generated columns in partition keys
(Jian He, Ashutosh Bapat)
<ulink url="&commit_baseurl;ba99c9491">&sect;</ulink>
</para>
<para>
This was already not allowed, but the check missed some cases, such
as where the column reference is implicit in a whole-row reference.
</para>
</listitem>
<listitem>
<!--
Author: Peter Eisentraut <peter@eisentraut.org>
Branch: master [aa606b931] 2025-11-06 13:54:42 +0100
Branch: REL_18_STABLE [0f9e0068b] 2025-11-06 13:55:08 +0100
Branch: REL_17_STABLE [07f787e57] 2025-11-06 14:01:42 +0100
Branch: REL_16_STABLE [26958f4d9] 2025-11-06 14:01:57 +0100
Branch: REL_15_STABLE [8278737bf] 2025-11-06 14:02:03 +0100
Branch: REL_14_STABLE [ccfe28eb4] 2025-11-06 14:02:09 +0100
Branch: REL_13_STABLE [3717849e6] 2025-11-06 14:02:13 +0100
-->
<para>
Disallow generated columns in <literal>COPY ... FROM
... WHERE</literal> clauses (Peter Eisentraut, Jian He)
<ulink url="&commit_baseurl;0f9e0068b">&sect;</ulink>
</para>
<para>
Previously, incorrect behavior or an obscure error message resulted
from attempting to reference such a column, since generated columns
have not yet been computed at the point
where <literal>WHERE</literal> filtering is done.
</para>
</listitem>
<listitem>
<!--
Author: Álvaro Herrera <alvherre@kurilemu.de>
Branch: master [cf8be0225] 2025-11-03 15:58:19 +0100
Branch: REL_18_STABLE [d9ffc2729] 2025-11-03 15:58:19 +0100
-->
<para>
Prevent setting a column as identity if it has a not-null constraint
but the constraint is marked as invalid (Jian He)
<ulink url="&commit_baseurl;d9ffc2729">&sect;</ulink>
</para>
<para>
Identity columns must be not-null, but the check for that missed
this edge case.
</para>
</listitem>
<listitem>
<!--
Author: John Naylor <john.naylor@postgresql.org>
Branch: master [54ab74865] 2025-10-03 16:05:02 +0700
Branch: REL_18_STABLE [76613b539] 2025-10-03 16:07:42 +0700
Branch: REL_17_STABLE [3549ffb6a] 2025-10-03 16:07:34 +0700
-->
<para>
Avoid potential use-after-free in parallel vacuum (Kevin Oommen
Anish)
<ulink url="&commit_baseurl;76613b539">&sect;</ulink>
</para>
<para>
This bug seems to have no consequences in standard builds, but it's
theoretically a hazard.
</para>
</listitem>
<listitem>
<!--
Author: Noah Misch <noah@leadboat.com>
Branch: master [a95393ecd] 2025-09-29 11:15:44 -0700
Branch: REL_18_STABLE [d024160ff] 2025-09-29 11:15:47 -0700
Branch: REL_17_STABLE [6778fbca6] 2025-09-29 11:15:48 -0700
Branch: REL_16_STABLE [ab16418ee] 2025-09-29 11:15:48 -0700
Branch: REL_15_STABLE [d202ec1fb] 2025-09-29 11:15:48 -0700
Branch: REL_14_STABLE [5816baa9b] 2025-09-29 11:15:49 -0700
Branch: REL_13_STABLE [afb2cce74] 2025-09-29 11:15:49 -0700
-->
<para>
Fix visibility checking for statistics objects
in <literal>pg_temp</literal> (Noah Misch)
<ulink url="&commit_baseurl;d024160ff">&sect;</ulink>
</para>
<para>
A statistics object located in a temporary schema cannot be named
without schema qualification,
but <function>pg_statistics_obj_is_visible()</function> missed that
memo and could return <quote>true</quote> regardless. In turn,
functions such as <function>pg_describe_object()</function> could
fail to schema-qualify the object's name as expected.
</para>
</listitem>
<listitem>
<!--
Author: Álvaro Herrera <alvherre@kurilemu.de>
Branch: master [ff47f9c16] 2025-10-11 16:39:22 +0200
Branch: REL_18_STABLE [33e7b4a7c] 2025-10-11 16:39:22 +0200
Branch: REL_17_STABLE [f9993ac64] 2025-10-11 16:39:22 +0200
Branch: REL_16_STABLE [c72b5c536] 2025-10-11 16:39:22 +0200
Branch: REL_15_STABLE [23b316c36] 2025-10-11 16:39:22 +0200
-->
<para>
Fix minor memory leak during WAL replay of database creation
(Nathan Bossart)
<ulink url="&commit_baseurl;33e7b4a7c">&sect;</ulink>
</para>
</listitem>
<listitem>
<!--
Author: Fujii Masao <fujii@postgresql.org>
Branch: master [883a95646] 2025-10-22 11:27:15 +0900
Branch: REL_18_STABLE [9670032cc] 2025-10-22 11:28:48 +0900
Branch: REL_17_STABLE [62d5ee75b] 2025-10-22 11:28:57 +0900
Branch: REL_16_STABLE [2e55cf4ef] 2025-10-22 11:29:02 +0900
Branch: REL_15_STABLE [59b215f72] 2025-10-22 11:29:07 +0900
Branch: REL_14_STABLE [a7ab6ce6a] 2025-10-22 11:29:13 +0900
Branch: REL_13_STABLE [7d7ebdb80] 2025-10-22 11:29:18 +0900
-->
<para>
Fix incorrect reporting of replication lag
in <structname>pg_stat_replication</structname> view (Fujii Masao)
<ulink url="&commit_baseurl;9670032cc">&sect;</ulink>
</para>
<para>
If any standby server's replay LSN stopped advancing,
the <structfield>write_lag</structfield>
and <structfield>flush_lag</structfield> columns would eventually
stop updating.
</para>
</listitem>
<listitem>
<!--
Author: Fujii Masao <fujii@postgresql.org>
Branch: master [f33e60a53] 2025-10-22 20:09:43 +0900
Branch: REL_18_STABLE [6ff7ba9fe] 2025-10-22 20:10:58 +0900
Branch: REL_17_STABLE [1db2870bb] 2025-10-22 20:11:47 +0900
Branch: REL_16_STABLE [4fd916eab] 2025-10-22 20:12:36 +0900
Branch: REL_15_STABLE [caf529aba] 2025-10-22 20:13:15 +0900
Branch: REL_14_STABLE [f106f53df] 2025-10-22 20:14:02 +0900
Branch: REL_13_STABLE [b00a16bae] 2025-10-22 20:14:07 +0900
-->
<para>
Avoid duplicative log messages about
invalid <varname>primary_slot_name</varname> settings (Fujii Masao)
<ulink url="&commit_baseurl;6ff7ba9fe">&sect;</ulink>
</para>
</listitem>
<listitem>
<!--
Author: Amit Kapila <akapila@postgresql.org>
Branch: master [e0dc4bbfb] 2025-10-27 06:48:32 +0000
Branch: REL_18_STABLE [b45a8d7d8] 2025-10-27 06:37:35 +0000
Branch: REL_17_STABLE [0024f5a10] 2025-10-27 06:34:29 +0000
-->
<para>
Avoid failures when <varname>synchronized_standby_slots</varname>
references nonexistent replication slots (Shlok Kyal)
<ulink url="&commit_baseurl;b45a8d7d8">&sect;</ulink>
</para>
</listitem>
<listitem>
<!--
Author: Michael Paquier <michael@paquier.xyz>
Branch: master [912af1c7e] 2025-10-10 09:23:59 +0900
Branch: REL_18_STABLE [9a6ea00ac] 2025-10-10 09:24:48 +0900
Branch: REL_17_STABLE [42348839d] 2025-10-10 09:24:50 +0900
Branch: REL_16_STABLE [bfdd1a12d] 2025-10-10 09:24:53 +0900
Branch: REL_15_STABLE [0adf424b4] 2025-10-10 09:24:54 +0900
Branch: REL_14_STABLE [f57f2760e] 2025-10-10 09:24:57 +0900
Branch: REL_13_STABLE [c878d9808] 2025-10-10 09:24:59 +0900
-->
<para>
Remove the unfinished slot state file after failing to write a
replication slot's state to disk (Michael Paquier)
<ulink url="&commit_baseurl;9a6ea00ac">&sect;</ulink>
</para>
<para>
Previously, a failure such as out-of-disk-space resulted in leaving
a temporary <filename>state.tmp</filename> file behind. That's
problematic because it would block all subsequent attempts to
write the state, requiring manual intervention to clean up.
</para>
</listitem>
<listitem>
<!--
Author: Amit Kapila <akapila@postgresql.org>
Branch: master [e41d954da] 2025-09-24 04:11:53 +0000
Branch: REL_18_STABLE [37fc5de43] 2025-09-24 04:00:15 +0000
Branch: REL_17_STABLE [2f6e1a490] 2025-09-24 03:49:02 +0000
Branch: REL_16_STABLE [a54c7a113] 2025-09-24 03:38:27 +0000
-->
<para>
Fix mishandling of lock timeout signals in parallel apply workers
for logical replication (Hayato Kuroda)
<ulink url="&commit_baseurl;37fc5de43">&sect;</ulink>
</para>
<para>
The same signal number was being used for both worker shutdown and
lock timeout, leading to confusion.
</para>
</listitem>
<listitem>
<!--
Author: Michael Paquier <michael@paquier.xyz>
Branch: master [17b2d5ec7] 2025-11-04 10:47:38 +0900
Branch: REL_18_STABLE [a14201073] 2025-11-04 10:52:33 +0900
Branch: REL_17_STABLE [e7340b484] 2025-11-04 10:52:35 +0900
Branch: REL_16_STABLE [9b6109607] 2025-11-04 10:52:38 +0900
Branch: REL_15_STABLE [da5ea6c70] 2025-11-04 10:52:41 +0900
Branch: REL_14_STABLE [a1b8b3b2e] 2025-11-04 10:52:42 +0900
Branch: REL_13_STABLE [25b484080] 2025-11-04 10:52:44 +0900
-->
<para>
Avoid unwanted WAL receiver shutdown when switching from streaming
to archive WAL source (Xuneng Zhou)
<ulink url="&commit_baseurl;a14201073">&sect;</ulink>
</para>
<para>
During a timeline change, a standby server's WAL receiver should
remain alive, waiting for a new WAL streaming start point. Instead
it was repeatedly shutting down and immediately getting restarted,
which could confuse status monitoring code.
</para>
</listitem>
<listitem>
<!--
Author: Masahiko Sawada <msawada@postgresql.org>
Branch: master [b46efe904] 2025-10-09 10:59:27 -0700
Branch: REL_18_STABLE [32b95fc71] 2025-10-09 10:59:29 -0700
Branch: REL_17_STABLE [a61592253] 2025-10-09 10:59:31 -0700
Branch: REL_16_STABLE [b07682bce] 2025-10-09 10:59:34 -0700
Branch: REL_15_STABLE [c40761759] 2025-10-09 10:59:36 -0700
-->
<para>
Fix use-after-free issue in the relation synchronization cache
maintained by the <application>pgoutput</application> logical
decoding plugin (Vignesh C, Masahiko Sawada)
<ulink url="&commit_baseurl;32b95fc71">&sect;</ulink>
</para>
<para>
An error during logical decoding could result in crashes in
subsequent logical decoding attempts in the same session.
The case is only reachable when <application>pgoutput</application>
is invoked via SQL functions.
</para>
</listitem>
<listitem>
<!--
Author: Michael Paquier <michael@paquier.xyz>
Branch: master [d43209468] 2025-10-30 13:13:28 +0900
Branch: REL_18_STABLE [bf3dba508] 2025-10-30 13:13:31 +0900
Branch: REL_17_STABLE [f3fb6bc9f] 2025-10-30 13:13:34 +0900
Branch: REL_16_STABLE [e3714dc05] 2025-10-30 13:13:37 +0900
-->
<para>
Avoid unnecessary invalidation of logical replication slots
(Bertrand Drouvot)
<ulink url="&commit_baseurl;bf3dba508">&sect;</ulink>
</para>
</listitem>
<listitem>
<!--
Author: Jeff Davis <jdavis@postgresql.org>
Branch: master [d115de9d8] 2025-11-04 16:48:16 -0800
Branch: REL_18_STABLE [3ebea75f9] 2025-11-04 16:49:00 -0800
-->
<para>
Re-establish special case for <literal>C</literal> collation in
locale setup (Jeff Davis)
<ulink url="&commit_baseurl;3ebea75f9">&sect;</ulink>
</para>
<para>
This fixes a regression in access to shared catalogs early in
backend startup, before a database has been selected. It is not
known to be a problem for any
core <productname>PostgreSQL</productname> code, but some extensions
were broken.
</para>
</listitem>
<listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [03bf7a12c] 2025-10-13 17:56:45 -0400
Branch: REL_18_STABLE [b48ae226e] 2025-10-13 17:56:45 -0400
Branch: REL_17_STABLE [4c53519e1] 2025-10-13 17:56:45 -0400
Branch: REL_16_STABLE [9883e3cd1] 2025-10-13 17:56:45 -0400
Branch: REL_15_STABLE [f91666c83] 2025-10-13 17:56:45 -0400
Branch: REL_14_STABLE [e91eb4ad6] 2025-10-13 17:56:45 -0400
Branch: REL_13_STABLE [75a555d61] 2025-10-13 17:56:45 -0400
-->
<para>
Fix incorrect printing of messages about failures in checking
whether the user has Windows administrator privilege (Bryan Green)
<ulink url="&commit_baseurl;b48ae226e">&sect;</ulink>
</para>
<para>
This code would have crashed or at least printed garbage.
No such cases have been reported though, indicating that failure of
these system calls is extremely rare.
</para>
</listitem>
<listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [d4baa327a] 2025-11-05 11:09:45 -0500
Branch: REL_18_STABLE [6d8acb777] 2025-11-05 11:09:30 -0500
Branch: REL_17_STABLE [a9515f294] 2025-11-05 11:09:30 -0500
Branch: REL_16_STABLE [c775bf048] 2025-11-05 11:09:30 -0500
-->
<para>
Avoid crash when attempting to
test <productname>PostgreSQL</productname> with certain libsanitizer
options (Emmanuel Sibi, Jacob Champion)
<ulink url="&commit_baseurl;6d8acb777">&sect;</ulink>
</para>
</listitem>
<listitem>
<!--
Author: David Rowley <drowley@postgresql.org>
Branch: master [50eb4e118] 2025-10-30 14:48:10 +1300
Branch: REL_18_STABLE [af3a79e08] 2025-10-30 14:49:07 +1300
Branch: REL_17_STABLE [bd6f986c9] 2025-10-30 14:49:42 +1300
Branch: REL_16_STABLE [cdc04a6c3] 2025-10-30 14:50:05 +1300
Branch: REL_15_STABLE [f3420e006] 2025-10-30 14:50:26 +1300
Branch: REL_14_STABLE [86bd9497f] 2025-10-30 14:50:46 +1300
Branch: REL_13_STABLE [7b955c227] 2025-10-30 14:51:08 +1300
-->
<para>
Fix false memory-context-checking warnings in debug builds
on 64-bit Windows (David Rowley)
<ulink url="&commit_baseurl;af3a79e08">&sect;</ulink>
</para>
</listitem>
<listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [7504d2be9] 2025-09-27 14:29:41 -0400
Branch: REL_18_STABLE [78a284b0b] 2025-09-27 14:29:41 -0400
Branch: REL_17_STABLE [3fc9aa5b0] 2025-09-27 14:29:41 -0400
Branch: REL_16_STABLE [b7f6798c0] 2025-09-27 14:29:41 -0400
Branch: REL_15_STABLE [9ca79896a] 2025-09-27 14:29:41 -0400
Branch: REL_14_STABLE [0be39b4b1] 2025-09-27 14:29:41 -0400
-->
<para>
Correctly handle <literal>GROUP BY DISTINCT</literal> in PL/pgSQL
assignment statements (Tom Lane)
<ulink url="&commit_baseurl;78a284b0b">&sect;</ulink>
</para>
<para>
The parser failed to record the <literal>DISTINCT</literal> option
in this context, so that the command would act as if it were
plain <literal>GROUP BY</literal>.
</para>
</listitem>
<listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [798b19d27] 2025-10-23 11:47:46 -0400
Branch: REL_18_STABLE [447a794f6] 2025-10-23 11:47:46 -0400
Branch: REL_17_STABLE [fbc41a145] 2025-10-23 11:47:46 -0400
Branch: REL_16_STABLE [cbfd4d0f8] 2025-10-23 11:47:46 -0400
Branch: REL_15_STABLE [4cde73259] 2025-10-23 11:47:46 -0400
Branch: REL_14_STABLE [7fb8c9240] 2025-10-23 11:47:46 -0400
Branch: REL_13_STABLE [d90c92d1c] 2025-10-23 11:47:46 -0400
-->
<para>
Avoid leaking memory when handling a SQL error within PL/Python
(Tom Lane)
<ulink url="&commit_baseurl;447a794f6">&sect;</ulink>
</para>
<para>
This fixes a session-lifespan memory leak introduced in our previous
minor releases.
</para>
</listitem>
<listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [ea78bd6d5] 2025-10-05 16:27:47 -0400
Branch: REL_18_STABLE [d83879a32] 2025-10-05 16:27:47 -0400
Branch: REL_17_STABLE [1c4671f7b] 2025-10-05 16:27:47 -0400
Branch: REL_16_STABLE [46c4478db] 2025-10-05 16:27:47 -0400
Branch: REL_15_STABLE [771b106d1] 2025-10-05 16:27:47 -0400
Branch: REL_14_STABLE [f46d77377] 2025-10-05 16:27:47 -0400
Branch: REL_13_STABLE [fc287cf3c] 2025-10-05 16:27:47 -0400
-->
<para>
Fix <application>libpq</application>'s handling of socket-related
errors on Windows within its GSSAPI logic (Ning Wu, Tom Lane)
<ulink url="&commit_baseurl;d83879a32">&sect;</ulink>
</para>
<para>
The code for encrypting/decrypting transmitted data using GSSAPI did
not correctly recognize error conditions on the connection socket,
since Windows reports those differently than other platforms. This
led to failure to make such connections on Windows.
</para>
</listitem>
<listitem>
<!--
Author: Álvaro Herrera <alvherre@kurilemu.de>
Branch: master [615ff828e] 2025-10-18 18:18:19 +0200
Branch: REL_18_STABLE [0fe07fa11] 2025-10-18 18:18:19 +0200
Branch: REL_17_STABLE [c945b06d5] 2025-10-18 18:18:19 +0200
-->
<para>
Fix dumping of non-inherited not-null constraints on inherited table
columns (Dilip Kumar)
<ulink url="&commit_baseurl;0fe07fa11">&sect;</ulink>
</para>
<para>
<application>pg_dump</application> failed to preserve such
constraints when dumping from a pre-v18 server.
</para>
</listitem>
<listitem>
<!--
Author: Álvaro Herrera <alvherre@kurilemu.de>
Branch: master [4921a5972] 2025-10-18 17:50:10 +0200
Branch: REL_18_STABLE [162e70ea0] 2025-10-18 17:50:10 +0200
Branch: REL_17_STABLE [7419c99a2] 2025-10-18 17:50:10 +0200
Branch: REL_16_STABLE [06c1ee6b7] 2025-10-18 17:50:10 +0200
Branch: REL_15_STABLE [4cc3b4445] 2025-10-18 17:50:10 +0200
Branch: REL_14_STABLE [6062c3db3] 2025-10-18 17:50:10 +0200
Branch: REL_13_STABLE [d20df9590] 2025-10-18 17:50:10 +0200
-->
<para>
Fix <application>pg_dump</application>'s sorting of
foreign key constraints (Álvaro Herrera)
<ulink url="&commit_baseurl;162e70ea0">&sect;</ulink>
</para>
<para>
Ensure consistent ordering of these database objects, as was
already done for other object types.
</para>
</listitem>
<listitem>
<!--
Author: Daniel Gustafsson <dgustafsson@postgresql.org>
Branch: master [e686010c5] 2025-08-29 19:28:46 +0200
Branch: REL_18_STABLE Release: REL_18_0 [8980c724b] 2025-08-29 19:28:46 +0200
Branch: REL_17_STABLE [92268b35d] 2025-08-29 19:28:46 +0200
Branch: REL_16_STABLE [ec017a305] 2025-08-29 19:28:46 +0200
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [a239c4a0c] 2025-10-13 12:44:20 -0400
Branch: REL_18_STABLE [6a4009747] 2025-10-13 12:44:20 -0400
Branch: REL_17_STABLE [bf18e9bd7] 2025-10-13 12:44:20 -0400
Branch: REL_16_STABLE [1518b7d76] 2025-10-13 12:44:20 -0400
Branch: master [277dec651] 2025-10-19 14:36:58 -0400
Branch: REL_18_STABLE [aa1fcd087] 2025-10-19 14:36:58 -0400
Branch: REL_17_STABLE [2efca1633] 2025-10-19 14:36:58 -0400
Branch: REL_16_STABLE [c865f5b9f] 2025-10-19 14:36:58 -0400
Branch: REL_15_STABLE [8b9924bce] 2025-10-19 14:36:58 -0400
Branch: REL_14_STABLE [40dc710a6] 2025-10-19 14:36:58 -0400
Branch: REL_13_STABLE [33276cd02] 2025-10-19 14:36:58 -0400
-->
<para>
Fix assorted errors in the data compression logic
in <application>pg_dump</application>
and <application>pg_restore</application>
(Daniel Gustafsson, Tom Lane)
<ulink url="&commit_baseurl;8980c724b">&sect;</ulink>
<ulink url="&commit_baseurl;6a4009747">&sect;</ulink>
<ulink url="&commit_baseurl;aa1fcd087">&sect;</ulink>
</para>
<para>
Error checking was missing or incorrect in several places, and there
were also portability issues that would manifest on big-endian
hardware. These problems had been missed because this code is only
used to read compressed TOC files within directory-format
dumps. <application>pg_dump</application> never produces such a
dump; the case can be reached only by manually compressing the TOC
file after the fact, which is a supported thing to do but very
uncommon.
</para>
</listitem>
<listitem>
<!--
Author: Michael Paquier <michael@paquier.xyz>
Branch: master [902c08887] 2025-10-03 14:03:55 +0900
Branch: REL_18_STABLE [c00637b5f] 2025-10-03 14:04:00 +0900
Branch: REL_17_STABLE [de6de069d] 2025-10-03 14:04:01 +0900
Branch: REL_16_STABLE [640590bb4] 2025-10-03 14:04:03 +0900
Branch: REL_15_STABLE [b5cefc197] 2025-10-03 14:04:05 +0900
Branch: REL_14_STABLE [9b3beb7c6] 2025-10-03 14:04:06 +0900
Branch: REL_13_STABLE [f1a2f3a0c] 2025-10-03 14:04:08 +0900
-->
<para>
Fix <application>pgbench</application> to error out cleanly if
a <literal>COPY</literal> operation is started (Anthonin Bonnefoy)
<ulink url="&commit_baseurl;c00637b5f">&sect;</ulink>
</para>
<para>
<application>pgbench</application> doesn't intend to support this
case, but previously it went into an infinite loop.
</para>
</listitem>
<listitem>
<!--
Author: Fujii Masao <fujii@postgresql.org>
Branch: master [19d4f9ffc] 2025-09-30 23:52:28 +0900
Branch: REL_18_STABLE [29aabbc43] 2025-09-30 23:53:32 +0900
Branch: REL_17_STABLE [a912118c6] 2025-09-30 23:53:46 +0900
Branch: REL_16_STABLE [36c4d30c8] 2025-09-30 23:53:53 +0900
Branch: REL_15_STABLE [bdccb6302] 2025-09-30 23:54:01 +0900
Branch: REL_14_STABLE [cb21e1f92] 2025-09-30 23:55:02 +0900
Branch: REL_13_STABLE [7d7e81d1e] 2025-09-30 23:55:33 +0900
-->
<para>
Fix <application>pgbench</application>'s reporting of multiple
errors (Yugo Nagata)
<ulink url="&commit_baseurl;29aabbc43">&sect;</ulink>
</para>
<para>
In cases where two successive <function>PQgetResult</function> calls
both fail, <application>pgbench</application> might report the wrong
error message.
</para>
</listitem>
<listitem>
<!--
Author: Fujii Masao <fujii@postgresql.org>
Branch: master [8bb174295] 2025-09-26 21:23:43 +0900
Branch: REL_18_STABLE [c736808e0] 2025-09-26 21:24:59 +0900
Branch: REL_17_STABLE [f39d9164b] 2025-09-26 21:25:05 +0900
Branch: REL_16_STABLE [8b2e290bd] 2025-09-26 21:25:11 +0900
Branch: REL_15_STABLE [704f51771] 2025-09-26 21:25:17 +0900
-->
<para>
In <application>pgbench</application>, fix faulty assertion about
errors in pipeline mode (Yugo Nagata)
<ulink url="&commit_baseurl;c736808e0">&sect;</ulink>
</para>
</listitem>
<listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [9224c3025] 2025-10-22 13:38:40 -0400
Branch: REL_18_STABLE [e2072b47b] 2025-10-22 13:38:37 -0400
Branch: REL_17_STABLE [4eb6992af] 2025-10-22 13:38:37 -0400
-->
<para>
Fix per-file memory leakage
in <application>pg_combinebackup</application> (Tom Lane)
<ulink url="&commit_baseurl;e2072b47b">&sect;</ulink>
</para>
</listitem>
<listitem>
<!--
Author: Masahiko Sawada <msawada@postgresql.org>
Branch: master [8ae0f6a0c] 2025-11-04 15:47:25 -0800
Branch: REL_18_STABLE [71aa2e114] 2025-11-04 15:47:22 -0800
Branch: master [eab9e4e27] 2025-08-19 12:11:42 -0700
Branch: REL_18_STABLE Release: REL_18_0 [0beb7e933] 2025-08-19 12:11:39 -0700
Branch: REL_17_STABLE [b6090ed96] 2025-08-19 12:11:37 -0700
Branch: REL_16_STABLE [815fcfb20] 2025-08-19 12:11:34 -0700
Branch: REL_15_STABLE [eb9ee4d18] 2025-08-19 12:11:32 -0700
Branch: REL_14_STABLE [79643105a] 2025-08-19 12:11:29 -0700
Branch: REL_13_STABLE [7d8d36289] 2025-08-19 12:11:25 -0700
-->
<para>
Ensure that <filename>contrib/pg_buffercache</filename> functions
can be canceled (Satyanarayana Narlapuram, Yuhang Qiu)
<ulink url="&commit_baseurl;71aa2e114">&sect;</ulink>
<ulink url="&commit_baseurl;0beb7e933">&sect;</ulink>
</para>
<para>
Some code paths were capable of running for a long time without
checking for interrupts.
</para>
</listitem>
<listitem>
<!--
Author: Nathan Bossart <nathan@postgresql.org>
Branch: master [208927e65] 2025-10-17 11:36:50 -0500
Branch: REL_18_STABLE [3ccf8e9ac] 2025-10-17 11:36:50 -0500
Branch: REL_17_STABLE [a0551bc57] 2025-10-17 11:36:50 -0500
Branch: REL_16_STABLE [fae0ce5e3] 2025-10-17 11:36:50 -0500
Branch: REL_15_STABLE [6c03ae8d6] 2025-10-17 11:36:50 -0500
Branch: REL_14_STABLE [f146eb45c] 2025-10-17 11:36:50 -0500
Branch: REL_13_STABLE [19a64f567] 2025-10-17 11:36:50 -0500
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [da44d71e7] 2025-10-18 18:36:21 -0400
Branch: REL_18_STABLE [c29d32d27] 2025-10-18 18:36:21 -0400
Branch: REL_17_STABLE [d4e8c37cc] 2025-10-18 18:36:21 -0400
Branch: REL_16_STABLE [c26a8eaf6] 2025-10-18 18:36:21 -0400
-->
<para>
Fix <filename>contrib/pg_prewarm</filename>'s privilege checks for
indexes (Ayush Vatsa, Nathan Bossart)
<ulink url="&commit_baseurl;3ccf8e9ac">&sect;</ulink>
<ulink url="&commit_baseurl;c29d32d27">&sect;</ulink>
</para>
<para>
<function>pg_prewarm()</function> requires <literal>SELECT</literal>
privilege on relations to be prewarmed. However, since indexes have
no SQL privileges of their own, this resulted in non-superusers
being unable to prewarm indexes. Instead, check
for <literal>SELECT</literal> privilege on the index's table.
</para>
</listitem>
<listitem>
<!--
Author: Álvaro Herrera <alvherre@kurilemu.de>
Branch: master [16edc1b94] 2025-10-29 12:35:02 +0100
Branch: REL_18_STABLE [b1635c166] 2025-10-29 12:35:02 +0100
-->
<para>
In <filename>contrib/pg_stat_statements</filename>, avoid
crash when two or more constants are marked as having the same
location in the SQL statement text (Sami Imseih, Dmitry Dolgov)
<ulink url="&commit_baseurl;b1635c166">&sect;</ulink>
</para>
</listitem>
<listitem>
<!--
Author: Michael Paquier <michael@paquier.xyz>
Branch: master [684a745f5] 2025-10-02 11:07:30 +0900
Branch: REL_18_STABLE [fc295beb7] 2025-10-02 11:09:10 +0900
Branch: REL_17_STABLE [036decbba] 2025-10-02 11:09:12 +0900
Branch: REL_16_STABLE [c0f9fe877] 2025-10-02 11:09:13 +0900
Branch: REL_15_STABLE [49b5f0b53] 2025-10-02 11:09:15 +0900
Branch: REL_14_STABLE [ee2dbcad0] 2025-10-02 11:09:17 +0900
Branch: REL_13_STABLE [c207bf473] 2025-10-02 11:09:19 +0900
-->
<para>
Make <filename>contrib/pgstattuple</filename> more robust about
empty or invalid index pages (Nitin Motiani)
<ulink url="&commit_baseurl;fc295beb7">&sect;</ulink>
</para>
<para>
Count all-zero pages as free space, and ignore pages that are
invalid according to a check of the page's special-space size.
The code for btree indexes already counted all-zero pages as free,
but the hash and gist code would error out, which has been found to
be much less user-friendly. Similarly, make all three cases agree
on ignoring corrupted pages rather than throwing errors.
</para>
</listitem>
<listitem>
<!--
Author: Thomas Munro <tmunro@postgresql.org>
Branch: master [c5d34f4a5] 2025-11-08 12:26:43 +1300
Branch: REL_18_STABLE [f8ccab0e9] 2025-11-08 12:28:15 +1300
Branch: REL_17_STABLE [03d9140cb] 2025-11-08 12:28:52 +1300
Branch: REL_16_STABLE [2f76ffe5e] 2025-11-08 12:29:15 +1300
Branch: REL_15_STABLE [1c7cba4c5] 2025-11-08 12:30:08 +1300
Branch: REL_14_STABLE [d8ba910b0] 2025-11-08 12:32:42 +1300
Branch: REL_13_STABLE [77b5b2c6f] 2025-11-08 12:33:01 +1300
-->
<para>
Harden our read and write barrier macros to satisfy Clang
(Thomas Munro)
<ulink url="&commit_baseurl;f8ccab0e9">&sect;</ulink>
</para>
<para>
We supposed that <function>__atomic_thread_fence()</function> is a
sufficient barrier to prevent the C compiler from re-ordering memory
accesses around it, but it appears that that's not true for Clang,
allowing it to generate incorrect code for at least RISC-V, MIPS,
and LoongArch machines. Add explicit compiler barriers to fix that.
</para>
</listitem>
<listitem>
<!--
Author: Álvaro Herrera <alvherre@kurilemu.de>
Branch: master [6ad9378c9] 2025-10-16 20:21:05 +0200
Branch: REL_18_STABLE [6aa04a60c] 2025-10-16 20:21:05 +0200
Branch: REL_17_STABLE [a8933194e] 2025-10-16 20:21:05 +0200
Branch: REL_16_STABLE [a506b0c0a] 2025-10-16 20:21:05 +0200
Branch: REL_15_STABLE [33202cba8] 2025-10-16 20:21:05 +0200
Branch: REL_14_STABLE [56cd332f8] 2025-10-16 20:21:05 +0200
Branch: REL_13_STABLE [f768f5a7d] 2025-10-16 20:21:05 +0200
-->
<para>
Fix PGXS build infrastructure to support building
NLS <filename>po</filename> files for extensions (Ryo Matsumura)
<ulink url="&commit_baseurl;6aa04a60c">&sect;</ulink>
</para>
</listitem>
</itemizedlist>
</sect2>
</sect1>
<sect1 id="release-18">
<title>Release 18</title>
<formalpara>
<title>Release date:</title>
<para>2025-09-25</para>
</formalpara>
<sect2 id="release-18-highlights">
<title>Overview</title>
<para>
<productname>PostgreSQL</productname> 18 contains many new features
and enhancements, including:
</para>
<itemizedlist>
<listitem>
<para>
An asynchronous I/O (AIO) subsystem that can improve performance of
sequential scans, bitmap heap scans, vacuums, and other operations.
</para>
</listitem>
<listitem>
<para>
<link linkend="pgupgrade"><application>pg_upgrade</application></link>
now retains optimizer statistics.
</para>
</listitem>
<listitem>
<para>
Support for "skip scan" lookups that allow using
<link linkend="indexes-multicolumn">multicolumn B-tree indexes</link> in
more cases.
</para>
</listitem>
<listitem>
<para>
<link linkend="func_uuid_gen_table"><function>uuidv7()</function></link>
function for generating timestamp-ordered
<link linkend="datatype-uuid">UUIDs</link>.
</para>
</listitem>
<listitem>
<para>
Virtual
<link linkend="sql-createtable-parms-generated-stored">generated columns</link>
that compute their values during read operations. This is now the
default for generated columns.
</para>
</listitem>
<listitem>
<para>
<link linkend="auth-oauth">OAuth authentication</link> support.
</para>
</listitem>
<listitem>
<para>
<literal>OLD</literal> and <literal>NEW</literal> support for
<link linkend="dml-returning"><literal>RETURNING</literal></link> clauses
in <xref linkend="sql-insert"/>, <xref linkend="sql-update"/>,
<xref linkend="sql-delete"/>, and <xref linkend="sql-merge"/> commands.
</para>
</listitem>
<listitem>
<para>
Temporal constraints, or constraints over ranges, for
<link linkend="sql-createtable-parms-primary-key">PRIMARY KEY</link>,
<link linkend="sql-createtable-parms-unique">UNIQUE</link>, and
<link linkend="sql-createtable-parms-references">FOREIGN KEY</link>
constraints.
</para>
</listitem>
</itemizedlist>
<para>
The above items and other new features of
<productname>PostgreSQL</productname> 18 are explained in more detail
in the sections below.
</para>
</sect2>
<sect2 id="release-18-migration">
<title>Migration to Version 18</title>
<para>
A dump/restore using <xref linkend="app-pg-dumpall"/> or use of
<xref linkend="pgupgrade"/> or logical replication is required for
those wishing to migrate data from any previous release. See <xref
linkend="upgrading"/> for general information on migrating to new
major releases.
</para>
<para>
Version 18 contains a number of changes that may affect compatibility
with previous releases. Observe the following incompatibilities:
</para>
<itemizedlist>
<!--
Author: Peter Eisentraut <peter@eisentraut.org>
2024-10-16 [04bec894a04] initdb: Change default to using data checksums.
-->
<listitem>
<para>
Change <xref linkend="app-initdb"/> default to enable data checksums
(Greg Sabino Mullane)
<ulink url="&commit_baseurl;04bec894a04">&sect;</ulink>
</para>
<para>
Checksums can be disabled with the
new <application>initdb</application> option
<option>--no-data-checksums</option>. <xref linkend="pgupgrade"/>
requires matching cluster checksum settings, so this new option can
be useful to upgrade non-checksum old clusters.
</para>
</listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
2025-01-16 [d7674c9fa] Seek zone abbreviations in the IANA data before timezone
-->
<listitem>
<para>
Change time zone abbreviation handling (Tom Lane)
<ulink url="&commit_baseurl;d7674c9fa">&sect;</ulink>
</para>
<para>
The system will now favor the current session's time
zone abbreviations before checking the server variable
<xref linkend="guc-timezone-abbreviations"/>. Previously
<varname>timezone_abbreviations</varname> was checked first.
</para>
</listitem>
<!--
Author: Nathan Bossart <nathan@postgresql.org>
2024-12-02 [db6a4a985] Deprecate MD5 passwords.
-->
<listitem>
<para>
Deprecate <link linkend="auth-password">MD5 password</link>
authentication (Nathan Bossart)
<ulink url="&commit_baseurl;db6a4a985">&sect;</ulink>
</para>
<para>
Support for MD5 passwords will be removed in a future major
version release. <xref linkend="sql-createrole"/> and <xref
linkend="sql-alterrole"/> now emit deprecation warnings when
setting MD5 passwords. These warnings can be disabled by setting
the <xref linkend="guc-md5-password-warnings"/> parameter to
<literal>off</literal>.
</para>
</listitem>
<!--
Author: David Rowley <drowley@postgresql.org>
2024-09-24 [62ddf7ee9] Add ONLY support for VACUUM and ANALYZE
-->
<listitem>
<para>
Change <xref linkend="sql-vacuum"/> and <xref linkend="sql-analyze"/>
to process the inheritance children of a parent (Michael Harris)
<ulink url="&commit_baseurl;62ddf7ee9">&sect;</ulink>
</para>
<para>
The previous behavior can be performed by using the new
<literal>ONLY</literal> option.
</para>
</listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
2024-09-30 [770233748] Do not treat \. as an EOF marker in CSV mode for COPY IN
Author: Tom Lane <tgl@sss.pgh.pa.us>
2024-10-01 [da8a4c166] Reject a copy EOF marker that has data ahead of it on th
-->
<listitem>
<para>
Prevent <link linkend="sql-copy"><command>COPY FROM</command></link>
from treating <literal>\.</literal> as an end-of-file marker when
reading <acronym>CSV</acronym> files (Daniel Vérité, Tom Lane)
<ulink url="&commit_baseurl;770233748">&sect;</ulink>
<ulink url="&commit_baseurl;da8a4c166">&sect;</ulink>
</para>
<para>
<xref linkend="app-psql"/> will still treat
<literal>\.</literal> as an end-of-file marker when reading
<acronym>CSV</acronym> files from <literal>STDIN</literal>.
Older <application>psql</application> clients connecting to
<productname>PostgreSQL</productname> 18 servers might experience <link
linkend="app-psql-meta-commands-copy"><literal>\copy</literal></link>
problems. This release also enforces that <literal>\.</literal>
must appear alone on a line.
</para>
</listitem>
<!--
Author: Michael Paquier <michael@paquier.xyz>
2024-10-03 [e2bab2d79] Remove support for unlogged on partitioned tables
-->
<listitem>
<para>
Disallow unlogged partitioned tables (Michael Paquier)
<ulink url="&commit_baseurl;e2bab2d79">&sect;</ulink>
</para>
<para>
Previously <link linkend="sql-altertable"><command>ALTER TABLE SET
[UN]LOGGED</command></link> did nothing, and the creation of an
unlogged partitioned table did not cause its children to be unlogged.
</para>
</listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
2025-01-23 [01463e1cc] Ensure that AFTER triggers run as the instigating user.
-->
<listitem>
<para>
Execute <literal>AFTER</literal> <link
linkend="triggers">triggers</link> as the role that was active when
trigger events were queued (Laurenz Albe)
<ulink url="&commit_baseurl;01463e1cc">&sect;</ulink>
</para>
<para>
Previously such triggers were run as the role that was active at
trigger execution time (e.g., at <xref linkend="sql-commit"/>).
This is significant for cases where the role is changed between queue
time and transaction commit.
</para>
</listitem>
<!--
Author: Fujii Masao <fujii@postgresql.org>
2024-09-12 [fefa76f70] Remove old RULE privilege completely.
-->
<listitem>
<para>
Remove non-functional support for rule privileges in <xref
linkend="sql-grant"/>/<xref linkend="sql-revoke"/> (Fujii Masao)
<ulink url="&commit_baseurl;fefa76f70">&sect;</ulink>
</para>
<para>
These have been non-functional since
<productname>PostgreSQL</productname> 8.2.
</para>
</listitem>
<!--
Author: David Rowley <drowley@postgresql.org>
2024-08-12 [f0d112759] Remove "parent" column from pg_backend_memory_contexts
-->
<listitem>
<para>
Remove column <link
linkend="view-pg-backend-memory-contexts"><structname>pg_backend_memory_contexts</structname></link>.<structfield>parent</structfield>
(Melih Mutlu)
<ulink url="&commit_baseurl;f0d112759">&sect;</ulink>
</para>
<para>
This is no longer needed since
<structname>pg_backend_memory_contexts</structname>.<structfield>path</structfield>
was added.
</para>
</listitem>
<!--
Author: David Rowley <drowley@postgresql.org>
2024-07-25 [32d3ed816] Add path column to pg_backend_memory_contexts view
Author: David Rowley <drowley@postgresql.org>
2025-04-18 [d9e03864b] Make levels 1-based in
pg_log_backend_memory_contexts()
Author: Fujii Masao <fujii@postgresql.org>
2025-04-21 [706cbed35] doc: Fix memory context level in pg_log_backend_memory_c
-->
<listitem>
<para>
Change
<structname>pg_backend_memory_contexts</structname>.<structfield>level</structfield>
and <link
linkend="functions-admin-signal-table"><function>pg_log_backend_memory_contexts()</function></link>
to be one-based (Melih Mutlu, Atsushi Torikoshi, David Rowley,
Fujii Masao)
<ulink url="&commit_baseurl;32d3ed816">&sect;</ulink>
<ulink url="&commit_baseurl;d9e03864b">&sect;</ulink>
<ulink url="&commit_baseurl;706cbed35">&sect;</ulink>
</para>
<para>
These were previously zero-based.
</para>
</listitem>
<!--
Author: Peter Eisentraut <peter@eisentraut.org>
2024-12-17 [fb1a18810f0] Remove ts_locale.c's lowerstr()
-->
<listitem>
<para>
Change <link linkend="textsearch">full text search</link> to use the
default collation provider of the cluster to read configuration files
and dictionaries, rather than always using libc (Peter Eisentraut)
<ulink url="&commit_baseurl;fb1a18810f0">&sect;</ulink>
</para>
<para>
Clusters that default to non-libc collation providers (e.g., ICU,
builtin) that behave differently than libc for characters processed
by LC_CTYPE could observe changes in behavior of some full-text
search functions, as well as the <xref linkend="pgtrgm"/> extension.
When upgrading such clusters using <xref linkend="pgupgrade"/>, it
is recommended to reindex all indexes related to full-text search
and <application>pg_trgm</application> after the upgrade.
</para>
</listitem>
</itemizedlist>
</sect2>
<sect2 id="release-18-changes">
<title>Changes</title>
<para>
Below you will find a detailed account of the changes between
<productname>PostgreSQL</productname> 18 and the previous major
release.
</para>
<sect3 id="release-18-server">
<title>Server</title>
<sect4 id="release-18-optimizer">
<title>Optimizer</title>
<itemizedlist>
<!--
Author: Alexander Korotkov <akorotkov@postgresql.org>
2025-02-17 [fc069a3a6] Implement Self-Join Elimination
-->
<listitem>
<para>
Automatically remove some unnecessary table self-joins (Andrey
Lepikhov, Alexander Kuzmenkov, Alexander Korotkov, Alena Rybakina)
<ulink url="&commit_baseurl;fc069a3a6">&sect;</ulink>
</para>
<para>
This optimization can be disabled using server variable <xref
linkend="guc-enable-self-join-elimination"/>.
</para>
</listitem>
<!--
Author: Alexander Korotkov <akorotkov@postgresql.org>
2025-04-04 [c0962a113] Convert 'x IN (VALUES ...)' to 'x = ANY ...' then approp
-->
<listitem>
<para>
Convert some <link
linkend="functions-comparisons-in-scalar"><literal>IN (VALUES
...)</literal></link> to <literal>x = ANY ...</literal> for better
optimizer statistics (Alena Rybakina, Andrei Lepikhov)
<ulink url="&commit_baseurl;c0962a113">&sect;</ulink>
</para>
</listitem>
<!--
Author: Alexander Korotkov <akorotkov@postgresql.org>
2024-11-24 [ae4569161] Teach bitmap path generation about transforming OR-claus
-->
<listitem>
<para>
Allow transforming <link
linkend="functions-logical"><literal>OR</literal></link>-clauses
to arrays for faster index processing (Alexander Korotkov, Andrey
Lepikhov)
<ulink url="&commit_baseurl;ae4569161">&sect;</ulink>
</para>
</listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
2024-09-10 [52c707483] Use a hash table to de-duplicate column names in ruleuti
Author: Tom Lane <tgl@sss.pgh.pa.us>
2024-12-19 [276279295] Convert SetOp to read its inputs as outerPlan and innerP
Author: Tom Lane <tgl@sss.pgh.pa.us>
2024-12-19 [8d96f57d5] Improve planner's handling of SetOp plans.
Author: David Rowley <drowley@postgresql.org>
2024-09-05 [908a96861] Optimize WindowAgg's use of tuplestores
-->
<listitem>
<para>
Speed up the processing of <link
linkend="sql-intersect"><literal>INTERSECT</literal></link>,
<link linkend="sql-except"><literal>EXCEPT</literal></link>, <link
linkend="tutorial-window">window aggregates</link>, and <link
linkend="sql-createview">view column aliases</link> (Tom Lane,
David Rowley)
<ulink url="&commit_baseurl;52c707483">&sect;</ulink>
<ulink url="&commit_baseurl;276279295">&sect;</ulink>
<ulink url="&commit_baseurl;8d96f57d5">&sect;</ulink>
<ulink url="&commit_baseurl;908a96861">&sect;</ulink>
</para>
</listitem>
<!--
Author: Richard Guo <rguo@postgresql.org>
2024-11-26 [a8ccf4e93] Reordering DISTINCT keys to match input path's pathkeys
-->
<listitem>
<para>
Allow the keys of <link linkend="sql-distinct"><command>SELECT
DISTINCT</command></link> to be internally reordered to avoid sorting
(Richard Guo)
<ulink url="&commit_baseurl;a8ccf4e93">&sect;</ulink>
</para>
<para>
This optimization can be disabled using <xref
linkend="guc-enable-distinct-reordering"/>.
</para>
</listitem>
<!--
Author: David Rowley <drowley@postgresql.org>
2024-12-12 [bd10ec529] Detect redundant GROUP BY columns using UNIQUE indexes
-->
<listitem>
<para>
Ignore <link linkend="sql-groupby"><literal>GROUP BY</literal></link>
columns that are functionally dependent on other columns (Zhang
Mingli, Jian He, David Rowley)
<ulink url="&commit_baseurl;bd10ec529">&sect;</ulink>
</para>
<para>
If a <literal>GROUP BY</literal> clause includes all columns of
a unique index, as well as other columns of the same table, those
other columns are redundant and can be dropped from the grouping.
This was already true for non-deferred primary keys.
</para>
</listitem>
<!--
Author: Richard Guo <rguo@postgresql.org>
2024-10-09 [67a54b9e8] Allow pushdown of HAVING clauses with grouping sets
Author: Richard Guo <rguo@postgresql.org>
2024-09-10 [247dea89f] Introduce an RTE for the grouping step
Author: Richard Guo <rguo@postgresql.org>
2024-09-10 [f5050f795] Mark expressions nullable by grouping sets
Author: Richard Guo <rguo@postgresql.org>
2025-03-13 [cc5d98525] Fix incorrect handling of subquery pullup
-->
<listitem>
<para>
Allow some <link
linkend="sql-having"><literal>HAVING</literal></link> clauses
on <link linkend="queries-grouping-sets"><literal>GROUPING
SETS</literal></link> to be pushed to <link
linkend="sql-where"><literal>WHERE</literal></link> clauses
(Richard Guo)
<ulink url="&commit_baseurl;67a54b9e8">&sect;</ulink>
<ulink url="&commit_baseurl;247dea89f">&sect;</ulink>
<ulink url="&commit_baseurl;f5050f795">&sect;</ulink>
<ulink url="&commit_baseurl;cc5d98525">&sect;</ulink>
</para>
<para>
This allows earlier row filtering. This release also fixes some
<literal>GROUPING SETS</literal> queries that used to return
incorrect results.
</para>
</listitem>
<!--
Author: David Rowley <drowley@postgresql.org>
2024-07-09 [036bdcec9] Teach planner how to estimate rows for timestamp generat
Author: Dean Rasheed <dean.a.rasheed@gmail.com>
2024-12-02 [97173536e] Add a planner support function for numeric generate_seri
-->
<listitem>
<para>
Improve row estimates for <link
linkend="functions-srf-series"><function>generate_series()</function></link>
using <link linkend="datatype-numeric"><type>numeric</type></link>
and <link linkend="datatype-datetime"><type>timestamp</type></link>
values (David Rowley, Song Jinzhou)
<ulink url="&commit_baseurl;036bdcec9">&sect;</ulink>
<ulink url="&commit_baseurl;97173536e">&sect;</ulink>
</para>
</listitem>
<!--
Author: Richard Guo <rguo@postgresql.org>
2024-07-05 [aa86129e1] Support "Right Semi Join" plan shapes
-->
<listitem>
<para>
Allow the optimizer to use <literal>Right Semi Join</literal> plans
(Richard Guo)
<ulink url="&commit_baseurl;aa86129e1">&sect;</ulink>
</para>
<para>
Semi-joins are used when needing to find if there is at least
one match.
</para>
</listitem>
<!--
Author: Richard Guo <rguo@postgresql.org>
2024-10-09 [828e94c9d] Consider explicit incremental sort for mergejoins
-->
<listitem>
<para>
Allow merge joins to use <link
linkend="guc-enable-incremental-sort">incremental sorts</link>
(Richard Guo)
<ulink url="&commit_baseurl;828e94c9d">&sect;</ulink>
</para>
</listitem>
<!--
Author: Amit Langote <amitlan@postgresql.org>
2025-04-04 [88f55bc97] Make derived clause lookup in EquivalenceClass more effi
Author: David Rowley <drowley@postgresql.org>
2025-04-08 [d69d45a5a] Speedup child EquivalenceMember lookup in planner
-->
<listitem>
<para>
Improve the efficiency of planning queries accessing many partitions
(Ashutosh Bapat, Yuya Watari, David Rowley)
<ulink url="&commit_baseurl;88f55bc97">&sect;</ulink>
<ulink url="&commit_baseurl;d69d45a5a">&sect;</ulink>
</para>
</listitem>
<!--
Author: Richard Guo <rguo@postgresql.org>
2024-07-30 [9b282a935] Fix partitionwise join with partially-redundant join cla
Author: Richard Guo <rguo@postgresql.org>
2024-07-29 [513f4472a] Reduce memory used by partitionwise joins
-->
<listitem>
<para>
Allow <link linkend="guc-enable-partitionwise-join">partitionwise
joins</link> in more cases, and reduce its memory usage (Richard Guo,
Tom Lane, Ashutosh Bapat)
<ulink url="&commit_baseurl;9b282a935">&sect;</ulink>
<ulink url="&commit_baseurl;513f4472a">&sect;</ulink>
</para>
</listitem>
<!--
Author: Alexander Korotkov <akorotkov@postgresql.org>
2025-03-10 [fae535da0] Teach Append to consider tuple_fraction when accumulatin
-->
<listitem>
<para>
Improve cost estimates of partition queries (Nikita Malakhov,
Andrei Lepikhov)
<ulink url="&commit_baseurl;fae535da0">&sect;</ulink>
</para>
</listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
2025-04-02 [0dca5d68d] Change SQL-language functions to use the plan cache.
Author: Tom Lane <tgl@sss.pgh.pa.us>
2025-04-17 [09b07c295] Minor performance improvement for SQL-language functions
-->
<listitem>
<para>
Improve <link linkend="xfunc-sql"><acronym>SQL</acronym>-language
function</link> plan caching (Alexander Pyhalov, Tom Lane)
<ulink url="&commit_baseurl;0dca5d68d">&sect;</ulink>
<ulink url="&commit_baseurl;09b07c295">&sect;</ulink>
</para>
</listitem>
<!--
Author: Robert Haas <rhaas@postgresql.org>
2024-08-21 [e22253467] Treat number of disabled nodes in a path as a separate c
-->
<listitem>
<para>
Improve handling of disabled optimizer features (Robert Haas)
<ulink url="&commit_baseurl;e22253467">&sect;</ulink>
</para>
</listitem>
</itemizedlist>
</sect4>
<sect4 id="release-18-indexes">
<title>Indexes</title>
<itemizedlist>
<!--
Author: Peter Geoghegan <pg@bowt.ie>
2025-04-04 [92fe23d93] Add nbtree skip scan optimization.
Author: Peter Geoghegan <pg@bowt.ie>
2025-04-04 [8a510275d] Further optimize nbtree search scan key comparisons.
-->
<listitem>
<para>
Allow skip scans of <link linkend="xfunc-sql">btree</link> indexes
(Peter Geoghegan)
<ulink url="&commit_baseurl;92fe23d93">&sect;</ulink>
<ulink url="&commit_baseurl;8a510275d">&sect;</ulink>
</para>
<para>
This allows multi-column btree indexes to be used in more cases such
as when there are no restrictions on the first or early indexed
columns (or there are non-equality ones), and there are useful
restrictions on later indexed columns.
</para>
</listitem>
<!--
Author: Peter Eisentraut <peter@eisentraut.org>
2025-03-18 [f278e1fe3] Allow non-btree unique indexes for partition keys
Author: Peter Eisentraut <peter@eisentraut.org>
2025-03-18 [9d6db8bec] Allow non-btree unique indexes for matviews
-->
<listitem>
<para>
Allow non-btree unique indexes to be used as partition keys and in
materialized views (Mark Dilger)
<ulink url="&commit_baseurl;f278e1fe3">&sect;</ulink>
<ulink url="&commit_baseurl;9d6db8bec">&sect;</ulink>
</para>
<para>
The index type must still support equality.
</para>
</listitem>
<!--
Author: Tomas Vondra <tomas.vondra@postgresql.org>
2025-03-03 [8492feb98] Allow parallel CREATE INDEX for GIN indexes
-->
<listitem>
<para>
Allow <link linkend="gin"><literal>GIN</literal></link> indexes to
be created in parallel (Tomas Vondra, Matthias van de Meent)
<ulink url="&commit_baseurl;8492feb98">&sect;</ulink>
</para>
</listitem>
<!--
Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
2025-04-02 [e9e7b6604] Add GiST and btree sortsupport routines for range types
-->
<listitem>
<para>
Allow values to be sorted to speed range-type <link
linkend="gist">GiST</link> and <link linkend="btree">btree</link>
index builds (Bernd Helmle)
<ulink url="&commit_baseurl;e9e7b6604">&sect;</ulink>
</para>
</listitem>
</itemizedlist>
</sect4>
<sect4 id="release-18-performance">
<title>General Performance</title>
<itemizedlist>
<!--
Author: Andres Freund <andres@anarazel.de>
2025-03-17 [02844012b] aio: Basic subsystem initialization
Author: Andres Freund <andres@anarazel.de>
2025-03-17 [da7226993] aio: Add core asynchronous I/O infrastructure
Author: Andres Freund <andres@anarazel.de>
2025-03-18 [55b454d0e] aio: Infrastructure for io_method=worker
Author: Andres Freund <andres@anarazel.de>
2025-03-18 [247ce06b8] aio: Add io_method=worker
Author: Thomas Munro <tmunro@postgresql.org>
2025-03-19 [10f664684] Introduce io_max_combine_limit.
Author: Thomas Munro <tmunro@postgresql.org>
2025-03-19 [06fb5612c] Increase io_combine_limit range to 1MB.
Author: Andres Freund <andres@anarazel.de>
2025-03-26 [c325a7633] aio: Add io_method=io_uring
Author: Andres Freund <andres@anarazel.de>
2025-03-29 [50cb7505b] aio: Implement support for reads in smgr/md/fd
Author: Andres Freund <andres@anarazel.de>
2025-03-30 [047cba7fa] bufmgr: Implement AIO read support
Author: Andres Freund <andres@anarazel.de>
2025-03-30 [12ce89fd0] bufmgr: Use AIO in StartReadBuffers()
Author: Andres Freund <andres@anarazel.de>
2025-03-30 [2a5e709e7] Enable IO concurrency on all systems
-->
<listitem>
<para>
Add an asynchronous I/O subsystem (Andres Freund, Thomas Munro,
Nazir Bilal Yavuz, Melanie Plageman)
<ulink url="&commit_baseurl;02844012b">&sect;</ulink>
<ulink url="&commit_baseurl;da7226993">&sect;</ulink>
<ulink url="&commit_baseurl;55b454d0e">&sect;</ulink>
<ulink url="&commit_baseurl;247ce06b8">&sect;</ulink>
<ulink url="&commit_baseurl;10f664684">&sect;</ulink>
<ulink url="&commit_baseurl;06fb5612c">&sect;</ulink>
<ulink url="&commit_baseurl;c325a7633">&sect;</ulink>
<ulink url="&commit_baseurl;50cb7505b">&sect;</ulink>
<ulink url="&commit_baseurl;047cba7fa">&sect;</ulink>
<ulink url="&commit_baseurl;12ce89fd0">&sect;</ulink>
<ulink url="&commit_baseurl;2a5e709e7">&sect;</ulink>
</para>
<para>
This feature allows backends to queue multiple read requests,
which allows for more efficient sequential scans, bitmap
heap scans, vacuums, etc. This is enabled by server
variable <xref linkend="guc-io-method"/>, with server
variables <xref linkend="guc-io-combine-limit"/> and <xref
linkend="guc-io-max-combine-limit"/> added to control it.
This also enables <xref linkend="guc-effective-io-concurrency"/>
and <xref linkend="guc-maintenance-io-concurrency"/>
values greater than zero for systems without
<function>fadvise()</function> support. The new system view <link
linkend="view-pg-aios"><structname>pg_aios</structname></link>
shows the file handles being used for asynchronous I/O.
</para>
</listitem>
<!--
Author: Tomas Vondra <tomas.vondra@postgresql.org>
2024-09-21 [c4d5cb71d] Increase the number of fast-path lock slots
-->
<listitem>
<para>
Improve the locking performance of queries that access many relations
(Tomas Vondra)
<ulink url="&commit_baseurl;c4d5cb71d">&sect;</ulink>
</para>
</listitem>
<!--
Author: David Rowley <drowley@postgresql.org>
2024-08-20 [adf97c156] Speed up Hash Join by making ExprStates support hashing
Author: David Rowley <drowley@postgresql.org>
2024-12-11 [0f5738202] Use ExprStates for hashing in GROUP BY and SubPlans
Author: Jeff Davis <jdavis@postgresql.org>
2025-03-24 [4d143509c] Create accessor functions for TupleHashEntry.
Author: Jeff Davis <jdavis@postgresql.org>
2025-03-24 [a0942f441] Add ExecCopySlotMinimalTupleExtra().
Author: Jeff Davis <jdavis@postgresql.org>
2025-03-24 [626df47ad] Remove 'additional' pointer from TupleHashEntryData.
-->
<listitem>
<para>
Improve the performance and reduce memory usage of hash joins and
<link linkend="sql-groupby"><literal>GROUP BY</literal></link>
(David Rowley, Jeff Davis)
<ulink url="&commit_baseurl;adf97c156">&sect;</ulink>
<ulink url="&commit_baseurl;0f5738202">&sect;</ulink>
<ulink url="&commit_baseurl;4d143509c">&sect;</ulink>
<ulink url="&commit_baseurl;a0942f441">&sect;</ulink>
<ulink url="&commit_baseurl;626df47ad">&sect;</ulink>
</para>
<para>
This also improves hash set operations used by <link
linkend="sql-except"><literal>EXCEPT</literal></link>, and hash
lookups of subplan values.
</para>
</listitem>
<!--
Author: Melanie Plageman <melanieplageman@gmail.com>
2025-02-11 [052026c9b] Eagerly scan all-visible pages to amortize aggressive va
Author: Melanie Plageman <melanieplageman@gmail.com>
2025-03-03 [06eae9e62] Trigger more frequent autovacuums with relallfrozen
-->
<listitem>
<para>
Allow normal vacuums to freeze some pages, even though they are
all-visible (Melanie Plageman)
<ulink url="&commit_baseurl;052026c9b">&sect;</ulink>
<ulink url="&commit_baseurl;06eae9e62">&sect;</ulink>
</para>
<para>
This reduces the overhead of later full-relation
freezing. The aggressiveness of this can be
controlled by server variable and per-table setting <xref
linkend="guc-vacuum-max-eager-freeze-failure-rate"/>. Previously
vacuum never processed all-visible pages until freezing was required.
</para>
</listitem>
<!--
Author: Nathan Bossart <nathan@postgresql.org>
2025-03-20 [0164a0f9e] Add vacuum_truncate configuration parameter.
-->
<listitem>
<para>
Add server variable <xref linkend="guc-vacuum-truncate"/> to control
file truncation during <xref linkend="sql-vacuum"/> (Nathan Bossart,
Gurjeet Singh)
<ulink url="&commit_baseurl;0164a0f9e">&sect;</ulink>
</para>
<para>
A storage-level parameter with the same name and behavior already
existed.
</para>
</listitem>
<!--
Author: Melanie Plageman <melanieplageman@gmail.com>
2025-03-12 [ff79b5b2a] Increase default effective_io_concurrency to 16
Author: Melanie Plageman <melanieplageman@gmail.com>
2025-03-18 [cc6be07eb] Increase default maintenance_io_concurrency to 16
-->
<listitem>
<para>
Increase server variables <xref
linkend="guc-effective-io-concurrency"/>'s and <xref
linkend="guc-maintenance-io-concurrency"/>'s default values to 16
(Melanie Plageman)
<ulink url="&commit_baseurl;ff79b5b2a">&sect;</ulink>
<ulink url="&commit_baseurl;cc6be07eb">&sect;</ulink>
</para>
<para>
This more accurately reflects modern hardware.
</para>
</listitem>
</itemizedlist>
</sect4>
<sect4 id="release-18-monitoring">
<title>Monitoring</title>
<itemizedlist>
<!--
Author: Melanie Plageman <melanieplageman@gmail.com>
2025-03-12 [9219093ca] Modularize log_connections output
-->
<listitem>
<para>
Increase the logging granularity of server variable <xref
linkend="guc-log-connections"/> (Melanie Plageman)
<ulink url="&commit_baseurl;9219093ca">&sect;</ulink>
</para>
<para>
This server variable was previously only boolean, which is still
supported.
</para>
</listitem>
<!--
Author: Melanie Plageman <melanieplageman@gmail.com>
2025-03-12 [18cd15e70] Add connection establishment duration logging
-->
<listitem>
<para>
Add <varname>log_connections</varname> option to report the duration
of connection stages (Melanie Plageman)
<ulink url="&commit_baseurl;18cd15e70">&sect;</ulink>
</para>
</listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
2025-04-07 [3516ea768] Add local-address escape "%L" to log_line_prefix.
-->
<listitem>
<para>
Add <xref linkend="guc-log-line-prefix"/> escape
<literal>%L</literal> to output the client <acronym>IP</acronym>
address (Greg Sabino Mullane)
<ulink url="&commit_baseurl;3516ea768">&sect;</ulink>
</para>
</listitem>
<!--
Author: Fujii Masao <fujii@postgresql.org>
2025-03-14 [6d376c3b0] Add GUC option to log lock acquisition failures.
Author: Fujii Masao <fujii@postgresql.org>
2025-06-03 [73bdcfab3] Rename log_lock_failure GUC to log_lock_failures for con
-->
<listitem>
<para>
Add server variable <xref linkend="guc-log-lock-failures"/> to log
lock acquisition failures (Yuki Seino, Fujii Masao)
<ulink url="&commit_baseurl;6d376c3b0">&sect;</ulink>
<ulink url="&commit_baseurl;73bdcfab3">&sect;</ulink>
</para>
<para>
Specifically it reports <link
linkend="sql-for-update-share"><command>SELECT
... NOWAIT</command></link> lock failures.
</para>
</listitem>
<!--
Author: Michael Paquier <michael@paquier.xyz>
2025-01-28 [30a6ed0ce] Track per-relation cumulative time spent in [auto]vacuum
-->
<listitem>
<para>
Modify <link
linkend="monitoring-pg-stat-all-tables-view"><structname>pg_stat_all_tables</structname></link>
and its variants to report the time spent in <xref
linkend="sql-vacuum"/>, <xref linkend="sql-analyze"/>, and their
<link linkend="autovacuum">automatic</link> variants (Sami Imseih)
<ulink url="&commit_baseurl;30a6ed0ce">&sect;</ulink>
</para>
<para>
The new columns are <structfield>total_vacuum_time</structfield>,
<structfield>total_autovacuum_time</structfield>,
<structfield>total_analyze_time</structfield>, and
<structfield>total_autoanalyze_time</structfield>.
</para>
</listitem>
<!--
Author: Nathan Bossart <nathan@postgresql.org>
2025-02-11 [bb8dff999] Add cost-based vacuum delay time to progress views.
Author: Nathan Bossart <nathan@postgresql.org>
2025-02-14 [7720082ae] Add delay time to VACUUM/ANALYZE (VERBOSE) and autovacuu
-->
<listitem>
<para>
Add delay time reporting to <xref linkend="sql-vacuum"/> and <xref
linkend="sql-analyze"/> (Bertrand Drouvot, Nathan Bossart)
<ulink url="&commit_baseurl;bb8dff999">&sect;</ulink>
<ulink url="&commit_baseurl;7720082ae">&sect;</ulink>
</para>
<para>
This information appears in the server log, the system views <link
linkend="vacuum-progress-reporting"><structname>pg_stat_progress_vacuum</structname></link>
and <link
linkend="pg-stat-progress-analyze-view"><structname>pg_stat_progress_analyze</structname></link>,
and the output of <xref linkend="sql-vacuum"/> and <xref
linkend="sql-analyze"/> when in <literal>VERBOSE</literal>
mode; tracking must be enabled with the server variable <xref
linkend="guc-track-cost-delay-timing"/>.
</para>
</listitem>
<!--
Author: Masahiko Sawada <msawada@postgresql.org>
2024-08-13 [4c1b4cdb8] Add resource statistics reporting to ANALYZE VERBOSE.
Author: Masahiko Sawada <msawada@postgresql.org>
2024-09-09 [bb7775234] Add WAL usage reporting to ANALYZE VERBOSE output.
-->
<listitem>
<para>
Add <acronym>WAL</acronym>, <acronym>CPU</acronym>, and average
read statistics output to <command>ANALYZE VERBOSE</command>
(Anthonin Bonnefoy)
<ulink url="&commit_baseurl;4c1b4cdb8">&sect;</ulink>
<ulink url="&commit_baseurl;bb7775234">&sect;</ulink>
</para>
</listitem>
<!--
Author: Michael Paquier <michael@paquier.xyz>
2025-02-17 [6a8a7ce47] Add information about WAL buffers full to VACUUM/ANALYZE
-->
<listitem>
<para>
Add full <acronym>WAL</acronym> buffer count to
<command>VACUUM</command>/<command>ANALYZE (VERBOSE)</command>
and autovacuum log output (Bertrand Drouvot)
<ulink url="&commit_baseurl;6a8a7ce47">&sect;</ulink>
</para>
</listitem>
<!--
Author: Michael Paquier <michael@paquier.xyz>
2024-12-19 [9aea73fc6] Add backend-level statistics to pgstats
Author: Michael Paquier <michael@paquier.xyz>
2025-03-03 [3f1db99bf] Handle auxiliary processes in SQL functions of backend s
-->
<listitem>
<para>
Add per-backend I/O statistics reporting (Bertrand Drouvot)
<ulink url="&commit_baseurl;9aea73fc6">&sect;</ulink>
<ulink url="&commit_baseurl;3f1db99bf">&sect;</ulink>
</para>
<para>
The statistics are accessed via <link
linkend="pg-stat-get-backend-io"><function>pg_stat_get_backend_io()</function></link>.
Per-backend I/O statistics can be cleared via <link
linkend="monitoring-stats-funcs-table"><function>pg_stat_reset_backend_stats()</function></link>.
</para>
</listitem>
<!--
Author: Michael Paquier <michael@paquier.xyz>
2025-01-14 [f92c854cf] Make pg_stat_io count IOs as bytes instead of blocks for
-->
<listitem>
<para>
Add <link
linkend="monitoring-pg-stat-io-view"><structname>pg_stat_io</structname></link>
columns to report I/O activity in bytes (Nazir Bilal Yavuz)
<ulink url="&commit_baseurl;f92c854cf">&sect;</ulink>
</para>
<para>
The new columns are <structfield>read_bytes</structfield>,
<structfield>write_bytes</structfield>, and
<structfield>extend_bytes</structfield>. The
<structfield>op_bytes</structfield> column, which always equaled
<link linkend="guc-block-size"><varname>BLCKSZ</varname></link>,
has been removed.
</para>
</listitem>
<!--
Author: Michael Paquier <michael@paquier.xyz>
2025-02-04 [a051e71e2] Add data for WAL in pg_stat_io and backend statistics
Author: Michael Paquier <michael@paquier.xyz>
2025-02-20 [4538bd3f1] doc: Add details about object "wal" in pg_stat_io
Author: Michael Paquier <michael@paquier.xyz>
2025-03-06 [7f7f324eb] Add more monitoring data for WAL writes in the WAL recei
-->
<listitem>
<para>
Add <acronym>WAL</acronym> I/O activity rows to
<structname>pg_stat_io</structname> (Nazir Bilal Yavuz, Bertrand
Drouvot, Michael Paquier)
<ulink url="&commit_baseurl;a051e71e2">&sect;</ulink>
<ulink url="&commit_baseurl;4538bd3f1">&sect;</ulink>
<ulink url="&commit_baseurl;7f7f324eb">&sect;</ulink>
</para>
<para>
This includes <acronym>WAL</acronym> receiver activity and a wait
event for such writes.
</para>
</listitem>
<!--
Author: Michael Paquier <michael@paquier.xyz>
2025-02-26 [6c349d83b] Re-add GUC track_wal_io_timing
-->
<listitem>
<para>
Change server variable <xref linkend="guc-track-wal-io-timing"/>
to control tracking <acronym>WAL</acronym> timing
in <structname>pg_stat_io</structname> instead of <link
linkend="pg-stat-wal-view"><structname>pg_stat_wal</structname></link>
(Bertrand Drouvot)
<ulink url="&commit_baseurl;6c349d83b">&sect;</ulink>
</para>
</listitem>
<!--
Author: Michael Paquier <michael@paquier.xyz>
2025-02-24 [2421e9a51] Remove read/sync fields from pg_stat_wal and GUC track_w
Author: Michael Paquier <michael@paquier.xyz>
2025-02-26 [6c349d83b] Re-add GUC track_wal_io_timing
-->
<listitem>
<para>
Remove read/sync columns from <structname>pg_stat_wal</structname>
(Bertrand Drouvot)
<ulink url="&commit_baseurl;2421e9a51">&sect;</ulink>
<ulink url="&commit_baseurl;6c349d83b">&sect;</ulink>
</para>
<para>
This removes columns <structfield>wal_write</structfield>,
<structfield>wal_sync</structfield>,
<structfield>wal_write_time</structfield>, and
<structfield>wal_sync_time</structfield>.
</para>
</listitem>
<!--
Author: Michael Paquier <michael@paquier.xyz>
2025-03-11 [76def4cdd] Add WAL data to backend statistics
-->
<listitem>
<para>
Add function <link
linkend="pg-stat-get-backend-wal"><function>pg_stat_get_backend_wal()</function></link>
to return per-backend <acronym>WAL</acronym> statistics (Bertrand
Drouvot)
<ulink url="&commit_baseurl;76def4cdd">&sect;</ulink>
</para>
<para>
Per-backend <acronym>WAL</acronym>
statistics can be cleared via <link
linkend="monitoring-stats-funcs-table"><function>pg_stat_reset_backend_stats()</function></link>.
</para>
</listitem>
<!--
Author: Nathan Bossart <nathan@postgresql.org>
2024-10-11 [4e1fad378] Add pg_ls_summariesdir().
-->
<listitem>
<para>
Add function <link
linkend="functions-admin-genfile-table"><function>pg_ls_summariesdir()</function></link>
to specifically list the contents of <link
linkend="storage-file-layout"><envar>PGDATA</envar></link>/<link
linkend="guc-wal-summary-keep-time"><filename>pg_wal/summaries</filename></link>
(Yushi Ogiwara)
<ulink url="&commit_baseurl;4e1fad378">&sect;</ulink>
</para>
</listitem>
<!--
Author: Fujii Masao <fujii@postgresql.org>
2024-09-30 [559efce1d] Add num_done counter to the pg_stat_checkpointer view.
-->
<listitem>
<para>
Add column <link
linkend="monitoring-pg-stat-checkpointer-view"><structname>pg_stat_checkpointer</structname></link>.<structfield>num_done</structfield>
to report the number of completed checkpoints (Anton A. Melnikov)
<ulink url="&commit_baseurl;559efce1d">&sect;</ulink>
</para>
<para>
Columns <structfield>num_timed</structfield> and
<structfield>num_requested</structfield> count both completed and
skipped checkpoints.
</para>
</listitem>
<!--
Author: Fujii Masao <fujii@postgresql.org>
2024-10-02 [17cc5f666] Fix inconsistent reporting of checkpointer stats.
-->
<listitem>
<para>
Add column
<structname>pg_stat_checkpointer</structname>.<structfield>slru_written</structfield>
to report <acronym>SLRU</acronym> buffers written (Nitin Jadhav)
<ulink url="&commit_baseurl;17cc5f666">&sect;</ulink>
</para>
<para>
Also, modify the checkpoint server log message to report separate
shared buffer and <acronym>SLRU</acronym> buffer values.
</para>
</listitem>
<!--
Author: Michael Paquier <michael@paquier.xyz>
2024-11-11 [e7a9496de] Add two attributes to pg_stat_database for parallel work
-->
<listitem>
<para>
Add columns to <link
linkend="monitoring-pg-stat-database-view"><structname>pg_stat_database</structname></link>
to report parallel worker activity (Benoit Lobréau)
<ulink url="&commit_baseurl;e7a9496de">&sect;</ulink>
</para>
<para>
The new columns are
<structfield>parallel_workers_to_launch</structfield> and
<structfield>parallel_workers_launched</structfield>.
</para>
</listitem>
<!--
Author: Álvaro Herrera <alvherre@alvh.no-ip.org>
2025-03-18 [62d712ecf] Introduce squashing of constant lists in query jumbling
Author: Álvaro Herrera <alvherre@alvh.no-ip.org>
2025-03-27 [9fbd53dea] Remove the query_id_squash_values GUC
Author: Álvaro Herrera <alvherre@kurilemu.de>
Branch: master Release: REL_18_BR [c2da1a5d6] 2025-06-24 19:36:32 +0200
-->
<listitem>
<para>
Have <link linkend="guc-compute-query-id">query id</link> computation
of constant lists consider only the first and last constants (Dmitry
Dolgov, Sami Imseih)
<ulink url="&commit_baseurl;62d712ecf">&sect;</ulink>
<ulink url="&commit_baseurl;9fbd53dea">&sect;</ulink>
<ulink url="&commit_baseurl;c2da1a5d6">&sect;</ulink>
</para>
<para>
Jumbling is used by <xref linkend="pgstatstatements"/>.
</para>
</listitem>
<!--
Author: Michael Paquier <michael@paquier.xyz>
2025-03-26 [787514b30] Use relation name instead of OID in query jumbling for R
-->
<listitem>
<para>
Adjust query id computations to group together queries using the
same relation name (Michael Paquier, Sami Imseih)
<ulink url="&commit_baseurl;787514b30">&sect;</ulink>
</para>
<para>
This is true even if the tables in different schemas have different
column names.
</para>
</listitem>
<!--
Author: David Rowley <drowley@postgresql.org>
2024-07-01 [12227a1d5] Add context type field to pg_backend_memory_contexts
-->
<listitem>
<para>
Add column <link
linkend="view-pg-backend-memory-contexts"><structname>pg_backend_memory_contexts</structname></link>.<structfield>type</structfield>
to report the type of memory context (David Rowley)
<ulink url="&commit_baseurl;12227a1d5">&sect;</ulink>
</para>
</listitem>
<!--
Author: David Rowley <drowley@postgresql.org>
2024-07-25 [32d3ed816] Add path column to pg_backend_memory_contexts view
-->
<listitem>
<para>
Add column
<structname>pg_backend_memory_contexts</structname>.<structfield>path</structfield>
to show memory context parents (Melih Mutlu)
<ulink url="&commit_baseurl;32d3ed816">&sect;</ulink>
</para>
</listitem>
</itemizedlist>
</sect4>
<sect4 id="release-18-privileges">
<title>Privileges</title>
<itemizedlist>
<!--
Author: Michael Paquier <michael@paquier.xyz>
2024-07-04 [4564f1ceb] Add pg_get_acl() to get the ACL for a database object
Author: Michael Paquier <michael@paquier.xyz>
2024-07-10 [d898665bf] Extend pg_get_acl() to handle sub-object IDs
-->
<listitem>
<para>
Add function <link
linkend="functions-info-object-table"><function>pg_get_acl()</function></link>
to retrieve database access control details (Joel Jacobson)
<ulink url="&commit_baseurl;4564f1ceb">&sect;</ulink>
<ulink url="&commit_baseurl;d898665bf">&sect;</ulink>
</para>
</listitem>
<!--
Author: Fujii Masao <fujii@postgresql.org>
2024-09-12 [4eada203a] Add has_largeobject_privilege function.
-->
<listitem>
<para>
Add function <link
linkend="functions-info-access-table"><function>has_largeobject_privilege()</function></link>
to check large object privileges (Yugo Nagata)
<ulink url="&commit_baseurl;4eada203a">&sect;</ulink>
</para>
</listitem>
<!--
Author: Fujii Masao <fujii@postgresql.org>
2025-04-04 [0d6c47766] Extend ALTER DEFAULT PRIVILEGES to define default privil
-->
<listitem>
<para>
Allow <xref linkend="sql-alterdefaultprivileges"/> to define
large object default privileges (Takatsuka Haruka, Yugo Nagata,
Laurenz Albe)
<ulink url="&commit_baseurl;0d6c47766">&sect;</ulink>
</para>
</listitem>
<!--
Author: Nathan Bossart <nathan@postgresql.org>
2024-07-09 [ccd38024b] Introduce pg_signal_autovacuum_worker.
-->
<listitem>
<para>
Add predefined role <link
linkend="predefined-roles"><literal>pg_signal_autovacuum_worker</literal></link>
(Kirill Reshke)
<ulink url="&commit_baseurl;ccd38024b">&sect;</ulink>
</para>
<para>
This allows sending signals to autovacuum workers.
</para>
</listitem>
</itemizedlist>
</sect4>
<sect4 id="release-18-server-config">
<title>Server Configuration</title>
<itemizedlist>
<!--
Author: Daniel Gustafsson <dgustafsson@postgresql.org>
2025-02-20 [b3f0be788] Add support for OAUTHBEARER SASL mechanism
-->
<listitem>
<para>
Add support for the <link linkend="auth-oauth">OAuth authentication
method</link> (Jacob Champion, Daniel Gustafsson, Thomas Munro)
<ulink url="&commit_baseurl;b3f0be788">&sect;</ulink>
</para>
<para>
This adds an <literal>oauth</literal> authentication method to <link
linkend="auth-pg-hba-conf"><filename>pg_hba.conf</filename></link>,
libpq OAuth options, a server variable <xref
linkend="guc-oauth-validator-libraries"/> to load
token validation libraries, and a configure flag <link
linkend="configure-option-with-libcurl"><option>--with-libcurl</option></link>
to add the required compile-time libraries.
</para>
</listitem>
<!--
Author: Daniel Gustafsson <dgustafsson@postgresql.org>
2024-10-24 [45188c2ea] Support configuring TLSv1.3 cipher suites
-->
<listitem>
<para>
Add server variable <xref linkend="guc-ssl-tls13-ciphers"/> to allow
specification of multiple colon-separated TLSv1.3 cipher suites
(Erica Zhang, Daniel Gustafsson)
<ulink url="&commit_baseurl;45188c2ea">&sect;</ulink>
</para>
</listitem>
<!--
Author: Daniel Gustafsson <dgustafsson@postgresql.org>
2025-03-18 [daa02c6bd] Add X25519 to the default set of curves
-->
<listitem>
<para>
Change server variable <xref linkend="guc-ssl-groups"/>'s default
to include elliptic curve X25519 (Daniel Gustafsson, Jacob Champion)
<ulink url="&commit_baseurl;daa02c6bd">&sect;</ulink>
</para>
</listitem>
<!--
Author: Daniel Gustafsson <dgustafsson@postgresql.org>
2024-10-24 [3d1ef3a15] Support configuring multiple ECDH curves
-->
<listitem>
<para>
Rename server variable <varname>ssl_ecdh_curve</varname> to <xref
linkend="guc-ssl-groups"/> and allow multiple colon-separated
<acronym>ECDH</acronym> curves to be specified (Erica Zhang,
Daniel Gustafsson)
<ulink url="&commit_baseurl;3d1ef3a15">&sect;</ulink>
</para>
<para>
The previous name still works.
</para>
</listitem>
<!--
Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
2025-04-02 [a460251f0] Make cancel request keys longer
Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
2024-07-29 [9d9b9d46f] Move cancel key generation to after forking the backend
-->
<listitem>
<para>
Make <link linkend="functions-admin-signal-table">cancel request
keys</link> 256 bits (Heikki Linnakangas, Jelte Fennema-Nio)
<ulink url="&commit_baseurl;a460251f0">&sect;</ulink>
<ulink url="&commit_baseurl;9d9b9d46f">&sect;</ulink>
</para>
<para>
This is only possible when the server and client support wire
protocol version 3.2, introduced in this release.
</para>
</listitem>
<!--
Author: Nathan Bossart <nathan@postgresql.org>
2025-01-06 [c758119e5] Allow changing autovacuum_max_workers without restarting
-->
<listitem>
<para>
Add server variable <xref linkend="guc-autovacuum-worker-slots"/>
to specify the maximum number of background workers (Nathan Bossart)
<ulink url="&commit_baseurl;c758119e5">&sect;</ulink>
</para>
<para>
With this variable set, <xref linkend="guc-autovacuum-max-workers"/>
can be adjusted at runtime up to this maximum without a server
restart.
</para>
</listitem>
<!--
Author: Nathan Bossart <nathan@postgresql.org>
2025-02-05 [306dc520b] Introduce autovacuum_vacuum_max_threshold.
-->
<listitem>
<para>
Allow specification of the fixed number of dead tuples that will
trigger an <link linkend="autovacuum">autovacuum</link> (Nathan
Bossart, Frédéric Yhuel)
<ulink url="&commit_baseurl;306dc520b">&sect;</ulink>
</para>
<para>
The server variable is <xref
linkend="guc-autovacuum-vacuum-max-threshold"/>. Percentages are
still used for triggering.
</para>
</listitem>
<!--
Author: Andres Freund <andres@anarazel.de>
2025-03-24 [adb5f85fa] Redefine max_files_per_process to control additionally o
-->
<listitem>
<para>
Change server variable <xref linkend="guc-max-files-per-process"/>
to limit only files opened by a backend (Andres Freund)
<ulink url="&commit_baseurl;adb5f85fa">&sect;</ulink>
</para>
<para>
Previously files opened by the postmaster were also counted toward
this limit.
</para>
</listitem>
<!--
Author: Nathan Bossart <nathan@postgresql.org>
2024-07-26 [0dcaea569] Introduce num_os_semaphores GUC.
-->
<listitem>
<para>
Add server variable <xref linkend="guc-num-os-semaphores"/> to
report the required number of semaphores (Nathan Bossart)
<ulink url="&commit_baseurl;0dcaea569">&sect;</ulink>
</para>
<para>
This is useful for operating system configuration.
</para>
</listitem>
<!--
Author: Peter Eisentraut <peter@eisentraut.org>
2025-03-19 [4f7f7b037] extension_control_path
Author: Peter Eisentraut <peter@eisentraut.org>
2025-05-02 [81eaaa2c4] Make "directory" setting work with extension_control_pat
-->
<listitem>
<para>
Add server variable <xref linkend="guc-extension-control-path"/> to
specify the location of extension control files (Peter Eisentraut,
Matheus Alcantara)
<ulink url="&commit_baseurl;4f7f7b037">&sect;</ulink>
<ulink url="&commit_baseurl;81eaaa2c4">&sect;</ulink>
</para>
</listitem>
</itemizedlist>
</sect4>
<sect4 id="release-18-replication">
<title>Streaming Replication and Recovery</title>
<itemizedlist>
<!--
Author: Amit Kapila <akapila@postgresql.org>
2025-02-19 [ac0e33136] Invalidate inactive replication slots.
-->
<listitem>
<para>
Allow inactive replication slots to be automatically invalidated using
server variable <xref linkend="guc-idle-replication-slot-timeout"/>
(Nisha Moond, Bharath Rupireddy)
<ulink url="&commit_baseurl;ac0e33136">&sect;</ulink>
</para>
</listitem>
<!--
Author: Masahiko Sawada <msawada@postgresql.org>
2025-03-21 [04ff636cb] Add GUC option to control maximum active replication ori
-->
<listitem>
<para>
Add server variable <xref
linkend="guc-max-active-replication-origins"/> to control the
maximum active replication origins (Euler Taveira)
<ulink url="&commit_baseurl;04ff636cb">&sect;</ulink>
</para>
<para>
This was previously controlled by <xref
linkend="guc-max-replication-slots"/>, but this new setting allows
a higher origin count in cases where fewer slots are required.
</para>
</listitem>
</itemizedlist>
</sect4>
<sect4 id="release-18-logical">
<title><link linkend="logical-replication">Logical Replication</link></title>
<itemizedlist>
<!--
Author: Amit Kapila <akapila@postgresql.org>
2024-10-30 [745217a05] Replicate generated columns when specified in the column
Author: Amit Kapila <akapila@postgresql.org>
2024-11-07 [7054186c4] Replicate generated columns when 'publish_generated_colu
Author: Amit Kapila <akapila@postgresql.org>
2024-12-04 [87ce27de6] Ensure stored generated columns must be published when r
Author: Amit Kapila <akapila@postgresql.org>
2025-01-30 [6252b1eaf] Doc: Generated column replication.
-->
<listitem>
<para>
Allow the values of <link
linkend="sql-createtable-parms-generated-stored">generated
columns</link> to be logically replicated (Shubham Khanna, Vignesh C,
Zhijie Hou, Shlok Kyal, Peter Smith)
<ulink url="&commit_baseurl;745217a05">&sect;</ulink>
<ulink url="&commit_baseurl;7054186c4">&sect;</ulink>
<ulink url="&commit_baseurl;87ce27de6">&sect;</ulink>
<ulink url="&commit_baseurl;6252b1eaf">&sect;</ulink>
</para>
<para>
If the publication specifies a column list, all specified
columns, generated and non-generated, are published.
Without a specified column list, publication option
<literal>publish_generated_columns</literal> controls whether
generated columns are published. Previously generated columns
were not replicated and the subscriber had to compute
the values if possible; this is particularly useful for
non-<productname>PostgreSQL</productname> subscribers which lack
such a capability.
</para>
</listitem>
<!--
Author: Amit Kapila <akapila@postgresql.org>
2024-10-28 [1bf1140be] Change the default value of the streaming option to 'par
-->
<listitem>
<para>
Change the default <xref linkend="sql-createsubscription"/> streaming
option from <literal>off</literal> to <literal>parallel</literal>
(Vignesh C)
<ulink url="&commit_baseurl;1bf1140be">&sect;</ulink>
</para>
</listitem>
<!--
Author: Amit Kapila <akapila@postgresql.org>
2024-07-24 [1462aad2e] Allow altering of two_phase option of a SUBSCRIPTION.
Author: Amit Kapila <akapila@postgresql.org>
2025-04-03 [4868c96bc] Fix slot synchronization for two_phase enabled slots.
-->
<listitem>
<para>
Allow <xref linkend="sql-altersubscription"/> to change the
replication slot's two-phase commit behavior (Hayato Kuroda, Ajin
Cherian, Amit Kapila, Zhijie Hou)
<ulink url="&commit_baseurl;1462aad2e">&sect;</ulink>
<ulink url="&commit_baseurl;4868c96bc">&sect;</ulink>
</para>
</listitem>
<!--
Author: Amit Kapila <akapila@postgresql.org>
2024-08-20 [9758174e2] Log the conflicts while applying changes in logical repl
Author: Amit Kapila <akapila@postgresql.org>
2024-08-22 [edcb71258] Doc: explain the log format of logical replication confl
Author: Amit Kapila <akapila@postgresql.org>
2024-08-29 [640178c92] Rename the conflict types for the origin differ cases.
Author: Amit Kapila <akapila@postgresql.org>
2024-09-04 [6c2b5edec] Collect statistics about conflicts in logical replicatio
Author: Amit Kapila <akapila@postgresql.org>
2025-03-24 [73eba5004] Detect and Log multiple_unique_conflicts type conflict.
-->
<listitem>
<para>
Log <link linkend="hot-standby-conflict">conflicts</link> while
applying logical replication changes (Zhijie Hou, Nisha Moond)
<ulink url="&commit_baseurl;9758174e2">&sect;</ulink>
<ulink url="&commit_baseurl;edcb71258">&sect;</ulink>
<ulink url="&commit_baseurl;640178c92">&sect;</ulink>
<ulink url="&commit_baseurl;6c2b5edec">&sect;</ulink>
<ulink url="&commit_baseurl;73eba5004">&sect;</ulink>
</para>
<para>
Also report in new columns of <link
linkend="monitoring-pg-stat-subscription-stats"><structname>pg_stat_subscription_stats</structname></link>.
</para>
</listitem>
</itemizedlist>
</sect4>
</sect3>
<sect3 id="release-18-utility">
<title>Utility Commands</title>
<itemizedlist>
<!--
Author: Peter Eisentraut <peter@eisentraut.org>
2025-02-07 [83ea6c540] Virtual generated columns
Author: Peter Eisentraut <peter@eisentraut.org>
2025-03-28 [cdc168ad4] Add support for not-null constraints on virtual generate
Author: Richard Guo <rguo@postgresql.org>
2025-02-25 [1e4351af3] Expand virtual generated columns in the planner
-->
<listitem>
<para>
Allow <link linkend="sql-createtable-parms-generated-stored">generated
columns</link> to be virtual, and make them the default (Peter
Eisentraut, Jian He, Richard Guo, Dean Rasheed)
<ulink url="&commit_baseurl;83ea6c540">&sect;</ulink>
<ulink url="&commit_baseurl;cdc168ad4">&sect;</ulink>
<ulink url="&commit_baseurl;1e4351af3">&sect;</ulink>
</para>
<para>
Virtual generated columns generate their values when the columns
are read, not written. The write behavior can still be specified
via the <literal>STORED</literal> option.
</para>
</listitem>
<!--
Author: Dean Rasheed <dean.a.rasheed@gmail.com>
2025-01-16 [80feb727c] Add OLD/NEW support to RETURNING in DML queries.
-->
<listitem>
<para>
Add <literal>OLD</literal>/<literal>NEW</literal> support to <link
linkend="dml-returning"><literal>RETURNING</literal></link> in
<acronym>DML</acronym> queries (Dean Rasheed)
<ulink url="&commit_baseurl;80feb727c">&sect;</ulink>
</para>
<para>
Previously <literal>RETURNING</literal> only returned new values for
<xref linkend="sql-insert"/> and <xref linkend="sql-update"/>, and old
values for <xref linkend="sql-delete"/>; <xref linkend="sql-merge"/>
would return the appropriate value for the internal query executed.
This new syntax allows the <literal>RETURNING</literal> list of
<command>INSERT</command>/<command>UPDATE</command>/<command>DELETE</command>/<command>MERGE</command>
to explicitly return old and new values by using the special aliases
<literal>old</literal> and <literal>new</literal>. These aliases
can be renamed to avoid identifier conflicts.
</para>
</listitem>
<!--
Author: Michael Paquier <michael@paquier.xyz>
2025-02-19 [302cf1575] Add support for LIKE in CREATE FOREIGN TABLE
-->
<listitem>
<para>
Allow foreign tables to be created like existing local tables
(Zhang Mingli)
<ulink url="&commit_baseurl;302cf1575">&sect;</ulink>
</para>
<para>
The syntax is <link linkend="sql-createforeigntable"><command>CREATE
FOREIGN TABLE ... LIKE</command></link>.
</para>
</listitem>
<!--
Author: Peter Eisentraut <peter@eisentraut.org>
2024-11-27 [85b7efa1c] Support LIKE with nondeterministic collations
-->
<listitem>
<para>
Allow <link linkend="functions-like"><literal>LIKE</literal></link>
with <link linkend="collation-nondeterministic">nondeterministic
collations</link> (Peter Eisentraut)
<ulink url="&commit_baseurl;85b7efa1c">&sect;</ulink>
</para>
</listitem>
<!--
Author: Peter Eisentraut <peter@eisentraut.org>
2025-02-21 [329304c90] Support text position search functions with nondetermini
-->
<listitem>
<para>
Allow text position search functions with nondeterministic collations
(Peter Eisentraut)
<ulink url="&commit_baseurl;329304c90">&sect;</ulink>
</para>
<para>
These used to generate an error.
</para>
</listitem>
<!--
Author: Jeff Davis <jdavis@postgresql.org>
2025-01-17 [d3d098316] Support PG_UNICODE_FAST locale in the builtin collation
-->
<listitem>
<para>
Add builtin collation provider <link
linkend="locale-providers"><literal>PG_UNICODE_FAST</literal></link>
(Jeff Davis)
<ulink url="&commit_baseurl;d3d098316">&sect;</ulink>
</para>
<para>
This locale supports case mapping, but sorts in code point order,
not natural language order.
</para>
</listitem>
<!--
Author: David Rowley <drowley@postgresql.org>
2024-09-24 [62ddf7ee9] Add ONLY support for VACUUM and ANALYZE
-->
<listitem>
<para>
Allow <xref linkend="sql-vacuum"/> and <xref linkend="sql-analyze"/>
to process partitioned tables without processing their children
(Michael Harris)
<ulink url="&commit_baseurl;62ddf7ee9">&sect;</ulink>
</para>
<para>
This is enabled with the new <literal>ONLY</literal> option. This is
useful since autovacuum does not process partitioned tables, just
its children.
</para>
</listitem>
<!--
Author: Jeff Davis <jdavis@postgresql.org>
2024-10-11 [e839c8ecc] Create functions pg_set_relation_stats, pg_clear_relatio
Author: Jeff Davis <jdavis@postgresql.org>
2024-10-24 [d32d14639] Add functions pg_restore_relation_stats(), pg_restore_at
Author: Jeff Davis <jdavis@postgresql.org>
2025-03-25 [650ab8aaf] Stats: use schemaname/relname instead of regclass.
-->
<listitem>
<para>
Add functions to modify per-relation and per-column optimizer
statistics (Corey Huinker)
<ulink url="&commit_baseurl;e839c8ecc">&sect;</ulink>
<ulink url="&commit_baseurl;d32d14639">&sect;</ulink>
<ulink url="&commit_baseurl;650ab8aaf">&sect;</ulink>
</para>
<para>
The functions are <link
linkend="functions-admin-statsmod"><function>pg_restore_relation_stats()</function></link>,
<function>pg_restore_attribute_stats()</function>,
<function>pg_clear_relation_stats()</function>, and
<function>pg_clear_attribute_stats()</function>.
</para>
</listitem>
<!--
Author: Thomas Munro <tmunro@postgresql.org>
2025-04-08 [f78ca6f3e] Introduce file_copy_method setting.
-->
<listitem>
<para>
Add server variable <xref linkend="guc-file-copy-method"/> to control
the file copying method (Nazir Bilal Yavuz)
<ulink url="&commit_baseurl;f78ca6f3e">&sect;</ulink>
</para>
<para>
This controls whether <link
linkend="sql-createdatabase"><command>CREATE DATABASE
... STRATEGY=FILE_COPY</command></link> and <link
linkend="sql-alterdatabase"><command>ALTER DATABASE ... SET
TABLESPACE</command></link> uses file copy or clone.
</para>
</listitem>
</itemizedlist>
<sect4 id="release-18-constraints">
<title><link linkend="ddl-constraints">Constraints</link></title>
<itemizedlist>
<!--
Author: Peter Eisentraut <peter@eisentraut.org>
2024-09-17 [fc0438b4e] Add temporal PRIMARY KEY and UNIQUE constraints
Author: Peter Eisentraut <peter@eisentraut.org>
2024-09-17 [89f908a6d] Add temporal FOREIGN KEY contraints
-->
<listitem>
<para>
Allow the specification of non-overlapping <link
linkend="sql-createtable-parms-primary-key"><literal>PRIMARY
KEY</literal></link>, <link linkend="sql-createtable-parms-unique">
<literal>UNIQUE</literal></link>, and
<link linkend="sql-createtable-parms-references">foreign key</link>
constraints (Paul A. Jungwirth)
<ulink url="&commit_baseurl;fc0438b4e">&sect;</ulink>
<ulink url="&commit_baseurl;89f908a6d">&sect;</ulink>
</para>
<para>
This is specified by <literal>WITHOUT OVERLAPS</literal> for
<literal>PRIMARY KEY</literal> and <literal>UNIQUE</literal>, and by
<literal>PERIOD</literal> for foreign keys, all applied to the last
specified column.
</para>
</listitem>
<!--
Author: Peter Eisentraut <peter@eisentraut.org>
2025-01-11 [ca87c415e] Add support for NOT ENFORCED in CHECK constraints
Author: Peter Eisentraut <peter@eisentraut.org>
2025-04-02 [eec0040c4] Add support for NOT ENFORCED in foreign key constraints
-->
<listitem>
<para>
Allow <link
linkend="sql-createtable-parms-check"><literal>CHECK</literal></link>
and <link linkend="sql-createtable-parms-references">foreign
key</link> constraints to be specified as <literal>NOT
ENFORCED</literal> (Amul Sul)
<ulink url="&commit_baseurl;ca87c415e">&sect;</ulink>
<ulink url="&commit_baseurl;eec0040c4">&sect;</ulink>
</para>
<para>
This also adds column <link
linkend="catalog-pg-constraint"><structname>pg_constraint</structname></link>.<structfield>conenforced</structfield>.
</para>
</listitem>
<!--
Author: Peter Eisentraut <peter@eisentraut.org>
2024-11-15 [9321d2fdf] Fix collation handling for foreign keys
-->
<listitem>
<para>
Require <link
linkend="sql-createtable-parms-references">primary/foreign key</link>
relationships to use either deterministic collations or the the
same nondeterministic collations (Peter Eisentraut)
<ulink url="&commit_baseurl;9321d2fdf">&sect;</ulink>
</para>
<para>
The restore of a <xref linkend="app-pgdump"/>, also used by <xref
linkend="pgupgrade"/>, will fail if these requirements are not met;
schema changes must be made for these upgrade methods to succeed.
</para>
</listitem>
<!--
Author: Álvaro Herrera <alvherre@alvh.no-ip.org>
2024-11-08 [14e87ffa5] Add pg_constraint rows for not-null constraints
Author: Fujii Masao <fujii@postgresql.org>
Branch: master Release: REL_18_BR [81ce602d4] 2025-06-26 20:25:34 +0900
-->
<listitem>
<para>
Store column <link
linkend="sql-createtable-parms-not-null"><literal>NOT
NULL</literal></link> specifications in <link
linkend="catalog-pg-constraint"><structname>pg_constraint</structname></link>
(Álvaro Herrera, Bernd Helmle)
<ulink url="&commit_baseurl;14e87ffa5">&sect;</ulink>
<ulink url="&commit_baseurl;81ce602d4">&sect;</ulink>
</para>
<para>
This allows names to be specified for <literal>NOT NULL</literal>
constraint. This also adds <literal>NOT NULL</literal> constraints
to foreign tables and <literal>NOT NULL</literal> inheritance
control to local tables.
</para>
</listitem>
<!--
Author: Álvaro Herrera <alvherre@alvh.no-ip.org>
2025-04-07 [a379061a2] Allow NOT NULL constraints to be added as NOT VALID
-->
<listitem>
<para>
Allow <xref linkend="sql-altertable"/> to set the <literal>NOT
VALID</literal> attribute of <literal>NOT NULL</literal> constraints
(Rushabh Lathia, Jian He)
<ulink url="&commit_baseurl;a379061a2">&sect;</ulink>
</para>
</listitem>
<!--
Author: Álvaro Herrera <alvherre@alvh.no-ip.org>
2025-03-05 [f4e53e10b] Add ALTER TABLE ... ALTER CONSTRAINT ... SET [NO] INHERI
Author: Álvaro Herrera <alvherre@alvh.no-ip.org>
2025-03-27 [4a02af8b1] Simplify syntax for ALTER TABLE ALTER CONSTRAINT NO INHE
-->
<listitem>
<para>
Allow modification of the inheritability of <literal>NOT
NULL</literal> constraints (Suraj Kharage, Álvaro Herrera)
<ulink url="&commit_baseurl;f4e53e10b">&sect;</ulink>
<ulink url="&commit_baseurl;4a02af8b1">&sect;</ulink>
</para>
<para>
The syntax is <link linkend="sql-altertable"><command>ALTER TABLE
... ALTER CONSTRAINT ... [NO] INHERIT</command></link>.
</para>
</listitem>
<!--
Author: Álvaro Herrera <alvherre@alvh.no-ip.org>
2025-01-23 [b663b9436] Allow NOT VALID foreign key constraints on partitioned t
-->
<listitem>
<para>
Allow <literal>NOT VALID</literal> foreign key constraints on
partitioned tables (Amul Sul)
<ulink url="&commit_baseurl;b663b9436">&sect;</ulink>
</para>
</listitem>
<!--
Author: Álvaro Herrera <alvherre@alvh.no-ip.org>
2024-09-30 [4dea33ce7] Don't disallow DROP of constraints ONLY on partitioned t
-->
<listitem>
<para>
Allow <link
linkend="sql-altertable-desc-drop-constraint">dropping</link>
of constraints <literal>ONLY</literal> on partitioned tables
(Álvaro Herrera)
<ulink url="&commit_baseurl;4dea33ce7">&sect;</ulink>
</para>
<para>
This was previously erroneously prohibited.
</para>
</listitem>
</itemizedlist>
</sect4>
<sect4 id="release-18-copy">
<title><xref linkend="sql-copy"/></title>
<itemizedlist>
<!--
Author: Fujii Masao <fujii@postgresql.org>
2024-10-08 [4ac2a9bec] Add REJECT_LIMIT option to the COPY command.
-->
<listitem>
<para>
Add <literal>REJECT_LIMIT</literal> to control the number of invalid
rows <command>COPY FROM</command> can ignore (Atsushi Torikoshi)
<ulink url="&commit_baseurl;4ac2a9bec">&sect;</ulink>
</para>
<para>
This is available when <literal>ON_ERROR = 'ignore'</literal>.
</para>
</listitem>
<!--
Author: Fujii Masao <fujii@postgresql.org>
2025-04-04 [534874fac] Allow "COPY table TO" command to copy rows from material
-->
<listitem>
<para>
Allow <command>COPY TO</command> to copy rows from populated
materialized views (Jian He)
<ulink url="&commit_baseurl;534874fac">&sect;</ulink>
</para>
</listitem>
<!--
Author: Fujii Masao <fujii@postgresql.org>
2024-10-03 [e7834a1a2] Add LOG_VERBOSITY = 'silent' support to COPY command.
-->
<listitem>
<para>
Add <command>COPY</command> <literal>LOG_VERBOSITY</literal> level
<literal>silent</literal> to suppress log output of ignored rows
(Atsushi Torikoshi)
<ulink url="&commit_baseurl;e7834a1a2">&sect;</ulink>
</para>
<para>
This new level suppresses output for discarded input rows when
<literal>on_error = 'ignore'</literal>.
</para>
</listitem>
<!--
Author: Nathan Bossart <nathan@postgresql.org>
2025-02-06 [401a6956f] Disallow COPY FREEZE on foreign tables.
-->
<listitem>
<para>
Disallow <command>COPY FREEZE</command> on foreign tables (Nathan
Bossart)
<ulink url="&commit_baseurl;401a6956f">&sect;</ulink>
</para>
<para>
Previously, the <command>COPY</command> worked but the
<literal>FREEZE</literal> was ignored, so disallow this command.
</para>
</listitem>
</itemizedlist>
</sect4>
<sect4 id="release-18-explain">
<title><xref linkend="sql-explain"/></title>
<itemizedlist>
<!--
Author: David Rowley <drowley@postgresql.org>
2024-12-11 [c2a4078eb] Enable BUFFERS with EXPLAIN ANALYZE by default
-->
<listitem>
<para>
Automatically include <literal>BUFFERS</literal> output in
<command>EXPLAIN ANALYZE</command> (Guillaume Lelarge, David Rowley)
<ulink url="&commit_baseurl;c2a4078eb">&sect;</ulink>
</para>
</listitem>
<!--
Author: Michael Paquier <michael@paquier.xyz>
2025-02-17 [320545bfc] Add information about WAL buffers being full to EXPLAIN
-->
<listitem>
<para>
Add full <acronym>WAL</acronym> buffer count to <command>EXPLAIN
(WAL)</command> output (Bertrand Drouvot)
<ulink url="&commit_baseurl;320545bfc">&sect;</ulink>
</para>
</listitem>
<!--
Author: Peter Geoghegan <pg@bowt.ie>
2025-03-11 [0fbceae84] Show index search count in EXPLAIN ANALYZE, take 2.
-->
<listitem>
<para>
In <command>EXPLAIN ANALYZE</command>, report the number of index
lookups used per index scan node (Peter Geoghegan)
<ulink url="&commit_baseurl;0fbceae84">&sect;</ulink>
</para>
</listitem>
<!--
Author: Robert Haas <rhaas@postgresql.org>
2025-02-21 [ddb17e387] Allow EXPLAIN to indicate fractional rows.
Author: Robert Haas <rhaas@postgresql.org>
2025-02-27 [95dbd827f] EXPLAIN: Always use two fractional digits for row counts
-->
<listitem>
<para>
Modify <command>EXPLAIN</command> to output fractional row counts
(Ibrar Ahmed, Ilia Evdokimov, Robert Haas)
<ulink url="&commit_baseurl;ddb17e387">&sect;</ulink>
<ulink url="&commit_baseurl;95dbd827f">&sect;</ulink>
</para>
</listitem>
<!--
Author: David Rowley <drowley@postgresql.org>
2024-07-05 [1eff8279d] Add memory/disk usage for Material nodes in EXPLAIN
Author: David Rowley <drowley@postgresql.org>
2024-07-05 [53abb1e0e] Fix newly introduced issue in EXPLAIN for Materialize no
Author: Tatsuo Ishii <ishii@postgresql.org>
2024-09-17 [95d6e9af0] Add memory/disk usage for Window aggregate nodes in EXPL
Author: Tatsuo Ishii <ishii@postgresql.org>
2024-09-23 [40708acd6] Add memory/disk usage for more executor nodes.
-->
<listitem>
<para>
Add memory and disk usage details to <literal>Material</literal>,
<literal>Window Aggregate</literal>, and common table expression
nodes to <command>EXPLAIN</command> output (David Rowley, Tatsuo
Ishii)
<ulink url="&commit_baseurl;1eff8279d">&sect;</ulink>
<ulink url="&commit_baseurl;53abb1e0e">&sect;</ulink>
<ulink url="&commit_baseurl;95d6e9af0">&sect;</ulink>
<ulink url="&commit_baseurl;40708acd6">&sect;</ulink>
</para>
</listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
2025-03-11 [8b1b34254] Improve EXPLAIN's display of window functions.
-->
<listitem>
<para>
Add details about window function arguments to
<command>EXPLAIN</command> output (Tom Lane)
<ulink url="&commit_baseurl;8b1b34254">&sect;</ulink>
</para>
</listitem>
<!--
Author: David Rowley <drowley@postgresql.org>
2024-07-09 [5a1e6df3b] Show Parallel Bitmap Heap Scan worker stats in EXPLAIN A
-->
<listitem>
<para>
Add <literal>Parallel Bitmap Heap Scan</literal> worker cache
statistics to <command>EXPLAIN ANALYZE</command> (David Geier,
Heikki Linnakangas, Donghang Lin, Alena Rybakina, David Rowley)
<ulink url="&commit_baseurl;5a1e6df3b">&sect;</ulink>
</para>
</listitem>
<!--
Author: Robert Haas <rhaas@postgresql.org>
2024-08-21 [c01743aa4] Show number of disabled nodes in EXPLAIN ANALYZE output.
Author: David Rowley <drowley@postgresql.org>
2024-10-11 [161320b4b] Adjust EXPLAIN's output for disabled nodes
Author: David Rowley <drowley@postgresql.org>
2024-10-29 [84b8fccbe] Doc: add detail about EXPLAIN's "Disabled" property
-->
<listitem>
<para>
Indicate disabled nodes in <command>EXPLAIN ANALYZE</command> output
(Robert Haas, David Rowley, Laurenz Albe)
<ulink url="&commit_baseurl;c01743aa4">&sect;</ulink>
<ulink url="&commit_baseurl;161320b4b">&sect;</ulink>
<ulink url="&commit_baseurl;84b8fccbe">&sect;</ulink>
</para>
</listitem>
</itemizedlist>
</sect4>
</sect3>
<sect3 id="release-18-datatypes">
<title>Data Types</title>
<itemizedlist>
<!--
Author: Jeff Davis <jdavis@postgresql.org>
2025-01-23 [4e7f62bc3] Add support for Unicode case folding.
Author: Jeff Davis <jdavis@postgresql.org>
2025-01-17 [286a365b9] Support Unicode full case mapping and conversion.
-->
<listitem>
<para>
Improve <link linkend="collation-managing-standard">Unicode</link>
full case mapping and conversion (Jeff Davis)
<ulink url="&commit_baseurl;4e7f62bc3">&sect;</ulink>
<ulink url="&commit_baseurl;286a365b9">&sect;</ulink>
</para>
<para>
This adds the ability to do conditional and title case mapping,
and case map single characters to multiple characters.
</para>
</listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
2025-01-24 [a5579a90a] Make jsonb casts to scalar types translate JSON null to
-->
<listitem>
<para>
Allow <link linkend="datatype-json"><type>jsonb</type></link>
<literal>null</literal> values to be cast to scalar types as
<literal>NULL</literal> (Tom Lane)
<ulink url="&commit_baseurl;a5579a90a">&sect;</ulink>
</para>
<para>
Previously such casts generated an error.
</para>
</listitem>
<!--
Author: Andrew Dunstan <andrew@dunslane.net>
2025-03-05 [4603903d2] Allow json{b}_strip_nulls() to remove null array elements
-->
<listitem>
<para>
Add optional parameter to <link
linkend="functions-json-processing-table"><function>json{b}_strip_nulls</function></link>
to allow removal of null array elements (Florents Tselai)
<ulink url="&commit_baseurl;4603903d2">&sect;</ulink>
</para>
</listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
2025-04-01 [6c12ae09f] Introduce a SQL-callable function array_sort(anyarray).
-->
<listitem>
<para>
Add function <link
linkend="array-functions-table"><function>array_sort()</function></link>
which sorts an array's first dimension (Junwang Zhao, Jian He)
<ulink url="&commit_baseurl;6c12ae09f">&sect;</ulink>
</para>
</listitem>
<!--
Author: Michael Paquier <michael@paquier.xyz>
2024-11-01 [49d6c7d8d] Add SQL function array_reverse()
-->
<listitem>
<para>
Add function <link
linkend="array-functions-table"><function>array_reverse()</function></link>
which reverses an array's first dimension (Aleksander Alekseev)
<ulink url="&commit_baseurl;49d6c7d8d">&sect;</ulink>
</para>
</listitem>
<!--
Author: Nathan Bossart <nathan@postgresql.org>
2025-03-13 [0697b2390] Add reverse(bytea).
-->
<listitem>
<para>
Add function <link
linkend="functions-string-other"><function>reverse()</function></link>
to reverse bytea bytes (Aleksander Alekseev)
<ulink url="&commit_baseurl;0697b2390">&sect;</ulink>
</para>
</listitem>
<!--
Author: Dean Rasheed <dean.a.rasheed@gmail.com>
2025-03-07 [6da469bad] Allow casting between bytea and integer types.
-->
<listitem>
<para>
Allow casting between integer types and <link
linkend="datatype-binary"><type>bytea</type></link> (Aleksander
Alekseev)
<ulink url="&commit_baseurl;6da469bad">&sect;</ulink>
</para>
<para>
The integer values are stored as <type>bytea</type> two's complement
values.
</para>
</listitem>
<!--
Author: Peter Eisentraut <peter@eisentraut.org>
2025-04-03 [82a46cca9] Update Unicode data to Unicode 16.0.0
-->
<listitem>
<para>
Update Unicode data to <link
linkend="collation-managing-standard">Unicode</link> 16.0.0 (Peter
Eisentraut)
<ulink url="&commit_baseurl;82a46cca9">&sect;</ulink>
</para>
</listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
2025-02-18 [b464e51ab] Update to latest Snowball sources.
-->
<listitem>
<para>
Add full text search <link
linkend="textsearch-snowball-dictionary">stemming</link> for Estonian
(Tom Lane)
<ulink url="&commit_baseurl;b464e51ab">&sect;</ulink>
</para>
</listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
2024-09-24 [cd838e200] Neaten up our choices of SQLSTATEs for XML-related error
-->
<listitem>
<para>
Improve the <link linkend="datatype-xml"><type>XML</type></link>
error codes to more closely match the <acronym>SQL</acronym> standard
(Tom Lane)
<ulink url="&commit_baseurl;cd838e200">&sect;</ulink>
</para>
<para>
These errors are reported via <link
linkend="errcodes-appendix"><literal>SQLSTATE</literal></link>.
</para>
</listitem>
</itemizedlist>
</sect3>
<sect3 id="release-18-functions">
<title>Functions</title>
<itemizedlist>
<!--
Author: Jeff Davis <jdavis@postgresql.org>
2025-01-24 [bfc599206] Add SQL function CASEFOLD().
-->
<listitem>
<para>
Add function <link
linkend="functions-string-other"><function>casefold()</function></link>
to allow for more sophisticated case-insensitive matching (Jeff Davis)
<ulink url="&commit_baseurl;bfc599206">&sect;</ulink>
</para>
<para>
This allows more accurate comparisons, i.e., a character can have
multiple upper or lower case equivalents, or upper or lower case
conversion changes the number of characters.
</para>
</listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
2024-07-11 [a0f1fce80] Add min and max aggregates for composite types (records)
Author: Tom Lane <tgl@sss.pgh.pa.us>
2024-10-08 [2d24fd942] Add min and max aggregates for bytea type.
-->
<listitem>
<para>
Allow <link
linkend="functions-aggregate-table"><function>MIN()</function></link>/<link
linkend="functions-aggregate-table"><function>MAX()</function></link>
aggregates on arrays and composite types (Aleksander Alekseev,
Marat Buharov)
<ulink url="&commit_baseurl;a0f1fce80">&sect;</ulink>
<ulink url="&commit_baseurl;2d24fd942">&sect;</ulink>
</para>
</listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
2024-08-16 [6be39d77a] Fix extraction of week and quarter fields from intervals
-->
<listitem>
<para>
Add a <literal>WEEK</literal> option to <link
linkend="functions-datetime-extract"><function>EXTRACT()</function></link>
(Tom Lane)
<ulink url="&commit_baseurl;6be39d77a">&sect;</ulink>
</para>
</listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
2024-08-16 [6be39d77a] Fix extraction of week and quarter fields from intervals
-->
<listitem>
<para>
Improve the output <literal>EXTRACT(QUARTER ...)</literal> for
negative values (Tom Lane)
<ulink url="&commit_baseurl;6be39d77a">&sect;</ulink>
</para>
</listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
2025-01-22 [172e6b3ad] Support RN (roman-numeral format) in to_number().
-->
<listitem>
<para>
Add roman numeral support to <link
linkend="functions-formatting-table"><function>to_number()</function></link>
(Hunaid Sohail)
<ulink url="&commit_baseurl;172e6b3ad">&sect;</ulink>
</para>
<para>
This is accessed via the <literal>RN</literal> pattern.
</para>
</listitem>
<!--
Author: Masahiko Sawada <msawada@postgresql.org>
2024-12-11 [78c5e141e] Add UUID version 7 generation function.
-->
<listitem>
<para>
Add <link linkend="datatype-uuid"><type>UUID</type></link>
version 7 generation function <link
linkend="func_uuid_gen_table"><function>uuidv7()</function></link>
(Andrey Borodin)
<ulink url="&commit_baseurl;78c5e141e">&sect;</ulink>
</para>
<para>
This <type>UUID</type> value is
temporally sortable. Function alias <link
linkend="func_uuid_gen_table"><function>uuidv4()</function></link>
has been added to explicitly generate version 4 UUIDs.
</para>
</listitem>
<!--
Author: Nathan Bossart <nathan@postgresql.org>
2024-08-12 [760162fed] Add user-callable CRC functions.
-->
<listitem>
<para>
Add functions <link
linkend="functions-binarystring-other"><function>crc32()</function></link>
and <link
linkend="functions-binarystring-other"><function>crc32c()</function></link>
to compute <acronym>CRC</acronym> values (Aleksander Alekseev)
<ulink url="&commit_baseurl;760162fed">&sect;</ulink>
</para>
</listitem>
<!--
Author: Dean Rasheed <dean.a.rasheed@gmail.com>
2025-03-26 [a3b6dfd41] Add support for gamma() and lgamma() functions.
-->
<listitem>
<para>
Add math functions <link
linkend="functions-math-func-table"><function>gamma()</function></link>
and <link
linkend="functions-math-func-table"><function>lgamma()</function></link>
(Dean Rasheed)
<ulink url="&commit_baseurl;a3b6dfd41">&sect;</ulink>
</para>
</listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
2025-03-03 [246dedc5d] Allow =&gt; syntax for named cursor arguments in plpgsql.
-->
<listitem>
<para>
Allow <literal>=&gt;</literal> syntax for named cursor arguments in
<link linkend="plpgsql">PL/pgSQL</link> (Pavel Stehule)
<ulink url="&commit_baseurl;246dedc5d">&sect;</ulink>
</para>
<para>
We previously only accepted <literal>:=</literal>.
</para>
</listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
2024-07-25 [580f8727c] Add argument names to the regexp_XXX functions.
-->
<listitem>
<para>
Allow <link
linkend="functions-posix-regexp"><function>regexp_match[es]()</function></link>/<link
linkend="functions-posix-regexp"><function>regexp_like()</function></link>/<link
linkend="functions-posix-regexp"><function>regexp_replace()</function></link>/<link
linkend="functions-posix-regexp"><function>regexp_count()</function></link>/<link
linkend="functions-posix-regexp"><function>regexp_instr()</function></link>/<link
linkend="functions-posix-regexp"><function>regexp_substr()</function></link>/<link
linkend="functions-posix-regexp"><function>regexp_split_to_table()</function></link>/<link
linkend="functions-posix-regexp"><function>regexp_split_to_array()</function></link>
to use named arguments (Jian He)
<ulink url="&commit_baseurl;580f8727c">&sect;</ulink>
</para>
</listitem>
</itemizedlist>
</sect3>
<sect3 id="release-18-libpq">
<title><xref linkend="libpq"/></title>
<itemizedlist>
<!--
Author: Robert Haas <rhaas@postgresql.org>
2024-09-09 [cdb6b0fdb] Add PQfullProtocolVersion() to surface the precise proto
-->
<listitem>
<para>
Add function <link
linkend="libpq-PQfullProtocolVersion"><function>PQfullProtocolVersion()</function></link>
to report the full, including minor, protocol version number (Jacob
Champion, Jelte Fennema-Nio)
<ulink url="&commit_baseurl;cdb6b0fdb">&sect;</ulink>
</para>
</listitem>
<!--
Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
2025-04-02 [285613c60] libpq: Add min/max_protocol_version connection options
Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
2025-04-02 [507034910] libpq: Handle NegotiateProtocolVersion message different
-->
<listitem>
<para>
Add libpq connection <link
linkend="libpq-connect-ssl-max-protocol-version">parameters</link>
and <link linkend="libpq-envars">environment variables</link> to
specify the minimum and maximum acceptable protocol version for
connections (Jelte Fennema-Nio)
<ulink url="&commit_baseurl;285613c60">&sect;</ulink>
<ulink url="&commit_baseurl;507034910">&sect;</ulink>
</para>
</listitem>
<!--
Author: Tomas Vondra <tomas.vondra@postgresql.org>
2024-08-19 [28a1121fd] Mark search_path as GUC_REPORT
Author: Tomas Vondra <tomas.vondra@postgresql.org>
2024-08-19 [0d06a7eac] Document that search_path is reported by the server
-->
<listitem>
<para>
Report <xref linkend="guc-search-path"/> changes to the client
(Alexander Kukushkin, Jelte Fennema-Nio, Tomas Vondra)
<ulink url="&commit_baseurl;28a1121fd">&sect;</ulink>
<ulink url="&commit_baseurl;0d06a7eac">&sect;</ulink>
</para>
</listitem>
<!--
Author: Álvaro Herrera <alvherre@alvh.no-ip.org>
2024-08-12 [ea92f3a0a] libpq: Trace frontend authentication challenges
Author: Álvaro Herrera <alvherre@alvh.no-ip.org>
2024-08-14 [a5c6b8f22] libpq: Trace responses to SSLRequest and GSSENCRequest
Author: Álvaro Herrera <alvherre@alvh.no-ip.org>
2024-08-16 [b8b3f861f] libpq: Trace all messages received from the server
Author: Robert Haas <rhaas@postgresql.org>
2025-02-24 [e87c14b19] libpq: Trace all NegotiateProtocolVersion fields
Author: Álvaro Herrera <alvherre@alvh.no-ip.org>
2024-08-09 [7adec2d5f] libpq: Trace StartupMessage/SSLRequest/GSSENCRequest cor
-->
<listitem>
<para>
Add <link
linkend="libpq-PQtrace"><function>PQtrace()</function></link> output
for all message types, including authentication (Jelte Fennema-Nio)
<ulink url="&commit_baseurl;ea92f3a0a">&sect;</ulink>
<ulink url="&commit_baseurl;a5c6b8f22">&sect;</ulink>
<ulink url="&commit_baseurl;b8b3f861f">&sect;</ulink>
<ulink url="&commit_baseurl;e87c14b19">&sect;</ulink>
<ulink url="&commit_baseurl;7adec2d5f">&sect;</ulink>
</para>
</listitem>
<!--
Author: Daniel Gustafsson <dgustafsson@postgresql.org>
2025-04-03 [2da74d8d6] libpq: Add support for dumping SSL key material to file
-->
<listitem>
<para>
Add libpq connection parameter <link
linkend="libpq-connect-sslkeylogfile"><varname>sslkeylogfile</varname></link>
which dumps out <acronym>SSL</acronym> key material (Abhishek Chanda,
Daniel Gustafsson)
<ulink url="&commit_baseurl;2da74d8d6">&sect;</ulink>
</para>
<para>
This is useful for debugging.
</para>
</listitem>
<!--
Author: Thomas Munro <tmunro@postgresql.org>
2025-03-25 [3c86223c9] libpq: Deprecate pg_int64.
-->
<listitem>
<para>
Modify some libpq function signatures to use
<literal>int64_t</literal> (Thomas Munro)
<ulink url="&commit_baseurl;3c86223c9">&sect;</ulink>
</para>
<para>
These previously used <literal>pg_int64</literal>, which is now
deprecated.
</para>
</listitem>
</itemizedlist>
</sect3>
<sect3 id="release-18-psql">
<title><xref linkend="app-psql"/></title>
<itemizedlist>
<!--
Author: Michael Paquier <michael@paquier.xyz>
2024-08-22 [d55322b0d] psql: Add more meta-commands able to use the extended pr
Author: Michael Paquier <michael@paquier.xyz>
Branch: master Release: REL_18_BR [fc39b286a] 2025-06-24 13:12:46 +0900
-->
<listitem>
<para>
Allow <application>psql</application> to parse, bind, and close
named prepared statements (Anthonin Bonnefoy, Michael Paquier)
<ulink url="&commit_baseurl;d55322b0d">&sect;</ulink>
<ulink url="&commit_baseurl;fc39b286a">&sect;</ulink>
</para>
<para>
This is accomplished with new commands <link
linkend="app-psql-meta-command-parse"><literal>\parse</literal></link>,
<link
linkend="app-psql-meta-command-bind-named"><literal>\bind_named</literal></link>,
and <link
linkend="app-psql-meta-command-close-prepared"><literal>\close_prepared</literal></link>.
</para>
</listitem>
<!--
Author: Michael Paquier <michael@paquier.xyz>
2025-02-21 [41625ab8e] psql: Add support for pipelines
Author: Michael Paquier <michael@paquier.xyz>
2025-03-18 [17caf6644] psql: Add \sendpipeline to send query buffers while in a
Author: Michael Paquier <michael@paquier.xyz>
2025-03-19 [2cce0fe44] psql: Allow queries terminated by semicolons while in pi
-->
<listitem>
<para>
Add <application>psql</application> backslash commands to allowing
issuance of pipeline queries (Anthonin Bonnefoy)
<ulink url="&commit_baseurl;41625ab8e">&sect;</ulink>
<ulink url="&commit_baseurl;17caf6644">&sect;</ulink>
<ulink url="&commit_baseurl;2cce0fe44">&sect;</ulink>
</para>
<para>
The new commands are <link
linkend="app-psql-meta-command-pipeline"><literal>\startpipeline</literal></link>,
<literal>\syncpipeline</literal>, <literal>\sendpipeline</literal>,
<literal>\endpipeline</literal>, <literal>\flushrequest</literal>,
<literal>\flush</literal>, and <literal>\getresults</literal>.
</para>
</listitem>
<!--
Author: Michael Paquier <michael@paquier.xyz>
2025-02-25 [3ce357584] psql: Add pipeline status to prompt and some state varia
-->
<listitem>
<para>
Allow adding pipeline status to the <application>psql</application>
prompt and add related state variables (Anthonin Bonnefoy)
<ulink url="&commit_baseurl;3ce357584">&sect;</ulink>
</para>
<para>
The new prompt character is <literal>%P</literal> and
the new <application>psql</application> variables are <link
linkend="app-psql-variables-pipeline-sync-count"><literal>PIPELINE_SYNC_COUNT</literal></link>,
<link
linkend="app-psql-variables-pipeline-command-count"><literal>PIPELINE_COMMAND_COUNT</literal></link>,
and <link
linkend="app-psql-variables-pipeline-result-count"><literal>PIPELINE_RESULT_COUNT</literal></link>.
</para>
</listitem>
<!--
Author: Michael Paquier <michael@paquier.xyz>
2024-12-18 [477728b5d] psql: Add more information about service name
-->
<listitem>
<para>
Allow adding the connection service name to the
<application>psql</application> prompt or access it via
<application>psql</application> variable (Michael Banck)
<ulink url="&commit_baseurl;477728b5d">&sect;</ulink>
</para>
</listitem>
<!--
Author: Dean Rasheed <dean.a.rasheed@gmail.com>
2025-01-14 [00f4c2959] psql: Add option to use expanded mode to all list comman
-->
<listitem>
<para>
Add <application>psql</application> option to use expanded mode on
all list commands (Dean Rasheed)
<ulink url="&commit_baseurl;00f4c2959">&sect;</ulink>
</para>
<para>
Adding backslash suffix <literal>x</literal> enables this.
</para>
</listitem>
<!--
Author: Álvaro Herrera <alvherre@alvh.no-ip.org>
2025-02-22 [bba2fbc62] Change \conninfo to use tabular format
-->
<listitem>
<para>
Change <application>psql</application>'s <xref
linkend="app-psql-meta-command-conninfo"/> to use tabular format
and include more information (Álvaro Herrera, Maiquel Grassi,
Hunaid Sohail)
<ulink url="&commit_baseurl;bba2fbc62">&sect;</ulink>
</para>
</listitem>
<!--
Author: Dean Rasheed <dean.a.rasheed@gmail.com>
2025-01-14 [2355e5111] psql: Add leakproof indicator to \df+, \do+, \dAo+, and
-->
<listitem>
<para>
Add function's leakproof indicator
to <application>psql</application>'s <link
linkend="app-psql-meta-command-df-lc"><literal>\df+</literal></link>,
<literal>\do+</literal>, <literal>\dAo+</literal>, and
<literal>\dC+</literal> outputs (Yugo Nagata)
<ulink url="&commit_baseurl;2355e5111">&sect;</ulink>
</para>
</listitem>
<!--
Author: Michael Paquier <michael@paquier.xyz>
2024-07-02 [978f38c77] Add information about access method for partitioned rela
-->
<listitem>
<para>
Add access method details for partitioned relations in <link
linkend="app-psql-meta-command-dp-uc"><literal>\dP+</literal></link>
(Justin Pryzby)
<ulink url="&commit_baseurl;978f38c77">&sect;</ulink>
</para>
</listitem>
<!--
Author: Magnus Hagander <magnus@hagander.net>
2025-03-24 [d696406a9] psql: show default extension version in \dx output
-->
<listitem>
<para>
Add <literal>default_version</literal>
to the <application>psql</application> <link
linkend="app-psql-meta-command-dx-lc"><literal>\dx</literal></link>
extension output (Magnus Hagander)
<ulink url="&commit_baseurl;d696406a9">&sect;</ulink>
</para>
</listitem>
<!--
Author: Daniel Gustafsson <dgustafsson@postgresql.org>
2025-03-25 [1a759c832] psql: Make default \watch interval configurable
-->
<listitem>
<para>
Add <application>psql</application> variable <xref
linkend="app-psql-variables-watch-interval"/> to set the default <link
linkend="app-psql-meta-command-watch"><literal>\watch</literal></link>
wait time (Daniel Gustafsson)
<ulink url="&commit_baseurl;1a759c832">&sect;</ulink>
</para>
</listitem>
</itemizedlist>
</sect3>
<sect3 id="release-18-server-apps">
<title>Server Applications</title>
<itemizedlist>
<!--
Author: Peter Eisentraut <peter@eisentraut.org>
2024-10-01 [983a588e0] initdb: Add new option "- -no-data-checksums"
Author: Peter Eisentraut <peter@eisentraut.org>
2024-10-16 [04bec894a] initdb: Change default to using data checksums.
-->
<listitem>
<para>
Change <xref linkend="app-initdb"/> to default to enabling checksums
(Greg Sabino Mullane)
<ulink url="&commit_baseurl;983a588e0">&sect;</ulink>
<ulink url="&commit_baseurl;04bec894a">&sect;</ulink>
</para>
<para>
The new <application>initdb</application> option
<option>--no-data-checksums</option> disables checksums.
</para>
</listitem>
<!--
Author: Nathan Bossart <nathan@postgresql.org>
2025-03-25 [cf131fa94] initdb: Add - -no-sync-data-files.
-->
<listitem>
<para>
Add <application>initdb</application> option
<option>--no-sync-data-files</option> to avoid syncing heap/index
files (Nathan Bossart)
<ulink url="&commit_baseurl;cf131fa94">&sect;</ulink>
</para>
<para>
<application>initdb</application> option <option>--no-sync</option>
is still available to avoid syncing any files.
</para>
</listitem>
<!--
Author: Nathan Bossart <nathan@postgresql.org>
2025-03-18 [edba754f0] vacuumdb: Add option for analyzing only relations missin
Author: Nathan Bossart <nathan@postgresql.org>
2025-04-30 [987910502] vacuumdb: Don't skip empty relations in - -missing-stats-
-->
<listitem>
<para>
Add <xref linkend="app-vacuumdb"/> option
<option>--missing-stats-only</option> to compute only missing
optimizer statistics (Corey Huinker, Nathan Bossart)
<ulink url="&commit_baseurl;edba754f0">&sect;</ulink>
<ulink url="&commit_baseurl;987910502">&sect;</ulink>
</para>
<para>
This option can only be run by superusers and can only
be used with options <option>--analyze-only</option> and
<option>--analyze-in-stages</option>.
</para>
</listitem>
<!--
Author: Robert Haas <rhaas@postgresql.org>
2025-03-17 [99aeb8470] pg_combinebackup: Add -k, - -link option.
-->
<listitem>
<para>
Add <xref linkend="app-pgcombinebackup"/> option
<option>-k</option>/<option>--link</option> to enable hard linking
(Israel Barth Rubio, Robert Haas)
<ulink url="&commit_baseurl;99aeb8470">&sect;</ulink>
</para>
<para>
Only some files can be hard linked. This should not be used if the
backups will be used independently.
</para>
</listitem>
<!--
Author: Robert Haas <rhaas@postgresql.org>
2024-09-27 [8dfd31290] pg_verifybackup: Verify tar-format backups.
-->
<listitem>
<para>
Allow <xref linkend="app-pgverifybackup"/> to verify tar-format
backups (Amul Sul)
<ulink url="&commit_baseurl;8dfd31290">&sect;</ulink>
</para>
</listitem>
<!--
Author: Masahiko Sawada <msawada@postgresql.org>
2025-03-12 [4ecdd4110] pg_rewind: Add dbname to primary_conninfo when using - -w
-->
<listitem>
<para>
If <xref linkend="app-pgrewind"/>'s <option>--source-server</option>
specifies a database name, use it in
<option>--write-recovery-conf</option> output (Masahiko Sawada)
<ulink url="&commit_baseurl;4ecdd4110">&sect;</ulink>
</para>
</listitem>
<!--
Author: Masahiko Sawada <msawada@postgresql.org>
2025-02-21 [30666d185] pg_resetwal: Add - -char-signedness option to change the
-->
<listitem>
<para>
Add <xref linkend="app-pgresetwal"/> option
<option>--char-signedness</option> to change the default
<type>char</type> signedness (Masahiko Sawada)
<ulink url="&commit_baseurl;30666d185">&sect;</ulink>
</para>
</listitem>
</itemizedlist>
<sect4 id="release-18-pgdump">
<title><link
linkend="app-pgdump"><application>pg_dump</application></link>/<link
linkend="app-pg-dumpall"><application>pg_dumpall</application></link>/<link
linkend="app-pgrestore"><application>pg_restore</application></link></title>
<itemizedlist>
<!--
Author: Jeff Davis <jdavis@postgresql.org>
2025-03-25 [bde2fb797] Add pg_dump - -with-{schema|data|statistics} options.
Author: Jeff Davis <jdavis@postgresql.org>
2025-08-02 [a3e8dc143] Simplify options in pg_dump and pg_restore.
-->
<listitem>
<para>
Add <xref linkend="app-pgdump"/> option <option>--statistics</option>
(Jeff Davis)
<ulink url="&commit_baseurl;bde2fb797">&sect;</ulink>
<ulink url="&commit_baseurl;a3e8dc143">&sect;</ulink>
</para>
</listitem>
<!--
Author: Nathan Bossart <nathan@postgresql.org>
2025-03-25 [9c49f0e8c] pg_dump: Add - -sequence-data.
Author: Nathan Bossart <nathan@postgresql.org>
2025-05-07 [acea3fc49] pg_dumpall: Add - -sequence-data.
-->
<listitem>
<para>
Add <application>pg_dump</application> and <xref
linkend="app-pg-dumpall"/> option <option>--sequence-data</option> to
dump sequence data that would normally be excluded (Nathan Bossart)
<ulink url="&commit_baseurl;9c49f0e8c">&sect;</ulink>
<ulink url="&commit_baseurl;acea3fc49">&sect;</ulink>
</para>
</listitem>
<!--
Author: Jeff Davis <jdavis@postgresql.org>
2025-02-20 [1fd1bd871] Transfer statistics during pg_upgrade.
-->
<listitem>
<para>
Add <xref linkend="app-pgdump"/>, <xref linkend="app-pg-dumpall"/>,
and <xref linkend="app-pgrestore"/> options
<option>--statistics-only</option>, <option>--no-statistics</option>,
<option>--no-data</option>, and <option>--no-schema</option>
(Corey Huinker, Jeff Davis)
<ulink url="&commit_baseurl;1fd1bd871">&sect;</ulink>
</para>
</listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
2025-03-16 [cd3c45125] pg_dump, pg_dumpall, pg_restore: Add - -no-policies optio
-->
<listitem>
<para>
Add option <option>--no-policies</option> to disable row level
security policy processing in <xref linkend="app-pgdump"/>,
<xref linkend="app-pg-dumpall"/>, <xref linkend="app-pgrestore"/>
(Nikolay Samokhvalov)
<ulink url="&commit_baseurl;cd3c45125">&sect;</ulink>
</para>
<para>
This is useful for migrating to systems with different policies.
</para>
</listitem>
</itemizedlist>
</sect4>
<sect4 id="release-18-pgupgrade">
<title><xref linkend="pgupgrade"/></title>
<itemizedlist>
<!--
Author: Jeff Davis <jdavis@postgresql.org>
2025-02-20 [1fd1bd871] Transfer statistics during pg_upgrade.
Author: Nathan Bossart <nathan@postgresql.org>
2025-03-18 [c9d502eb6] Update guidance for running vacuumdb after pg_upgrade.
Author: Nathan Bossart <nathan@postgresql.org>
2025-04-30 [d5f1b6a75] Further adjust guidance for running vacuumdb after pg_up
Author: Jeff Davis <jdavis@postgresql.org>
2025-02-20 [1fd1bd871] Transfer statistics during pg_upgrade.
-->
<listitem>
<para>
Allow <application>pg_upgrade</application> to preserve optimizer
statistics (Corey Huinker, Jeff Davis, Nathan Bossart)
<ulink url="&commit_baseurl;1fd1bd871">&sect;</ulink>
<ulink url="&commit_baseurl;c9d502eb6">&sect;</ulink>
<ulink url="&commit_baseurl;d5f1b6a75">&sect;</ulink>
<ulink url="&commit_baseurl;1fd1bd871">&sect;</ulink>
</para>
<para>
Extended statistics are not preserved. Also add
<application>pg_upgrade</application> option
<option>--no-statistics</option> to disable statistics preservation.
</para>
</listitem>
<!--
Author: Nathan Bossart <nathan@postgresql.org>
2024-09-16 [40e2e5e92] Introduce framework for parallelizing various pg_upgrade
Author: Nathan Bossart <nathan@postgresql.org>
2024-09-16 [6d3d2e8e5] pg_upgrade: Parallelize retrieving relation information.
Author: Nathan Bossart <nathan@postgresql.org>
2024-09-16 [7baa36de5] pg_upgrade: Parallelize subscription check.
Author: Nathan Bossart <nathan@postgresql.org>
2024-09-16 [46cad8b31] pg_upgrade: Parallelize retrieving loadable libraries.
Author: Nathan Bossart <nathan@postgresql.org>
2024-09-16 [6ab8f27bc] pg_upgrade: Parallelize retrieving extension updates.
Author: Nathan Bossart <nathan@postgresql.org>
2024-09-16 [bbf83cab9] pg_upgrade: Parallelize data type checks.
Author: Nathan Bossart <nathan@postgresql.org>
2024-09-16 [9db3018cf] pg_upgrade: Parallelize contrib/isn check.
Author: Nathan Bossart <nathan@postgresql.org>
2024-09-16 [c34eabfbb] pg_upgrade: Parallelize postfix operator check.
Author: Nathan Bossart <nathan@postgresql.org>
2024-09-16 [cf2f82a37] pg_upgrade: Parallelize incompatible polymorphics check.
Author: Nathan Bossart <nathan@postgresql.org>
2024-09-16 [f93f5f7b9] pg_upgrade: Parallelize WITH OIDS check.
Author: Nathan Bossart <nathan@postgresql.org>
2024-09-16 [c880cf258] pg_upgrade: Parallelize encoding conversion check.
-->
<listitem>
<para>
Allow <application>pg_upgrade</application> to process database
checks in parallel (Nathan Bossart)
<ulink url="&commit_baseurl;40e2e5e92">&sect;</ulink>
<ulink url="&commit_baseurl;6d3d2e8e5">&sect;</ulink>
<ulink url="&commit_baseurl;7baa36de5">&sect;</ulink>
<ulink url="&commit_baseurl;46cad8b31">&sect;</ulink>
<ulink url="&commit_baseurl;6ab8f27bc">&sect;</ulink>
<ulink url="&commit_baseurl;bbf83cab9">&sect;</ulink>
<ulink url="&commit_baseurl;9db3018cf">&sect;</ulink>
<ulink url="&commit_baseurl;c34eabfbb">&sect;</ulink>
<ulink url="&commit_baseurl;cf2f82a37">&sect;</ulink>
<ulink url="&commit_baseurl;f93f5f7b9">&sect;</ulink>
<ulink url="&commit_baseurl;c880cf258">&sect;</ulink>
</para>
<para>
This is controlled by the existing <option>--jobs</option> option.
</para>
</listitem>
<!--
Author: Nathan Bossart <nathan@postgresql.org>
2025-03-25 [626d7236b] pg_upgrade: Add - -swap for faster file transfer.
-->
<listitem>
<para>
Add <application>pg_upgrade</application> option
<option>--swap</option> to swap directories rather than copy, clone,
or link files (Nathan Bossart)
<ulink url="&commit_baseurl;626d7236b">&sect;</ulink>
</para>
<para>
This mode is potentially the fastest.
</para>
</listitem>
<!--
Author: Masahiko Sawada <msawada@postgresql.org>
2025-02-21 [a8238f87f] pg_upgrade: Preserve default char signedness value from
Author: Masahiko Sawada <msawada@postgresql.org>
2025-02-21 [1aab68059] pg_upgrade: Add - -set-char-signedness to set the default
-->
<listitem>
<para>
Add <application>pg_upgrade</application> option
<option>--set-char-signedness</option> to set the default
<type>char</type> signedness of new cluster (Masahiko Sawada)
<ulink url="&commit_baseurl;a8238f87f">&sect;</ulink>
<ulink url="&commit_baseurl;1aab68059">&sect;</ulink>
</para>
<para>
This is to handle cases where a
pre-<productname>PostgreSQL</productname> 18 cluster's default
<acronym>CPU</acronym> signedness does not match the new cluster.
</para>
</listitem>
</itemizedlist>
</sect4>
<sect4 id="release-18-logicalrep-app">
<title>Logical Replication Applications</title>
<itemizedlist>
<!--
Author: Amit Kapila <akapila@postgresql.org>
2025-03-28 [fb2ea12f4] pg_createsubscriber: Add '- -all' option.
-->
<listitem>
<para>
Add <xref linkend="app-pgcreatesubscriber"/> option
<option>--all</option> to create logical replicas for all databases
(Shubham Khanna)
<ulink url="&commit_baseurl;fb2ea12f4">&sect;</ulink>
</para>
</listitem>
<!--
Author: Amit Kapila <akapila@postgresql.org>
2025-03-20 [e5aeed4b8] pg_createsubscriber: Add -R publications option.
Author: Peter Eisentraut <peter@eisentraut.org>
Branch: master Release: REL_18_BR [60dda7bbc] 2025-06-25 10:50:43 +0200
-->
<listitem>
<para>
Add <application>pg_createsubscriber</application> option
<option>--clean</option> to remove publications (Shubham Khanna)
<ulink url="&commit_baseurl;e5aeed4b8">&sect;</ulink>
<ulink url="&commit_baseurl;60dda7bbc">&sect;</ulink>
</para>
</listitem>
<!--
Author: Amit Kapila <akapila@postgresql.org>
2025-02-26 [e117cfb2f] Add two-phase option in pg_createsubscriber.
-->
<listitem>
<para>
Add <application>pg_createsubscriber</application> option
<option>--enable-two-phase</option> to enable prepared transactions
(Shubham Khanna)
<ulink url="&commit_baseurl;e117cfb2f">&sect;</ulink>
</para>
</listitem>
<!--
Author: Masahiko Sawada <msawada@postgresql.org>
2025-04-04 [cf2655a90] pg_recvlogical: Add - -failover option.
-->
<listitem>
<para>
Add <xref linkend="app-pgrecvlogical"/> option
<option>--enable-failover</option> to specify failover slots (Hayato Kuroda)
<ulink url="&commit_baseurl;cf2655a90">&sect;</ulink>
</para>
<para>
Also add option <option>--enable-two-phase</option> as a synonym
for <option>--two-phase</option>, and deprecate the latter.
</para>
</listitem>
<!--
Author: Fujii Masao <fujii@postgresql.org>
2025-03-25 [c68100aa4] Allow pg_recvlogical - -drop-slot to work without - -dbnam
-->
<listitem>
<para>
Allow <application>pg_recvlogical</application>
<option>--drop-slot</option> to work without
<option>--dbname</option> (Hayato Kuroda)
<ulink url="&commit_baseurl;c68100aa4">&sect;</ulink>
</para>
</listitem>
</itemizedlist>
</sect4>
</sect3>
<sect3 id="release-18-source-code">
<title>Source Code</title>
<itemizedlist>
<!--
Author: Michael Paquier <michael@paquier.xyz>
2024-07-05 [4b211003e] Support loading of injection points
Author: Michael Paquier <michael@paquier.xyz>
2024-07-18 [a0a5869a8] Add INJECTION_POINT_CACHED() to run injection points dir
-->
<listitem>
<para>
Separate the loading and running of <link
linkend="xfunc-addin-injection-points">injection points</link>
(Michael Paquier, Heikki Linnakangas)
<ulink url="&commit_baseurl;4b211003e">&sect;</ulink>
<ulink url="&commit_baseurl;a0a5869a8">&sect;</ulink>
</para>
<para>
Injection points can now be created, but not run, via <link
linkend="xfunc-addin-injection-points"><function>INJECTION_POINT_LOAD()</function></link>,
and such injection points can be run via <link
linkend="xfunc-addin-injection-points"><function>INJECTION_POINT_CACHED()</function></link>.
</para>
</listitem>
<!--
Author: Michael Paquier <michael@paquier.xyz>
2025-05-10 [371f2db8b] Add support for runtime arguments in injection points
-->
<listitem>
<para>
Support runtime arguments in injection points (Michael Paquier)
<ulink url="&commit_baseurl;371f2db8b">&sect;</ulink>
</para>
</listitem>
<!--
Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
2024-07-26 [20e0e7da9] Add test for early backend startup errors
-->
<listitem>
<para>
Allow inline injection point test code with <link
linkend="xfunc-addin-injection-points"><function>IS_INJECTION_POINT_ATTACHED()</function></link>
(Heikki Linnakangas)
<ulink url="&commit_baseurl;20e0e7da9">&sect;</ulink>
</para>
</listitem>
<!--
Author: David Rowley <drowley@postgresql.org>
2024-08-05 [ca6fde922] Optimize JSON escaping using SIMD
-->
<listitem>
<para>
Improve the performance of processing long <link
linkend="datatype-json"><type>JSON</type></link> strings using
<acronym>SIMD</acronym> (Single Instruction Multiple Data) (David
Rowley)
<ulink url="&commit_baseurl;ca6fde922">&sect;</ulink>
</para>
</listitem>
<!--
Author: John Naylor <john.naylor@postgresql.org>
2025-04-06 [3c6e8c123] Compute CRC32C using AVX-512 instructions where availabl
-->
<listitem>
<para>
Speed up CRC32C calculations using x86 <acronym>AVX</acronym>-512
instructions (Raghuveer Devulapalli, Paul Amonson)
<ulink url="&commit_baseurl;3c6e8c123">&sect;</ulink>
</para>
</listitem>
<!--
Author: Nathan Bossart <nathan@postgresql.org>
2025-03-28 [6be53c276] Optimize popcount functions with ARM Neon intrinsics.
Author: Nathan Bossart <nathan@postgresql.org>
2025-03-28 [519338ace] Optimize popcount functions with ARM SVE intrinsics.
-->
<listitem>
<para>
Add <acronym>ARM</acronym> Neon and <acronym>SVE CPU</acronym>
intrinsics for popcount (integer bit counting) (Chiranmoy
Bhattacharya, Devanga Susmitha, Rama Malladi)
<ulink url="&commit_baseurl;6be53c276">&sect;</ulink>
<ulink url="&commit_baseurl;519338ace">&sect;</ulink>
</para>
</listitem>
<!--
Author: Dean Rasheed <dean.a.rasheed@gmail.com>
2024-07-09 [ca481d3c9] Optimise numeric multiplication for short inputs.
Author: Dean Rasheed <dean.a.rasheed@gmail.com>
2024-08-15 [c4e44224c] Extend mul_var_short() to 5 and 6-digit inputs.
Author: Dean Rasheed <dean.a.rasheed@gmail.com>
2024-08-15 [8dc28d7eb] Optimise numeric multiplication using base-NBASE^2 arith
Author: Dean Rasheed <dean.a.rasheed@gmail.com>
2024-10-04 [9428c001f] Speed up numeric division by always using the "fast" alg
-->
<listitem>
<para>
Improve the speed of numeric multiplication and division (Joel
Jacobson, Dean Rasheed)
<ulink url="&commit_baseurl;ca481d3c9">&sect;</ulink>
<ulink url="&commit_baseurl;c4e44224c">&sect;</ulink>
<ulink url="&commit_baseurl;8dc28d7eb">&sect;</ulink>
<ulink url="&commit_baseurl;9428c001f">&sect;</ulink>
</para>
</listitem>
<!--
Author: Tomas Vondra <tomas.vondra@postgresql.org>
2025-04-07 [65c298f61] Add support for basic NUMA awareness
Author: Tomas Vondra <tomas.vondra@postgresql.org>
2025-04-07 [8cc139bec] Introduce pg_shmem_allocations_numa view
Author: Tomas Vondra <tomas.vondra@postgresql.org>
2025-04-07 [ba2a3c230] Add pg_buffercache_numa view with NUMA node info
-->
<listitem>
<para>
Add configure option <link
linkend="configure-option-with-libnuma"><option>--with-libnuma</option></link>
to enable <acronym>NUMA</acronym> awareness (Jakub Wartak, Bertrand
Drouvot)
<ulink url="&commit_baseurl;65c298f61">&sect;</ulink>
<ulink url="&commit_baseurl;8cc139bec">&sect;</ulink>
<ulink url="&commit_baseurl;ba2a3c230">&sect;</ulink>
</para>
<para>
The function <link
linkend="functions-info-session-table"><function>pg_numa_available()</function></link>
reports on <acronym>NUMA</acronym> awareness, and system views <link
linkend="view-pg-shmem-allocations-numa"><structname>pg_shmem_allocations_numa</structname></link>
and <link
linkend="pgbuffercache-pg-buffercache-numa"><structname>pg_buffercache_numa</structname></link>
which report on shared memory distribution across
<acronym>NUMA</acronym> nodes.
</para>
</listitem>
<!--
Author: Nathan Bossart <nathan@postgresql.org>
2024-09-18 [b52c4fc3c] Add TOAST table to pg_index.
-->
<listitem>
<para>
Add <link
linkend="storage-toast"><acronym>TOAST</acronym></link> table to <link
linkend="catalog-pg-index"><structname>pg_index</structname></link>
to allow for very large expression indexes (Nathan Bossart)
<ulink url="&commit_baseurl;b52c4fc3c">&sect;</ulink>
</para>
</listitem>
<!--
Author: David Rowley <drowley@postgresql.org>
2024-12-20 [02a8d0c45] Remove pg_attribute.attcacheoff column
-->
<listitem>
<para>
Remove column <link
linkend="catalog-pg-attribute"><structname>pg_attribute</structname></link>.<structfield>attcacheoff</structfield>
(David Rowley)
<ulink url="&commit_baseurl;02a8d0c45">&sect;</ulink>
</para>
</listitem>
<!--
Author: Melanie Plageman <melanieplageman@gmail.com>
2025-03-03 [99f8f3fbb] Add relallfrozen to pg_class
-->
<listitem>
<para>
Add column <link
linkend="catalog-pg-class"><structname>pg_class</structname></link>.<structfield>relallfrozen</structfield>
(Melanie Plageman)
<ulink url="&commit_baseurl;99f8f3fbb">&sect;</ulink>
</para>
</listitem>
<!--
Author: Peter Eisentraut <peter@eisentraut.org>
2024-09-10 [56fead44d] Add amgettreeheight index AM API routine
Author: Peter Eisentraut <peter@eisentraut.org>
2025-03-07 [af4002b38] Rename amcancrosscompare
-->
<listitem>
<para>
Add <link
linkend="indexam"><structfield>amgettreeheight</structfield></link>,
<literal>amconsistentequality</literal>, and
<literal>amconsistentordering</literal> to the index access method
<acronym>API</acronym> (Mark Dilger)
<ulink url="&commit_baseurl;56fead44d">&sect;</ulink>
<ulink url="&commit_baseurl;af4002b38">&sect;</ulink>
</para>
</listitem>
<!--
Author: Peter Eisentraut <peter@eisentraut.org>
2024-09-17 [7406ab623] Add stratnum GiST support function
-->
<listitem>
<para>
Add GiST support function <link
linkend="gist-extensibility"><function>stratnum()</function></link>
(Paul A. Jungwirth)
<ulink url="&commit_baseurl;7406ab623">&sect;</ulink>
</para>
</listitem>
<!--
Author: Masahiko Sawada <msawada@postgresql.org>
2025-02-21 [44fe30fda] Add default_char_signedness field to ControlFileData.
-->
<listitem>
<para>
Record the default <acronym>CPU</acronym> signedness of
<literal>char</literal> in <xref linkend="app-pgcontroldata"/>
(Masahiko Sawada)
<ulink url="&commit_baseurl;44fe30fda">&sect;</ulink>
</para>
</listitem>
<!--
Author: Peter Eisentraut <peter@eisentraut.org>
2025-03-12 [72a3d0462] Prepare for Python "Limited API" in PL/Python
Author: Peter Eisentraut <peter@eisentraut.org>
2025-03-14 [0793ab810] Activate Python "Limited API" in PL/Python
-->
<listitem>
<para>
Add support for Python "Limited <acronym>API</acronym>" in <xref
linkend="plpython"/> (Peter Eisentraut)
<ulink url="&commit_baseurl;72a3d0462">&sect;</ulink>
<ulink url="&commit_baseurl;0793ab810">&sect;</ulink>
</para>
<para>
This helps prevent problems caused by
<application>Python</application> 3.x version mismatches.
</para>
</listitem>
<!--
Author: Jacob Champion <jchampion@postgresql.org>
2025-04-29 [45363fca6] Bump the minimum supported Python version to 3.6.8
-->
<listitem>
<para>
Change the minimum supported <application>Python</application>
version to 3.6.8 (Jacob Champion)
<ulink url="&commit_baseurl;45363fca6">&sect;</ulink>
</para>
</listitem>
<!--
Author: Daniel Gustafsson <dgustafsson@postgresql.org>
2024-09-02 [a70e01d43] Remove support for OpenSSL older than 1.1.0
Author: Daniel Gustafsson <dgustafsson@postgresql.org>
2024-10-24 [6c66b7443] Raise the minimum supported OpenSSL version to 1.1.1
-->
<listitem>
<para>
Remove support for <application>OpenSSL</application> versions older
than 1.1.1 (Daniel Gustafsson)
<ulink url="&commit_baseurl;a70e01d43">&sect;</ulink>
<ulink url="&commit_baseurl;6c66b7443">&sect;</ulink>
</para>
</listitem>
<!--
Author: Peter Eisentraut <peter@eisentraut.org>
2024-10-01 [972c2cd28] jit: Require at least LLVM 14, if enabled.
-->
<listitem>
<para>
If <application>LLVM</application> is enabled, require version 14
or later (Thomas Munro)
<ulink url="&commit_baseurl;972c2cd28">&sect;</ulink>
</para>
</listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
2025-03-26 [9324c8c58] Introduce PG_MODULE_MAGIC_EXT macro.
-->
<listitem>
<para>
Add macro <link
linkend="functions-info"><literal>PG_MODULE_MAGIC_EXT</literal></link>
to allow extensions to report their name and version (Andrei Lepikhov)
<ulink url="&commit_baseurl;9324c8c58">&sect;</ulink>
</para>
<para>
This information can be access via the new function <link
linkend="functions-info-session-table"><function>pg_get_loaded_modules()</function></link>.
</para>
</listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
2024-09-09 [218527d01] Don't bother checking the result of SPI_connect[_ext] an
-->
<listitem>
<para>
Document that <link
linkend="spi-spi-connect"><function>SPI_connect()</function></link>/<link
linkend="spi-spi-connect"><function>SPI_connect_ext()</function></link>
always returns success (<literal>SPI_OK_CONNECT</literal>) (Stepan
Neretin)
<ulink url="&commit_baseurl;218527d01">&sect;</ulink>
</para>
<para>
Errors are always reported via <function>ereport()</function>.
</para>
</listitem>
<!--
Author: Peter Eisentraut <peter@eisentraut.org>
2024-07-31 [e54a42ac9] Add API and ABI stability guidance to the C language doc
-->
<listitem>
<para>
Add <link linkend="xfunc-api-abi-stability-guidance">documentation
section</link> about <acronym>API</acronym> and <acronym>ABI</acronym>
compatibility (David Wheeler, Peter Eisentraut)
<ulink url="&commit_baseurl;e54a42ac9">&sect;</ulink>
</para>
</listitem>
<!--
Author: Peter Eisentraut <peter@eisentraut.org>
2025-01-27 [5afaba629] doc: Meson is not experimental on Windows
-->
<listitem>
<para>
Remove the experimental designation of
<application>Meson</application> builds on <systemitem
class="osname">Windows</systemitem> (Aleksander Alekseev)
<ulink url="&commit_baseurl;5afaba629">&sect;</ulink>
</para>
</listitem>
<!--
Author: Thomas Munro <tmunro@postgresql.org>
2024-07-30 [e25626677] Remove - -disable-spinlocks.
Author: Thomas Munro <tmunro@postgresql.org>
2024-07-30 [813852613] Remove - -disable-atomics, require 32 bit atomics.
-->
<listitem>
<para>
Remove configure options <option>--disable-spinlocks</option> and
<option>--disable-atomics</option> (Thomas Munro)
<ulink url="&commit_baseurl;e25626677">&sect;</ulink>
<ulink url="&commit_baseurl;813852613">&sect;</ulink>
</para>
<para>
Thirty-two-bit atomic operations are now required.
</para>
</listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
2024-07-01 [edadeb071] Remove support for HPPA (a/k/a PA-RISC) architecture.
-->
<listitem>
<para>
Remove support for the
<acronym>HPPA</acronym>/<acronym>PA-RISC</acronym> architecture
(Tom Lane)
<ulink url="&commit_baseurl;edadeb071">&sect;</ulink>
</para>
</listitem>
</itemizedlist>
</sect3>
<sect3 id="release-18-modules">
<title>Additional Modules</title>
<itemizedlist>
<!--
Author: Masahiko Sawada <msawada@postgresql.org>
2024-10-14 [7cdfeee32] Add contrib/pg_logicalinspect.
-->
<listitem>
<para>
Add extension <xref linkend="pglogicalinspect"/> to inspect logical
snapshots (Bertrand Drouvot)
<ulink url="&commit_baseurl;7cdfeee32">&sect;</ulink>
</para>
</listitem>
<!--
Author: Robert Haas <rhaas@postgresql.org>
2025-03-26 [8d5ceb113] pg_overexplain: Additional EXPLAIN options for debugging
-->
<listitem>
<para>
Add extension <xref linkend="pgoverexplain"/> which adds debug details
to <link linkend="sql-explain"><command>EXPLAIN</command></link>
output (Robert Haas)
<ulink url="&commit_baseurl;8d5ceb113">&sect;</ulink>
</para>
</listitem>
<!--
Author: Fujii Masao <fujii@postgresql.org>
2024-07-26 [c297a47c5] postgres_fdw: Add "used_in_xact" column to postgres_fdw_
Author: Fujii Masao <fujii@postgresql.org>
2024-07-26 [857df3cef] postgres_fdw: Add connection status check to postgres_fd
Author: Fujii Masao <fujii@postgresql.org>
2024-09-18 [4f08ab554] postgres_fdw: Extend postgres_fdw_get_connections to ret
Author: Fujii Masao <fujii@postgresql.org>
2025-03-03 [fe186bda7] postgres_fdw: Extend postgres_fdw_get_connections to ret
-->
<listitem>
<para>
Add output columns to <link
linkend="postgres-fdw-functions"><function>postgres_fdw_get_connections()</function></link>
(Hayato Kuroda, Sagar Dilip Shedge)
<ulink url="&commit_baseurl;c297a47c5">&sect;</ulink>
<ulink url="&commit_baseurl;857df3cef">&sect;</ulink>
<ulink url="&commit_baseurl;4f08ab554">&sect;</ulink>
<ulink url="&commit_baseurl;fe186bda7">&sect;</ulink>
</para>
<para>
New output column <structfield>used_in_xact</structfield> indicates
if the foreign data wrapper is being used by a current transaction,
<structfield>closed</structfield> indicates if it is closed,
<structfield>user_name</structfield> indicates the user name, and
<structfield>remote_backend_pid</structfield> indicates the remote
backend process identifier.
</para>
</listitem>
<!--
Author: Peter Eisentraut <peter@eisentraut.org>
2025-01-15 [761c79508] postgres_fdw: SCRAM authentication pass-through
-->
<listitem>
<para>
Allow <link linkend="auth-password"><acronym>SCRAM</acronym></link>
authentication from the client to be passed to <xref
linkend="postgres-fdw"/> servers (Matheus Alcantara, Peter Eisentraut)
<ulink url="&commit_baseurl;761c79508">&sect;</ulink>
</para>
<para>
This avoids storing <application>postgres_fdw</application>
authentication information in the database, and is
enabled with the <application>postgres_fdw</application> <link
linkend="postgres-fdw-option-use-scram-passthrough"><literal>use_scram_passthrough</literal></link>
connection option. libpq uses new connection parameters
<xref linkend="libpq-connect-scram-client-key"/> and <xref
linkend="libpq-connect-scram-server-key"/>.
</para>
</listitem>
<!--
Author: Peter Eisentraut <peter@eisentraut.org>
2025-03-26 [3642df265] dblink: SCRAM authentication pass-through
-->
<listitem>
<para>
Allow <acronym>SCRAM</acronym> authentication from the client to be
passed to <xref linkend="dblink"/> servers (Matheus Alcantara)
<ulink url="&commit_baseurl;3642df265">&sect;</ulink>
</para>
</listitem>
<!--
Author: Fujii Masao <fujii@postgresql.org>
2024-10-03 [a1c4c8a9e] file_fdw: Add on_error and log_verbosity options to file
-->
<listitem>
<para>
Add <literal>on_error</literal> and <literal>log_verbosity</literal>
options to <xref linkend="file-fdw"/> (Atsushi Torikoshi)
<ulink url="&commit_baseurl;a1c4c8a9e">&sect;</ulink>
</para>
<para>
These control how <application>file_fdw</application> handles and
reports invalid file rows.
</para>
</listitem>
<!--
Author: Fujii Masao <fujii@postgresql.org>
2024-11-20 [6c8f67032] file_fdw: Add REJECT_LIMIT option to file_fdw.
-->
<listitem>
<para>
Add <literal>reject_limit</literal> to control the number of
invalid rows <application>file_fdw</application> can ignore (Atsushi
Torikoshi)
<ulink url="&commit_baseurl;6c8f67032">&sect;</ulink>
</para>
<para>
This is active when <literal>ON_ERROR = 'ignore'</literal>.
</para>
</listitem>
<!--
Author: Nathan Bossart <nathan@postgresql.org>
2025-01-07 [f7e1b3828] Add passwordcheck.min_password_length.
-->
<listitem>
<para>
Add configurable variable <varname>min_password_length</varname> to
<xref linkend="passwordcheck"/> (Emanuele Musella, Maurizio Boriani)
<ulink url="&commit_baseurl;f7e1b3828">&sect;</ulink>
</para>
<para>
This controls the minimum password length.
</para>
</listitem>
<!--
Author: Tatsuo Ishii <ishii@postgresql.org>
2024-10-11 [cae0f3c40] pgbench: Improve result outputs related to failed transa
-->
<listitem>
<para>
Have <xref linkend="pgbench"/> report the number of failed, retried,
or skipped transactions in per-script reports (Yugo Nagata)
<ulink url="&commit_baseurl;cae0f3c40">&sect;</ulink>
</para>
</listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
2025-03-16 [448904423] contrib/isn: Make weak mode a GUC setting, and fix relat
-->
<listitem>
<para>
Add <xref linkend="isn"/> server variable <literal>weak</literal>
to control invalid check digit acceptance (Viktor Holmberg)
<ulink url="&commit_baseurl;448904423">&sect;</ulink>
</para>
<para>
This was previously only controlled by function <link
linkend="isn-functions"><function>isn_weak()</function></link>.
</para>
</listitem>
<!--
Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
2025-04-03 [e4309f73f] Add support for sorted gist index builds to btree_gist
-->
<listitem>
<para>
Allow values to be sorted to speed <xref linkend="btree-gist"/>
index builds (Bernd Helmle, Andrey Borodin)
<ulink url="&commit_baseurl;e4309f73f">&sect;</ulink>
</para>
</listitem>
<!--
Author: Tomas Vondra <tomas.vondra@postgresql.org>
2025-03-29 [14ffaece0] amcheck: Add gin_index_check() to verify GIN index
-->
<listitem>
<para>
Add <xref linkend="amcheck"/> check function <link
linkend="amcheck-functions"><function>gin_index_check()</function></link>
to verify <literal>GIN</literal> indexes (Grigory Kryachko, Heikki
Linnakangas, Andrey Borodin)
<ulink url="&commit_baseurl;14ffaece0">&sect;</ulink>
</para>
</listitem>
<!--
Author: Andres Freund <andres@anarazel.de>
2025-04-08 [dcf7e1697] Add pg_buffercache_evict_{relation,all} functions
-->
<listitem>
<para>
Add functions <link
linkend="pgbuffercache-pg-buffercache-evict-relation"><function>pg_buffercache_evict_relation()</function></link>
and <link
linkend="pgbuffercache-pg-buffercache-evict-all"><function>pg_buffercache_evict_all()</function></link>
to evict unpinned shared buffers (Nazir Bilal Yavuz)
<ulink url="&commit_baseurl;dcf7e1697">&sect;</ulink>
</para>
<para>
The existing function <link
linkend="pgbuffercache-pg-buffercache-evict"><function>pg_buffercache_evict()</function></link>
now returns the buffer flush status.
</para>
</listitem>
<!--
Author: Robert Haas <rhaas@postgresql.org>
2025-03-18 [c65bc2e1d] Make it possible for loadable modules to add EXPLAIN opt
Author: Robert Haas <rhaas@postgresql.org>
2025-03-18 [4fd02bf7c] Add some new hooks so extensions can add details to EXPL
Author: Robert Haas <rhaas@postgresql.org>
2025-03-20 [50ba65e73] Add an additional hook for EXPLAIN option validation.
-->
<listitem>
<para>
Allow extensions to install custom <xref linkend="sql-explain"/>
options (Robert Haas, Sami Imseih)
<ulink url="&commit_baseurl;c65bc2e1d">&sect;</ulink>
<ulink url="&commit_baseurl;4fd02bf7c">&sect;</ulink>
<ulink url="&commit_baseurl;50ba65e73">&sect;</ulink>
</para>
</listitem>
<!--
Author: Michael Paquier <michael@paquier.xyz>
2024-08-04 [7949d9594] Introduce pluggable APIs for Cumulative Statistics
Author: Michael Paquier <michael@paquier.xyz>
2024-08-05 [2eff9e678] Add helper routines to retrieve data for custom fixed-nu
-->
<listitem>
<para>
Allow extensions to use the server's cumulative statistics
<acronym>API</acronym> (Michael Paquier)
<ulink url="&commit_baseurl;7949d9594">&sect;</ulink>
<ulink url="&commit_baseurl;2eff9e678">&sect;</ulink>
</para>
</listitem>
</itemizedlist>
<sect4 id="release-18-pgstatstatements">
<title><xref linkend="pgstatstatements"/></title>
<itemizedlist>
<!--
Author: Michael Paquier <michael@paquier.xyz>
2024-10-28 [6b652e6ce] Set query ID for inner queries of CREATE TABLE AS and DE
-->
<listitem>
<para>
Allow the queries of <xref linkend="sql-createtableas"/>
and <xref linkend="sql-declare"/> to be tracked by
<application>pg_stat_statements</application> (Anthonin Bonnefoy)
<ulink url="&commit_baseurl;6b652e6ce">&sect;</ulink>
</para>
<para>
They are also now assigned query ids.
</para>
</listitem>
<!--
Author: Michael Paquier <michael@paquier.xyz>
2024-09-30 [dc6851596] Show values of SET statements as constants in pg_stat_st
-->
<listitem>
<para>
Allow the parameterization of <xref linkend="sql-set"/> values in
<application>pg_stat_statements</application> (Greg Sabino Mullane,
Michael Paquier)
<ulink url="&commit_baseurl;dc6851596">&sect;</ulink>
</para>
<para>
This reduces the bloat caused by <command>SET</command> statements
with differing constants.
</para>
</listitem>
<!--
Author: Michael Paquier <michael@paquier.xyz>
2024-10-09 [cf54a2c00] pg_stat_statements: Add columns to track parallel worker
-->
<listitem>
<para>
Add <link
linkend="pgstatstatements-pg-stat-statements"><structname>pg_stat_statements</structname></link>
columns to report parallel activity (Guillaume Lelarge)
<ulink url="&commit_baseurl;cf54a2c00">&sect;</ulink>
</para>
<para>
The new columns are
<structfield>parallel_workers_to_launch</structfield> and
<structfield>parallel_workers_launched</structfield>.
</para>
</listitem>
<!--
Author: Michael Paquier <michael@paquier.xyz>
2025-02-17 [ce5bcc4a9] pg_stat_statements: Add wal_buffers_full
-->
<listitem>
<para>
Add
<structname>pg_stat_statements</structname>.<structfield>wal_buffers_full</structfield>
to report full <acronym>WAL</acronym> buffers (Bertrand Drouvot)
<ulink url="&commit_baseurl;ce5bcc4a9">&sect;</ulink>
</para>
</listitem>
</itemizedlist>
</sect4>
<sect4 id="release-18-pgcrypto">
<title><xref linkend="pgcrypto"/></title>
<itemizedlist>
<!--
Author: Álvaro Herrera <alvherre@alvh.no-ip.org>
2025-04-05 [749a9e20c] Add modern SHA-2 based password hashes to pgcrypto.
-->
<listitem>
<para>
Add <application>pgcrypto</application> algorithms <link
linkend="pgcrypto-crypt-algorithms"><literal>sha256crypt</literal></link>
and <link
linkend="pgcrypto-crypt-algorithms"><literal>sha512crypt</literal></link>
(Bernd Helmle)
<ulink url="&commit_baseurl;749a9e20c">&sect;</ulink>
</para>
</listitem>
<!--
Author: Daniel Gustafsson <dgustafsson@postgresql.org>
2025-02-14 [9ad1b3d01] pgcrypto: Add support for CFB mode in AES encryption
-->
<listitem>
<para>
Add <link
linkend="pgcrypto-raw-enc-funcs"><acronym>CFB</acronym></link> mode
to <application>pgcrypto</application> encryption and decryption
(Umar Hayat)
<ulink url="&commit_baseurl;9ad1b3d01">&sect;</ulink>
</para>
</listitem>
<!--
Author: Daniel Gustafsson <dgustafsson@postgresql.org>
2025-01-24 [924d89a35] pgcrypto: Add function to check FIPS mode
-->
<listitem>
<para>
Add function <link
linkend="pgcrypto-openssl-support-funcs"><function>fips_mode()</function></link>
to report the server's <acronym>FIPS</acronym> mode (Daniel
Gustafsson)
<ulink url="&commit_baseurl;924d89a35">&sect;</ulink>
</para>
</listitem>
<!--
Author: Daniel Gustafsson <dgustafsson@postgresql.org>
2025-01-24 [035f99cbe] pgcrypto: Make it possible to disable built-in crypto
-->
<listitem>
<para>
Add <application>pgcrypto</application> server variable <link
linkend="pgcrypto-configuration-parameters-builtin_crypto_enabled"><varname>builtin_crypto_enabled</varname></link>
to allow disabling builtin non-<acronym>FIPS</acronym> mode
cryptographic functions (Daniel Gustafsson, Joe Conway)
<ulink url="&commit_baseurl;035f99cbe">&sect;</ulink>
</para>
<para>
This is useful for guaranteeing <acronym>FIPS</acronym> mode behavior.
</para>
</listitem>
</itemizedlist>
</sect4>
</sect3>
</sect2>
<sect2 id="release-18-acknowledgements">
<title>Acknowledgments</title>
<para>
The following individuals (in alphabetical order) have contributed
to this release as patch authors, committers, reviewers, testers,
or reporters of issues.
</para>
<simplelist>
<member>Abhishek Chanda</member>
<member>Adam Guo</member>
<member>Adam Rauch</member>
<member>Aidar Imamov</member>
<member>Ajin Cherian</member>
<member>Alastair Turner</member>
<member>Alec Cozens</member>
<member>Aleksander Alekseev</member>
<member>Alena Rybakina</member>
<member>Alex Friedman</member>
<member>Alex Richman</member>
<member>Alexander Alehin</member>
<member>Alexander Borisov</member>
<member>Alexander Korotkov</member>
<member>Alexander Kozhemyakin</member>
<member>Alexander Kukushkin</member>
<member>Alexander Kuzmenkov</member>
<member>Alexander Kuznetsov</member>
<member>Alexander Lakhin</member>
<member>Alexander Pyhalov</member>
<member>Alexandra Wang</member>
<member>Alexey Dvoichenkov</member>
<member>Alexey Makhmutov</member>
<member>Alexey Shishkin</member>
<member>Ali Akbar</member>
<member>Álvaro Herrera</member>
<member>Álvaro Mongil</member>
<member>Amit Kapila</member>
<member>Amit Langote</member>
<member>Amul Sul</member>
<member>Andreas Karlsson</member>
<member>Andreas Scherbaum</member>
<member>Andreas Ulbrich</member>
<member>Andrei Lepikhov</member>
<member>Andres Freund</member>
<member>Andrew</member>
<member>Andrew Bille</member>
<member>Andrew Dunstan</member>
<member>Andrew Jackson</member>
<member>Andrew Kane</member>
<member>Andrew Watkins</member>
<member>Andrey Borodin</member>
<member>Andrey Chudnovsky</member>
<member>Andrey Rachitskiy</member>
<member>Andrey Rudometov</member>
<member>Andy Alsup</member>
<member>Andy Fan</member>
<member>Anthonin Bonnefoy</member>
<member>Anthony Hsu</member>
<member>Anthony Leung</member>
<member>Anton Melnikov</member>
<member>Anton Voloshin</member>
<member>Antonin Houska</member>
<member>Antti Lampinen</member>
<member>Arseniy Mukhin</member>
<member>Artur Zakirov</member>
<member>Arun Thirupathi</member>
<member>Ashutosh Bapat</member>
<member>Asphator</member>
<member>Atsushi Torikoshi</member>
<member>Avi Weinberg</member>
<member>Aya Iwata</member>
<member>Ayush Tiwari</member>
<member>Ayush Vatsa</member>
<member>Bastien Roucariès</member>
<member>Ben Peachey Higdon</member>
<member>Benoit Lobréau</member>
<member>Bernd Helmle</member>
<member>Bernd Reiß</member>
<member>Bernhard Wiedemann</member>
<member>Bertrand Drouvot</member>
<member>Bertrand Mamasam</member>
<member>Bharath Rupireddy</member>
<member>Bogdan Grigorenko</member>
<member>Boyu Yang</member>
<member>Braulio Fdo Gonzalez</member>
<member>Bruce Momjian</member>
<member>Bykov Ivan</member>
<member>Cameron Vogt</member>
<member>Cary Huang</member>
<member>Cédric Villemain</member>
<member>Cees van Zeeland</member>
<member>ChangAo Chen</member>
<member>Chao Li</member>
<member>Chapman Flack</member>
<member>Charles Samborski</member>
<member>Chengwen Wu</member>
<member>Chengxi Sun</member>
<member>Chiranmoy Bhattacharya</member>
<member>Chris Gooch</member>
<member>Christian Charukiewicz</member>
<member>Christoph Berg</member>
<member>Christophe Courtois</member>
<member>Christopher Inokuchi</member>
<member>Clemens Ruck</member>
<member>Corey Huinker</member>
<member>Craig Milhiser</member>
<member>Crisp Lee</member>
<member>Dagfinn Ilmari Mannsåker</member>
<member>Daniel Elishakov</member>
<member>Daniel Gustafsson</member>
<member>Daniel Vérité</member>
<member>Daniel Westermann</member>
<member>Daniele Varrazzo</member>
<member>Daniil Davydov</member>
<member>Daria Shanina</member>
<member>Dave Cramer</member>
<member>Dave Page</member>
<member>David Benjamin</member>
<member>David Christensen</member>
<member>David Fiedler</member>
<member>David G. Johnston</member>
<member>David Geier</member>
<member>David Rowley</member>
<member>David Steele</member>
<member>David Wheeler</member>
<member>David Zhang</member>
<member>Davinder Singh</member>
<member>Dean Rasheed</member>
<member>Devanga Susmitha</member>
<member>Devrim Gündüz</member>
<member>Dian Fay</member>
<member>Dilip Kumar</member>
<member>Dimitrios Apostolou</member>
<member>Dipesh Dhameliya</member>
<member>Dmitrii Bondar</member>
<member>Dmitry Dolgov</member>
<member>Dmitry Koval</member>
<member>Dmitry Kovalenko</member>
<member>Dmitry Yurichev</member>
<member>Dominique Devienne</member>
<member>Donghang Lin</member>
<member>Dorjpalam Batbaatar</member>
<member>Drew Callahan</member>
<member>Duncan Sands</member>
<member>Dwayne Towell</member>
<member>Dzmitry Jachnik</member>
<member>Egor Chindyaskin</member>
<member>Egor Rogov</member>
<member>Emanuel Ionescu</member>
<member>Emanuele Musella</member>
<member>Emre Hasegeli</member>
<member>Eric Cyr</member>
<member>Erica Zhang</member>
<member>Erik Nordström</member>
<member>Erik Rijkers</member>
<member>Erik Wienhold</member>
<member>Erki Eessaar</member>
<member>Ethan Mertz</member>
<member>Etienne LAFARGE</member>
<member>Etsuro Fujita</member>
<member>Euler Taveira</member>
<member>Evan Si</member>
<member>Evgeniy Gorbanev</member>
<member>Fabio R. Sluzala</member>
<member>Fabrízio de Royes Mello</member>
<member>Feike Steenbergen</member>
<member>Feliphe Pozzer</member>
<member>Felix</member>
<member>Fire Emerald</member>
<member>Florents Tselai</member>
<member>Francesco Degrassi</member>
<member>Frank Streitzig</member>
<member>Frédéric Yhuel</member>
<member>Fredrik Widlert</member>
<member>Gabriele Bartolini</member>
<member>Gavin Panella</member>
<member>Geoff Winkless</member>
<member>George MacKerron</member>
<member>Gilles Darold</member>
<member>Grant Gryczan</member>
<member>Greg Burd</member>
<member>Greg Sabino Mullane</member>
<member>Greg Stark</member>
<member>Grigory Kryachko</member>
<member>Guillaume Lelarge</member>
<member>Gunnar Morling</member>
<member>Gunnar Wagner</member>
<member>Gurjeet Singh</member>
<member>Haifang Wang</member>
<member>Hajime Matsunaga</member>
<member>Hamid Akhtar</member>
<member>Hannu Krosing</member>
<member>Hari Krishna Sunder</member>
<member>Haruka Takatsuka</member>
<member>Hayato Kuroda</member>
<member>Heikki Linnakangas</member>
<member>Hironobu Suzuki</member>
<member>Holger Jakobs</member>
<member>Hubert Lubaczewski</member>
<member>Hugo Dubois</member>
<member>Hugo Zhang</member>
<member>Hunaid Sohail</member>
<member>Hywel Carver</member>
<member>Ian Barwick</member>
<member>Ibrar Ahmed</member>
<member>Igor Gnatyuk</member>
<member>Igor Korot</member>
<member>Ilia Evdokimov</member>
<member>Ilya Gladyshev</member>
<member>Ilyasov Ian</member>
<member>Imran Zaheer</member>
<member>Isaac Morland</member>
<member>Israel Barth Rubio</member>
<member>Ivan Kush</member>
<member>Jacob Brazeal</member>
<member>Jacob Champion</member>
<member>Jaime Casanova</member>
<member>Jakob Egger</member>
<member>Jakub Wartak</member>
<member>James Coleman</member>
<member>James Hunter</member>
<member>Jan Behrens</member>
<member>Japin Li</member>
<member>Jason Smith</member>
<member>Jayesh Dehankar</member>
<member>Jeevan Chalke</member>
<member>Jeff Davis</member>
<member>Jehan-Guillaume de Rorthais</member>
<member>Jelte Fennema-Nio</member>
<member>Jian He</member>
<member>Jianghua Yang</member>
<member>Jiao Shuntian</member>
<member>Jim Jones</member>
<member>Jim Nasby</member>
<member>Jingtang Zhang</member>
<member>Jingzhou Fu</member>
<member>Joe Conway</member>
<member>Joel Jacobson</member>
<member>John Hutchins</member>
<member>John Naylor</member>
<member>Jonathan Katz</member>
<member>Jorge Solórzano</member>
<member>José Villanova</member>
<member>Josef Šimánek</member>
<member>Joseph Koshakow</member>
<member>Julien Rouhaud</member>
<member>Junwang Zhao</member>
<member>Justin Pryzby</member>
<member>Kaido Vaikla</member>
<member>Kaimeh</member>
<member>Karina Litskevich</member>
<member>Karthik S</member>
<member>Kartyshov Ivan</member>
<member>Kashif Zeeshan</member>
<member>Keisuke Kuroda</member>
<member>Kevin Hale Boyes</member>
<member>Kevin K Biju</member>
<member>Kirill Reshke</member>
<member>Kirill Zdornyy</member>
<member>Koen De Groote</member>
<member>Koichi Suzuki</member>
<member>Koki Nakamura</member>
<member>Konstantin Knizhnik</member>
<member>Kouhei Sutou</member>
<member>Kuntal Ghosh</member>
<member>Kyotaro Horiguchi</member>
<member>Lakshmi Narayana Velayudam</member>
<member>Lars Kanis</member>
<member>Laurence Parry</member>
<member>Laurenz Albe</member>
<member>Lele Gaifax</member>
<member>Li Yong</member>
<member>Lilian Ontowhee</member>
<member>Lingbin Meng</member>
<member>Luboslav Špilák</member>
<member>Luca Vallisa</member>
<member>Lukas Fittl</member>
<member>Maciek Sakrejda</member>
<member>Magnus Hagander</member>
<member>Mahendra Singh Thalor</member>
<member>Mahendrakar Srinivasarao</member>
<member>Maiquel Grassi</member>
<member>Maksim Korotkov</member>
<member>Maksim Melnikov</member>
<member>Man Zeng</member>
<member>Marat Buharov</member>
<member>Marc Balmer</member>
<member>Marco Nenciarini</member>
<member>Marcos Pegoraro</member>
<member>Marina Polyakova</member>
<member>Mark Callaghan</member>
<member>Mark Dilger</member>
<member>Marlene Brandstaetter</member>
<member>Marlene Reiterer</member>
<member>Martin Rakhmanov</member>
<member>Masahiko Sawada</member>
<member>Masahiro Ikeda</member>
<member>Masao Fujii</member>
<member>Mason Mackaman</member>
<member>Mat Arye</member>
<member>Matheus Alcantara</member>
<member>Mats Kindahl</member>
<member>Matthew Gabeler-Lee</member>
<member>Matthew Kim</member>
<member>Matthew Sterrett</member>
<member>Matthew Woodcraft</member>
<member>Matthias van de Meent</member>
<member>Matthieu Denais</member>
<member>Maurizio Boriani</member>
<member>Max Johnson</member>
<member>Max Madden</member>
<member>Maxim Boguk</member>
<member>Maxim Orlov</member>
<member>Maximilian Chrzan</member>
<member>Melanie Plageman</member>
<member>Melih Mutlu</member>
<member>Mert Alev</member>
<member>Michael Banck</member>
<member>Michael Bondarenko</member>
<member>Michael Christofides</member>
<member>Michael Guissine</member>
<member>Michael Harris</member>
<member>Michaël Paquier</member>
<member>Michail Nikolaev</member>
<member>Michal Kleczek</member>
<member>Michel Pelletier</member>
<member>Mikaël Gourlaouen</member>
<member>Mikhail Gribkov</member>
<member>Mikhail Kot</member>
<member>Milosz Chmura</member>
<member>Muralikrishna Bandaru</member>
<member>Murat Efendioglu</member>
<member>Mutaamba Maasha</member>
<member>Naeem Akhter</member>
<member>Nat Makarevitch</member>
<member>Nathan Bossart</member>
<member>Navneet Kumar</member>
<member>Nazir Bilal Yavuz</member>
<member>Neil Conway</member>
<member>Niccolò Fei</member>
<member>Nick Davies</member>
<member>Nicolas Maus</member>
<member>Niek Brasa</member>
<member>Nikhil Raj</member>
<member>Nikita</member>
<member>Nikita Kalinin</member>
<member>Nikita Malakhov</member>
<member>Nikolay Samokhvalov</member>
<member>Nikolay Shaplov</member>
<member>Nisha Moond</member>
<member>Nitin Jadhav</member>
<member>Nitin Motiani</member>
<member>Noah Misch</member>
<member>Noboru Saito</member>
<member>Noriyoshi Shinoda</member>
<member>Ole Peder Brandtzæg</member>
<member>Oleg Sibiryakov</member>
<member>Oleg Tselebrovskiy</member>
<member>Olleg Samoylov</member>
<member>Onder Kalaci</member>
<member>Ondrej Navratil</member>
<member>Patrick Stählin</member>
<member>Paul Amonson</member>
<member>Paul Jungwirth</member>
<member>Paul Ramsey</member>
<member>Pavel Borisov</member>
<member>Pavel Luzanov</member>
<member>Pavel Nekrasov</member>
<member>Pavel Stehule</member>
<member>Peter Eisentraut</member>
<member>Peter Geoghegan</member>
<member>Peter Mittere</member>
<member>Peter Smith</member>
<member>Phil Eaton</member>
<member>Philipp Salvisberg</member>
<member>Philippe Beaudoin</member>
<member>Pierre Giraud</member>
<member>Pixian Shi</member>
<member>Polina Bungina</member>
<member>Przemyslaw Sztoch</member>
<member>Quynh Tran</member>
<member>Rafia Sabih</member>
<member>Raghuveer Devulapalli</member>
<member>Rahila Syed</member>
<member>Rama Malladi</member>
<member>Ran Benita</member>
<member>Ranier Vilela</member>
<member>Renan Alves Fonseca</member>
<member>Richard Guo</member>
<member>Richard Neill</member>
<member>Rintaro Ikeda</member>
<member>Robert Haas</member>
<member>Robert Treat</member>
<member>Robins Tharakan</member>
<member>Roman Zharkov</member>
<member>Ronald Cruz</member>
<member>Ronan Dunklau</member>
<member>Rui Zhao</member>
<member>Rushabh Lathia</member>
<member>Rustam Allakov</member>
<member>Ryo Kanbayashi</member>
<member>Ryohei Takahashi</member>
<member>RyotaK</member>
<member>Sagar Dilip Shedge</member>
<member>Salvatore Dipietro</member>
<member>Sam Gabrielsson</member>
<member>Sam James</member>
<member>Sameer Kumar</member>
<member>Sami Imseih</member>
<member>Samuel Thibault</member>
<member>Satyanarayana Narlapuram</member>
<member>Sebastian Skalacki</member>
<member>Senglee Choi</member>
<member>Sergei Kornilov</member>
<member>Sergey Belyashov</member>
<member>Sergey Dudoladov</member>
<member>Sergey Prokhorenko</member>
<member>Sergey Sargsyan</member>
<member>Sergey Soloviev</member>
<member>Sergey Tatarintsev</member>
<member>Shaik Mohammad Mujeeb</member>
<member>Shawn McCoy</member>
<member>Shenhao Wang</member>
<member>Shihao Zhong</member>
<member>Shinya Kato</member>
<member>Shlok Kyal</member>
<member>Shubham Khanna</member>
<member>Shveta Malik</member>
<member>Simon Riggs</member>
<member>Smolkin Grigory</member>
<member>Sofia Kopikova</member>
<member>Song Hongyu</member>
<member>Song Jinzhou</member>
<member>Soumyadeep Chakraborty</member>
<member>Sravan Kumar</member>
<member>Srinath Reddy</member>
<member>Stan Hu</member>
<member>Stepan Neretin</member>
<member>Stephen Fewer</member>
<member>Stephen Frost</member>
<member>Steve Chavez</member>
<member>Steven Niu</member>
<member>Suraj Kharage</member>
<member>Sven Klemm</member>
<member>Takamichi Osumi</member>
<member>Takeshi Ideriha</member>
<member>Tatsuo Ishii</member>
<member>Ted Yu</member>
<member>Tels</member>
<member>Tender Wang</member>
<member>Teodor Sigaev</member>
<member>Thom Brown</member>
<member>Thomas Baehler</member>
<member>Thomas Krennwallner</member>
<member>Thomas Munro</member>
<member>Tim Wood</member>
<member>Timur Magomedov</member>
<member>Tobias Wendorff</member>
<member>Todd Cook</member>
<member>Tofig Aliev</member>
<member>Tom Lane</member>
<member>Tomas Vondra</member>
<member>Tomasz Rybak</member>
<member>Tomasz Szypowski</member>
<member>Torsten Foertsch</member>
<member>Toshi Harada</member>
<member>Tristan Partin</member>
<member>Triveni N</member>
<member>Umar Hayat</member>
<member>Vallimaharajan G</member>
<member>Vasya Boytsov</member>
<member>Victor Yegorov</member>
<member>Vignesh C</member>
<member>Viktor Holmberg</member>
<member>Vinícius Abrahão</member>
<member>Vinod Sridharan</member>
<member>Virender Singla</member>
<member>Vitaly Davydov</member>
<member>Vladlen Popolitov</member>
<member>Vladyslav Nebozhyn</member>
<member>Walid Ibrahim</member>
<member>Webbo Han</member>
<member>Wenhui Qiu</member>
<member>Will Mortensen</member>
<member>Will Storey</member>
<member>Wolfgang Walther</member>
<member>Xin Zhang</member>
<member>Xing Guo</member>
<member>Xuneng Zhou</member>
<member>Yan Chengpen</member>
<member>Yang Lei</member>
<member>Yaroslav Saburov</member>
<member>Yaroslav Syrytsia</member>
<member>Yasir Hussain</member>
<member>Yasuo Honda</member>
<member>Yogesh Sharma</member>
<member>Yonghao Lee</member>
<member>Yoran Heling</member>
<member>Yu Liang</member>
<member>Yugo Nagata</member>
<member>Yuhang Qiu</member>
<member>Yuki Seino</member>
<member>Yura Sokolov</member>
<member>Yurii Rashkovskii</member>
<member>Yushi Ogiwara</member>
<member>Yusuke Sugie</member>
<member>Yuta Katsuragi</member>
<member>Yuto Sasaki</member>
<member>Yuuki Fujii</member>
<member>Yuya Watari</member>
<member>Zane Duffield</member>
<member>Zeyuan Hu</member>
<member>Zhang Mingli</member>
<member>Zhihong Yu</member>
<member>Zhijie Hou</member>
<member>Zsolt Parragi</member>
</simplelist>
</sect2>
</sect1>