On 1/3/17 1:26 AM, amul sul wrote: > One more requirement for pg_background is session, command_qh, > response_qh and worker_handle should be last longer than current > memory context, for that we might need to allocate these in > TopMemoryContext. Please find attach patch does the same change in > BackgroundSessionStart().
I had pondered this issue extensively. The standard coding convention in postgres is that the caller sets the memory context. See the dblink and plpython patches that make this happen in their own way.
I agree it would make sense that you either pass in a memory context or always use TopMemoryContext. I'm open to these ideas, but they did not seem to match any existing usage.
+1 Please excuse me if I'm not getting something obvious, but seems like BackgroundSessionNew() caller from pg_background_launch() can pick up TopMemoryCtx. I think that context setup should be done by extension, not by bg_session API.