On Sat, Oct 17, 2026 at 12:03:07AM -0400, shihao zhong wrote:
> Hi Bruce,
>
> While looking for bugs in new 19 features, I found some changes that
> look intended, but I think the notes do not tell an upgrading user about
> them. I checked the notes as of 58d16be8acd and ran each one on 19 and
> 18.6.
Sorry for the delay in me getting to this. I realized it was going to
take some serious research, not only to adjust the docs, but also to
figure out how I missed seeing these changes.
> 1. io_workers was removed (d1c01b79d4a). The item lists the new
> variables but not that the old one is gone. An 18 postgresql.conf that
> sets it stops 19 from starting.
The commit message says replaced and that didn't register to me as
removed, my mistake. I have attached a patch with these changes.
> 2. The Snowball item (7dc95cc3b94) names only Dutch, but English and
> German stems changed too. "biologist" now stems to "biolog" and
> "arbeitet" to "arbeit". A tsvector stored by 18 for "biologist" no
> longer matches a 19 query for the same word. Jeff asked about this in
> [1].
Wow, I didn't see that change either. I see the mention of English
changes in the doc patch but not the commit message, and I don't see any
docs about the German change, but I assume you know more than I do, so I
added a mention of that too.
> 3. With lz4 as the default (34dfca29343), some long text keys that fit
> in a btree with pglz no longer fit. Restoring an 18 dump fails at ADD
> PRIMARY KEY with "index row size 3344 exceeds btree version 4 maximum
> 2704", and the table is left without its key. Setting
> default_toast_compression to pglz avoids it.
Yes, I can see this change effecting users, but it seems the index would
already be fragile to be affected by this. The web page explains how we
decide what to add to the release notes:
https://wiki.postgresql.org/wiki/Creating_Major_Release_Notes
and I don't think this one fits, though if we get user complaints about
failure, we will need to add it.
> 4. The hash join change (1811f1af98f) can write outer rows with NULL
> keys to a temp file, even with one batch. A LEFT JOIN with 297000 NULL
> keys wrote 33 MB of temp files, 18.6 wrote none. With temp_file_limit at
> 1MB it fails.
This is the same issue. If we were to mention all such cases, the
release notes would be very hard to read. Let's see if we get user
reports about it.
> 5. The wait event item gives only the type rename. The event BufferPin
> is now BufferCleanup (6c5c393b740), and LWLock BufferContent became the
> Buffer events BufferShared, BufferShareExclusive and BufferExclusive
> (fcb9c977aa5). The old names are gone from pg_wait_events.
Added. Again, couldn't see it in the commit message but found it in the
patch. How did you find all of these items?
> 6. The checkpoint log line now carries the request flags (5b93a5987bd).
>
> 18.6: checkpoint complete: wrote 3783 buffers
> 19: checkpoint complete: fast force wait: wrote 6659 buffers
>
> The 18 notes had a sentence when this line changed, maybe 19 needs one
> too.
So, PG 18 mentioned it because we expected people might be either
confused by the new format but in this case I think it will be clear.
> 7. LSNs are now zero padded (2633dae2e48), in pg_lsn output and
> pg_controldata.
>
> 18.6: 0/31CFA58
> 19: 0/031CFA58
>
> So '0/31CFA58'::pg_lsn::text = '0/31CFA58' is now false.
Oh, I wonder if users are parsing those? Let's see if anyone mentions a
problem during migration.
> 8. DETACH PARTITION CONCURRENTLY no longer adds a CHECK constraint to
> the detached table (3231fd04552). There is no item, and alter_table.sgml
> still says it does. I can send a patch for that sentence.
Yes, can you please write one and I will add it to the attached patch
and apply it. Thanks.
--
Bruce Momjian <[email protected]> https://momjian.us
EDB https://enterprisedb.com
Do not let urgent matters crowd out time for investment in the future.
diff --git a/doc/src/sgml/release-19.sgml b/doc/src/sgml/release-19.sgml
index e483d18d2e8..8013b4d2c70 100644
--- a/doc/src/sgml/release-19.sgml
+++ b/doc/src/sgml/release-19.sgml
@@ -270,6 +270,22 @@ Lock size allocation has changed, so effectively settings must now be doubled to
</para>
</listitem>
+<!--
+Author: Thomas Munro <[email protected]>
+2026-04-08 [d1c01b79d] aio: Adjust I/O worker pool automatically.
+-->
+
+<listitem>
+<para>
+Remove server variable <varname>io_workers</varname> (Thomas Munro)
+<ulink url="&commit_baseurl;d1c01b79d">§</ulink>
+</para>
+
+<para>
+This has been replaced by three new variables; see <xref linkend="release-19-performance"/>.
+</para>
+</listitem>
+
<!--
Author: Tomas Vondra <[email protected]>
2026-04-02 [7f8c88c2b] jit: Change the default to off.
@@ -310,11 +326,23 @@ Author: Andres Freund <[email protected]>
<listitem>
<para>
-Rename wait event type <literal>BUFFERPIN</literal> to <literal>BUFFER</literal> (Andres Freund)
+Rename wait event <emphasis>type</emphasis> <literal>BUFFERPIN</literal> to <literal>BUFFER</literal> and rename wait event <literal>BufferPin</literal> to <literal>BufferCleanup</literal> (Andres Freund)
<ulink url="&commit_baseurl;6c5c393b7">§</ulink>
</para>
</listitem>
+<!--
+Author: Andres Freund <[email protected]>
+2026-01-15 [fcb9c977a] bufmgr: Implement buffer content locks independently of
+-->
+
+<listitem>
+<para>
+Remove wait event <literal>BufferContent</literal> and add more precise wait events <literal>BUFFER_SHARED</literal>, <literal>BUFFER_SHARE_EXCLUSIVE</literal>, and <literal>BUFFER_EXCLUSIVE</literal> (Andres Freund)
+<ulink url="&commit_baseurl;fcb9c977a">§</ulink>
+</para>
+</listitem>
+
<!--
Author: Tom Lane <[email protected]>
2025-12-30 [bc6374cd7] Change IndexAmRoutines to be statically-allocated struct
@@ -2218,7 +2246,9 @@ Add <link linkend="textsearch-snowball-dictionary">full text stemmers</link> for
</para>
<para>
-The Dutch stemmer has also been updated. The old Dutch stemmer is available via <link linkend="textsearch-snowball-dictionary"><literal>dutch_porter</literal></link>.
+The Dutch, English, and German stemmers have also been updated.
+The previous English stemmer is available via <link linkend="textsearch-snowball-dictionary"><literal>porter</literal></link>.
+The previous Dutch stemmer is available via <link linkend="textsearch-snowball-dictionary"><literal>dutch_porter</literal></link>.
</para>
</listitem>