Hi Tom,

On Wed, 16 Jun 2004, Tom Lane wrote:

> I'm starting to review this patch, and almost immediately came across
> what seemed a spectacularly bad idea:
>
> *** src/backend/storage/buffer/bufmgr.c    8 May 2004 19:09:25 -0000    1.165
> --- src/backend/storage/buffer/bufmgr.c    26 May 2004 06:21:01 -0000
> ***************
> *** 1148,1152 ****
>           {
>               bufHdr = &LocalBufferDescriptors[i];
> !             if (RelFileNodeEquals(bufHdr->tag.rnode, rnode))
>               {
>                   bufHdr->flags &= ~(BM_DIRTY | BM_JUST_DIRTIED);
> --- 1148,1156 ----
>           {
>               bufHdr = &LocalBufferDescriptors[i];
> !             /* special case for default tblNode */
> !             if (RelFileNodeEquals(bufHdr->tag.rnode, rnode) ||
> !                     (!OidIsValid(rnode.tblNode) &&
> !                      bufHdr->tag.rnode.relNode == rnode.relNode &&
> !                      bufHdr->tag.rnode.dbNode == rnode.dbNode))
>               {
>                   bufHdr->flags &= ~(BM_DIRTY | BM_JUST_DIRTIED);
>
> There has got to be a better way than this.  In the first place the
> code seems able to seize on the wrong buffer if it's not checking
> all three fields; in the second place, if the weak matching is correct
> here why is it not needed everyplace else?
>

Ahh. This is a hang over from some tests I was doing. I must have missed
it when I send the patch in. The patch should certainly work without this
change. I will verify later today when I have access to my development
machine.

Gavin

---------------------------(end of broadcast)---------------------------
TIP 3: if posting/reading through Usenet, please send an appropriate
      subscribe-nomail command to [EMAIL PROTECTED] so that your
      message can get through to the mailing list cleanly

Reply via email to