Re: Unnecessary static variable? - Mailing list pgsql-hackers

From Tom Lane
Subject Re: Unnecessary static variable?
Date
Msg-id 6028.1516208381@sss.pgh.pa.us
Whole thread Raw
In response to Unnecessary static variable?  (Antonin Houska <ah@cybertec.at>)
Responses Re: Unnecessary static variable?
List pgsql-hackers
Antonin Houska <ah@cybertec.at> writes:
> While reading XLogPageRead() I was surprised that readLen variable is set but
> not used in the read() call. Then I realized that it's declared static
> although no other function uses it. Maybe it was used earlier to exit early if
> sufficient amount of data was already read? I think this case is now handled
> by the calling function xlogreader.c:ReadPageInternal().

> I suggest to make the variable local:

Hmm ... I agree that making the variable local is a simple improvement,
but your patch also does this:

> *************** retry:
> *** 11648,11654 ****
>       }
>
>       pgstat_report_wait_start(WAIT_EVENT_WAL_READ);
> !     if (read(readFile, readBuf, XLOG_BLCKSZ) != XLOG_BLCKSZ)
>       {
>           char        fname[MAXFNAMELEN];
>
> --- 11644,11650 ----
>       }
>
>       pgstat_report_wait_start(WAIT_EVENT_WAL_READ);
> !     if (read(readFile, readBuf, readLen) != readLen)
>       {
>           char        fname[MAXFNAMELEN];

and that I'm less sure is correct.

At one time, I think, readLen told how much data in readBuf was
actually valid.  It seems not to be used for that anymore, but
I don't much like the idea that readBuf is only partially filled
but there is *no* persistent state indicating how much is valid.
The existing coding guarantees that the answer is "XLOG_BLCKSZ",
so that's fine, but this change would remove the guarantee.

            regards, tom lane


pgsql-hackers by date:

Previous
From: "David G. Johnston"
Date:
Subject: Re: Is there a "right" way to test if a database is empty?
Next
From: Petr Jelinek
Date:
Subject: Re: [PATCH] Logical decoding of TRUNCATE