Re: Setting pd_lower in GIN metapage

Michael Paquier <michael.paquier@gmail.com>

From: Michael Paquier <michael.paquier@gmail.com>
To: Tom Lane <tgl@sss.pgh.pa.us>
Cc: Amit Kapila <amit.kapila16@gmail.com>, Amit Langote <Langote_Amit_f8@lab.ntt.co.jp>, Masahiko Sawada <sawada.mshk@gmail.com>, Pg Hackers <pgsql-hackers@postgresql.org>
Date: 2017-09-19T22:55:31Z
Lists: pgsql-hackers
On Wed, Sep 20, 2017 at 12:47 AM, Tom Lane <tgl@sss.pgh.pa.us> wrote:
> Amit Kapila <amit.kapila16@gmail.com> writes:
>> On Tue, Sep 19, 2017 at 9:27 AM, Michael Paquier
>> <michael.paquier@gmail.com> wrote:
>>> I am not saying that no index AMs take advantage FPW compressibility
>>> for their meta pages. There are cases like this one, as well as one
>>> code path in BRIN where this is useful, and it is useful as well when
>>> logging FPWs of the init forks for unlogged relations.
>
>> Hmm, why is it useful for logging FPWs of the init forks for unlogged
>> relations?  We don't use REGBUF_STANDARD in those cases.
>
> But if we started to do so, that would be a concrete benefit of this
> patch ...

In the proposed set of patches, all the empty() routines part of index
AMs which use log_newpage_buffer() (brin, gin, spgst) are doing the
right thing by updating log_newpage_buffer(). btree also should have
its call to log_newpage updated in btbuildempty(), and your patch is
missing that. Also, _hash_init() would need some extra work to
generate FPWs, but I don't think that it is necessary per its handling
of a per-record meta data either. So REGBUF_STANDARD could be just
removed from there, and there is actually no need to patch
src/backend/access/hash at all.
-- 
Michael


Commits

  1. Flag index metapages as standard-format in xlog.c calls.

  2. Set the metapage's pd_lower correctly in brin, gin, and spgist indexes.