Hello, On Mon, Jan 22, 2018 at 02:34:58PM +0300, Maksim Milyutin wrote: > ... > I have attached a new version of patch and updated version of > remote_effective_user function implementation that demonstrates the usage of > custom signals API.
Thank you. The patch is applied and build. > +/* > + * UnregisterCustomProcSignal > + * Release slot of specific custom signal. > + * > + * This function have to be called in _PG_init or _PG_fini functions of > + * extensions at the stage of loading shared preloaded libraries. Otherwise > it > + * throws fatal error. Also it throws fatal error if argument is not valid > + * custom signal. > + */ > +void > +UnregisterCustomProcSignal(ProcSignalReason reason) > +{ > + if (!process_shared_preload_libraries_in_progress) > + ereport(FATAL, (errcode(ERRCODE_INTERNAL_ERROR), > + errmsg("cannot unregister > custom signal after startup"))); Is there actual need in UnregisterCustomProcSignal() within _PG_init()? An extension registers a handler and then unregister it doing nothing. It seems useless. Also process_shared_preload_libraries_in_progress within _PG_fini() will be false I think. _PG_fini() won't be called though, because implementation of internal_unload_library() is disabled. Actually, is there need in UnregisterCustomProcSignal() at all? It unregisters a handler only in current backend, for actual unergistering we need to call it everywhere, if I'm not mistaken. -- Arthur Zakirov Postgres Professional: http://www.postgrespro.com Russian Postgres Company