summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHeikki Linnakangas2024-07-02 17:12:05 +0000
committerHeikki Linnakangas2024-07-02 17:12:05 +0000
commit4d22173ec08cfdb83f61cfff1d6fa67fe7d83296 (patch)
tree5f529921c5cec3d04489060b069351bd0fc24e4b
parent8213df9effaf0767efa7faf9b75fa500d4f45985 (diff)
Move bgworker specific logic to bgworker.c
For clarity, we've been slowly moving functions that are not called from the postmaster process out of postmaster.c. Author: Xing Guo <[email protected]> Discussion: https://www.postgresql.org/message-id/CACpMh%2BDBHVT4xPGimzvex%3DwMdMLQEu9PYhT%2BkwwD2x2nu9dU_Q%40mail.gmail.com
-rw-r--r--src/backend/postmaster/bgworker.c83
-rw-r--r--src/backend/postmaster/postmaster.c83
2 files changed, 83 insertions, 83 deletions
diff --git a/src/backend/postmaster/bgworker.c b/src/backend/postmaster/bgworker.c
index b37ccb85ad6..13dc2cf064e 100644
--- a/src/backend/postmaster/bgworker.c
+++ b/src/backend/postmaster/bgworker.c
@@ -852,6 +852,89 @@ BackgroundWorkerMain(char *startup_data, size_t startup_data_len)
}
/*
+ * Connect background worker to a database.
+ */
+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;
+ /* ignore rolcanlogin? */
+ if (flags & BGWORKER_BYPASS_ROLELOGINCHECK)
+ init_flags |= INIT_PG_OVERRIDE_ROLE_LOGIN;
+
+ /* XXX is this the right errcode? */
+ if (!(worker->bgw_flags & BGWORKER_BACKEND_DATABASE_CONNECTION))
+ ereport(FATAL,
+ (errcode(ERRCODE_PROGRAM_LIMIT_EXCEEDED),
+ errmsg("database connection requirement not indicated during registration")));
+
+ InitPostgres(dbname, InvalidOid, /* database to connect to */
+ username, InvalidOid, /* role to connect as */
+ init_flags,
+ NULL); /* no out_dbname */
+
+ /* it had better not gotten out of "init" mode yet */
+ if (!IsInitProcessingMode())
+ ereport(ERROR,
+ (errmsg("invalid processing mode in background worker")));
+ SetProcessingMode(NormalProcessing);
+}
+
+/*
+ * Connect background worker to a database using OIDs.
+ */
+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;
+ /* ignore rolcanlogin? */
+ if (flags & BGWORKER_BYPASS_ROLELOGINCHECK)
+ init_flags |= INIT_PG_OVERRIDE_ROLE_LOGIN;
+
+ /* XXX is this the right errcode? */
+ if (!(worker->bgw_flags & BGWORKER_BACKEND_DATABASE_CONNECTION))
+ ereport(FATAL,
+ (errcode(ERRCODE_PROGRAM_LIMIT_EXCEEDED),
+ errmsg("database connection requirement not indicated during registration")));
+
+ InitPostgres(NULL, dboid, /* database to connect to */
+ NULL, useroid, /* role to connect as */
+ init_flags,
+ NULL); /* no out_dbname */
+
+ /* it had better not gotten out of "init" mode yet */
+ if (!IsInitProcessingMode())
+ ereport(ERROR,
+ (errmsg("invalid processing mode in background worker")));
+ SetProcessingMode(NormalProcessing);
+}
+
+/*
+ * Block/unblock signals in a background worker
+ */
+void
+BackgroundWorkerBlockSignals(void)
+{
+ sigprocmask(SIG_SETMASK, &BlockSig, NULL);
+}
+
+void
+BackgroundWorkerUnblockSignals(void)
+{
+ sigprocmask(SIG_SETMASK, &UnBlockSig, NULL);
+}
+
+/*
* Register a new static background worker.
*
* This can only be called directly from postmaster or in the _PG_init
diff --git a/src/backend/postmaster/postmaster.c b/src/backend/postmaster/postmaster.c
index 97c8332c84d..6f974a8d21a 100644
--- a/src/backend/postmaster/postmaster.c
+++ b/src/backend/postmaster/postmaster.c
@@ -4149,89 +4149,6 @@ MaxLivePostmasterChildren(void)
}
/*
- * Connect background worker to a database.
- */
-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;
- /* ignore rolcanlogin? */
- if (flags & BGWORKER_BYPASS_ROLELOGINCHECK)
- init_flags |= INIT_PG_OVERRIDE_ROLE_LOGIN;
-
- /* XXX is this the right errcode? */
- if (!(worker->bgw_flags & BGWORKER_BACKEND_DATABASE_CONNECTION))
- ereport(FATAL,
- (errcode(ERRCODE_PROGRAM_LIMIT_EXCEEDED),
- errmsg("database connection requirement not indicated during registration")));
-
- InitPostgres(dbname, InvalidOid, /* database to connect to */
- username, InvalidOid, /* role to connect as */
- init_flags,
- NULL); /* no out_dbname */
-
- /* it had better not gotten out of "init" mode yet */
- if (!IsInitProcessingMode())
- ereport(ERROR,
- (errmsg("invalid processing mode in background worker")));
- SetProcessingMode(NormalProcessing);
-}
-
-/*
- * Connect background worker to a database using OIDs.
- */
-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;
- /* ignore rolcanlogin? */
- if (flags & BGWORKER_BYPASS_ROLELOGINCHECK)
- init_flags |= INIT_PG_OVERRIDE_ROLE_LOGIN;
-
- /* XXX is this the right errcode? */
- if (!(worker->bgw_flags & BGWORKER_BACKEND_DATABASE_CONNECTION))
- ereport(FATAL,
- (errcode(ERRCODE_PROGRAM_LIMIT_EXCEEDED),
- errmsg("database connection requirement not indicated during registration")));
-
- InitPostgres(NULL, dboid, /* database to connect to */
- NULL, useroid, /* role to connect as */
- init_flags,
- NULL); /* no out_dbname */
-
- /* it had better not gotten out of "init" mode yet */
- if (!IsInitProcessingMode())
- ereport(ERROR,
- (errmsg("invalid processing mode in background worker")));
- SetProcessingMode(NormalProcessing);
-}
-
-/*
- * Block/unblock signals in a background worker
- */
-void
-BackgroundWorkerBlockSignals(void)
-{
- sigprocmask(SIG_SETMASK, &BlockSig, NULL);
-}
-
-void
-BackgroundWorkerUnblockSignals(void)
-{
- sigprocmask(SIG_SETMASK, &UnBlockSig, NULL);
-}
-
-/*
* Start a new bgworker.
* Starting time conditions must have been checked already.
*