From: | Tomas Vondra <tomas(dot)vondra(at)2ndquadrant(dot)com> |
---|---|
To: | Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> |
Cc: | Fujii Masao <masao(dot)fujii(at)oss(dot)nttdata(dot)com>, Alvaro Herrera <alvherre(at)2ndquadrant(dot)com>, Masahiko Sawada <masahiko(dot)sawada(at)2ndquadrant(dot)com>, "tsunakawa(dot)takay(at)fujitsu(dot)com" <tsunakawa(dot)takay(at)fujitsu(dot)com>, "pgsql-hackers(at)postgresql(dot)org" <pgsql-hackers(at)postgresql(dot)org> |
Subject: | Re: SLRU statistics |
Date: | 2020-05-13 15:23:39 |
Message-ID: | 20200513152339.s7ossibhr6wai4p7@development |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
On Wed, May 13, 2020 at 11:01:47AM -0400, Tom Lane wrote:
>Tomas Vondra <tomas(dot)vondra(at)2ndquadrant(dot)com> writes:
>> On Wed, May 13, 2020 at 10:26:39AM -0400, Tom Lane wrote:
>>> Why is that necessary? A static variable is defined by C to start off
>>> as zeroes.
>
>> But is it a static variable? It's not declared as 'static' but maybe we
>> can assume it inits to zeroes anyway? I see we do that for
>> BgWriterStats.
>
>Sorry, by "static" I meant "statically allocated", not "private to
>this module". I'm sure the C standard has some more precise terminology
>for this distinction, but I forget what it is.
>
Ah, I see. I'm no expert in reading C standard (or any other standard),
but a quick google search yielded this section of C99 standard:
-------------------------------------------------------------------------
If an object that has static storage duration is not initialized
explicitly, then:
- if it has pointer type, it is initialized to a null pointer;
- if it has arithmetic type, it is initialized to (positive or unsigned)
zero;
- if it is an aggregate, every member is initialized (recursively)
according to these rules;
- if it is au nion, the first named member is initialized (recursively)
according to these rules
-------------------------------------------------------------------------
I assume the SLRU variable counts as aggregate, with members having
arithmetic types. In which case it really should be initialized to 0.
regards
--
Tomas Vondra http://www.2ndQuadrant.com
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services
From | Date | Subject | |
---|---|---|---|
Next Message | Alvaro Herrera | 2020-05-13 15:23:57 | Re: Add "-Wimplicit-fallthrough" to default flags |
Previous Message | Bruce Momjian | 2020-05-13 15:22:02 | Re: PG 13 release notes, first draft |