First draft of PG 19 release notes
I have completed the first draft of the PG 19 release notes:
https://www.postgresql.org/docs/devel/release-19.html
The feature count is 212. The recent average is 200:
https://momjian.us/main/writings/pgsql/missing.pdf#page=3
I will create a wiki page to explain my methods used to create this
because, someday, someone else will need to do this.
I am traveling April 19 to May 7, so I might not be able to make quick
adjustments based on feedback. Another committer can handle them, or
you can wait for me to get to it.
--
Bruce Momjian <bruce@momjian.us> https://momjian.us
EDB https://enterprisedb.com
Do not let urgent matters crowd out time for investment in the future.
On Tue, Apr 14, 2026 at 09:18:57PM -0400, Bruce Momjian wrote:
I will create a wiki page to explain my methods used to create this
because, someday, someone else will need to do this.
Done:
https://wiki.postgresql.org/wiki/Creating_Major_Release_Notes
--
Bruce Momjian <bruce@momjian.us> https://momjian.us
EDB https://enterprisedb.com
Do not let urgent matters crowd out time for investment in the future.
Hi Bruce,
On Wed, Apr 15, 2026 at 6:49 AM Bruce Momjian <bruce@momjian.us> wrote:
I have completed the first draft of the PG 19 release notes:
https://www.postgresql.org/docs/devel/release-19.html
The feature count is 212. The recent average is 200:
One correction:
Add simplified shared memory registration function
ShmemRequestStruct() (Ashutosh Bapat) §
Heikki Linnakangas is the primary author of this commit.
Also, depending upon the availability of space, here's a suggested version:
--
Add simplified and improved shared memory registration function
ShmemRequestStruct (Heikki Linnakangas, Ashutosh Bapat)
Allows requesting named shared memory structures during and after
server startup. Functions ShmemInitStruct() and ShmemInitHash() remain
for backward compatibility.
--
--
Best Wishes,
Ashutosh Bapat
On Wed, 15 Apr 2026 at 13:19, Bruce Momjian <bruce@momjian.us> wrote:
I have completed the first draft of the PG 19 release notes:
Many thanks for your efforts here.
"Improve performance of internal row formation (David Rowley)"
It's really deformation, not formation. As far as I know, nothing in
v19 sped up tuple formation.
I also think Nathan's work on autovacuum table prioritisation
(d7965d65f) is worth a mention. There were concerns there that it
might cause trouble for people who (for some reason) get best results
from the previous pg_class-ordered priority. Having something in the
notes about this might help direct someone towards why they're seeing
autovacuum behave differently after upgrading.
David
Hi,
For this one:
"Allow CREATE/ALTER PUBLICATION to exclude some tables using the
EXCEPT TABLE clause (Vignesh C, Shlok Kyal)"
~
The "EXCEPT TABLE" syntax was later changed to "EXCEPT (TABLE ...)",
so where above says "EXCEPT TABLE clause", probably now that should
just say "EXCEPT clause" same as the documentation.
======
Kind Regards,
Peter Smith.
Fujitsu Australia.
On Tue, 2026-04-14 at 21:18 -0400, Bruce Momjian wrote:
I have completed the first draft of the PG 19 release notes:
Thank you!
I noticed a typo:
Change vacuumdb's --analyze-only option to analyze partitioned tables when now targets are specified
It should probably be "no targets" rather than "now targets".
Yours,
Laurenz Albe
On 15 Apr 2026, at 03:18, Bruce Momjian <bruce@momjian.us> wrote:
I have completed the first draft of the PG 19 release notes:
+Allow online enabling and disabling of data checksums (Daniel Gustafsson, Magnus Hagander, Tomas Vondra, Lakshmi N)
This one should only say "Daniel Gustafsson, Magnus Hagander, Tomas Vondra"
--
Daniel Gustafsson
On Wed, Apr 15, 2026 at 9:19 AM Bruce Momjian <bruce@momjian.us> wrote:
I have completed the first draft of the PG 19 release notes:
https://git.postgresql.org/cgit/postgresql.git/commit/?id=ecd9288624a1582a732cf86ac5a01475a1ce7815
https://git.postgresql.org/cgit/postgresql.git/commit/?id=4edd6036d69ce42ac1af236f659f20daed65c8d4
Do you think these two are worth adding to the release notes?
"""
Allow COPY TO to output partitioned tables (Jian He, Ajin Cherian) § §
Previously COPY (SELECT ...) has to be used to output partitioned tables.
"""
The second commit uses this feature, so i guess the commit message
needs a slight change.
"""
Improve timing performance measurements (Lukas Fittl, Andres Freund,
David Geier, Lukas Fittl, David Geier) § §
This benefits EXPLAIN (ANALYZE, TIMING) and pg_test_timing, and is
controlled via server variable timing_clock_source.
"""
Duplicated name entry.
"""
Allow IS [NOT] DISTINCT FROM NULL to be converted to IS [NOT] NULL for
proven null arguments (Richard Guo) §
The latter form is more easily optimized.
"""
Two optional ``[NOT]`` introduce ambiguity.
"""
Add support for INSERT ... RETURNING ... ON CONFLICT DO SELECT
(Andreas Karlsson, Marko Tiikkaja, Viktor Holmberg) §
This allows conflicting rows to be returns, and optionally locked with
FOR UPDATE/SHARE.
"""
I think it's:
INSERT... ON CONFLICT DO SELECT...RETURNING
On Wed, Apr 15, 2026 at 07:55:56AM +0530, Ashutosh Bapat wrote:
Hi Bruce,
On Wed, Apr 15, 2026 at 6:49 AM Bruce Momjian <bruce@momjian.us> wrote:
I have completed the first draft of the PG 19 release notes:
https://www.postgresql.org/docs/devel/release-19.html
The feature count is 212. The recent average is 200:
One correction:
Add simplified shared memory registration function
ShmemRequestStruct() (Ashutosh Bapat) §Heikki Linnakangas is the primary author of this commit.
Also, depending upon the availability of space, here's a suggested version:
--
Add simplified and improved shared memory registration function
ShmemRequestStruct (Heikki Linnakangas, Ashutosh Bapat)
I have used your text above. FYI, the commit message only has this for
author:
Co-authored-by: Ashutosh Bapat <ashutosh.bapat.oss@gmail.com>
Allows requesting named shared memory structures during and after
server startup. Functions ShmemInitStruct() and ShmemInitHash() remain
for backward compatibility.
I didn't add this text because the number of readers interested in this
change is very small. Those who are interested can read the commit
message.
--
Bruce Momjian <bruce@momjian.us> https://momjian.us
EDB https://enterprisedb.com
Do not let urgent matters crowd out time for investment in the future.
On Wed, Apr 15, 2026 at 9:57 AM Bruce Momjian <bruce@momjian.us> wrote:
I have used your text above. FYI, the commit message only has this for
author:Co-authored-by: Ashutosh Bapat <ashutosh.bapat.oss@gmail.com>
The pattern of "a missing Author means the committer is the primary
author" was discussed at [1]/messages/by-id/adO73c_EJKi05smk@momjian.us; you asked if Co-authored-by was used
that way, and the answer was "yes". I use it, too.
Thanks,
--Jacob
On Tue, Apr 14, 2026 at 9:19 PM Bruce Momjian <bruce@momjian.us> wrote:
I have completed the first draft of the PG 19 release notes:
As of b46e1e54d078def, SELECT queries may update the visibility map.
Previously only vacuum did this. I think users may be confused by this
if it is not mentioned in the release notes.
Additionally, users may notice that there are no longer
XLOG_HEAP2_VISIBLE records. A series of commits culminating in
a881cc9c7e819fb (others being d96f87332b378, add323da40a6bf9e0,
1252a4ee2863673, a759ced2f1e) moved VM setting into the
XLOG_HEAP2_PRUNE_VACUUM_SCAN record. Users may notice that
XLOG_HEAP2_VISIBLE records are no longer produced.
This is more minor, but we also now (378a216187aea1) set pd_prune_xid
on insert, so users may notice that a freshly inserted page is
on-access pruned and then the VM is set (which wouldn't have happened
before without vacuum).
- Melanie
On Wed, Apr 15, 2026 at 02:29:49PM +1200, David Rowley wrote:
On Wed, 15 Apr 2026 at 13:19, Bruce Momjian <bruce@momjian.us> wrote:
I have completed the first draft of the PG 19 release notes:
Many thanks for your efforts here.
"Improve performance of internal row formation (David Rowley)"
It's really deformation, not formation. As far as I know, nothing in
v19 sped up tuple formation.
Changed to:
Improve performance of internal row deformation (David Rowley)
--
Thanks.
I also think Nathan's work on autovacuum table prioritisation
(d7965d65f) is worth a mention. There were concerns there that it
might cause trouble for people who (for some reason) get best results
from the previous pg_class-ordered priority. Having something in the
notes about this might help direct someone towards why they're seeing
autovacuum behave differently after upgrading.
Yikes, so I collected commits on March 26, but when I went to add new
commits, I used March 27 as the start date, and missed all the late
March 26 commits. I should have started on March 26 to get
later-in-the-day commits!
I went back and looked at the commits I missed and the one you pointed
out is the only relevant one, so that is good.
Applied patch attached.
--
Bruce Momjian <bruce@momjian.us> https://momjian.us
EDB https://enterprisedb.com
Do not let urgent matters crowd out time for investment in the future.
On Wed, Apr 15, 2026 at 10:21:34AM -0700, Jacob Champion wrote:
On Wed, Apr 15, 2026 at 9:57 AM Bruce Momjian <bruce@momjian.us> wrote:
I have used your text above. FYI, the commit message only has this for
author:Co-authored-by: Ashutosh Bapat <ashutosh.bapat.oss@gmail.com>
The pattern of "a missing Author means the committer is the primary
author" was discussed at [1]; you asked if Co-authored-by was used
that way, and the answer was "yes". I use it, too.
Well, I am guessing you didn't read this thread fully:
/messages/by-id/adElLtegJxi6Yecv@momjian.us
which opened with the question:
In the PG 19 commits, I am seeing several commits with Author
and Co-authored-by tags. FYI, I think we agreed that only the
Author names are mentioned as the authors in the release notes.
and I was told that authors and "Co-authored-by" should be listed; they
are effectively the same, except that github recognizes
"Co-authored-by".
I _thought_ the plan from January 2025 until March 2026 was:
https://wiki.postgresql.org/wiki/Commit_Message_Guidance
Author:
Co-authored-by:
Used to indicate the patch authors. "Co-authored-by:" is used by
committers when they want to give full credit to the named individuals,
but also indicate that they made significant changes.
This was specifically for "Co-authored-by:" == committer, but the text
was not clear enough. However, that doesn't match your usage where a
missing "Author" is considered to be the committer.
At [1], /messages/by-id/adO73c_EJKi05smk, I said:
Wow, I never thought that was a valid pattern, but I see a few PG 19
commit messages using that, e.g.:
Author: Peter Eisentraut <peter(at)eisentraut(dot)org>
2025-08-12 [5f19d13df] libpq: Set LDAP protocol version 3
libpq: Set LDAP protocol version 3
Some LDAP servers reject the default version 2 protocol. So set
version 3 before starting the connection. This matches how the
backend LDAP code has worked all along.
Co-authored-by: Andrew Jackson <andrewjackson947(at)gmail(dot)com>
Reviewed-by: Pavel Seleznev <pavel(dot)seleznev(at)gmail(dot)com>
Discussion: /messages/by-id/CAKK5BkHixcivSCA9pfd_eUp7wkLRhvQ6OtGLAYrWC=k7E76LDQ@mail.gmail.com
Is that what people are using? A missing Author, and co-authors means
the committer is the author? Right? Shouldn't we document this? That
does give a unique use for Co-authored-by.
However, later emails said:
/messages/by-id/CA+Tgmob_tz0+T1CcyTFwgQVThsoezY2fKib=r+ukAvVBXwM1gg@mail.gmail.com
This whole discussion is crazy to me. Every Author and Co-Author
should be listed in the release notes. If there is no author or
co-author named in the commit message, then the committer should be
listed as the sole author; otherwise, the exact list of authors and
co-authors that the committer chose to include in the commit message
should be credited.
and there are more emails saying that, so that is the rule I used, and
documented on the wiki is:
https://wiki.postgresql.org/wiki/Commit_Message_Guidance
Used to indicate the patch authors. If no "Author" or
"Co-authored-by" is listed, the committer is assumed to be
the author.
What I also said in the thread was:
What I don't want to do is to re-litigate this again, and usually
if we ignore what people said in the past, they will show up at
some later time to try to undo what we are doing now.
I created the PG 19 release notes with Author == "Co-authored-by:", so
if committers have not done that for PG 19, I need them to either inform
me of the rules they used, supply a release note patch, or change the
release notes themselves. And hopefully use agreed-upon rules in the
future, whatever we decide those are.
--
Bruce Momjian <bruce@momjian.us> https://momjian.us
EDB https://enterprisedb.com
Do not let urgent matters crowd out time for investment in the future.
On Wed, Apr 15, 2026 at 02:41:22PM -0400, Bruce Momjian wrote:
On Wed, Apr 15, 2026 at 02:29:49PM +1200, David Rowley wrote:
On Wed, 15 Apr 2026 at 13:19, Bruce Momjian <bruce@momjian.us> wrote:
I have completed the first draft of the PG 19 release notes:
Many thanks for your efforts here.
"Improve performance of internal row formation (David Rowley)"
It's really deformation, not formation. As far as I know, nothing in
v19 sped up tuple formation.Changed to:
Improve performance of internal row deformation (David Rowley)
--
Thanks.I also think Nathan's work on autovacuum table prioritisation
(d7965d65f) is worth a mention. There were concerns there that it
might cause trouble for people who (for some reason) get best results
from the previous pg_class-ordered priority. Having something in the
notes about this might help direct someone towards why they're seeing
autovacuum behave differently after upgrading.Yikes, so I collected commits on March 26, but when I went to add new
commits, I used March 27 as the start date, and missed all the late
March 26 commits. I should have started on March 26 to get
later-in-the-day commits!I went back and looked at the commits I missed and the one you pointed
out is the only relevant one, so that is good.Applied patch attached.
Oops, patch _now_ attached.
--
Bruce Momjian <bruce@momjian.us> https://momjian.us
EDB https://enterprisedb.com
Do not let urgent matters crowd out time for investment in the future.
Attachments:
difftext/plain; charset=us-asciiDownload+18-1
On Wed, Apr 15, 2026 at 03:27:49PM +1000, Peter Smith wrote:
Hi,
For this one:
"Allow CREATE/ALTER PUBLICATION to exclude some tables using the
EXCEPT TABLE clause (Vignesh C, Shlok Kyal)"~
The "EXCEPT TABLE" syntax was later changed to "EXCEPT (TABLE ...)",
so where above says "EXCEPT TABLE clause", probably now that should
just say "EXCEPT clause" same as the documentation.
Yep, attached patch applied.
--
Bruce Momjian <bruce@momjian.us> https://momjian.us
EDB https://enterprisedb.com
Do not let urgent matters crowd out time for investment in the future.
Attachments:
master.difftext/x-diff; charset=us-asciiDownload+1-1
On Wed, Apr 15, 2026 at 10:57:25AM +0200, Laurenz Albe wrote:
On Tue, 2026-04-14 at 21:18 -0400, Bruce Momjian wrote:
I have completed the first draft of the PG 19 release notes:
Thank you!
I noticed a typo:
Change vacuumdb's --analyze-only option to analyze partitioned tables when now targets are specified
It should probably be "no targets" rather than "now targets".
"Now targets" did have a sense of immediacy, but unfortunately
inaccurate. ;-) Fixed.
--
Bruce Momjian <bruce@momjian.us> https://momjian.us
EDB https://enterprisedb.com
Do not let urgent matters crowd out time for investment in the future.
Attachments:
master.difftext/x-diff; charset=us-asciiDownload+1-1
On Wed, Apr 15, 2026 at 01:18:50PM +0200, Daniel Gustafsson wrote:
On 15 Apr 2026, at 03:18, Bruce Momjian <bruce@momjian.us> wrote:
I have completed the first draft of the PG 19 release notes:
+Allow online enabling and disabling of data checksums (Daniel Gustafsson, Magnus Hagander, Tomas Vondra, Lakshmi N)
This one should only say "Daniel Gustafsson, Magnus Hagander, Tomas Vondra"
Okay, I added "Lakshmi N" because of this commit which is linked to from
the release notes:
commit b364828f825
Author: Daniel Gustafsson <dgustafsson@postgresql.org>
Date: Wed Apr 8 22:53:43 2026 +0300
doc: Fix data_checksums data type
Commit f19c0eccae96 changed the data_checksums GUC datatype from a
boolean to an enum. This updates the documentation to accurately
reflect its new type and document the new possible states: 'on',
'off', 'inprogress-on', and 'inprogress-off'.
Also update the xref for more information to point to the section
on data checksums rather than the initdb checksum option.
Author: Lakshmi N <lakshmin.jhs@gmail.com>
Reviewed-by: Daniel Gustafsson <daniel@yesql.se>
Discussion: /messages/by-id/CA+3i_M-AtTnqTB2KLBTpu-c-jvnTuy7bGxyxs80rgiQLxWrRUQ@mail.gmail.com
but it is only a small doc patch, so makes sense to remove him. I
debated this one at the time I added his name.
--
Bruce Momjian <bruce@momjian.us> https://momjian.us
EDB https://enterprisedb.com
Do not let urgent matters crowd out time for investment in the future.
On Wed, Apr 15, 2026 at 10:59:13PM +0800, jian he wrote:
On Wed, Apr 15, 2026 at 9:19 AM Bruce Momjian <bruce@momjian.us> wrote:
I have completed the first draft of the PG 19 release notes:
https://git.postgresql.org/cgit/postgresql.git/commit/?id=ecd9288624a1582a732cf86ac5a01475a1ce7815
I don't usually mention test changes in the release notes.
https://git.postgresql.org/cgit/postgresql.git/commit/?id=4edd6036d69ce42ac1af236f659f20daed65c8d4
Uh, the commit message is:
commit 4edd6036d69
Author: Tom Lane <tgl@sss.pgh.pa.us>
Date: Tue Apr 7 14:45:33 2026 -0400
Fix WITHOUT OVERLAPS' interaction with domains.
UNIQUE/PRIMARY KEY ... WITHOUT OVERLAPS requires the no-overlap
column to be a range or multirange, but it should allow a domain
over such a type too. This requires minor adjustments in both
the parser and executor.
In passing, fix a nearby break-instead-of-continue thinko in
transformIndexConstraint. This had the effect of disabling
parse-time validation of the no-overlap column's type in the context
of ALTER TABLE ADD CONSTRAINT, if it follows a dropped column.
We'd still complain appropriately at runtime though.
Author: Jian He <jian.universality@gmail.com>
Reviewed-by: Paul A Jungwirth <pj@illuminatedcomputing.com>
Reviewed-by: Tom Lane <tgl@sss.pgh.pa.us>
Discussion: /messages/by-id/CACJufxGoAmN_0iJ=hjTG0vGpOSOyy-vYyfE+-q0AWxrq2_p5XQ@mail.gmail.com
--> Backpatch-through: 18
Since it is backpatched to PG 18, it shouldn't appear in the PG 19
release notes.
"""
Allow COPY TO to output partitioned tables (Jian He, Ajin Cherian) § §
Previously COPY (SELECT ...) has to be used to output partitioned tables.
"""
The second commit uses this feature, so i guess the commit message
needs a slight change.
Updated in attached patch.
"""
Improve timing performance measurements (Lukas Fittl, Andres Freund,
David Geier, Lukas Fittl, David Geier) § §
This benefits EXPLAIN (ANALYZE, TIMING) and pg_test_timing, and is
controlled via server variable timing_clock_source.
"""
Duplicated name entry.
Fixed in attached patch.
"""
Allow IS [NOT] DISTINCT FROM NULL to be converted to IS [NOT] NULL for
proven null arguments (Richard Guo) §
The latter form is more easily optimized.
"""
Two optional ``[NOT]`` introduce ambiguity.
Uh, if the NOT is in the first, it is in the second. Is that confusing?
Suggestions?
"""
Add support for INSERT ... RETURNING ... ON CONFLICT DO SELECT
(Andreas Karlsson, Marko Tiikkaja, Viktor Holmberg) §
This allows conflicting rows to be returns, and optionally locked with
FOR UPDATE/SHARE.
"""
I think it's:
INSERT... ON CONFLICT DO SELECT...RETURNING
Uh, went by the commit messsage which says:
The INSERT statement must have a RETURNING clause, when DO SELECT
is specified.
However, all the examples have the syntax as you specified, so I must
have interpreted it wrong.
Applied patch attached.
--
Bruce Momjian <bruce@momjian.us> https://momjian.us
EDB https://enterprisedb.com
Do not let urgent matters crowd out time for investment in the future.
Attachments:
master.difftext/x-diff; charset=us-asciiDownload+3-3
On Wed, Apr 15, 2026 at 01:56:50PM -0400, Melanie Plageman wrote:
On Tue, Apr 14, 2026 at 9:19 PM Bruce Momjian <bruce@momjian.us> wrote:
I have completed the first draft of the PG 19 release notes:
As of b46e1e54d078def, SELECT queries may update the visibility map.
Previously only vacuum did this. I think users may be confused by this
if it is not mentioned in the release notes.
Yes, I puzzled on this one and I am glad you clarified its purpose.
I think it should be added, and I have applied the attached patch.
Additionally, users may notice that there are no longer
XLOG_HEAP2_VISIBLE records. A series of commits culminating in
a881cc9c7e819fb (others being d96f87332b378, add323da40a6bf9e0,
1252a4ee2863673, a759ced2f1e) moved VM setting into the
XLOG_HEAP2_PRUNE_VACUUM_SCAN record. Users may notice that
XLOG_HEAP2_VISIBLE records are no longer produced.This is more minor, but we also now (378a216187aea1) set pd_prune_xid
on insert, so users may notice that a freshly inserted page is
on-access pruned and then the VM is set (which wouldn't have happened
before without vacuum).
Uh, I don't want to get into the internals too much in the release
notes, in fear of confusing/losing readers. I think this is too
low-level to mention, but we now have a good "prune" item so if they see
big improvements, they will know why.
--
Bruce Momjian <bruce@momjian.us> https://momjian.us
EDB https://enterprisedb.com
Do not let urgent matters crowd out time for investment in the future.
Attachments:
master.difftext/x-diff; charset=us-asciiDownload+16-0
On Wed, Apr 15, 2026 at 10:27 PM Bruce Momjian <bruce@momjian.us> wrote:
On Wed, Apr 15, 2026 at 07:55:56AM +0530, Ashutosh Bapat wrote:
Hi Bruce,
On Wed, Apr 15, 2026 at 6:49 AM Bruce Momjian <bruce@momjian.us> wrote:
I have completed the first draft of the PG 19 release notes:
https://www.postgresql.org/docs/devel/release-19.html
The feature count is 212. The recent average is 200:
One correction:
Add simplified shared memory registration function
ShmemRequestStruct() (Ashutosh Bapat) §Heikki Linnakangas is the primary author of this commit.
Also, depending upon the availability of space, here's a suggested version:
--
Add simplified and improved shared memory registration function
ShmemRequestStruct (Heikki Linnakangas, Ashutosh Bapat)I have used your text above. FYI, the commit message only has this for
author:Co-authored-by: Ashutosh Bapat <ashutosh.bapat.oss@gmail.com>
Thanks for accepting the suggestion.
Allows requesting named shared memory structures during and after
server startup. Functions ShmemInitStruct() and ShmemInitHash() remain
for backward compatibility.I didn't add this text because the number of readers interested in this
change is very small. Those who are interested can read the commit
message.
Fair enough.
--
Best Wishes,
Ashutosh Bapat