summaryrefslogtreecommitdiff
path: root/src/include/access/multixact.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/include/access/multixact.h')
-rw-r--r--src/include/access/multixact.h37
1 files changed, 33 insertions, 4 deletions
diff --git a/src/include/access/multixact.h b/src/include/access/multixact.h
index 65d19704c4..2199b05f2c 100644
--- a/src/include/access/multixact.h
+++ b/src/include/access/multixact.h
@@ -6,16 +6,38 @@
* Portions Copyright (c) 1996-2005, PostgreSQL Global Development Group
* Portions Copyright (c) 1994, Regents of the University of California
*
- * $PostgreSQL: pgsql/src/include/access/multixact.h,v 1.2 2005/05/03 19:42:41 tgl Exp $
+ * $PostgreSQL: pgsql/src/include/access/multixact.h,v 1.3 2005/06/08 15:50:28 tgl Exp $
*/
#ifndef MULTIXACT_H
#define MULTIXACT_H
+#include "access/xlog.h"
+
#define InvalidMultiXactId ((MultiXactId) 0)
#define FirstMultiXactId ((MultiXactId) 1)
#define MultiXactIdIsValid(multi) ((multi) != InvalidMultiXactId)
+/* ----------------
+ * multixact-related XLOG entries
+ * ----------------
+ */
+
+#define XLOG_MULTIXACT_ZERO_OFF_PAGE 0x00
+#define XLOG_MULTIXACT_ZERO_MEM_PAGE 0x10
+#define XLOG_MULTIXACT_CREATE_ID 0x20
+
+typedef struct xl_multixact_create
+{
+ MultiXactId mid; /* new MultiXact's ID */
+ MultiXactOffset moff; /* its starting offset in members file */
+ int32 nxids; /* number of member XIDs */
+ TransactionId xids[1]; /* VARIABLE LENGTH ARRAY */
+} xl_multixact_create;
+
+#define MinSizeOfMultiXactCreate offsetof(xl_multixact_create, xids)
+
+
extern MultiXactId MultiXactIdCreate(TransactionId xid1, TransactionId xid2);
extern MultiXactId MultiXactIdExpand(MultiXactId multi, TransactionId xid);
extern bool MultiXactIdIsRunning(MultiXactId multi);
@@ -29,9 +51,16 @@ extern void MultiXactShmemInit(void);
extern void BootStrapMultiXact(void);
extern void StartupMultiXact(void);
extern void ShutdownMultiXact(void);
-extern MultiXactId MultiXactGetCheckptMulti(bool is_shutdown);
+extern void MultiXactGetCheckptMulti(bool is_shutdown,
+ MultiXactId *nextMulti,
+ MultiXactOffset *nextMultiOffset);
extern void CheckPointMultiXact(void);
-extern void MultiXactSetNextMXact(MultiXactId nextMulti);
-extern void MultiXactAdvanceNextMXact(MultiXactId minMulti);
+extern void MultiXactSetNextMXact(MultiXactId nextMulti,
+ MultiXactOffset nextMultiOffset);
+extern void MultiXactAdvanceNextMXact(MultiXactId minMulti,
+ MultiXactOffset minMultiOffset);
+
+extern void multixact_redo(XLogRecPtr lsn, XLogRecord *record);
+extern void multixact_desc(char *buf, uint8 xl_info, char *rec);
#endif /* MULTIXACT_H */