Обсуждение: PostgreSQL 18 GA press release draft

Поиск
Список
Период
Сортировка

PostgreSQL 18 GA press release draft

От
"Jonathan S. Katz"
Дата:
Hi,

Attached is a draft of the PostgreSQL 18 GA press release. A few 
comments before the ask for reviewing:

* I still need to write up the theme and the quote, which I'll provide 
tomorrow after hearing the first round of feedback
* The release is a bit long - this is due in part to what I think is a 
lot of really good features in PostgreSQL 18. "Something for everyone"

Please review for the press release for the following:

* Correctness and accuracy of what's described - we want to be 
technically correct, but we also need to explain why something matters 
to our users.
* Notable omissions (apologies if I missed something, but also note not 
everything going to make the cut).
* Features to exclude.
* How easy phrases are to translate / confusing phrases
* Typos.

Like previous years, I won't really look at stylistic remarks, unless it 
falls into the "making it simpler to translate / confusing phrase" bucket.

After 2025-09-14 0:00 UTC I won't be able to accept more feedback, as 
we'll need to begin the translation process. Anyone who provides 
accepted feedback will also get a mention in the press release "thank 
you" page[1], which stays up for about a year ;)

Thanks for your help!

Jonathan

[1] https://www.postgresql.org/about/press/

Вложения

Re: PostgreSQL 18 GA press release draft

От
Peter Smith
Дата:
FWIW, here are a couple of AI-detected issues.

This typo:
"with contains installers" should be "which contains installers"

This potential mismatch:
"Built on over 35 years of engineering" is inconsistent with the
earlier "nearly 30 years" statement?

======
Kind Regards,
Peter Smith.
Fujitsu Australia.



Re: PostgreSQL 18 GA press release draft

От
Florents Tselai
Дата:



On Wed, Sep 10, 2025 at 6:13 AM Jonathan S. Katz <jkatz@postgresql.org> wrote:
Hi,

Attached is a draft of the PostgreSQL 18 GA press release. A few
comments before the ask for reviewing:

* I still need to write up the theme and the quote, which I'll provide
tomorrow after hearing the first round of feedback
* The release is a bit long - this is due in part to what I think is a
lot of really good features in PostgreSQL 18. "Something for everyone"

Please review for the press release for the following:

* Correctness and accuracy of what's described - we want to be
technically correct, but we also need to explain why something matters
to our users.
* Notable omissions (apologies if I missed something, but also note not
everything going to make the cut).
* Features to exclude.
* How easy phrases are to translate / confusing phrases
* Typos.

Like previous years, I won't really look at stylistic remarks, unless it
falls into the "making it simpler to translate / confusing phrase" bucket.

After 2025-09-14 0:00 UTC I won't be able to accept more feedback, as
we'll need to begin the translation process. Anyone who provides
accepted feedback will also get a mention in the press release "thank
you" page[1], which stays up for about a year ;)

Thanks for your help!

Jonathan

[1] https://www.postgresql.org/about/press/

The virtual gen columns paragraph could be its own subsection, even.
I'd expect it to be a highly anticipated feature.

Re: PostgreSQL 18 GA press release draft

От
jian he
Дата:
On Wed, Sep 10, 2025 at 11:13 AM Jonathan S. Katz <jkatz@postgresql.org> wrote:
>
> Hi,
>
> Please review for the press release for the following:
>
> * Correctness and accuracy of what's described - we want to be
> technically correct, but we also need to explain why something matters
> to our users.

