proc_exit(0);
}
+/*
+ * 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.
*
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.