Re: Avoid unecessary MemSet call (src/backend/utils/cache/relcache.c) - Mailing list pgsql-hackers

From Ranier Vilela
Subject Re: Avoid unecessary MemSet call (src/backend/utils/cache/relcache.c)
Date
Msg-id CAEudQAr7-dVTXhFeAQRA9waUWSbe=23mZE0wt3V=DFGp1MF3GQ@mail.gmail.com
Whole thread Raw
In response to Re: Avoid unecessary MemSet call (src/backend/utils/cache/relcache.c)  (Peter Eisentraut <peter.eisentraut@enterprisedb.com>)
Responses Re: Avoid unecessary MemSet call (src/backend/utils/cache/relcache.c)
List pgsql-hackers
Em qui., 11 de ago. de 2022 às 07:38, Peter Eisentraut <peter.eisentraut@enterprisedb.com> escreveu:
On 01.08.22 19:08, Ranier Vilela wrote:
> Like how
> https://github.com/postgres/postgres/commit/9fd45870c1436b477264c0c82eb195df52bc0919
> <https://github.com/postgres/postgres/commit/9fd45870c1436b477264c0c82eb195df52bc0919>
> New attempt to remove more MemSet calls, that are safe.
>
> Attached v3 patch.

Note that struct initialization does not set padding bits.
According to:

2. individually set all members to 0:
struct foo a = {  .i = 0,  .b = 0,
};
Suffer from this problem. 

3. use { 0 } zero-initializer, not.

  So any
struct that is used as a hash key or that goes to disk or something
similar needs to be set with memset/MemSet instead.  Various places in
the code make explicit comments about that, which your patch deletes,
which is a mistake.  This patch needs to be adjusted carefully with this
in mind before it can be considered.
I think this needs better comprovation?

regards,
Ranier Vilela

pgsql-hackers by date:

Previous
From: Amit Kapila
Date:
Subject: Re: Allow logical replication to copy tables in binary format
Next
From: Alvaro Herrera
Date:
Subject: Re: Avoid unecessary MemSet call (src/backend/utils/cache/relcache.c)