Two issues with version checks in CREATE SUBSCRIPTION - Mailing list pgsql-hackers

From Fujii Masao
Subject Two issues with version checks in CREATE SUBSCRIPTION
Date
Msg-id CAHGQGwEx4twHtJdiPWTyAXJhcBPLaH467SH2ajGSe-41m65giA@mail.gmail.com
Whole thread Raw
List pgsql-hackers
Hi,

While looking at subscription-related code, I noticed two issues related to
version checks.

        if (walrcv_server_version(wrconn) < 19000)
            ereport(ERROR,
                errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE),
                errmsg("cannot enable retain_dead_tuples if the
publisher is running a version earlier than PostgreSQL 19"));

First, in subscriptioncmds.c this check rejects enabling retain_dead_tuples
when the publisher is running an older version. However, the comparison uses
19000 as v19 value. Since server versions are encoded as 190000 for v19,
this appears to be a typo and allows the option to be enabled unexpectedly
on pre-v19 publishers. The attached 0001 patch fixes this by correcting
the version constant.

Second, CREATE SUBSCRIPTION with copy_data=true and origin='none' currently
fails when the publisher is running a version earlier than v19, although
this combination should be supported. The failure occurs because the command
issues a query calling pg_get_publication_sequences on the publisher,
which does not exist before v19. The attached 0002 patch fixes this
by skipping that query when the publisher runs an older version.

Thoughts?

Regards,

-- 
Fujii Masao

Attachment

pgsql-hackers by date:

Previous
From: Yugo Nagata
Date:
Subject: Re: psql: tab-completion support for COPY ... TO/FROM STDIN, STDOUT, and PROGRAM
Next
From: Laurenz Albe
Date:
Subject: Re: Get rid of "Section.N.N.N" on DOCs