Once running, the process can connect to a database by calling
-
BackgroundWorkerInitializeConnection(char *dbname, char *username) or
-
BackgroundWorkerInitializeConnectionByOid(Oid dboid, Oid useroid).
+
BackgroundWorkerInitializeConnection(char *dbname, char *username, uint32 flags) or
+
BackgroundWorkerInitializeConnectionByOid(Oid dboid, Oid useroid, uint32 flags).
This allows the process to run transactions and queries using the
SPI interface. If dbname is NULL or
dboid is InvalidOid, the session is not connected
to any particular database, but shared catalogs can be accessed.
If username is NULL or useroid is
InvalidOid, the process will run as the superuser created
- during initdb.
+ during initdb. If BGWORKER_BYPASS_ALLOWCONN
+ is specified as flags it is possible to bypass the restriction
+ to connect to databases not allowing user connections.
A background worker can only call one of these two functions, and only
once. It is not possible to switch databases.