Re: Tablespaces - Mailing list pgsql-patches

From Gavin Sherry
Subject Re: Tablespaces
Date
Msg-id Pine.LNX.4.58.0406170709320.6751@linuxworld.com.au
Whole thread Raw
In response to Re: Tablespaces  (Tom Lane <tgl@sss.pgh.pa.us>)
List pgsql-patches
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

pgsql-patches by date:

Previous
From: Tom Lane
Date:
Subject: Re: Tablespaces
Next
From: Simon Riggs
Date:
Subject: Re: Nested transactions