Thread: pg_recvlogical fixes

pg_recvlogical fixes

From
Euler Taveira
Date:
Hi,

While testing wal2json, I faced some problems with pg_recvlogical.
Attached is a serie of patches that can improve pg_recvlogical. Patches
#2 and #3 are bugfixes (and should be applied to 9.5 too). Patch #1 is
not mandatory to 9.5.

Short description:

#1: add a bunch of checks to complain when using an option that is not
available in the specified action;
#2: there is a wrong check because startpos option can be specified with
--create-slot;
#3: doesn't ignore startpos in --create-slot because that action could
be specified together with --start action (that uses that option);


--
    Euler Taveira                   Timbira - http://www.timbira.com.br/
    PostgreSQL: Consultoria, Desenvolvimento, Suporte 24x7 e Treinamento

Attachment

Re: pg_recvlogical fixes

From
Andres Freund
Date:
On 2015-10-21 11:52:31 -0300, Euler Taveira wrote:
> While testing wal2json, I faced some problems with pg_recvlogical. Attached
> is a serie of patches that can improve pg_recvlogical. Patches #2 and #3 are
> bugfixes (and should be applied to 9.5 too). Patch #1 is not mandatory to
> 9.5.

> #1: add a bunch of checks to complain when using an option that is not
> available in the specified action;

I'm not a fan of doing that. Doing that for every option tends to be
more annoying than helpful. E.g. pgbench's checks requires you to
pointlessly remove a lot of harmless options just to be able to pass -i.

> #2: there is a wrong check because startpos option can be specified with
> --create-slot;

> #3: doesn't ignore startpos in --create-slot because that action could be
> specified together with --start action (that uses that option);

It doesn't make sense to specify it with --create-slot though - you
can't even know what a the start position would mean before the slot is
created. You can't get older records than the ones at slot creation
time, and you can't know what a feature xlog position would mean.

Greetings,

Andres Freund



Re: pg_recvlogical fixes

From
Euler Taveira
Date:
On 21-10-2015 18:36, Andres Freund wrote:
> On 2015-10-21 11:52:31 -0300, Euler Taveira wrote:
>> While testing wal2json, I faced some problems with pg_recvlogical. Attached
>> is a serie of patches that can improve pg_recvlogical. Patches #2 and #3 are
>> bugfixes (and should be applied to 9.5 too). Patch #1 is not mandatory to
>> 9.5.
>
>> #1: add a bunch of checks to complain when using an option that is not
>> available in the specified action;
>
> I'm not a fan of doing that. Doing that for every option tends to be
> more annoying than helpful. E.g. pgbench's checks requires you to
> pointlessly remove a lot of harmless options just to be able to pass -i.
>
Your comparison is not fair (8 x 28 options). I tend to agree that a lot 
of check is not nice to maintain. However, it is a good UI practice.

>> #2: there is a wrong check because startpos option can be specified with
>> --create-slot;
>
>> #3: doesn't ignore startpos in --create-slot because that action could be
>> specified together with --start action (that uses that option);
>
> It doesn't make sense to specify it with --create-slot though - you
> can't even know what a the start position would mean before the slot is
> created. You can't get older records than the ones at slot creation
> time, and you can't know what a feature xlog position would mean.
>
If it doesn't make sense, why --create-slot can be specified together 
with --start at all? Maybe a comment could clarify your point (circa 
line 902) because it is not clear in docs that a past LSN could not be 
specified or even a future LSN when both options are specified together.


--    Euler Taveira                   Timbira - http://www.timbira.com.br/   PostgreSQL: Consultoria, Desenvolvimento,
Suporte24x7 e Treinamento