Re: Minimal logical decoding on standbys

Bertrand Drouvot <bertranddrouvot.pg@gmail.com>

From: "Drouvot, Bertrand" <bertranddrouvot.pg@gmail.com>
To: Andres Freund <andres@anarazel.de>
Cc: Robert Haas <robertmhaas@gmail.com>, Jeff Davis <pgsql@j-davis.com>, Thomas Munro <thomas.munro@gmail.com>, Alvaro Herrera <alvherre@2ndquadrant.com>, Ibrar Ahmed <ibrar.ahmad@gmail.com>, Amit Khandekar <amitdkhan.pg@gmail.com>, fabriziomello@gmail.com, tushar <tushar.ahuja@enterprisedb.com>, Rahila Syed <rahila.syed@2ndquadrant.com>, pgsql-hackers <pgsql-hackers@postgresql.org>, Melanie Plageman <melanieplageman@gmail.com>
Date: 2023-04-02T08:27:45Z
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. Reduce the log level in 035_standby_logical_decoding.pl.

  2. 035_standby_logical_decoding: Add missing waits for replication

  3. For cascading replication, wake physical and logical walsenders separately

  4. Handle logical slot conflicts on standby

  5. Support invalidating replication slots due to horizon and wal_level

  6. Prevent use of invalidated logical slot in CreateDecodingContext()

  7. Replace replication slot's invalidated_at LSN with an enum

  8. Pass down table relation into more index relation functions

  9. Assert only valid flag bits are passed to visibilitymap_set()

  10. Remove unused _bt_delitems_delete() argument.

  11. Add xl_btree_delete optimization.

Attachments

Hi,

On 4/2/23 5:42 AM, Andres Freund wrote:
> Hi,
> 
> On 2023-03-31 12:45:51 +0200, Drouvot, Bertrand wrote:
> 
> I pushed a commit just adding an assertion that only valid bits are passed in.
> 
> 

Thanks!

>>> I'm also thinking of splitting the patch into two. One patch to pass down the
>>> heap relation into the new places, and another for the rest.
>>
>> I think that makes sense. I don't know how far you've work on the split but please
>> find attached V54 doing such a split + implementing your VISIBILITYMAP_XLOG_VALID_BITS
>> suggestion.
> 
> I pushed the pass-the-relation part. 

Thanks! I just created a new thread [1] for passing down the heap relation to GlobalVisTestFor() in
vacuumRedirectAndPlaceholder().

> I removed an include of catalog.h that
> was in the patch - I suspect it might have slipped in there from a later patch
> in the series...
> 

Oops, my bad. Thanks! Yeah, indeed it's due to the split and it's in fact needed in "Add-info-in-WAL-records-in-preparation-for-logic.patch".

Please find enclosed v55 with the correction (re-adding it Add-info-in-WAL-records-in-preparation-for-logic.patch as compare to v54).

> I was a bit bothered by using 'heap' instead of 'table' in so many places
> (eventually we imo should standardize on the latter), but looking around the
> changed places, heap was used for things like buffers etc. 

yup


[1]: https://www.postgresql.org/message-id/flat/02392033-f030-a3c8-c7d0-5c27eb529fec%40gmail.com

Regards,

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