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

📄 xact.h

📁 PostgreSQL 8.1.4的源码 适用于Linux下的开源数据库系统
💻 H
字号:
/*------------------------------------------------------------------------- * * xact.h *	  postgres transaction system definitions * * * Portions Copyright (c) 1996-2005, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * $PostgreSQL: pgsql/src/include/access/xact.h,v 1.79 2005/10/15 02:49:42 momjian Exp $ * *------------------------------------------------------------------------- */#ifndef XACT_H#define XACT_H#include "access/xlog.h"#include "storage/relfilenode.h"#include "nodes/pg_list.h"#include "utils/timestamp.h"/* * Xact isolation levels */#define XACT_READ_UNCOMMITTED	0#define XACT_READ_COMMITTED		1#define XACT_REPEATABLE_READ	2#define XACT_SERIALIZABLE		3extern int	DefaultXactIsoLevel;extern int	XactIsoLevel;/* * We only implement two isolation levels internally.  This macro should * be used to check which one is selected. */#define IsXactIsoLevelSerializable (XactIsoLevel >= XACT_REPEATABLE_READ)/* Xact read-only state */extern bool DefaultXactReadOnly;extern bool XactReadOnly;/* *	start- and end-of-transaction callbacks for dynamically loaded modules */typedef enum{	XACT_EVENT_COMMIT,	XACT_EVENT_ABORT,	XACT_EVENT_PREPARE} XactEvent;typedef void (*XactCallback) (XactEvent event, void *arg);typedef enum{	SUBXACT_EVENT_START_SUB,	SUBXACT_EVENT_COMMIT_SUB,	SUBXACT_EVENT_ABORT_SUB} SubXactEvent;typedef void (*SubXactCallback) (SubXactEvent event, SubTransactionId mySubid,									SubTransactionId parentSubid, void *arg);/* ---------------- *		transaction-related XLOG entries * ---------------- *//* * XLOG allows to store some information in high 4 bits of log * record xl_info field */#define XLOG_XACT_COMMIT			0x00#define XLOG_XACT_PREPARE			0x10#define XLOG_XACT_ABORT				0x20#define XLOG_XACT_COMMIT_PREPARED	0x30#define XLOG_XACT_ABORT_PREPARED	0x40typedef struct xl_xact_commit{	time_t		xtime;	int			nrels;			/* number of RelFileNodes */	int			nsubxacts;		/* number of subtransaction XIDs */	/* Array of RelFileNode(s) to drop at commit */	RelFileNode xnodes[1];		/* VARIABLE LENGTH ARRAY */	/* ARRAY OF COMMITTED SUBTRANSACTION XIDs FOLLOWS */} xl_xact_commit;#define MinSizeOfXactCommit offsetof(xl_xact_commit, xnodes)typedef struct xl_xact_abort{	time_t		xtime;	int			nrels;			/* number of RelFileNodes */	int			nsubxacts;		/* number of subtransaction XIDs */	/* Array of RelFileNode(s) to drop at abort */	RelFileNode xnodes[1];		/* VARIABLE LENGTH ARRAY */	/* ARRAY OF ABORTED SUBTRANSACTION XIDs FOLLOWS */} xl_xact_abort;#define MinSizeOfXactAbort offsetof(xl_xact_abort, xnodes)/* * COMMIT_PREPARED and ABORT_PREPARED are identical to COMMIT/ABORT records * except that we have to store the XID of the prepared transaction explicitly * --- the XID in the record header will be for the transaction doing the * COMMIT PREPARED or ABORT PREPARED command. */typedef struct xl_xact_commit_prepared{	TransactionId xid;			/* XID of prepared xact */	xl_xact_commit crec;		/* COMMIT record */	/* MORE DATA FOLLOWS AT END OF STRUCT */} xl_xact_commit_prepared;#define MinSizeOfXactCommitPrepared offsetof(xl_xact_commit_prepared, crec.xnodes)typedef struct xl_xact_abort_prepared{	TransactionId xid;			/* XID of prepared xact */	xl_xact_abort arec;			/* ABORT record */	/* MORE DATA FOLLOWS AT END OF STRUCT */} xl_xact_abort_prepared;#define MinSizeOfXactAbortPrepared offsetof(xl_xact_abort_prepared, arec.xnodes)/* ---------------- *		extern definitions * ---------------- */extern bool IsTransactionState(void);extern bool IsAbortedTransactionBlockState(void);extern TransactionId GetTopTransactionId(void);extern TransactionId GetCurrentTransactionId(void);extern TransactionId GetCurrentTransactionIdIfAny(void);extern SubTransactionId GetCurrentSubTransactionId(void);extern CommandId GetCurrentCommandId(void);extern TimestampTz GetCurrentTransactionStartTimestamp(void);extern int	GetCurrentTransactionNestLevel(void);extern bool TransactionIdIsCurrentTransactionId(TransactionId xid);extern void CommandCounterIncrement(void);extern void StartTransactionCommand(void);extern void CommitTransactionCommand(void);extern void AbortCurrentTransaction(void);extern void BeginTransactionBlock(void);extern bool EndTransactionBlock(void);extern bool PrepareTransactionBlock(char *gid);extern void UserAbortTransactionBlock(void);extern void ReleaseSavepoint(List *options);extern void DefineSavepoint(char *name);extern void RollbackToSavepoint(List *options);extern void BeginInternalSubTransaction(char *name);extern void ReleaseCurrentSubTransaction(void);extern void RollbackAndReleaseCurrentSubTransaction(void);extern bool IsSubTransaction(void);extern bool IsTransactionBlock(void);extern bool IsTransactionOrTransactionBlock(void);extern char TransactionBlockStatusCode(void);extern void AbortOutOfAnyTransaction(void);extern void PreventTransactionChain(void *stmtNode, const char *stmtType);extern void RequireTransactionChain(void *stmtNode, const char *stmtType);extern bool IsInTransactionChain(void *stmtNode);extern void RegisterXactCallback(XactCallback callback, void *arg);extern void UnregisterXactCallback(XactCallback callback, void *arg);extern void RegisterSubXactCallback(SubXactCallback callback, void *arg);extern void UnregisterSubXactCallback(SubXactCallback callback, void *arg);extern void RecordTransactionCommit(void);extern int	xactGetCommittedChildren(TransactionId **ptr);extern void xact_redo(XLogRecPtr lsn, XLogRecord *record);extern void xact_desc(char *buf, uint8 xl_info, char *rec);#endif   /* XACT_H */

⌨️ 快捷键说明

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