3333#include "miscadmin.h"
3434#include "nodes/makefuncs.h"
3535#include "pg_getopt.h"
36- #include "pgstat.h"
37- #include "postmaster/bgwriter.h"
38- #include "postmaster/startup.h"
39- #include "postmaster/walwriter.h"
40- #include "replication/walreceiver.h"
4136#include "storage/bufmgr.h"
4237#include "storage/bufpage.h"
4338#include "storage/condition_variable.h"
4742#include "utils/builtins.h"
4843#include "utils/fmgroids.h"
4944#include "utils/memutils.h"
50- #include "utils/ps_status.h"
5145#include "utils/rel.h"
5246#include "utils/relmapper.h"
5347
@@ -56,7 +50,6 @@ uint32 bootstrap_data_checksum_version = 0; /* No checksum */
5650
5751static void CheckerModeMain (void );
5852static void bootstrap_signals (void );
59- static void ShutdownAuxiliaryProcess (int code , Datum arg );
6053static Form_pg_attribute AllocateAttribute (void );
6154static void populate_typ_list (void );
6255static Oid gettype (char * type );
@@ -67,8 +60,6 @@ static void cleanup(void);
6760 * ----------------
6861 */
6962
70- AuxProcType MyAuxProcType = NotAnAuxProcess ; /* declared in miscadmin.h */
71-
7263Relation boot_reldesc ; /* current relation descriptor */
7364
7465Form_pg_attribute attrtypes [MAXATTR ]; /* points to attribute info */
@@ -184,139 +175,6 @@ typedef struct _IndexList
184175static IndexList * ILHead = NULL ;
185176
186177
187- /*
188- * AuxiliaryProcessMain
189- *
190- * The main entry point for auxiliary processes, such as the bgwriter,
191- * walwriter, walreceiver, bootstrapper and the shared memory checker code.
192- *
193- * This code is here just because of historical reasons.
194- */
195- void
196- AuxiliaryProcessMain (AuxProcType auxtype )
197- {
198- Assert (IsUnderPostmaster );
199-
200- MyAuxProcType = auxtype ;
201-
202- switch (MyAuxProcType )
203- {
204- case StartupProcess :
205- MyBackendType = B_STARTUP ;
206- break ;
207- case ArchiverProcess :
208- MyBackendType = B_ARCHIVER ;
209- break ;
210- case BgWriterProcess :
211- MyBackendType = B_BG_WRITER ;
212- break ;
213- case CheckpointerProcess :
214- MyBackendType = B_CHECKPOINTER ;
215- break ;
216- case WalWriterProcess :
217- MyBackendType = B_WAL_WRITER ;
218- break ;
219- case WalReceiverProcess :
220- MyBackendType = B_WAL_RECEIVER ;
221- break ;
222- default :
223- elog (ERROR , "something has gone wrong" );
224- MyBackendType = B_INVALID ;
225- }
226-
227- init_ps_display (NULL );
228-
229- SetProcessingMode (BootstrapProcessing );
230- IgnoreSystemIndexes = true;
231-
232- BaseInit ();
233-
234- /*
235- * As an auxiliary process, we aren't going to do the full InitPostgres
236- * pushups, but there are a couple of things that need to get lit up even
237- * in an auxiliary process.
238- */
239-
240- /*
241- * Create a PGPROC so we can use LWLocks. In the EXEC_BACKEND case, this
242- * was already done by SubPostmasterMain().
243- */
244- #ifndef EXEC_BACKEND
245- InitAuxiliaryProcess ();
246- #endif
247-
248- /*
249- * Assign the ProcSignalSlot for an auxiliary process. Since it doesn't
250- * have a BackendId, the slot is statically allocated based on the
251- * auxiliary process type (MyAuxProcType). Backends use slots indexed in
252- * the range from 1 to MaxBackends (inclusive), so we use MaxBackends +
253- * AuxProcType + 1 as the index of the slot for an auxiliary process.
254- *
255- * This will need rethinking if we ever want more than one of a particular
256- * auxiliary process type.
257- */
258- ProcSignalInit (MaxBackends + MyAuxProcType + 1 );
259-
260- /* finish setting up bufmgr.c */
261- InitBufferPoolBackend ();
262-
263- /*
264- * Auxiliary processes don't run transactions, but they may need a
265- * resource owner anyway to manage buffer pins acquired outside
266- * transactions (and, perhaps, other things in future).
267- */
268- CreateAuxProcessResourceOwner ();
269-
270- /* Initialize statistics reporting */
271- pgstat_initialize ();
272-
273- /* Initialize backend status information */
274- pgstat_beinit ();
275- pgstat_bestart ();
276-
277- /* register a before-shutdown callback for LWLock cleanup */
278- before_shmem_exit (ShutdownAuxiliaryProcess , 0 );
279-
280- SetProcessingMode (NormalProcessing );
281-
282- switch (MyAuxProcType )
283- {
284- case CheckerProcess :
285- case BootstrapProcess :
286- pg_unreachable ();
287- break ;
288-
289- case StartupProcess :
290- StartupProcessMain ();
291- proc_exit (1 );
292-
293- case ArchiverProcess :
294- PgArchiverMain ();
295- proc_exit (1 );
296-
297- case BgWriterProcess :
298- BackgroundWriterMain ();
299- proc_exit (1 );
300-
301- case CheckpointerProcess :
302- CheckpointerMain ();
303- proc_exit (1 );
304-
305- case WalWriterProcess :
306- InitXLOGAccess ();
307- WalWriterMain ();
308- proc_exit (1 );
309-
310- case WalReceiverProcess :
311- WalReceiverMain ();
312- proc_exit (1 );
313-
314- default :
315- elog (PANIC , "unrecognized process type: %d" , (int ) MyAuxProcType );
316- proc_exit (1 );
317- }
318- }
319-
320178/*
321179 * In shared memory checker mode, all we really want to do is create shared
322180 * memory and semaphores (just to prove we can do it with the current GUC
@@ -554,21 +412,6 @@ bootstrap_signals(void)
554412 pqsignal (SIGQUIT , SIG_DFL );
555413}
556414
557- /*
558- * Begin shutdown of an auxiliary process. This is approximately the equivalent
559- * of ShutdownPostgres() in postinit.c. We can't run transactions in an
560- * auxiliary process, so most of the work of AbortTransaction() is not needed,
561- * but we do need to make sure we've released any LWLocks we are holding.
562- * (This is only critical during an error exit.)
563- */
564- static void
565- ShutdownAuxiliaryProcess (int code , Datum arg )
566- {
567- LWLockReleaseAll ();
568- ConditionVariableCancelSleep ();
569- pgstat_report_wait_end ();
570- }
571-
572415/* ----------------------------------------------------------------
573416 * MANUAL BACKEND INTERACTIVE INTERFACE COMMANDS
574417 * ----------------------------------------------------------------
0 commit comments