Thread
-
Re: Clarification on when _PG_init() is invoked for extensions
Hannu Krosing <hannuk@google.com> — 2025-11-20T21:33:00Z
You probably can do the LOAD in the GUC callback functions and then set that GUC only for specific databases using ALTER DATABASE SET <my-extension-loading-guc>=true; On Thu, Nov 20, 2025 at 6:53 PM Ayush Vatsa <ayushvatsa1810@gmail.com> wrote: > Hi, > > CREATE extension does not automatically load or ensure that _PG_init() is >> run. >> It mainly runs the .sql script in your extension. >> > Thanks for the clarification. However, in my testing, _PG_init() did run > when I executed > CREATE EXTENSION. I suspect this might be happening because the SQL > script defines > C functions using MODULE_PATHNAME, which triggers the library load. > In a new session, _PG_init() seems to run again when any of those C > functions are executed. > > *My use case:* > My use case is that I’m building an experimental extension that will be > installed only in a few > databases. I want the hooks initialized by this extension to apply only to > those specific > databases, while all other databases should continue with the default > PostgreSQL behavior. > > Thank you, > Ayush > >>