Re: Refectoring of receivelog.c

From: Daniel Gustafsson <daniel(at)yesql(dot)se>
To: Magnus Hagander <magnus(at)hagander(dot)net>
Cc: Craig Ringer <craig(at)2ndquadrant(dot)com>, PostgreSQL-development <pgsql-hackers(at)postgresql(dot)org>
Subject: Re: Refectoring of receivelog.c
Date: 2016-03-11 08:40:23
Message-ID: 63D25A60-A79A-41CE-BF07-B2C58463816E@yesql.se
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

> On 15 Feb 2016, at 14:46, Magnus Hagander <magnus(at)hagander(dot)net> wrote:
>
> On Mon, Feb 15, 2016 at 7:15 AM, Craig Ringer <craig(at)2ndquadrant(dot)com <mailto:craig(at)2ndquadrant(dot)com>> wrote:
> On 15 February 2016 at 04:48, Magnus Hagander <magnus(at)hagander(dot)net <mailto:magnus(at)hagander(dot)net>> wrote:
> I was working on adding the tar streaming functionality we talked about at the developer meeting to pg_basebackup, and rapidly ran across the issue that Andres has been complaining about for a while. The code in receivelog.c just passes an insane number of parameters around. Adding or changing even a small thing ends up touching a huge number of places.
>
> Other than the lack of comments on the fields in StreamCtl to indicate their functions I think this looks good.
>
> I copied that lack of comments from the previous implementation :P
>
> But yeah, I agree, it's probably a good idea to add them.
>
> I didn't find any mistakes, but I do admit my eyes started glazing over after a bit.
>
> I'd rather not have StreamCtl as a typedef of an anonymous struct if it's exposed in a header though. It should have a name that can be used in forward declarations etc.
>
> It's not exactly uncommon with anonymous ones either in our code, but I see no problem adding that.

Short review of this patch:

The patch applies, and builds, cleanly on top of master as of today. No new
functionality is introduced and thus no new tests or doc patches etc are
applicable.

The main point of the patch is to improve readability and reduce the number of
parameters passed, goals which are reached. However, I agree with Craig that
comments on the struct fields should be added to improve readability even
further. The comment on ReceiveXlogStream() also now reads a bit strange since
it describes fields inside the StreamCtl without referencing StreamCtl at all.
For first time readers of the code it could perhaps be helpful with a brief
note that the discussed parameters are in StreamCtl to avoid potential
confusion.

Overall I think this patch is an improvement on the current code and consider
it ready for committer.

cheers ./daniel

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Simon Riggs 2016-03-11 09:00:57 Re: Logical decoding slots can go backwards when used from SQL, docs are wrong
Previous Message Craig Ringer 2016-03-11 08:40:06 Re: Proposal: RETURNING primary_key()