Simon Riggs <[EMAIL PROTECTED]> wrote: > > Why do we need to set rmgr_hook in _PG_init(), and add or mofify rmgrs > > in our hook functions? > > If we modify RmgrTable in _PG_init() then we would have to have that > structure available in all backends, which was a stated objective to > avoid. We would still need a fast access data structure for the > XLogInsert() check, so the RmgrTable would just be wasted space in all > normal backends. In the patch, plugin is only called when we call > RmgrInitialize(), so the memory is malloc'd only when required.
Um? AFAICS RmgrTable is not accessed in XLogInsert unless we use WAL_DEBUG. I see that RmgrTable should be malloc'd when required, but there is another issue; when to load rmgr libraries. Rmgr objects are needed only in startup process during recovery. If we want to reduce resource consumption by rmgrs, I think it is better not to load rmgr libraries through shared_preload_libraries. We don't have to load rmgr libs if recovery is not needed or after recovery. How about adding a new variable "recovery_preload_libaries" like as shared_preload_libraries? Rmgr libs in it are loaded only in startup process and only if recovery is needed. Regards, --- ITAGAKI Takahiro NTT Open Source Software Center -- Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers