Re: [PROPOSAL] Shared Ispell dictionaries
От | Robert Haas |
---|---|
Тема | Re: [PROPOSAL] Shared Ispell dictionaries |
Дата | |
Msg-id | CA+TgmoaR_fVd_u60mA-PHO=J1u0PmdVGOt9WaxZ1UYuGq276oQ@mail.gmail.com обсуждение исходный текст |
Ответ на | Re: [PROPOSAL] Shared Ispell dictionaries (Arthur Zakirov <a.zakirov@postgrespro.ru>) |
Ответы |
Re: [PROPOSAL] Shared Ispell dictionaries
|
Список | pgsql-hackers |
On Tue, Mar 27, 2018 at 8:19 AM, Arthur Zakirov <a.zakirov@postgrespro.ru> wrote: >> I assume the DSM infrastructure already has some solution for getting >> rid of DSM segments when the last interested process disconnects, >> so maybe you could piggyback on that somehow. > > Yes, there is dsm_pin_mapping() for this. But it is necessary to keep a > segment even if there are no attached processes. From 0003: > > + /* Remain attached until end of postmaster */ > + dsm_pin_segment(seg); > + /* Remain attached until end of session */ > + dsm_pin_mapping(seg); I don't quite understand the problem you're trying to solve here, but: 1. Unless dsm_pin_segment() is called, a DSM segment will automatically be removed when there are no remaining mappings. 2. Unless dsm_pin_mapping() is called, a DSM segment will be unmapped when the currently-in-scope resource owner is cleaned up, like at the end of the query. If it is called, then the mapping will stick around until the backend exits. If you pin the mapping or the segment and later no longer want it pinned, there are dsm_unpin_mapping() and dsm_unpin_segment() functions available, too. So it seems like what you might want to do is pin the segment when it's created, and then unpin it if it's stale/obsolete. The latter won't remove it immediately, but will once all the mappings are gone. -- Robert Haas EnterpriseDB: http://www.enterprisedb.com The Enterprise PostgreSQL Company
В списке pgsql-hackers по дате отправления: