⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 transam.h

📁 PostgreSQL 8.1.4的源码 适用于Linux下的开源数据库系统
💻 H
字号:
/*------------------------------------------------------------------------- * * transam.h *	  postgres transaction access method support code * * * Portions Copyright (c) 1996-2005, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * $PostgreSQL: pgsql/src/include/access/transam.h,v 1.56 2005/10/15 02:49:42 momjian Exp $ * *------------------------------------------------------------------------- */#ifndef TRANSAM_H#define TRANSAM_H/* ---------------- *		Special transaction ID values * * BootstrapTransactionId is the XID for "bootstrap" operations, and * FrozenTransactionId is used for very old tuples.  Both should * always be considered valid. * * FirstNormalTransactionId is the first "normal" transaction id. * ---------------- */#define InvalidTransactionId		((TransactionId) 0)#define BootstrapTransactionId		((TransactionId) 1)#define FrozenTransactionId			((TransactionId) 2)#define FirstNormalTransactionId	((TransactionId) 3)#define MaxTransactionId			((TransactionId) 0xFFFFFFFF)/* ---------------- *		transaction ID manipulation macros * ---------------- */#define TransactionIdIsValid(xid)		((xid) != InvalidTransactionId)#define TransactionIdIsNormal(xid)		((xid) >= FirstNormalTransactionId)#define TransactionIdEquals(id1, id2)	((id1) == (id2))#define TransactionIdStore(xid, dest)	(*(dest) = (xid))#define StoreInvalidTransactionId(dest) (*(dest) = InvalidTransactionId)/* advance a transaction ID variable, handling wraparound correctly */#define TransactionIdAdvance(dest)	\	do { \		(dest)++; \		if ((dest) < FirstNormalTransactionId) \			(dest) = FirstNormalTransactionId; \	} while(0)/* ---------- *		Object ID (OID) zero is InvalidOid. * *		OIDs 1-9999 are reserved for manual assignment (see the files *		in src/include/catalog/). * *		OIDS 10000-16383 are reserved for assignment during initdb *		using the OID generator.  (We start the generator at 10000.) * *		OIDs beginning at 16384 are assigned from the OID generator *		during normal multiuser operation.	(We force the generator up to *		16384 as soon as we are in normal operation.) * * The choices of 10000 and 16384 are completely arbitrary, and can be moved * if we run low on OIDs in either category.  Changing the macros below * should be sufficient to do this. * * NOTE: if the OID generator wraps around, we skip over OIDs 0-16383 * and resume with 16384.  This minimizes the odds of OID conflict, by not * reassigning OIDs that might have been assigned during initdb. * ---------- */#define FirstBootstrapObjectId	10000#define FirstNormalObjectId		16384/* * VariableCache is placed in shmem and used by * backends to get next available OID & XID. * * Note: xidWrapLimit and limit_datname are not "active" values, but are * used just to generate useful messages when xidWarnLimit or xidStopLimit * are exceeded. */typedef struct VariableCacheData{	Oid			nextOid;		/* next OID to assign */	uint32		oidCount;		/* OIDs available before must do XLOG work */	TransactionId nextXid;		/* next XID to assign */	TransactionId xidWarnLimit; /* start complaining here */	TransactionId xidStopLimit; /* refuse to advance nextXid beyond here */	TransactionId xidWrapLimit; /* where the world ends */	NameData	limit_datname;	/* database that needs vacuumed first */} VariableCacheData;typedef VariableCacheData *VariableCache;/* ---------------- *		extern declarations * ---------------- *//* in transam/varsup.c */extern VariableCache ShmemVariableCache;/* * prototypes for functions in transam/transam.c */extern bool TransactionIdDidCommit(TransactionId transactionId);extern bool TransactionIdDidAbort(TransactionId transactionId);extern void TransactionIdCommit(TransactionId transactionId);extern void TransactionIdAbort(TransactionId transactionId);extern void TransactionIdSubCommit(TransactionId transactionId);extern void TransactionIdCommitTree(int nxids, TransactionId *xids);extern void TransactionIdAbortTree(int nxids, TransactionId *xids);extern bool TransactionIdPrecedes(TransactionId id1, TransactionId id2);extern bool TransactionIdPrecedesOrEquals(TransactionId id1, TransactionId id2);extern bool TransactionIdFollows(TransactionId id1, TransactionId id2);extern bool TransactionIdFollowsOrEquals(TransactionId id1, TransactionId id2);/* in transam/varsup.c */extern TransactionId GetNewTransactionId(bool isSubXact);extern TransactionId ReadNewTransactionId(void);extern void SetTransactionIdLimit(TransactionId oldest_datfrozenxid,					  Name oldest_datname);extern Oid	GetNewObjectId(void);#endif   /* TRAMSAM_H */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -