PostgreSQL 19 GA press release draft
Hi,
Attached is the first draft of the PostgreSQL 19 press release. The goal
of the press release is to highlight the features and benefits of the
new PostgreSQL release, and let people use it as a springboard to
discover the new capabilities in PostgreSQL. I drafted the release with
the general PostgreSQL user as the target reader - this means there's a
balance in how the content is presented and it may not contain all the
details that describe a feature (which is why it contains many links to
the docs)!
The call for review is to seek feedback in a few areas:
* Accuracy in description of the features (with the caveat above on the
target audience)
* Glaring omissions and/or items that should be removed
* Translatability of the sentences - the press release is translated
into a multitude of languages, so I want to ensure the source content is
as easy to follow as possible
Just as a heads up - I did use AI to help review the contents, and will
do so again ahead of the finalizing of the content. If you use AI as
part of your review process that's certainly OK, but please don't just
send me things that were sent to some agent without providing some
substance to why the changes matter (e.g. correcting an inaccuracy in a
statement or helping to add a glaring omission). Also, please avoid
changes that are personal stylistic preferences - unless the phrasing
will help with translatability.
The press release content will be finalized on Nov 8, 2026. This is to
ensure we give our press release translators enough time to finish their
work ahead of the release. Please ensure you've provided all of your
feedback before that.
Thanks!
Jonathan
Attachments:
release.en.mdtext/markdown; charset=UTF-8; name=release.en.mdDownload
On Mon, Nov 2, 2026, at 04:54, Jonathan S. Katz wrote:
Attached is the first draft of the PostgreSQL 19 press release.
Thanks for working on this!
* Glaring omissions and/or items that should be removed
...
The press release content will be finalized on Nov 8, 2026. This is to
ensure we give our press release translators enough time to finish their
work ahead of the release. Please ensure you've provided all of your
feedback before that.
Could we include the LISTEN/NOTIFY improvement,
as we did in the Beta 1 announcement [1]https://postgresql.org/about/news/postgresql-19-beta-1-released-3313/?
The Recall.ai article
"Postgres LISTEN/NOTIFY does not scale" [2]https://www.recall.ai/blog/postgres-listen-notify-does-not-scale
reached #1 on the Hacker News front page and attracted substantial
discussion [3]https://news.ycombinator.com/item?id=44490510. I have verified with Recall.ai that the improvement
addresses their specific use case. They have also updated the article
to credit the PostgreSQL community for resolving the bottleneck.
I think this makes the improvement newsworthy: readers who learned
about the problem through that coverage would benefit from knowing
that PostgreSQL 19 addresses the use case that prompted it.
The sentence we agreed on for Beta 1 seems appropriate:
There are also improvements for LISTEN/NOTIFY scalability
that impact multi-channel workloads.
I suggest adding it at the end of the performance paragraph in
### Developer experience and performance enhancements
immediately before the paragraph about password expiration warnings.
/Joel
[1]: https://postgresql.org/about/news/postgresql-19-beta-1-released-3313/
[2]: https://www.recall.ai/blog/postgres-listen-notify-does-not-scale
[3]: https://news.ycombinator.com/item?id=44490510
On 2026-Nov-01, Jonathan S. Katz wrote:
### Developer experience and performance enhancements
PostgreSQL 19 adds [`INSERT ... ON CONFLICT DO SELECT`](https://www.postgresql.org/docs/19/sql-insert.html#SQL-ON-CONFLICT),
which lets the `RETURNING` clause return existing rows that conflict with an
insert, simplifying the common "get or create" pattern.
[`COPY`](https://www.postgresql.org/docs/19/sql-copy.html) can now output data
as JSON, including as a single JSON array, and the
[SQL/JSON path language](https://www.postgresql.org/docs/19/functions-json.html#FUNCTIONS-SQLJSON-PATH-OPERATORS)
adds string methods such as `lower()`, `upper()`, `replace()`, `split_part()`,
and `btrim()`. Additionally, the `lead()`, `lag()`, `first_value()`,
`last_value()`, and `nth_value()` [window functions](https://www.postgresql.org/docs/19/functions-window.html)
can now skip `NULL` values using `IGNORE NULLS`. The [`random()`](https://www.postgresql.org/docs/19/functions-math.html#FUNCTIONS-MATH-RANDOM-TABLE) function can now also generate random dates
and timestamps within a range.
The link next to random() goes to the random() for numeric types, but
the random for dates and timestamps is documented at
https://www.postgresql.org/docs/19/functions-datetime.html#FUNCTIONS-DATETIME-TABLE
--
Álvaro Herrera PostgreSQL Developer — https://www.EnterpriseDB.com/