PostgreSQL 18 adds [temporal
constraints](https://www.postgresql.org/docs/18/release-18.html#RELEASE-18-CONSTRAINTS)
-- constraints over ranges -- for both `PRIMARY KEY` and `UNIQUE`
constraints using the `WITHOUT OVERLAPS` clause, and on `FOREIGN KEY`
constraints using the `PERIOD` clause.

this link (https://www.postgresql.org/docs/18/release-18.html#RELEASE-18-CONSTRAINTS)
seems not that appropriate, since it does not explain WITHOUT OVERLAPS,
link (https://www.postgresql.org/docs/devel/sql-createtable.html#SQL-CREATETABLE-PARMS-UNIQUE)
would be more appropriate?



Re: PostgreSQL 18 GA press release draft

От
Jakub Wartak
Дата:
On Wed, Sep 10, 2025 at 5:14 AM Jonathan S. Katz <jkatz@postgresql.org> wrote:
>
> Hi,
>
> Attached is a draft of the PostgreSQL 18 GA press release. A few
> comments before the ask for reviewing:
>

Hi Jonathan,

> Finally, PostgreSQL 18 introduces support for [NUMA
awareness](https://www.postgresql.org/docs/18/install-make.html#CONFIGURE-OPTION-WITH-LIBNUMA)that adds basic [NUMA
observability](https://www.postgresql.org/docs/18/view-pg-shmem-allocations-numa.html)to PostgreSQL. 

For some reason I find this sentence not accurate: NUMA awareness
somehow indicates that we get performance benefits out of this, but we
do not (yet*)  - we simply provide some insight into NUMA memory
layout so far and link against libnuma.  So maybe we should remove
"introduces support for [NUMA
awareness](https://www.postgresql.org/docs/18/install-make.html#CONFIGURE-OPTION-WITH-LIBNUMA)
that"
and just leave it as
"Finally, PostgreSQL 18 adds basic [NUMA observability]" ?

Rationale: for every other software that I saw NUMA awareness
reference was always linked to gaining performance , but just linking
against libnuma is not giving us this.

* = with on going work for 19 (future Tomas's we'll get there I hope)

-J.



Re: PostgreSQL 18 GA press release draft

От
John Naylor
Дата:
On Wed, Sep 10, 2025 at 10:13 AM Jonathan S. Katz <jkatz@postgresql.org> wrote:

> PostgreSQL 18 also supports using x86 AVX-512 instructions for CRC32 calculations, which are used in page checksums
andare also available in the new
[`crc32`](https://www.postgresql.org/docs/18/functions-binarystring.html#FUNCTIONS-BINARYSTRING-OTHER)function. 

Hi Jon,

The checksum stored in the page header is not actually a CRC but
something else entirely. WAL records are a convenient example of
something that uses CRC.

Also, CRC32 is not hardware accelerated, only CRC32C is. We have two
SQL-callable functions.  To avoid confusion maybe they can be omitted
from this longer-than-usual announcement -- they seem like a niche
feature anyway.

--
John Naylor
Amazon Web Services



Re: PostgreSQL 18 GA press release draft

От
Peter Geoghegan
Дата:
On Tue, Sep 9, 2025 at 11:13 PM Jonathan S. Katz <jkatz@postgresql.org> wrote:
> Attached is a draft of the PostgreSQL 18 GA press release.

I have some feedback on this sentence:

"It can also automatically optimize queries using `OR` or `IN (VALUES
...)` in `WHERE` clauses for faster execution".

This is factually correct, but I think that it gives too much
importance to the `IN (VALUES ...)` transformation added by commit
c0962a11. IMV we shouldn't mention anything about transformations that
affect queries that use IN(), since it only applies to `IN (VALUES
...)` -- which is a rather limited special case. Especially because
this IN(VALUES()) case is limited to transforming queries that only
have true constants in the VALUES() clause -- it cannot work with
parameters at all.

I say this in part because I've noticed that existing press reports
about this functionality (which were based on the beta1 announcement)
say that it affects IN() queries in general, which isn't true. Again,
I know that you haven't made that same mistake here -- but a lot of
people will read `IN (VALUES ...)` as "any and all IN() lists".
They'll tend to interpret "VALUES" as "some values that appear in an
IN()", and not "a VALUES() clause that appears in an IN()".

The work from commits d4378c00 and ae456916 is truly important, and
definitely merits prominent mention in the press release. That'll
transform a query written as "SELECT * FROM tenk1 WHERE tenthous = 1
OR tenthous = 3 OR tenthous = 42 OR tenthous = 0" into a
representation that was previous only used when the query was written
"SELECT * FROM tenk1 WHERE tenthous IN (1,3,42,0)" (namely, it
transforms the original such that we can use the ScalarArrayOpExpr
representation).

This transformation is particularly useful in cases where it'll allow
us to get an index-only scan plan instead of a BitmapOr plan (with one
bitmap index scan child node for each of the 3 "tenthous" values from
the query), which is the only plan we could ever get on earlier
releases. The transformation process for these OR cases *can* work
with dynamic parameters (unlike the VALUES() stuff), and so can even
be used on the inner side of a join (see also commit 627d6341, which
dealt with making it possible to use OR transformation with joins).

Putting it all together, I suggest the following alternative:

"It can also automatically transform queries with `OR` constructs in
their `WHERE` clause into a logically equivalent IN() representation
that can be pushed down to index scan nodes, leading to significantly
faster execution".

--
Peter Geoghegan



Re: PostgreSQL 18 GA press release draft

От
"Jonathan S. Katz"
Дата:
On 9/9/25 11:38 PM, Peter Smith wrote:
> FWIW, here are a couple of AI-detected issues.
> 
> This typo:
> "with contains installers" should be "which contains installers"

Thanks!

> This potential mismatch:
> "Built on over 35 years of engineering" is inconsistent with the
> earlier "nearly 30 years" statement?

That actually needs updating, since it's nearly 40 years now. The first 
statement is on open source development, the second is on the overall 
lifetime of POSTGRES since Berkeley.

Jonathan

Вложения

Re: PostgreSQL 18 GA press release draft

От
"Jonathan S. Katz"
Дата:
On 9/10/25 12:29 AM, jian he wrote:
> On Wed, Sep 10, 2025 at 11:13 AM Jonathan S. Katz <jkatz@postgresql.org> wrote:
>>
>> Hi,
>>
>> Please review for the press release for the following:
>>
>> * Correctness and accuracy of what's described - we want to be
>> technically correct, but we also need to explain why something matters
>> to our users.
> 
> PostgreSQL 18 adds [temporal
> constraints](https://www.postgresql.org/docs/18/release-18.html#RELEASE-18-CONSTRAINTS)
> -- constraints over ranges -- for both `PRIMARY KEY` and `UNIQUE`
> constraints using the `WITHOUT OVERLAPS` clause, and on `FOREIGN KEY`
> constraints using the `PERIOD` clause.
> 
> this link (https://www.postgresql.org/docs/18/release-18.html#RELEASE-18-CONSTRAINTS)
> seems not that appropriate, since it does not explain WITHOUT OVERLAPS,
> link (https://www.postgresql.org/docs/devel/sql-createtable.html#SQL-CREATETABLE-PARMS-UNIQUE)
> would be more appropriate?

I like the suggestion and made the swap. Thanks!

Jonathan

Вложения

Re: PostgreSQL 18 GA press release draft

От
"Jonathan S. Katz"
Дата:
On 9/10/25 2:58 AM, Jakub Wartak wrote:

> and just leave it as
> "Finally, PostgreSQL 18 adds basic [NUMA observability]" ?
> 
> Rationale: for every other software that I saw NUMA awareness
> reference was always linked to gaining performance , but just linking
> against libnuma is not giving us this.

Hm, based on this I'm inclined to remove it. It's hard to explain a "so 
what" here, since the so what is that it's making it easier for us to 
perform this work below:

> * = with on going work for 19 (future Tomas's we'll get there I hope)

Thanks,

Jonathan

Вложения

Re: PostgreSQL 18 GA press release draft

От
"Jonathan S. Katz"
Дата:
On 9/10/25 9:52 AM, John Naylor wrote:
> On Wed, Sep 10, 2025 at 10:13 AM Jonathan S. Katz <jkatz@postgresql.org> wrote:
> 
>> PostgreSQL 18 also supports using x86 AVX-512 instructions for CRC32 calculations, which are used in page checksums
andare also available in the new
[`crc32`](https://www.postgresql.org/docs/18/functions-binarystring.html#FUNCTIONS-BINARYSTRING-OTHER)function.
 
> 
> Hi Jon,
> 
> The checksum stored in the page header is not actually a CRC but
> something else entirely. WAL records are a convenient example of
> something that uses CRC.
> 
> Also, CRC32 is not hardware accelerated, only CRC32C is. We have two
> SQL-callable functions.  To avoid confusion maybe they can be omitted
> from this longer-than-usual announcement -- they seem like a niche
> feature anyway.

Thanks; I've removed the reference.

Jonathan

Вложения

Re: PostgreSQL 18 GA press release draft

От
"Jonathan S. Katz"
Дата:
On 9/10/25 3:59 PM, Peter Geoghegan wrote:

> "It can also automatically transform queries with `OR` constructs in
> their `WHERE` clause into a logically equivalent IN() representation
> that can be pushed down to index scan nodes, leading to significantly
> faster execution".

Thanks for the detailed explanation, I'm proposing:

"It can also optimize queries that use `OR` conditions in a `WHERE` to 
use an index, leading to significantly faster execution."

since the mechanism of the transformation is less important, but the 
outcome is that people can benefit from the previous optimziation 
without having to rewrite their queries.

Jonathan

Вложения

Re: PostgreSQL 18 GA press release draft

От
Peter Geoghegan
Дата:
On Thu, Sep 11, 2025 at 10:21 PM Jonathan S. Katz <jkatz@postgresql.org> wrote:
> Thanks for the detailed explanation, I'm proposing:
>
> "It can also optimize queries that use `OR` conditions in a `WHERE` to
> use an index, leading to significantly faster execution."
>
> since the mechanism of the transformation is less important, but the
> outcome is that people can benefit from the previous optimziation
> without having to rewrite their queries.

Sounds good.

Thanks
--
Peter Geoghegan



Re: PostgreSQL 18 GA press release draft

От
"Jonathan S. Katz"
Дата:
On 9/9/25 11:13 PM, Jonathan S. Katz wrote:
> Hi,
> 
> Attached is a draft of the PostgreSQL 18 GA press release. A few 
> comments before the ask for reviewing:
> 
> * I still need to write up the theme and the quote, which I'll provide 
> tomorrow after hearing the first round of feedback
> * The release is a bit long - this is due in part to what I think is a 
> lot of really good features in PostgreSQL 18. "Something for everyone"
> 
> Please review for the press release for the following:
> 
> * Correctness and accuracy of what's described - we want to be 
> technically correct, but we also need to explain why something matters 
> to our users.
> * Notable omissions (apologies if I missed something, but also note not 
> everything going to make the cut).
> * Features to exclude.
> * How easy phrases are to translate / confusing phrases
> * Typos.
> 
> Like previous years, I won't really look at stylistic remarks, unless it 
> falls into the "making it simpler to translate / confusing phrase" bucket.
> 
> After 2025-09-14 0:00 UTC I won't be able to accept more feedback, as 
> we'll need to begin the translation process. Anyone who provides 
> accepted feedback will also get a mention in the press release "thank 
> you" page[1], which stays up for about a year ;)

Thanks for all of your feedback thus far! Attached is the next version 
of the draft. This incorporates the feedback, and now includes the 
thematic statement and a draft quote.

As per above, I'll need remaining feedback no later than 2025-09-14 0:00 
UTC - after this, it's frozen for the translation process to begin.

Thanks!

Jonathan

Вложения

Re: PostgreSQL 18 GA press release draft

От
Jeff Davis
Дата:
On Tue, 2025-09-09 at 23:13 -0400, Jonathan S. Katz wrote:
> Hi,
>
> Attached is a draft of the PostgreSQL 18 GA press release. A few
> comments before the ask for reviewing:

"This release adds the [`PG_UNICODE_FAST`], which accelerates lookups
using the `upper` and `lower` string comparison functions, and helps
speed up the new [`casefold`] function for case-insensitive
comparisons."

Use the link:
https://www.postgresql.org/docs/18/collation.html#COLLATION-MANAGING-STANDARD
which is a bit more descriptive. (Though perhaps that document could be
improved with examples.)

What's actually new with PG_UNICODE_FAST are the "full" Unicode
semantics for case transformations, e.g. it uppercases 'ß' to 'SS'. The
rest is the same as PC_C_UTF8, which uses "simple" Unicode semantics.

The name PG_UNICODE_FAST is meant to convey that it provides full
unicode semantics for case mapping and pattern matching, while also
being fast because it uses memcmp for comparisons. While the name
PG_C_UTF8 is meant to convey that it's closer to what users of the libc
"C.UTF-8" locale might expect.

Regards,
    Jeff Davis




Re: PostgreSQL 18 GA press release draft

От
Masahiko Sawada
Дата:
On Fri, Sep 12, 2025 at 8:46 AM Jonathan S. Katz <jkatz@postgresql.org> wrote:
>
> On 9/9/25 11:13 PM, Jonathan S. Katz wrote:
> > Hi,
> >
> > Attached is a draft of the PostgreSQL 18 GA press release. A few
> > comments before the ask for reviewing:
> >
> > * I still need to write up the theme and the quote, which I'll provide
> > tomorrow after hearing the first round of feedback
> > * The release is a bit long - this is due in part to what I think is a
> > lot of really good features in PostgreSQL 18. "Something for everyone"
> >
> > Please review for the press release for the following:
> >
> > * Correctness and accuracy of what's described - we want to be
> > technically correct, but we also need to explain why something matters
> > to our users.
> > * Notable omissions (apologies if I missed something, but also note not
> > everything going to make the cut).
> > * Features to exclude.
> > * How easy phrases are to translate / confusing phrases
> > * Typos.
> >
> > Like previous years, I won't really look at stylistic remarks, unless it
> > falls into the "making it simpler to translate / confusing phrase" bucket.
> >
> > After 2025-09-14 0:00 UTC I won't be able to accept more feedback, as
> > we'll need to begin the translation process. Anyone who provides
> > accepted feedback will also get a mention in the press release "thank
> > you" page[1], which stays up for about a year ;)
>
> Thanks for all of your feedback thus far! Attached is the next version
> of the draft. This incorporates the feedback, and now includes the
> thematic statement and a draft quote.
>
> As per above, I'll need remaining feedback no later than 2025-09-14 0:00
> UTC - after this, it's frozen for the translation process to begin.
>

I found a typo;

s/gen_rand_uuid()/gen_random_uuid()/

Regards,

--
Masahiko Sawada
Amazon Web Services: https://aws.amazon.com



Re: PostgreSQL 18 GA press release draft

От
Nico Williams
Дата:
On Fri, Sep 12, 2025 at 10:11:59AM -0700, Jeff Davis wrote:
> The name PG_UNICODE_FAST is meant to convey that it provides full
> unicode semantics for case mapping and pattern matching, while also
> being fast because it uses memcmp for comparisons. While the name
> PG_C_UTF8 is meant to convey that it's closer to what users of the libc
> "C.UTF-8" locale might expect.

How does one do form-insensitive comparisons?

Nico
-- 



Re: PostgreSQL 18 GA press release draft

От
"Jonathan S. Katz"
Дата:
On 9/12/25 2:18 PM, Masahiko Sawada wrote:

> 
> I found a typo;
> 
> s/gen_rand_uuid()/gen_random_uuid()/

Good catch - thanks!

Jonathan

Вложения

Re: PostgreSQL 18 GA press release draft

От
Jeff Davis
Дата:
On Fri, 2025-09-12 at 13:21 -0500, Nico Williams wrote:
> On Fri, Sep 12, 2025 at 10:11:59AM -0700, Jeff Davis wrote:
> > The name PG_UNICODE_FAST is meant to convey that it provides full
> > unicode semantics for case mapping and pattern matching, while also
> > being fast because it uses memcmp for comparisons. While the name
> > PG_C_UTF8 is meant to convey that it's closer to what users of the
> > libc
> > "C.UTF-8" locale might expect.
>
> How does one do form-insensitive comparisons?

If you mean case insensitive matching, you can do:

   CASEFOLD(a) = CASEFOLD(b)

in any locale or provider, but it's best when using PG_UNICODE_FAST or
ICU, because it handles some nuances better. For instance:

   CASEFOLD('ß') = CASEFOLD('SS') AND
   CASEFOLD('ß') = CASEFOLD('ss') AND
   CASEFOLD('ß') = CASEFOLD('ẞ')

are all true in PG_UNICODE_FAST and "en-US-x-icu", but not in libc
collations.

ICU also has case-insensitive collations, which offer a bit more
flexibility:

https://www.postgresql.org/docs/current/collation.html#COLLATION-NONDETERMINISTIC

Regards,
    Jeff Davis




Re: PostgreSQL 18 GA press release draft

От
Álvaro Herrera
Дата:
Hello,

Thanks for putting this together!  It's quite the monster.  I read
through and found the following points worth mentioning:

I think almost all of the non-stock section titles Are Lacking Case
Title.

> The new [`io_method`](https://www.postgresql.org/docs/18/runtime-config-resource.html#GUC-IO-METHOD) setting lets you
togglebetween the AIO methods, including `worker` and `io_uring` (when built with PostgreSQL, available on certain
Linuxsystems), or you can choose to maintain the current PostgreSQL behavior with the `sync` setting. There are now
moreparameters to consider tuning with AIO, which you can [learn more about in the
documentation](https://www.postgresql.org/docs/18/runtime-config-resource.html#RUNTIME-CONFIG-RESOURCE-IO).

I don't understand the "when built with PostgreSQL".  Did you mean to
reference something else here?

> PostgreSQL 18 further accelerates query performance with features that automatically make your workloads faster. This
releaseintroduces "skip scan" lookups on [multicolumn B-tree
indexes](https://www.postgresql.org/docs/18/indexes-multicolumn.html),which improves execution time for queries that
omitan `=` condition on one or more prefix index columns. It can also optimize queries that use `OR` conditions in a
`WHERE`to use an index, leading to significantly faster execution. There are also numerous improvements for how
PostgreSQLplans and executes table joins, from boosting the performance of hash joins to allowing merge joins to use
incrementalsorts. 

introduces "skip scan" lookups ..., which improve
(remove ending 's')

> PostgreSQL 18 now supports parallel builds for [GIN indexes](https://www.postgresql.org/docs/18/gin.html), joining
B-treeand [BRIN indexes](https://www.postgresql.org/docs/current/brin.html) in supporting this capability.
Additionally,[materialized views](https://www.postgresql.org/docs/18/rules-materializedviews.html) can now use unique
indexesthat aren't B-trees as partition keys, expanding how you can construct materialized views. 

Materialized views can use non-btree indexes as partition keys?  Sounds
cool, but the linked-to matview page doesn't talk about partitioning at
all.  I think there's something wrong with the way this has been
written.  [trawls the release notes]  Hmm, the release notes have this
text:

   "Allow non-btree unique indexes to be used as partition keys and in
   materialized views"

I think the confusion stems from having missed the "and" there.

Actually I wonder if these two items (commits f278e1fe3 and 9d6db8bec)
are actually worthy of being in the press release.  They are about using
unique indexes that aren't btrees, but as I understand, in stock
Postgres there isn't any other way to build unique indexes, so this is
about allowing out-of-core index AMs to be used in these contexts.


> PostgreSQL 18 makes text processing easier and faster with several new enhancements. This release adds the
[`PG_UNICODE_FAST`](https://www.postgresql.org/docs/18/locale.html#LOCALE-PROVIDERS),which accelerates lookups using
the`upper` and `lower` string comparison functions, and helps speed up the new
[`casefold`](https://www.postgresql.org/docs/18/functions-string.html#FUNCTIONS-STRING-OTHER)function for
case-insensitivecomparisons. Additionally, PostgreSQL 18 now supports making `LIKE` comparisons over text that uses a
[nondeterministiccollation](https://www.postgresql.org/docs/18/collation.html#COLLATION-NONDETERMINISTIC), simplifying
howyou can perform more complex pattern matching. This release also changes [full text
search](https://www.postgresql.org/docs/18/textsearch.html)to use the default collation provider of a cluster instead
ofalways using libc, which may require you to reindex all [full text
search](https://www.postgresql.org/docs/18/textsearch-tables.html#TEXTSEARCH-TABLES-INDEX)and
[`pg_trgm`](https://www.postgresql.org/docs/18/pgtrgm.html#PGTRGM-INDEX)indexes after running
[`pg_upgrade`](https://www.postgresql.org/docs/18/pgupgrade.html).

I think this should say "This release adds the PG_UNICODE_FAST local
provider", or something like that, because ending in just
"PG_UNICODE_FAST" seems to be unintelligible.

> ### Authentication and security features

In this section I would also mention that pgcrypto gained SHA-2 cipher
for passwords (commit 749a9e20c979).

> PostgreSQL 18 now supports reporting logical replication write conflicts in logs and in the
[`pg_stat_subscription_stats`](https://www.postgresql.org/docs/18/monitoring-stats.html#MONITORING-PG-STAT-SUBSCRIPTION-STATS)
view.Additionally, [`CREATE SUBSCRIPTION`](https://www.postgresql.org/docs/18/sql-createsubscription.html) now defaults
touse parallel streaming for applying transactions, which can help improve performance. The
[`pg_createsubscriber`](https://www.postgresql.org/docs/18/app-pgcreatesubscriber.html)now has an `--all` flag so you
cancreate logical replicas for all databases in an instance with a single command. PostgreSQL 18 also lets you
automatically[drop idle replication
slots](https://www.postgresql.org/docs/18/runtime-config-replication.html#GUC-IDLE-REPLICATION-SLOT-TIMEOUT)to help
preventstoring too many write-ahead log files on a publisher. 

My English grammar fails me here.  I would say "... now defaults to
using", but maybe your "now defaults to use" is correct.

"The pg_createsubscriber **utility**" ?

> Databases initialized with PostgreSQL 18 [`initdb`](https://www.postgresql.org/docs/18/app-initdb.html) now have page
checksumsenabled by default. This can affect upgrades from non-checksum enabled clusters, which would require you to
createa new PostgreSQL 18 cluster with the `--no-data-checksums` option when using
[`pg_upgrade`](https://www.postgresql.org/docs/18/pgupgrade.html).

I'm not sure that the relnotes really need to explain how to use
pg_upgrade.  To me it seems enough to say that initdb now creates
checksum-enabled clusters by default.


Thanks!

--
Álvaro Herrera               48°01'N 7°57'E  —  https://www.EnterpriseDB.com/
"La fuerza no está en los medios físicos
sino que reside en una voluntad indomable" (Gandhi)



Re: PostgreSQL 18 GA press release draft

От
Nico Williams
Дата:
On Fri, Sep 12, 2025 at 12:13:23PM -0700, Jeff Davis wrote:
> On Fri, 2025-09-12 at 13:21 -0500, Nico Williams wrote:
> > How does one do form-insensitive comparisons?
> 
> If you mean case insensitive matching, you can do:

I meant form-insensitive, as in comparing equivalent strings where one
might be using decomposed sequences and another pre-conposed sequences
(and either might be normalized or not at all).

Nico
-- 



Re: PostgreSQL 18 GA press release draft

От
Jeff Davis
Дата:
On Fri, 2025-09-12 at 15:48 -0500, Nico Williams wrote:
> I meant form-insensitive, as in comparing equivalent strings where
> one
> might be using decomposed sequences and another pre-conposed
> sequences
> (and either might be normalized or not at all).

Use NORMALIZE(a) = NORMALIZE(b).

This is getting a little off-topic from what's actually being released,
so please reopen a more relevant thread or start a new one, and CC me.

Regards,
    Jeff Davis




Re: PostgreSQL 18 GA press release draft

От
"Jonathan S. Katz"
Дата:
On 9/12/25 1:11 PM, Jeff Davis wrote:
> On Tue, 2025-09-09 at 23:13 -0400, Jonathan S. Katz wrote:
>> Hi,
>>
>> Attached is a draft of the PostgreSQL 18 GA press release. A few
>> comments before the ask for reviewing:
> 
> "This release adds the [`PG_UNICODE_FAST`], which accelerates lookups
> using the `upper` and `lower` string comparison functions, and helps
> speed up the new [`casefold`] function for case-insensitive
> comparisons."
> 
> Use the link:
> https://www.postgresql.org/docs/18/collation.html#COLLATION-MANAGING-STANDARD
> which is a bit more descriptive. (Though perhaps that document could be
> improved with examples.)
> 
> What's actually new with PG_UNICODE_FAST are the "full" Unicode
> semantics for case transformations, e.g. it uppercases 'ß' to 'SS'. The
> rest is the same as PC_C_UTF8, which uses "simple" Unicode semantics.
> 
> The name PG_UNICODE_FAST is meant to convey that it provides full
> unicode semantics for case mapping and pattern matching, while also
> being fast because it uses memcmp for comparisons. While the name
> PG_C_UTF8 is meant to convey that it's closer to what users of the libc
> "C.UTF-8" locale might expect.

I went with breaking this up into two sentences:

This release adds the 
[`PG_UNICODE_FAST`](https://www.postgresql.org/docs/18/collation.html#COLLATION-MANAGING-STANDARD), 
which provides full Unicode semantics for case transformations while 
helping to accelerate many comparisons. This includes the `upper` and 
`lower` string comparison functions and the new 
[`casefold`](https://www.postgresql.org/docs/18/functions-string.html#FUNCTIONS-STRING-OTHER) 
function for case-insensitive comparisons.

Jonathan

Вложения

Re: PostgreSQL 18 GA press release draft

От
"Jonathan S. Katz"
Дата:
On 9/12/25 3:24 PM, Álvaro Herrera wrote:
> Hello,
> 
> Thanks for putting this together!  It's quite the monster.  I read
> through and found the following points worth mentioning:

Thank you!

> I think almost all of the non-stock section titles Are Lacking Case
> Title.

Putting this is as an example of "stylistic comment" ;)

>> The new [`io_method`](https://www.postgresql.org/docs/18/runtime-config-resource.html#GUC-IO-METHOD) setting lets
youtoggle between the AIO methods, including `worker` and `io_uring` (when built with PostgreSQL, available on certain
Linuxsystems), or you can choose to maintain the current PostgreSQL behavior with the `sync` setting. There are now
moreparameters to consider tuning with AIO, which you can [learn more about in the
documentation](https://www.postgresql.org/docs/18/runtime-config-resource.html#RUNTIME-CONFIG-RESOURCE-IO).
> 
> I don't understand the "when built with PostgreSQL".  Did you mean to
> reference something else here?

I re-read it and realized it doesn't add much value, so I just removed it.

>> PostgreSQL 18 further accelerates query performance with features that automatically make your workloads faster.
Thisrelease introduces "skip scan" lookups on [multicolumn B-tree
indexes](https://www.postgresql.org/docs/18/indexes-multicolumn.html),which improves execution time for queries that
omitan `=` condition on one or more prefix index columns. It can also optimize queries that use `OR` conditions in a
`WHERE`to use an index, leading to significantly faster execution. There are also numerous improvements for how
PostgreSQLplans and executes table joins, from boosting the performance of hash joins to allowing merge joins to use
incrementalsorts.
 
> 
> introduces "skip scan" lookups ..., which improve
> (remove ending 's')

Good catch - I revised and s/, which/that/

> Actually I wonder if these two items (commits f278e1fe3 and 9d6db8bec)
> are actually worthy of being in the press release.  They are about using
> unique indexes that aren't btrees, but as I understand, in stock
> Postgres there isn't any other way to build unique indexes, so this is
> about allowing out-of-core index AMs to be used in these contexts.

Thanks for the analysis on this one. Upon reflection, I'm going to 
remove this item from the press release. I'll move the parallel GIN 
builds to the first paragraph.

> I think this should say "This release adds the PG_UNICODE_FAST local
> provider", or something like that, because ending in just
> "PG_UNICODE_FAST" seems to be unintelligible.

Heh, should have added "collation"; fixed.

>> ### Authentication and security features
> 
> In this section I would also mention that pgcrypto gained SHA-2 cipher
> for passwords (commit 749a9e20c979).

Cool - added:

Additionally, 
[`pgcrypto`](https://www.postgresql.org/docs/18/pgcrypto.html) now 
supports [SHA-2 encryption for password 
hashing](https://www.postgresql.org/docs/18/pgcrypto.html#PGCRYPTO-CRYPT-ALGORITHMS).

> My English grammar fails me here.  I would say "... now defaults to
> using", but maybe your "now defaults to use" is correct.

I'm OK to use "using" if it's simpler for translating.

> "The pg_createsubscriber **utility**" ?

Thanks; I thought I had that in originally.

>> Databases initialized with PostgreSQL 18 [`initdb`](https://www.postgresql.org/docs/18/app-initdb.html) now have
pagechecksums enabled by default. This can affect upgrades from non-checksum enabled clusters, which would require you
tocreate a new PostgreSQL 18 cluster with the `--no-data-checksums` option when using
[`pg_upgrade`](https://www.postgresql.org/docs/18/pgupgrade.html).
> 
> I'm not sure that the relnotes really need to explain how to use
> pg_upgrade.  To me it seems enough to say that initdb now creates
> checksum-enabled clusters by default.

I included it because I think this is a potential tripwire. I don't know 
what the universe of non-checksum enabled clusters is out there, but I 
expect that it's pretty large. I think this is helpful for folks who are 
less familiar with PostgreSQL operational and upgrade mechanics (after 
all, they may only upgrade once a year at best) so it's a little simple 
to discover. Plus, this will help to surface the method as something to 
note through whatever AI summarizing techniques people are using.

Thanks!

Jonathan

Вложения

Re: PostgreSQL 18 GA press release draft

От
Jeff Davis
Дата:
On Sun, 2025-09-14 at 09:41 -0400, Jonathan S. Katz wrote:
> I went with breaking this up into two sentences:
>
> This release adds the
> [`PG_UNICODE_FAST`](
> https://www.postgresql.org/docs/18/collation.html#COLLATION-MANAGING-
> STANDARD),
> which provides full Unicode semantics for case transformations while
> helping to accelerate many comparisons. This includes the `upper` and
> `lower` string comparison functions and the new
> [`casefold`](
> https://www.postgresql.org/docs/18/functions-string.html#FUNCTIONS-
> STRING-OTHER)
> function for case-insensitive comparisons.

Perfect, thank you.

Regards,
    Jeff Davis




Re: PostgreSQL 18 GA press release draft

От
"Jonathan S. Katz"
Дата:
On 9/12/25 11:46 AM, Jonathan S. Katz wrote:

> As per above, I'll need remaining feedback no later than 2025-09-14 0:00 
> UTC - after this, it's frozen for the translation process to begin.

Thank everyone for your feedback. I've attached the copy of the release 
announcement that will be translated and distributed. This is now frozen.

Thanks!

Jonathan

Вложения