Tom Lane wrote: > Can't completely get rid of #ifndef FRONTEND in palloc.h :-( > > pg_controldata includes postgres.h not postgres_fe.h, so utils/palloc.h > must be able to compile in a "#define FRONTEND" context.
Hmm, I had this patch in an abandoned branch from long ago, which I think helped remove postgres.h from pg_controldata. I remembered it just now because of this commit message. Maybe it's useful to re-remove the #ifndef FRONTEND from palloc.h. It's not rebased to latest master and maybe even not complete; if people think this approach is worthwhile I can try and clean it up and proposely more seriously; LMK. (Also if people think it needs futher tweaks. I vaguely recall I didn't propose it back then because the set of stuff in the new header could be tweaked.) -- Álvaro Herrera http://www.2ndQuadrant.com/ PostgreSQL Development, 24x7 Support, Training & Services
diff --git a/src/backend/access/transam/xlog.c b/src/backend/access/transam/xlog.c index d960bbc..de06a36 100644 --- a/src/backend/access/transam/xlog.c +++ b/src/backend/access/transam/xlog.c @@ -30,6 +30,7 @@ #include "access/twophase.h" #include "access/xact.h" #include "access/xlog_internal.h" +#include "access/xlogproc.h" #include "access/xlogreader.h" #include "access/xlogutils.h" #include "catalog/catversion.h" diff --git a/src/backend/access/transam/xlogarchive.c b/src/backend/access/transam/xlogarchive.c index 0c178c5..313486e 100644 --- a/src/backend/access/transam/xlogarchive.c +++ b/src/backend/access/transam/xlogarchive.c @@ -22,6 +22,7 @@ #include "access/xlog.h" #include "access/xlog_internal.h" +#include "access/xlogproc.h" #include "miscadmin.h" #include "postmaster/startup.h" #include "replication/walsender.h" diff --git a/src/backend/bootstrap/bootstrap.c b/src/backend/bootstrap/bootstrap.c index 82ef726..8f185aa 100644 --- a/src/backend/bootstrap/bootstrap.c +++ b/src/backend/bootstrap/bootstrap.c @@ -22,6 +22,7 @@ #endif #include "access/htup_details.h" +#include "access/xlogproc.h" #include "bootstrap/bootstrap.h" #include "catalog/index.h" #include "catalog/pg_collation.h" diff --git a/src/backend/postmaster/checkpointer.c b/src/backend/postmaster/checkpointer.c index 5fb2d81..54a09f0 100644 --- a/src/backend/postmaster/checkpointer.c +++ b/src/backend/postmaster/checkpointer.c @@ -43,6 +43,7 @@ #include "access/xlog.h" #include "access/xlog_internal.h" +#include "access/xlogproc.h" #include "libpq/pqsignal.h" #include "miscadmin.h" #include "pgstat.h" diff --git a/src/backend/postmaster/pgarch.c b/src/backend/postmaster/pgarch.c index 3ddd596..4bd4740 100644 --- a/src/backend/postmaster/pgarch.c +++ b/src/backend/postmaster/pgarch.c @@ -34,6 +34,7 @@ #include "access/xlog.h" #include "access/xlog_internal.h" +#include "access/xlogproc.h" #include "libpq/pqsignal.h" #include "miscadmin.h" #include "postmaster/fork_process.h" diff --git a/src/backend/postmaster/postmaster.c b/src/backend/postmaster/postmaster.c index 15c2320..08491a4 100644 --- a/src/backend/postmaster/postmaster.c +++ b/src/backend/postmaster/postmaster.c @@ -93,6 +93,7 @@ #include "access/transam.h" #include "access/xlog.h" +#include "access/xlogproc.h" #include "bootstrap/bootstrap.h" #include "catalog/pg_control.h" #include "lib/ilist.h" diff --git a/src/backend/postmaster/startup.c b/src/backend/postmaster/startup.c index 7ebf500..1ea9d6a 100644 --- a/src/backend/postmaster/startup.c +++ b/src/backend/postmaster/startup.c @@ -22,7 +22,7 @@ #include <signal.h> #include <unistd.h> -#include "access/xlog.h" +#include "access/xlogproc.h" #include "libpq/pqsignal.h" #include "miscadmin.h" #include "postmaster/startup.h" diff --git a/src/backend/postmaster/walwriter.c b/src/backend/postmaster/walwriter.c index 8359da6..bdfe6ca 100644 --- a/src/backend/postmaster/walwriter.c +++ b/src/backend/postmaster/walwriter.c @@ -46,7 +46,7 @@ #include <time.h> #include <unistd.h> -#include "access/xlog.h" +#include "access/xlogproc.h" #include "libpq/pqsignal.h" #include "miscadmin.h" #include "postmaster/walwriter.h" diff --git a/src/backend/replication/walreceiver.c b/src/backend/replication/walreceiver.c index 911a66b..60e6d8d 100644 --- a/src/backend/replication/walreceiver.c +++ b/src/backend/replication/walreceiver.c @@ -49,6 +49,7 @@ #include "access/timeline.h" #include "access/transam.h" #include "access/xlog_internal.h" +#include "access/xlogproc.h" #include "libpq/pqformat.h" #include "libpq/pqsignal.h" #include "miscadmin.h" diff --git a/src/backend/utils/init/postinit.c b/src/backend/utils/init/postinit.c index 8427006..22a9248 100644 --- a/src/backend/utils/init/postinit.c +++ b/src/backend/utils/init/postinit.c @@ -23,6 +23,7 @@ #include "access/htup_details.h" #include "access/sysattr.h" #include "access/xact.h" +#include "access/xlogproc.h" #include "catalog/catalog.h" #include "catalog/indexing.h" #include "catalog/namespace.h" diff --git a/src/backend/utils/misc/guc.c b/src/backend/utils/misc/guc.c index 98149fc..6a90657 100644 --- a/src/backend/utils/misc/guc.c +++ b/src/backend/utils/misc/guc.c @@ -30,6 +30,7 @@ #include "access/transam.h" #include "access/twophase.h" #include "access/xact.h" +#include "access/xlogproc.h" #include "catalog/namespace.h" #include "commands/async.h" #include "commands/prepare.h" diff --git a/src/bin/pg_controldata/pg_controldata.c b/src/bin/pg_controldata/pg_controldata.c index cab2568..1e42f1e 100644 --- a/src/bin/pg_controldata/pg_controldata.c +++ b/src/bin/pg_controldata/pg_controldata.c @@ -8,15 +8,7 @@ * * src/bin/pg_controldata/pg_controldata.c */ - -/* - * We have to use postgres.h not postgres_fe.h here, because there's so much - * backend-only stuff in the XLOG include files we need. But we need a - * frontend-ish environment otherwise. Hence this ugly hack. - */ -#define FRONTEND 1 - -#include "postgres.h" +#include "postgres_fe.h" #include <unistd.h> #include <time.h> diff --git a/src/include/access/xlog.h b/src/include/access/xlog.h index 8a65492..a7fde17 100644 --- a/src/include/access/xlog.h +++ b/src/include/access/xlog.h @@ -184,9 +184,6 @@ extern bool reachedConsistency; extern int CheckPointSegments; extern int wal_keep_segments; extern int XLOGbuffers; -extern int XLogArchiveTimeout; -extern bool XLogArchiveMode; -extern char *XLogArchiveCommand; extern bool EnableHotStandby; extern bool fullPageWrites; extern bool log_checkpoints; @@ -200,9 +197,6 @@ typedef enum WalLevel } WalLevel; extern int wal_level; -#define XLogArchivingActive() (XLogArchiveMode && wal_level >= WAL_LEVEL_ARCHIVE) -#define XLogArchiveCommandSet() (XLogArchiveCommand[0] != '\0') - /* * Is WAL-logging necessary for archival or log-shipping, or can we skip * WAL-logging if we fsync() the data before committing instead? @@ -262,7 +256,6 @@ extern CheckpointStatsData CheckpointStats; extern XLogRecPtr XLogInsert(RmgrId rmid, uint8 info, XLogRecData *rdata); extern void XLogFlush(XLogRecPtr RecPtr); -extern bool XLogBackgroundFlush(void); extern bool XLogNeedsFlush(XLogRecPtr RecPtr); extern int XLogFileInit(XLogSegNo segno, bool *use_existent, bool use_lock); extern int XLogFileOpen(XLogSegNo segno); @@ -297,10 +290,6 @@ extern uint64 GetSystemIdentifier(void); extern XLogRecPtr GetFakeLSNForUnloggedRel(void); extern Size XLOGShmemSize(void); extern void XLOGShmemInit(void); -extern void BootStrapXLOG(void); -extern void StartupXLOG(void); -extern void ShutdownXLOG(int code, Datum arg); -extern void InitXLOGAccess(void); extern void CreateCheckPoint(int flags); extern bool CreateRestartPoint(int flags); extern void XLogPutNextOid(Oid nextOid); @@ -311,10 +300,6 @@ extern XLogRecPtr GetInsertRecPtr(void); extern XLogRecPtr GetFlushRecPtr(void); extern void GetNextXidAndEpoch(TransactionId *xid, uint32 *epoch); -extern bool CheckPromoteSignal(void); -extern void WakeupRecovery(void); -extern void SetWalWriterSleeping(bool sleeping); - /* * Starting/stopping a base backup */ diff --git a/src/include/access/xlogproc.h b/src/include/access/xlogproc.h new file mode 100644 index 0000000..67a250d --- /dev/null +++ b/src/include/access/xlogproc.h @@ -0,0 +1,34 @@ +/* + * xlogproc.h + * + * Process control for the PostgreSQL transaction log manager + * + * Portions Copyright (c) 1996-2013, PostgreSQL Global Development Group + * Portions Copyright (c) 1994, Regents of the University of California + * + * src/include/access/xlogproc.h + */ +#ifndef XLOGPROC_H +#define XLOGPROC_H + + +/* these variables are GUC parameters related to XLOG */ +extern int XLogArchiveTimeout; +extern bool XLogArchiveMode; +extern char *XLogArchiveCommand; + +#define XLogArchivingActive() (XLogArchiveMode && wal_level >= WAL_LEVEL_ARCHIVE) +#define XLogArchiveCommandSet() (XLogArchiveCommand[0] != '\0') + + +extern void BootStrapXLOG(void); +extern void StartupXLOG(void); +extern void InitXLOGAccess(void); +extern void ShutdownXLOG(int code, Datum arg); + +extern bool XLogBackgroundFlush(void); +extern bool CheckPromoteSignal(void); +extern void WakeupRecovery(void); +extern void SetWalWriterSleeping(bool sleeping); + +#endif /* XLOGPROC_H */
-- Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers