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

📄 transam.h

📁 关系型数据库 Postgresql 6.5.2
💻 H
字号:
/*------------------------------------------------------------------------- * * transam.h *	  postgres transaction access method support code header * * * Copyright (c) 1994, Regents of the University of California * * $Id: transam.h,v 1.22.2.1 1999/07/30 18:26:59 scrappy Exp $ * *	 NOTES *		Transaction System Version 101 now support proper oid *		generation and recording in the variable relation. * *------------------------------------------------------------------------- */#ifndef TRANSAM_H#define TRANSAM_H#include "storage/bufmgr.h"/* ---------------- *		transaction system version id * *		this is stored on the first page of the log, time and variable *		relations on the first 4 bytes.  This is so that if we improve *		the format of the transaction log after postgres version 2, then *		people won't have to rebuild their databases. * *		TRANS_SYSTEM_VERSION 100 means major version 1 minor version 0. *		Two databases with the same major version should be compatible, *		even if their minor versions differ. * ---------------- */#define TRANS_SYSTEM_VERSION	200/* ---------------- *		transaction id status values * *		someday we will use "11" = 3 = XID_COMMIT_CHILD to mean the *		commiting of child xactions. * ---------------- */#define XID_COMMIT			2	/* transaction commited */#define XID_ABORT			1	/* transaction aborted */#define XID_INPROGRESS		0	/* transaction in progress */#define XID_COMMIT_CHILD	3	/* child xact commited */typedef unsigned char XidStatus;/* (2 bits) *//* ---------- *		note: we reserve the first 16384 object ids for internal use. *		oid's less than this appear in the .bki files.  the choice of *		16384 is completely arbitrary. * ---------- */#define BootstrapObjectIdData 16384/* ---------------- *		BitIndexOf computes the index of the Nth xid on a given block * ---------------- */#define BitIndexOf(N)	((N) * 2)/* ---------------- *		transaction page definitions * ---------------- */#define TP_DataSize				BLCKSZ#define TP_NumXidStatusPerBlock (TP_DataSize * 4)/* ---------------- *		LogRelationContents structure * *		This structure describes the storage of the data in the *		first 128 bytes of the log relation.  This storage is never *		used for transaction status because transaction id's begin *		their numbering at 512. * *		The first 4 bytes of this relation store the version *		number of the transction system. * ---------------- */typedef struct LogRelationContentsData{	int			TransSystemVersion;} LogRelationContentsData;typedef LogRelationContentsData *LogRelationContents;/* ---------------- *		VariableRelationContents structure * *		The variable relation is a special "relation" which *		is used to store various system "variables" persistantly. *		Unlike other relations in the system, this relation *		is updated in place whenever the variables change. * *		The first 4 bytes of this relation store the version *		number of the transction system. * *		Currently, the relation has only one page and the next *		available xid, the last committed xid and the next *		available oid are stored there. * ---------------- */typedef struct VariableRelationContentsData{	int			TransSystemVersion;	TransactionId nextXidData;	TransactionId lastXidData;	/* unused */	Oid			nextOid;} VariableRelationContentsData;typedef VariableRelationContentsData *VariableRelationContents;/* * VariableCache is placed in shmem and used by backends to * get next available XID & OID without access to * variable relation. Actually, I would like to have two * different on-disk storages for next XID and OID... * But hoping that someday we will use per database OID * generator I leaved this as is.	- vadim 07/21/98 */typedef struct VariableCacheData{	uint32		xid_count;	TransactionId nextXid;	uint32		oid_count;		/* not implemented, yet */	Oid			nextOid;} VariableCacheData;typedef VariableCacheData *VariableCache;/* ---------------- *		extern declarations * ---------------- *//* * prototypes for functions in transam/transam.c */extern void InitializeTransactionLog(void);extern bool TransactionIdDidCommit(TransactionId transactionId);extern bool TransactionIdDidAbort(TransactionId transactionId);extern void TransactionIdCommit(TransactionId transactionId);extern void TransactionIdAbort(TransactionId transactionId);/* in transam/transsup.c */extern void AmiTransactionOverride(bool flag);extern void TransComputeBlockNumber(Relation relation,			  TransactionId transactionId, BlockNumber *blockNumberOutP);extern XidStatus TransBlockNumberGetXidStatus(Relation relation,				BlockNumber blockNumber, TransactionId xid, bool *failP);extern void TransBlockNumberSetXidStatus(Relation relation,		   BlockNumber blockNumber, TransactionId xid, XidStatus xstatus,							 bool *failP);/* in transam/varsup.c */extern void VariableRelationPutNextXid(TransactionId xid);extern void GetNewTransactionId(TransactionId *xid);extern void ReadNewTransactionId(TransactionId *xid);extern void GetNewObjectId(Oid *oid_return);extern void CheckMaxObjectId(Oid assigned_oid);/* ---------------- *		global variable extern declarations * ---------------- *//* in transam.c */extern Relation LogRelation;extern Relation VariableRelation;extern TransactionId cachedTestXid;extern XidStatus cachedTestXidStatus;extern TransactionId NullTransactionId;extern TransactionId AmiTransactionId;extern TransactionId FirstTransactionId;extern int	RecoveryCheckingEnableState;/* in transsup.c */extern bool AMI_OVERRIDE;/* in varsup.c */extern int	OidGenLockId;#endif	 /* TRAMSAM_H */

⌨️ 快捷键说明

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