On Wed, May 24, 2017 at 9:41 PM, Robert Haas <robertmh...@gmail.com> wrote:
> On Wed, May 24, 2017 at 7:31 PM, Peter Eisentraut
> <peter.eisentr...@2ndquadrant.com> wrote:
>> On 5/23/17 02:33, Kuntal Ghosh wrote:
>>>> The command succeed even if slot_name is invalid. That's because slot_name
>>>> isn't validated. ReplicationSlotValidateName() should be called in
>>>> parse_subscription_options() to avoid a pilot error. IMHO we should prevent
>>>> a future error (use of invalid slot name).
>>> +1. Since, slot_name can be provided even when create_slot is set
>>> false, it should be validated as well while creating the subscription.
>> This came up in a previous thread.  It is up to the publishing end what
>> slot names it accepts.  So running the validation locally is incorrect.
> That argument seems pretty tenuous; surely both ends are PostgreSQL,
> and the rules for valid slot names aren't likely to change very often.
> But even if we accept it as true, I still don't like the idea that a
> DROP can just fail, especially with no real guidance as to how to fix
> things so it doesn't fail.  Ideas:
> 1. If we didn't create the slot (and have never connected to it?),
> don't try to drop it.
> 2. Emit some kind of a HINT telling people about ALTER SUBSCRIPTION ..
> SET (slot_name = NONE).
> 3. ???

+1 to #2 idea. We already emit such errhint when connection to the
publisher failed. I think we can do the same thing in this case.


    wrconn = walrcv_connect(conninfo, true, subname, &err);
    if (wrconn == NULL)
                (errmsg("could not connect to publisher when attempting to "
                             "drop the replication slot \"%s\"", slotname),
                 errdetail("The error was: %s", err),
                 errhint("Use ALTER SUBSCRIPTION ... SET (slot_name = NONE) "
                            "to disassociate the subscription from the


Masahiko Sawada
NTT Open Source Software Center

Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:

Reply via email to