Re: PG 18 release notes draft committed

Melanie Plageman <melanieplageman@gmail.com>

From: Melanie Plageman <melanieplageman@gmail.com>
To: Bruce Momjian <bruce@momjian.us>
Cc: PostgreSQL-development <pgsql-hackers@lists.postgresql.org>
Date: 2025-05-29T00:07:20Z
Lists: pgsql-hackers

Commits

Same data as JSON: GET /api/v1/messages/:b64id/commits the thread's linked commits as JSON, with link sources. API reference →
  1. doc PG 18 relnotes: add AFTER trigger user change item

  2. doc PG 18 relnotes: modify async I/O item for other improvements

  3. doc PG 18 relnotes: split apart log_connections item

  4. doc PG 18 relnotes: move ANALYZE item,split ANALYZE/EXPLAIN item

  5. doc PG 18 relnotes: clarify multiplication item

  6. doc PG 18 relnotes: add removal details to MD5 item

  7. doc PG 18 relnotes: fix markup

  8. doc PG 18 relnotes: clarify btree skip-scan item

  9. doc PG 18 relnotes: update to current

  10. doc PG 18 relnotes: adjust CREATE SUBSCRIPTION attribution

  11. doc PG 18 relnotes: clarify btree skip scan item

  12. doc PG 18 relnotes: mv. hash joins and GROUP BY item to General

  13. Add support for runtime arguments in injection points

  14. doc PG 18 relnotes: fix missing parens for crc32c()

  15. PG 18 relnotes: adjust RETURNING new/old item

  16. doc PG 18 relnotes: adjust pg_log_backend_memory_contexts()

  17. doc PG 18 relnotes: add pg_log_backend_memory_contexts() mention

  18. doc PG 18 relnotes: adjust pgbench per-script reporting item

  19. doc PG 18 relnotes: mention GROUP SET fixes

  20. doc PG 18 relnotes: adjust partition planning item

  21. doc PG 18 relnotes: small adjustments regarding options

  22. doc PG 18 relnotes: move partition locking item to General Perf

  23. doc PG 18 relnotes: adjust partition items

  24. doc PG 18 relnotes: reword OAuth item

  25. doc PG 18 relnotes: add mention of pg_stat_reset_backend_stats()

  26. doc PG 18 relnotes: adjust hash item

  27. doc PG 18 relnotes: split partition optimizer item into two

  28. doc PG 18 relnotes: adjust COPY and REJECT_LIMIT items

  29. doc PG 18 relnotes: move and clarify constraint items

  30. doc PG 18 relnotes: add commit for cancel key and protocol neg.

  31. doc PG 18 relnotes: fix libpq wording

  32. doc PG 18 relnotes: add GROUP BY column elimination item

  33. doc PG 18 relnotes: move protocol version item to "server"

  34. doc PG 18 relnotes: adjust libpq trace & potocol version items

  35. doc PG 18 relnotes: reword and reorder items

  36. doc: Fix memory context level in pg_log_backend_memory_contexts() example.

  37. Make levels 1-based in pg_log_backend_memory_contexts()

  38. Introduce file_copy_method setting.

  39. libpq: Handle NegotiateProtocolVersion message differently

  40. Add timingsafe_bcmp(), for constant-time memory comparison

  41. Optimization for lower(), upper(), casefold() functions.

  42. Fix ALTER SUBSCRIPTION ... SET PUBLICATION ... command.

  43. Add connection establishment duration logging

  44. Modularize log_connections output

  45. Ensure that AFTER triggers run as the instigating user.

  46. Detect redundant GROUP BY columns using UNIQUE indexes

  47. Move cancel key generation to after forking the backend

On Thu, May 1, 2025 at 10:44 PM Bruce Momjian <bruce@momjian.us> wrote:
>
> I will continue improving it until beta 1, and until the final release.

Hi Bruce,

Thanks so much for putting these together.

For the item:

"Increase the logging granularity of server variable log_connections"

I noticed that you cite the commit 9219093cab2 that actually does
modularize the GUC but you also cite a separate following commit
18cd15e706ac which adds a new option that logs the duration of various
parts of connection establishment and backend setup. That is, it is a
separate feature.

9219093cab2 made it so we could add options and have them be
individually enabled or disabled in logging. But 18cd15e706ac is only
related insomuch as we probably wouldn't have added it if
log_connections had been just a boolean and it was enabled by default.

Anyway, it might be worth separately calling out that now you can
configure log_connections to log the durations of various parts of
connection establishment and backend setup -- which is a distinct
feature from modularization.

For the item:

"Add an asynchronous I/O subsystem"

I notice we don't call out any of the operations where users could
expect to see asynchronous IO be used. Some were enabled in 17 (like
sequential scans, analyze, and pg_prewarm), but most of the read
stream users went in this release:

d9c7911e1a5, 043799fa08c, e215166c9c8, 69273b818b1, c5c239e26e3,
2b73a8cd33b, 9256822608f, c3e775e608f, 8720a15e9ab12, 65c310b310a

I have had users ask me already which operations they can expect to
use asynchronous I/O. The most commonly encountered AIO operations are
probably be vacuum, bitmap heap scan, and sequential scans, but it
might be worth having a list somewhere of what uses AIO. I expect
we'll get the question quite often.

And finally, for the item:

"Allow specification of the fixed number of dead tuples that will
trigger an autovacuum"

We also added a kind of corollary for insert-triggered vacuums in
06eae9e6218ab2a which attempts to deal with a similar problem of big
tables not being autovacuumed enough but for insert-mostly tables.
Perhaps because there is no exposed configuration it is not worth
mentioning, but I thought I would bring it up since their purposes are
related.

- Melanie