mirror of
https://github.com/postgres/postgres.git
synced 2025-11-07 19:06:32 +03:00
Refactor InitPostgres() to use bitwise option flags
InitPostgres() has been using a set of boolean arguments to control its behavior, and a patch under discussion was aiming at expanding it with a third one. In preparation for expanding this area, this commit switches all the current boolean arguments of this routine to a single bits32 argument instead. Two values are currently supported for the flags: - INIT_PG_LOAD_SESSION_LIBS to load [session|local]_preload_libraries at startup. - INIT_PG_OVERRIDE_ALLOW_CONNS to allow connection to a database even if it has !datallowconn. This is used by bgworkers. Reviewed-by: Bertrand Drouvot Discussion: https://postgr.es/m/ZSTn66_BXRZCeaqS@paquier.xyz
This commit is contained in:
@@ -5562,6 +5562,11 @@ void
|
||||
BackgroundWorkerInitializeConnection(const char *dbname, const char *username, uint32 flags)
|
||||
{
|
||||
BackgroundWorker *worker = MyBgworkerEntry;
|
||||
bits32 init_flags = 0; /* never honor session_preload_libraries */
|
||||
|
||||
/* ignore datallowconn? */
|
||||
if (flags & BGWORKER_BYPASS_ALLOWCONN)
|
||||
init_flags |= INIT_PG_OVERRIDE_ALLOW_CONNS;
|
||||
|
||||
/* XXX is this the right errcode? */
|
||||
if (!(worker->bgw_flags & BGWORKER_BACKEND_DATABASE_CONNECTION))
|
||||
@@ -5571,8 +5576,7 @@ BackgroundWorkerInitializeConnection(const char *dbname, const char *username, u
|
||||
|
||||
InitPostgres(dbname, InvalidOid, /* database to connect to */
|
||||
username, InvalidOid, /* role to connect as */
|
||||
false, /* never honor session_preload_libraries */
|
||||
(flags & BGWORKER_BYPASS_ALLOWCONN) != 0, /* ignore datallowconn? */
|
||||
init_flags,
|
||||
NULL); /* no out_dbname */
|
||||
|
||||
/* it had better not gotten out of "init" mode yet */
|
||||
@@ -5589,6 +5593,11 @@ void
|
||||
BackgroundWorkerInitializeConnectionByOid(Oid dboid, Oid useroid, uint32 flags)
|
||||
{
|
||||
BackgroundWorker *worker = MyBgworkerEntry;
|
||||
bits32 init_flags = 0; /* never honor session_preload_libraries */
|
||||
|
||||
/* ignore datallowconn? */
|
||||
if (flags & BGWORKER_BYPASS_ALLOWCONN)
|
||||
init_flags |= INIT_PG_OVERRIDE_ALLOW_CONNS;
|
||||
|
||||
/* XXX is this the right errcode? */
|
||||
if (!(worker->bgw_flags & BGWORKER_BACKEND_DATABASE_CONNECTION))
|
||||
@@ -5598,8 +5607,7 @@ BackgroundWorkerInitializeConnectionByOid(Oid dboid, Oid useroid, uint32 flags)
|
||||
|
||||
InitPostgres(NULL, dboid, /* database to connect to */
|
||||
NULL, useroid, /* role to connect as */
|
||||
false, /* never honor session_preload_libraries */
|
||||
(flags & BGWORKER_BYPASS_ALLOWCONN) != 0, /* ignore datallowconn? */
|
||||
init_flags,
|
||||
NULL); /* no out_dbname */
|
||||
|
||||
/* it had better not gotten out of "init" mode yet */
|
||||
|
||||
Reference in New Issue
Block a user