v4-0001-Move-bgworker-specific-logic-to-bgworker.c.patch
text/x-patch
Filename: v4-0001-Move-bgworker-specific-logic-to-bgworker.c.patch
Type: text/x-patch
Part: 0
Patch
Same data as JSON:
GET /api/v1/attachments/:id/patch
the parsed metadata as JSON — format, series position, per-file stats; never the diff bytes.
API reference →
Format: format-patch
Series: patch v4-0001
Subject: Move bgworker specific logic to bgworker.c.
| File | + | − |
|---|---|---|
| src/backend/postmaster/bgworker.c | 83 | 0 |
| src/backend/postmaster/postmaster.c | 0 | 83 |
From 4dbe54ef746203740202e181f731b7e08bb6e4ea Mon Sep 17 00:00:00 2001
From: Xing Guo <higuoxing@gmail.com>
Date: Fri, 10 May 2024 10:34:09 +0800
Subject: [PATCH v4 1/3] Move bgworker specific logic to bgworker.c.
---
src/backend/postmaster/bgworker.c | 83 +++++++++++++++++++++++++++++
src/backend/postmaster/postmaster.c | 83 -----------------------------
2 files changed, 83 insertions(+), 83 deletions(-)
diff --git a/src/backend/postmaster/bgworker.c b/src/backend/postmaster/bgworker.c
index cf64a4beb2..0ab64ae3ec 100644
--- a/src/backend/postmaster/bgworker.c
+++ b/src/backend/postmaster/bgworker.c
@@ -1240,6 +1240,89 @@ TerminateBackgroundWorker(BackgroundWorkerHandle *handle)
SendPostmasterSignal(PMSIGNAL_BACKGROUND_WORKER_CHANGE);
}
+/*
+ * 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);
+}
+
/*
* Look up (and possibly load) a bgworker entry point function.
*
diff --git a/src/backend/postmaster/postmaster.c b/src/backend/postmaster/postmaster.c
index 7f3170a8f0..472eb80fd1 100644
--- a/src/backend/postmaster/postmaster.c
+++ b/src/backend/postmaster/postmaster.c
@@ -4148,89 +4148,6 @@ MaxLivePostmasterChildren(void)
max_wal_senders + max_worker_processes);
}
-/*
- * 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.
--
2.45.0