From 2589735da08c4e597accb6eab5ae65b6339ee630 Mon Sep 17 00:00:00 2001 From: Tom Lane Date: Sat, 25 Aug 2001 18:52:43 +0000 Subject: Replace implementation of pg_log as a relation accessed through the buffer manager with 'pg_clog', a specialized access method modeled on pg_xlog. This simplifies startup (don't need to play games to open pg_log; among other things, OverrideTransactionSystem goes away), should improve performance a little, and opens the door to recycling commit log space by removing no-longer-needed segments of the commit log. Actual recycling is not there yet, but I felt I should commit this part separately since it'd still be useful if we chose not to do transaction ID wraparound. --- src/include/access/clog.h | 47 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 src/include/access/clog.h (limited to 'src/include/access/clog.h') diff --git a/src/include/access/clog.h b/src/include/access/clog.h new file mode 100644 index 00000000000..4e44e8036cf --- /dev/null +++ b/src/include/access/clog.h @@ -0,0 +1,47 @@ +/* + * clog.h + * + * PostgreSQL transaction-commit-log manager + * + * Portions Copyright (c) 1996-2001, PostgreSQL Global Development Group + * Portions Copyright (c) 1994, Regents of the University of California + * + * $Id: clog.h,v 1.1 2001/08/25 18:52:42 tgl Exp $ + */ +#ifndef CLOG_H +#define CLOG_H + +#include "access/xlog.h" + +/* + * Possible transaction statuses --- note that all-zeroes is the initial + * state. + */ +typedef int XidStatus; + +#define TRANSACTION_STATUS_IN_PROGRESS 0x00 +#define TRANSACTION_STATUS_COMMITTED 0x01 +#define TRANSACTION_STATUS_ABORTED 0x02 +/* 0x03 is available without changing commit log space allocation */ + + +extern void TransactionIdSetStatus(TransactionId xid, XidStatus status); +extern XidStatus TransactionIdGetStatus(TransactionId xid); + +extern int CLOGShmemSize(void); +extern void CLOGShmemInit(void); +extern void BootStrapCLOG(void); +extern void StartupCLOG(void); +extern void ShutdownCLOG(void); +extern void CheckPointCLOG(void); +extern void ExtendCLOG(TransactionId newestXact); +extern void TruncateCLOG(TransactionId oldestXact); + +/* XLOG stuff */ +#define CLOG_ZEROPAGE 0x00 + +extern void clog_redo(XLogRecPtr lsn, XLogRecord *record); +extern void clog_undo(XLogRecPtr lsn, XLogRecord *record); +extern void clog_desc(char *buf, uint8 xl_info, char *rec); + +#endif /* CLOG_H */ -- cgit v1.2.3