Re: PG 16 draft release notes ready

Bertrand Drouvot <bertranddrouvot.pg@gmail.com>

From: "Drouvot, Bertrand" <bertranddrouvot.pg@gmail.com>
To: Bruce Momjian <bruce@momjian.us>
Cc: PostgreSQL-development <pgsql-hackers@postgresql.org>
Date: 2023-05-20T08:37:58Z
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. Revert MAINTAIN privilege and pg_maintain predefined role.

  2. doc: PG 16 relnotes, remove "Have initdb use ICU by default"

  3. initdb: change default --locale-provider back to libc.

  4. doc: PG 16 relnotes, add author

  5. doc: PG 16 relnotes, move memory item and reword OUTER item

  6. doc: PG 16 relnotes, add memory overhead reduction item

  7. doc: PG 16 relnotes, adjust subscription origin mention

  8. doc: PG 16 relnotes, adjust auto_explain logging item

  9. doc: PG 16 relnotes: adjust outer/full hash join parallelization

  10. doc: PG 16 relnotes, fix duplicate author and commit

  11. doc: PG 16 relnotes, fix "locale" typo and windows locale text

  12. doc: PG 16 relnotes, add author from previous merge

  13. doc: PG 16 relnotes, wording adjustments

  14. doc: PG 16 relnotes, merge and move vector items

  15. doc: PG 16 relnotes, update xid/subxid searches item

  16. doc: PG 16 relnotes, SIMD improvements

  17. doc: PG 16 relnotes, add major features list

  18. doc: PG 16 relnotes, misc merged items and bootstrap detail

  19. doc: PG 16 relnotes, misc. updates

  20. doc: PG 16 relnotes, add commits

  21. Allow logical decoding on standbys

  22. Fix ts_headline() edge cases for empty query and empty search text.

  23. Add a hook for modifying the ldapbind password

  24. Rework design of functions in pg_walinspect

  25. initdb: derive encoding from locale for ICU; similar to libc.

  26. Doc: add XML ID attributes to <sectN> and <varlistentry> tags.

  27. Simplify the implementations of the to_reg* functions.

  28. Rename pg_dissect_walfile_name() to pg_split_walfile_name()

  29. Make materialized views participate in predicate locking

  30. Improve performance of and reduce overheads of memory management

  31. Allow grant-level control of role inheritance behavior.

Hi,

On 5/19/23 2:29 PM, Bruce Momjian wrote:
> On Fri, May 19, 2023 at 09:49:18AM +0200, Drouvot, Bertrand wrote:
>> Thanks!
>>
>> "
>> This adds the function pg_log_standby_snapshot(). TEXT?:
>> "
>>
>> My proposal:
>>
>> This adds the function pg_log_standby_snapshot() to log details of the current snapshot
>> to WAL. If the primary is idle, the slot creation on a standby can take a while.
>> This function can be used on the primary to speed up the logical slot creation on
>> the standby.
> 
> Yes, I got this concept from the commit message, but I am unclear on
> what is actually happening so I can clearly explain it.  Slot creation
> on the standby needs a snapshot, and that is only created when there is
> activity, or happens periodically, and this forces it to happen, or
> something?  And what snapshot is this?  The current session's?
> 

It's the snapshot of running transactions (aka the xl_running_xacts WAL record) that is used during the
logical slot creation to determine if the logical decoding find a consistent state to start with.

On a primary this WAL record is being emitted during the logical slot creation, but on a standby
we can't write WAL records (so we are waiting for the primary to emit it).

Outside of logical slot creation, this WAL record is also emitted during checkpoint or periodically
by the bgwriter.

What about?

This adds the function pg_log_standby_snapshot() to emit the WAL record that contains the list
of running transactions.

If the primary is idle, the logical slot creation on a standby can take a while (waiting for this WAL record
to be replayed to determine if the logical decoding find a consistent state to start with).

In that case, this new function can be used on the primary to speed up the logical slot
creation on the standby.

Regards,

-- 
Bertrand Drouvot
PostgreSQL Contributors Team
RDS Open Source Databases
Amazon Web Services: https://aws.amazon.com