Re: Tablespaces
От | Tom Lane |
---|---|
Тема | Re: Tablespaces |
Дата | |
Msg-id | 29607.1087413473@sss.pgh.pa.us обсуждение исходный текст |
Ответ на | Re: Tablespaces (Gavin Sherry <swm@linuxworld.com.au>) |
Ответы |
Re: Tablespaces
|
Список | 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
В списке pgsql-patches по дате отправления: