Rework subscription-related code for psql and pg_dump
Michael Paquier <michael@paquier.xyz>
From: Michael Paquier <michael@paquier.xyz>
To: Postgres hackers <pgsql-hackers@lists.postgresql.org>
Date: 2024-11-29T04:23:54Z
Lists: pgsql-hackers
Attachments
- 0001-Refactor-subscription-code-for-psql-and-pg_dump.patch (text/x-diff) patch 0001
Hi all, While looking at some of the code related to subscriptions in psql, coming down to make LOGICALREP_STREAM_* available for client code, I've also noticed quite a few inconsistencies and mistakes with how pg_subscription is handled in pg_dump, that have accumulated over the years as of what looks like set of copy-pastos for most of them: - pg_dump.c includes pg_subscription.h and not pg_subscription_d.h. This is a mistake as the former should only be included in the backend code. - SubscriptionInfo has accumulated dust over the years, using declarations types that don't map with its catalog. To keep it short here, all the fields use (char *) leading to more DIY logic in the code (see two_phase_disabled[]), while most of the fields are booleans or char values. Switching to char values allows direct comparisons with the contents of pg_subscription_d.h, leading to more consistent code. - Inconsistent position of fields between SubscriptionInfo and the catalog pg_subscription. EXPOSE_TO_CLIENT_CODE has been added to pg_subscription.h so as values for substream, twophasestate and origin can be used directly in psql and pg_dump, switching these to use pg_subscription_d.h as this is client code. While all that addressed, I am finishing with the patch attached. Thoughts or comments? -- Michael
Commits
-
Rework some code handling pg_subscription data in psql and pg_dump
- 08691ea958c2 18.0 landed