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