Re: dsm.c API tweak
От | Thomas Munro |
---|---|
Тема | Re: dsm.c API tweak |
Дата | |
Msg-id | CAEepm=2c9ZLbGPayLi2AjSesaHixVt+QV2wN7cPLNgCxe7cSsw@mail.gmail.com обсуждение исходный текст |
Ответ на | Re: dsm.c API tweak (Thomas Munro <thomas.munro@enterprisedb.com>) |
Список | pgsql-hackers |
On Sat, Mar 25, 2017 at 1:59 PM, Thomas Munro <thomas.munro@enterprisedb.com> wrote: > On Sat, Mar 25, 2017 at 12:35 PM, Alvaro Herrera > <alvherre@2ndquadrant.com> wrote: >> Alvaro Herrera wrote: >>> Per >>> https://postgr.es/m/CAEepm=11ma_Z1HoPxPcSCANnh5ykHORa=HcA1U1V1+5S_jwPuA@mail.gmail.com >>> it seems that the dsm.c API is a bit inconvenient right now. I proposed >>> in the first patch in that thread to change the API so that a segment is >>> marked as "pinned" if created with no ResourceOwner set as current; >>> which is essentially the same as creating a fake one, then marking the >>> segment as pinned. >>> >>> Thomas agrees with me, so I propose this patch as preparatory work for >>> the autovacuum/BRIN stuff I'm interested in. >> >> Here's the proposed patch. > > +1 - seg->resowner = CurrentResourceOwner; - ResourceOwnerRememberDSM(CurrentResourceOwner, seg); + if (CurrentResourceOwner) + { + seg->resowner = CurrentResourceOwner; + ResourceOwnerRememberDSM(CurrentResourceOwner, seg); + } You need to assign seg->resowner = CurrentResourceOwner unconditionally here. Otherwise seg->resowner is uninitialised junk. -- Thomas Munro http://www.enterprisedb.com
В списке pgsql-hackers по дате отправления: