Re: Executing pg_createsubscriber with a non-compatible control file
Masahiko Sawada <sawada.mshk@gmail.com>
From: Masahiko Sawada <sawada.mshk@gmail.com>
To: Michael Paquier <michael@paquier.xyz>
Cc: Postgres hackers <pgsql-hackers@lists.postgresql.org>,
Euler Taveira <euler@eulerto.com>
Date: 2025-10-07T18:51:45Z
Lists: pgsql-hackers
On Sun, Oct 5, 2025 at 9:19 PM Michael Paquier <michael@paquier.xyz> wrote: > > Hi all, > (Adding Euler in CC.) > > I have mentioned that on this thread: > https://www.postgresql.org/message-id/aOM-T6iojyzb7OVB@paquier.xyz > > Attempting to execute pg_createsubscriber compiled with a version of > PG_CONTROL_VERSION incompatible with the standby we want to switch to > a logical replica leads to the following error: > $ pg_createsubscriber -D $HOME/data/5433 \ > -P "host=/tmp port=5432" -d postgres > pg_createsubscriber: error: control file appears to be corrupt > > For example, setup a cluster based on v17 and run the command. This > is confusing, because the control file is not corrupted, > pg_createsubscriber is just missing the fact that the major version it > is compiled with is not able to manipulate the control file of the > target data folder. We enforce such checks for other tools, like > pg_checksums or pg_rewind, and I don't see why pg_createsubscriber > should be an exception? +1 to add a major version check for better log messages. Just to be clear, did you mean that pg_checksums and pg_rewind already do such checks? IIUC pg_checksums does CRC check for the control file, and if we execute v18-pg_checksums against v17-cluster we end up with a similar error but with a different log message like "pg_checksums: error: pg_control CRC value is incorrect". Those log messages are not helpful either. Regards, -- Masahiko Sawada Amazon Web Services: https://aws.amazon.com
Commits
Same data as JSON:
GET /api/v1/messages/:b64id/commits
the thread's linked commits as JSON, with link sources.
API reference →
-
pg_checksums: Use new routine to retrieve data of PG_VERSION
- a7c30422004a 19 (unreleased) landed
-
pg_createsubscriber: Use new routine to retrieve data of PG_VERSION
- fa55be2a506a 19 (unreleased) landed
-
pg_resetwal: Use new routine to retrieve data of PG_VERSION
- c6a6cd53d3ab 19 (unreleased) landed
-
pg_combinebackup: Use new routine to retrieve data of PG_VERSION
- e4775e42cade 19 (unreleased) landed
-
pg_upgrade: Use new routine to retrieve data of PG_VERSION
- a7d8052910d6 19 (unreleased) landed
-
Introduce frontend API able to retrieve the contents of PG_VERSION
- cd0be131ba6f 19 (unreleased) landed