Re: [CLOBBER_CACHE]Server crashed with segfault 11 while executing clusterdb
От | Amul Sul |
---|---|
Тема | Re: [CLOBBER_CACHE]Server crashed with segfault 11 while executing clusterdb |
Дата | |
Msg-id | CAAJ_b97pY53B1NVViWKgAY5yJev5Y1iAAyF1TipnaThV8YTWiA@mail.gmail.com обсуждение исходный текст |
Ответ на | Re: [CLOBBER_CACHE]Server crashed with segfault 11 while executing clusterdb (Kyotaro Horiguchi <horikyota.ntt@gmail.com>) |
Ответы |
Re: [CLOBBER_CACHE]Server crashed with segfault 11 while executing clusterdb
|
Список | pgsql-hackers |
On Thu, Mar 25, 2021 at 12:10 PM Kyotaro Horiguchi <horikyota.ntt@gmail.com> wrote: > > Sorry for the bug. > > At Thu, 25 Mar 2021 01:50:29 -0400, Tom Lane <tgl@sss.pgh.pa.us> wrote in > > Amul Sul <sulamul@gmail.com> writes: > > > On Wed, Mar 24, 2021 at 8:09 PM Tom Lane <tgl@sss.pgh.pa.us> wrote: > > >> static inline struct SMgrRelationData * > > >> RelationGetSmgr(Relation rel) > > >> { > > >> if (unlikely(rel->rd_smgr == NULL)) > > >> RelationOpenSmgr(rel); > > >> return rel->rd_smgr; > > >> } > > > > > A quick question: Can't it be a macro instead of an inline function > > > like other macros we have in rel.h? > > > > The multiple-evaluation hazard seems like an issue. We've tolerated > > such hazards in the past, but mostly just because we weren't relying > > on static inlines being available, so there wasn't a good way around > > it. > > > > Also, the conditional evaluation here would look rather ugly > > in a macro, I think, if indeed you could do it at all without > > provoking compiler warnings. > > FWIW, +1 for the function as is. > Ok, in the attached patch, I have added the inline function to rel.h, and for that, I end up including smgr.h to rel.h. I tried to replace all rel->rd_smgr by RelationGetSmgr() function and removed the RelationOpenSmgr() call from the nearby to it which I don't think needed at all. Regards, Amul
Вложения
В списке pgsql-hackers по дате отправления: