Re: Cache Hash Index meta page.
От | Jesper Pedersen |
---|---|
Тема | Re: Cache Hash Index meta page. |
Дата | |
Msg-id | 9bea3f00-2d3d-96a7-70db-e198c85caa37@redhat.com обсуждение исходный текст |
Ответ на | Re: Cache Hash Index meta page. (Mithun Cy <mithun.cy@enterprisedb.com>) |
Ответы |
Re: Cache Hash Index meta page.
|
Список | pgsql-hackers |
On 09/05/2016 02:50 PM, Mithun Cy wrote: > On Sep 2, 2016 7:38 PM, "Jesper Pedersen" <jesper.pedersen@redhat.com> > wrote: >> Could you provide a rebased patch based on Amit's v5 ? > > Please find the the patch, based on Amit's V5. > > I have fixed following things > > 1. now in "_hash_first" we check if (opaque->hasho_prevblkno == > InvalidBlockNumber) to see if bucket is from older version hashindex and > has been upgraded. Since as of now InvalidBlockNumber is one value greater > than maximum value the variable "metap->hashm_maxbucket" can be set (see > _hash_expandtable). We can distinguish it from rest. I tested the upgrade > issue reported by amit. It is fixed now. > > 2. One case which buckets hasho_prevblkno is used is where we do backward > scan. So now before testing for previous block number I test whether > current page is bucket page if so we end the bucket scan (see changes in > _hash_readprev). On other places where hasho_prevblkno is used it is not > for bucket page, so I have not put any extra check to verify if is a bucket > page. > I think that the + pageopaque->hasho_prevblkno = metap->hashm_maxbucket; trick should be documented in the README, as hashm_maxbucket is defined as uint32 where as hasho_prevblkno is a BlockNumber. (All bucket variables should probably use the Bucket definition instead of uint32). For the archives, this patch conflicts with the WAL patch [1]. [1] https://www.postgresql.org/message-id/CAA4eK1JS%2BSiRSQBzEFpnsSmxZKingrRH7WNyWULJeEJSj1-%3D0w%40mail.gmail.com Best regards, Jesper
В списке pgsql-hackers по дате отправления: