Re: Setting pd_lower in GIN metapage
Amit Langote <langote_amit_f8@lab.ntt.co.jp>
From: Amit Langote <Langote_Amit_f8@lab.ntt.co.jp>
To: Tom Lane <tgl@sss.pgh.pa.us>
Cc: Amit Kapila <amit.kapila16@gmail.com>,
Michael Paquier <michael.paquier@gmail.com>,
Masahiko Sawada <sawada.mshk@gmail.com>,
Pg Hackers <pgsql-hackers@postgresql.org>
Date: 2017-09-13T05:48:12Z
Lists: pgsql-hackers
Attachments
- 0001-Set-pd_lower-correctly-in-the-GIN-metapage.patch (text/plain) patch 0001
- 0002-Set-pd_lower-correctly-in-the-BRIN-index-metapage.patch (text/plain) patch 0002
- 0003-Set-pd_lower-correctly-in-the-SP-GiST-index-metapage.patch (text/plain) patch 0003
On 2017/09/13 13:05, Tom Lane wrote: > Amit Langote <Langote_Amit_f8@lab.ntt.co.jp> writes: >> On 2017/09/12 23:27, Amit Kapila wrote: >>> I think one point which might be missed is that the patch needs to >>> modify pd_lower for all usages of metapage, not only when it is first >>> time initialized. > >> Maybe I'm missing something, but isn't the metadata size fixed and hence >> pd_lower won't change once it's initialized? Maybe, it's not true for all >> index types? > > No, the point is that you might be dealing with an index recently > pg_upgraded from v10 or before, which does not have the correct > value for pd_lower on that page. This has to be coped with. Ah, got it. Thanks for the explanation. I updated the patches so that the metapage's pd_lower is set to the correct value just before *every* point where we are about to insert a full page image of the metapage into WAL. That's in addition to doing the same in various metapage init routines, which the original patch did already anyway. I guess this now ensures that wal_consistency_checking masking of these metapages as standard layout pages always works, even for pre-v11 indexes that were upgraded. Also, we now pass the metapage buffer as containing a page of standard layout to XLogRegisterBuffer(), so that any hole in it is compressed when actually writing to WAL. Thanks, Amit
Commits
-
Flag index metapages as standard-format in xlog.c calls.
- 4c11d2c559e7 11.0 landed
-
Set the metapage's pd_lower correctly in brin, gin, and spgist indexes.
- 81e334ce4e6d 11.0 landed