On Wed, Apr 7, 2021 at 5:32 PM Pavel Borisov <pashkin.e...@gmail.com> wrote:
>
> I was looking at changes in Sp-Gist by commit 
> 4c0239cb7a7775e3183cb575e62703d71bf3302d
> (discussion
> https://postgr.es/m/CALj2ACViOo2qyaPT7krWm4LRyRTw9kOXt+g6PfNmYuGA=yh...@mail.gmail.com
>  ) and realized that during PageInit, both page header and page special are 
> expected to be maxaligned but in reality, their treatment is quite different:

How can we say that in PageInit the SizeOfPageHeaderData is expected
to be max aligned? Am I missing something? There are lots of other
places where SizeOfPageHeaderData is used, not
MAXALIGN(SizeOfPageHeaderData).

> 1. page special size is silently enforced to be maxaligned by PageInit() even 
> if caller-specified specialSize is not of a maxalign'ed size.
> 2. page header size alignment is not checked at all (but we expect it 
> maxalign'ed, yes).
>
> I'd propose do both things in the same way: just Assert both sizes are 
> maxalign'ed during page init.
>
> I dived further and it appears that the only caller, who provides not 
> properly aligned page special is fill_seq_with_data() and corrected it.
>
> I am really convinced, that _callers_ should care about proper special size. 
> So now PageInit() just checks the right lengths of page special and page 
> header with assert, not enforcing size change silently. PFA my small patch on 
> this. I'd propose it to commit if in the HEAD only likewise the commit 
> 4c0239cb7a7775e3183cb575e62703d71bf3302d.
>
> What do you think?

I still feel that for special size let callers call PageInit with
sizeof(special_structure) and PageInit do the alignment. Others may
have different opinion.

On the patch itself, how can we say that other special sizes are max
aligned except sequence_magic structure?

With Regards,
Bharath Rupireddy.
EnterpriseDB: http://www.enterprisedb.com


Reply via email to