diff --git a/src/backend/access/rmgrdesc/standbydesc.c b/src/backend/access/rmgrdesc/standbydesc.c new file mode 100644 index 3d35f38..acd590b *** a/src/backend/access/rmgrdesc/standbydesc.c --- b/src/backend/access/rmgrdesc/standbydesc.c *************** *** 14,20 **** */ #include "postgres.h" ! #include "storage/standby.h" static void standby_desc_running_xacts(StringInfo buf, xl_running_xacts *xlrec) --- 14,20 ---- */ #include "postgres.h" ! #include "storage/standbydefs.h" static void standby_desc_running_xacts(StringInfo buf, xl_running_xacts *xlrec) diff --git a/src/bin/pg_xlogdump/rmgrdesc.c b/src/bin/pg_xlogdump/rmgrdesc.c new file mode 100644 index 5b88a8d..f9cd395 *** a/src/bin/pg_xlogdump/rmgrdesc.c --- b/src/bin/pg_xlogdump/rmgrdesc.c *************** *** 27,33 **** #include "commands/tablespace.h" #include "replication/origin.h" #include "rmgrdesc.h" ! #include "storage/standby.h" #include "utils/relmapper.h" #define PG_RMGR(symname,name,redo,desc,identify,startup,cleanup) \ --- 27,33 ---- #include "commands/tablespace.h" #include "replication/origin.h" #include "rmgrdesc.h" ! #include "storage/standbydefs.h" #include "utils/relmapper.h" #define PG_RMGR(symname,name,redo,desc,identify,startup,cleanup) \ diff --git a/src/include/storage/standby.h b/src/include/storage/standby.h new file mode 100644 index 40b329b..f27a7ba *** a/src/include/storage/standby.h --- b/src/include/storage/standby.h *************** *** 14,22 **** #ifndef STANDBY_H #define STANDBY_H ! #include "access/xlogreader.h" ! #include "lib/stringinfo.h" ! #include "storage/lockdefs.h" #include "storage/procsignal.h" #include "storage/relfilenode.h" --- 14,20 ---- #ifndef STANDBY_H #define STANDBY_H ! #include "storage/standbydefs.h" #include "storage/procsignal.h" #include "storage/relfilenode.h" *************** extern void StandbyReleaseLockTree(Trans *** 51,91 **** extern void StandbyReleaseAllLocks(void); extern void StandbyReleaseOldLocks(int nxids, TransactionId *xids); - /* - * XLOG message types - */ - #define XLOG_STANDBY_LOCK 0x00 - #define XLOG_RUNNING_XACTS 0x10 - - typedef struct xl_standby_locks - { - int nlocks; /* number of entries in locks array */ - xl_standby_lock locks[FLEXIBLE_ARRAY_MEMBER]; - } xl_standby_locks; - - /* - * When we write running xact data to WAL, we use this structure. - */ - typedef struct xl_running_xacts - { - int xcnt; /* # of xact ids in xids[] */ - int subxcnt; /* # of subxact ids in xids[] */ - bool subxid_overflow; /* snapshot overflowed, subxids missing */ - TransactionId nextXid; /* copy of ShmemVariableCache->nextXid */ - TransactionId oldestRunningXid; /* *not* oldestXmin */ - TransactionId latestCompletedXid; /* so we can set xmax */ - - TransactionId xids[FLEXIBLE_ARRAY_MEMBER]; - } xl_running_xacts; - #define MinSizeOfXactRunningXacts offsetof(xl_running_xacts, xids) - /* Recovery handlers for the Standby Rmgr (RM_STANDBY_ID) */ - extern void standby_redo(XLogReaderState *record); - extern void standby_desc(StringInfo buf, XLogReaderState *record); - extern const char *standby_identify(uint8 info); - /* * Declarations for GetRunningTransactionData(). Similar to Snapshots, but * not quite. This has nothing at all to do with visibility on this server, --- 49,57 ---- diff --git a/src/include/storage/standbydefs.h b/src/include/storage/standbydefs.h new file mode 100644 index ...a2c9db8 *** a/src/include/storage/standbydefs.h --- b/src/include/storage/standbydefs.h *************** *** 0 **** --- 1,53 ---- + /*------------------------------------------------------------------------- + * + * standbydef.h + * Frontend exposed definitions for hot standby mode. + * + * + * Portions Copyright (c) 1996-2015, PostgreSQL Global Development Group + * Portions Copyright (c) 1994, Regents of the University of California + * + * src/include/storage/standbydefs.h + * + *------------------------------------------------------------------------- + */ + #ifndef STANDBYDEFS_H + #define STANDBYDEFS_H + + #include "access/xlogreader.h" + #include "lib/stringinfo.h" + #include "storage/lockdefs.h" + + /* Recovery handlers for the Standby Rmgr (RM_STANDBY_ID) */ + extern void standby_redo(XLogReaderState *record); + extern void standby_desc(StringInfo buf, XLogReaderState *record); + extern const char *standby_identify(uint8 info); + + /* + * XLOG message types + */ + #define XLOG_STANDBY_LOCK 0x00 + #define XLOG_RUNNING_XACTS 0x10 + + typedef struct xl_standby_locks + { + int nlocks; /* number of entries in locks array */ + xl_standby_lock locks[FLEXIBLE_ARRAY_MEMBER]; + } xl_standby_locks; + + /* + * When we write running xact data to WAL, we use this structure. + */ + typedef struct xl_running_xacts + { + int xcnt; /* # of xact ids in xids[] */ + int subxcnt; /* # of subxact ids in xids[] */ + bool subxid_overflow; /* snapshot overflowed, subxids missing */ + TransactionId nextXid; /* copy of ShmemVariableCache->nextXid */ + TransactionId oldestRunningXid; /* *not* oldestXmin */ + TransactionId latestCompletedXid; /* so we can set xmax */ + + TransactionId xids[FLEXIBLE_ARRAY_MEMBER]; + } xl_running_xacts; + + #endif /* STANDBYDEFS_H */