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.