From: | Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> |
---|---|
To: | Gavin Sherry <swm(at)linuxworld(dot)com(dot)au> |
Cc: | pgsql-patches(at)postgresql(dot)org |
Subject: | Re: Tablespaces |
Date: | 2004-06-16 19:17:53 |
Message-ID: | 29607.1087413473@sss.pgh.pa.us |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers pgsql-patches |
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?
What's the purpose of this?
regards, tom lane
From | Date | Subject | |
---|---|---|---|
Next Message | Gavin Sherry | 2004-06-16 21:11:18 | Re: Tablespaces |
Previous Message | Andreas Pflug | 2004-06-16 19:03:52 | Re: logfile rotation |
From | Date | Subject | |
---|---|---|---|
Next Message | Gavin Sherry | 2004-06-16 21:11:18 | Re: Tablespaces |
Previous Message | Claudio Natoli | 2004-06-16 15:30:14 | Re: pg_ctl service integration for WIN32 |