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

📄 trx0undo.h

📁 这是linux下运行的mysql软件包,可用于linux 下安装 php + mysql + apach 的网络配置
💻 H
📖 第 1 页 / 共 2 页
字号:
	trx_t*		trx,	/* in: transaction */	trx_undo_t*	undo,	/* in: undo log memory copy */	mtr_t*		mtr);	/* in: mtr *//**************************************************************************Adds the update undo log header as the first in the history list, andfrees the memory object, or puts it to the list of cached update undo logsegments. */voidtrx_undo_update_cleanup(/*====================*/	trx_t*	trx,		/* in: trx owning the update undo log */	page_t*	undo_page,	/* in: update undo log header page,				x-latched */	mtr_t*	mtr);		/* in: mtr *//**********************************************************************Frees or caches an insert undo log after a transaction commit or rollback.Knowledge of inserts is not needed after a commit or rollback, thereforethe data can be discarded. */voidtrx_undo_insert_cleanup(/*====================*/	trx_t*	trx);	/* in: transaction handle *//***************************************************************Parses the redo log entry of an undo log page initialization. */byte*trx_undo_parse_page_init(/*======================*/			/* out: end of log record or NULL */	byte*	ptr,	/* in: buffer */	byte*	end_ptr,/* in: buffer end */	page_t*	page,	/* in: page or NULL */	mtr_t*	mtr);	/* in: mtr or NULL *//***************************************************************Parses the redo log entry of an undo log page header create or reuse. */byte*trx_undo_parse_page_header(/*=======================*/			/* out: end of log record or NULL */	ulint	type,	/* in: MLOG_UNDO_HDR_CREATE or MLOG_UNDO_HDR_REUSE */	byte*	ptr,	/* in: buffer */	byte*	end_ptr,/* in: buffer end */	page_t*	page,	/* in: page or NULL */	mtr_t*	mtr);	/* in: mtr or NULL *//***************************************************************Parses the redo log entry of an undo log page header discard. */byte*trx_undo_parse_discard_latest(/*==========================*/			/* out: end of log record or NULL */	byte*	ptr,	/* in: buffer */	byte*	end_ptr,/* in: buffer end */	page_t*	page,	/* in: page or NULL */	mtr_t*	mtr);	/* in: mtr or NULL *//* Types of an undo log segment */#define	TRX_UNDO_INSERT		1	/* contains undo entries for inserts */#define	TRX_UNDO_UPDATE		2	/* contains undo entries for updates					and delete markings: in short,					modifys (the name 'UPDATE' is a					historical relic) *//* States of an undo log segment */#define TRX_UNDO_ACTIVE		1	/* contains an undo log of an active					transaction */#define	TRX_UNDO_CACHED		2	/* cached for quick reuse */#define	TRX_UNDO_TO_FREE	3	/* insert undo segment can be freed */#define	TRX_UNDO_TO_PURGE	4	/* update undo segment will not be					reused: it can be freed in purge when					all undo data in it is removed */#define	TRX_UNDO_PREPARED	5	/* contains an undo log of an 					prepared transaction *//* Transaction undo log memory object; this is protected by the undo_mutexin the corresponding transaction object */struct trx_undo_struct{	/*-----------------------------*/	ulint		id;		/* undo log slot number within the					rollback segment */	ulint		type;		/* TRX_UNDO_INSERT or					TRX_UNDO_UPDATE */	ulint		state;		/* state of the corresponding undo log					segment */	ibool		del_marks;	/* relevant only in an update undo log:					this is TRUE if the transaction may					have delete marked records, because of					a delete of a row or an update of an					indexed field; purge is then					necessary; also TRUE if the transaction					has updated an externally stored					field */	dulint		trx_id;		/* id of the trx assigned to the undo					log */	XID             xid;		/* X/Open XA transaction 					identification */	ibool		dict_operation;	/* TRUE if a dict operation trx */	dulint		table_id;	/* if a dict operation, then the table					id */	trx_rseg_t*	rseg;		/* rseg where the undo log belongs */	/*-----------------------------*/	ulint		space;		/* space id where the undo log					placed */	ulint		hdr_page_no;	/* page number of the header page in					the undo log */	ulint		hdr_offset;	/* header offset of the undo log on the					page */	ulint		last_page_no;	/* page number of the last page in the					undo log; this may differ from					top_page_no during a rollback */	ulint		size;		/* current size in pages */	/*-----------------------------*/	ulint		empty;		/* TRUE if the stack of undo log					records is currently empty */	ulint		top_page_no;	/* page number where the latest undo					log record was catenated; during					rollback the page from which the latest					undo record was chosen */	ulint		top_offset;	/* offset of the latest undo record,					i.e., the topmost element in the undo					log if we think of it as a stack */	dulint		top_undo_no;	/* undo number of the latest record */	page_t*		guess_page;	/* guess for the buffer frame where					the top page might reside */	/*-----------------------------*/	UT_LIST_NODE_T(trx_undo_t) undo_list;					/* undo log objects in the rollback					segment are chained into lists */};/* The offset of the undo log page header on pages of the undo log */#define	TRX_UNDO_PAGE_HDR	FSEG_PAGE_DATA/*-------------------------------------------------------------*//* Transaction undo log page header offsets */#define	TRX_UNDO_PAGE_TYPE	0	/* TRX_UNDO_INSERT or					TRX_UNDO_UPDATE */#define	TRX_UNDO_PAGE_START	2	/* Byte offset where the undo log					records for the LATEST transaction					start on this page (remember that					in an update undo log, the first page					can contain several undo logs) */#define	TRX_UNDO_PAGE_FREE	4	/* On each page of the undo log this					field contains the byte offset of the					first free byte on the page */#define TRX_UNDO_PAGE_NODE	6	/* The file list node in the chain					of undo log pages *//*-------------------------------------------------------------*/#define TRX_UNDO_PAGE_HDR_SIZE	(6 + FLST_NODE_SIZE)/* An update undo segment with just one page can be reused if it has< this number bytes used; we must leave space at least for one new undolog header on the page */#define TRX_UNDO_PAGE_REUSE_LIMIT	(3 * UNIV_PAGE_SIZE / 4)/* An update undo log segment may contain several undo logs on its first pageif the undo logs took so little space that the segment could be cached andreused. All the undo log headers are then on the first page, and the last oneowns the undo log records on subsequent pages if the segment is bigger thanone page. If an undo log is stored in a segment, then on the first page it isallowed to have zero undo records, but if the segment extends to severalpages, then all the rest of the pages must contain at least one undo logrecord. *//* The offset of the undo log segment header on the first page of the undolog segment */#define	TRX_UNDO_SEG_HDR	(TRX_UNDO_PAGE_HDR + TRX_UNDO_PAGE_HDR_SIZE)/*-------------------------------------------------------------*/#define	TRX_UNDO_STATE		0	/* TRX_UNDO_ACTIVE, ... */#define	TRX_UNDO_LAST_LOG	2	/* Offset of the last undo log header					on the segment header page, 0 if					none */#define	TRX_UNDO_FSEG_HEADER	4	/* Header for the file segment which					the undo log segment occupies */#define	TRX_UNDO_PAGE_LIST	(4 + FSEG_HEADER_SIZE)					/* Base node for the list of pages in					the undo log segment; defined only on					the undo log segment's first page *//*-------------------------------------------------------------*//* Size of the undo log segment header */#define TRX_UNDO_SEG_HDR_SIZE	(4 + FSEG_HEADER_SIZE + FLST_BASE_NODE_SIZE)/* The undo log header. There can be several undo log headers on the firstpage of an update undo log segment. *//*-------------------------------------------------------------*/#define	TRX_UNDO_TRX_ID		0	/* Transaction id */#define	TRX_UNDO_TRX_NO		8	/* Transaction number of the					transaction; defined only if the log					is in a history list */#define TRX_UNDO_DEL_MARKS	16	/* Defined only in an update undo					log: TRUE if the transaction may have					done delete markings of records, and					thus purge is necessary */#define	TRX_UNDO_LOG_START	18	/* Offset of the first undo log record					of this log on the header page; purge					may remove undo log record from the					log start, and therefore this is not					necessarily the same as this log					header end offset */#define	TRX_UNDO_XID_EXISTS	20	/* TRUE if undo log header includes					X/Open XA transaction identification					XID */#define	TRX_UNDO_DICT_TRANS	21	/* TRUE if the transaction is a table					create, index create, or drop					transaction: in recovery					the transaction cannot be rolled back					in the usual way: a 'rollback' rather					means dropping the created or dropped					table, if it still exists */#define TRX_UNDO_TABLE_ID	22	/* Id of the table if the preceding					field is TRUE */#define	TRX_UNDO_NEXT_LOG	30	/* Offset of the next undo log header					on this page, 0 if none */#define	TRX_UNDO_PREV_LOG	32	/* Offset of the previous undo log					header on this page, 0 if none */#define TRX_UNDO_HISTORY_NODE	34	/* If the log is put to the history					list, the file list node is here *//*-------------------------------------------------------------*/#define TRX_UNDO_LOG_OLD_HDR_SIZE (34 + FLST_NODE_SIZE)/* Note: the writing of the undo log old header is coded by a log recordMLOG_UNDO_HDR_CREATE or MLOG_UNDO_HDR_REUSE. The appending of an XID to theheader is logged separately. In this sense, the XID is not really a memberof the undo log header. TODO: do not append the XID to the log header if XAis not needed by the user. The XID wastes about 150 bytes of space in everyundo log. In the history list we may have millions of undo logs, which meansquite a large overhead. *//* X/Open XA Transaction Identification (XID)                  */#define	TRX_UNDO_XA_FORMAT	(TRX_UNDO_LOG_OLD_HDR_SIZE)#define	TRX_UNDO_XA_TRID_LEN	(TRX_UNDO_XA_FORMAT + 4)#define	TRX_UNDO_XA_BQUAL_LEN	(TRX_UNDO_XA_TRID_LEN + 4)#define	TRX_UNDO_XA_XID		(TRX_UNDO_XA_BQUAL_LEN + 4)/*--------------------------------------------------------------*/#define TRX_UNDO_LOG_XA_HDR_SIZE (TRX_UNDO_XA_XID + XIDDATASIZE)				/* Total size of the header with the XA XID */#ifndef UNIV_NONINL#include "trx0undo.ic"#endif#endif 

⌨️ 快捷键说明

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