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

📄 row0row.h

📁 这是linux下运行的mysql软件包,可用于linux 下安装 php + mysql + apach 的网络配置
💻 H
字号:
/******************************************************General row routines(c) 1996 Innobase OyCreated 4/20/1996 Heikki Tuuri*******************************************************/#ifndef row0row_h#define row0row_h#include "univ.i"#include "data0data.h"#include "dict0types.h"#include "trx0types.h"#include "que0types.h"#include "mtr0mtr.h"	#include "rem0types.h"#include "read0types.h"#include "btr0types.h"/*************************************************************************Reads the trx id field from a clustered index record. */UNIV_INLINEdulintrow_get_rec_trx_id(/*===============*/				/* out: value of the field */	rec_t*		rec,	/* in: record */	dict_index_t*	index,	/* in: clustered index */	const ulint*	offsets);/* in: rec_get_offsets(rec, index) *//*************************************************************************Reads the roll pointer field from a clustered index record. */UNIV_INLINEdulintrow_get_rec_roll_ptr(/*=================*/				/* out: value of the field */	rec_t*		rec,	/* in: record */	dict_index_t*	index,	/* in: clustered index */	const ulint*	offsets);/* in: rec_get_offsets(rec, index) *//*************************************************************************Writes the trx id field to a clustered index record. */UNIV_INLINEvoidrow_set_rec_trx_id(/*===============*/	rec_t*		rec,	/* in: record */	dict_index_t*	index,	/* in: clustered index */	const ulint*	offsets,/* in: rec_get_offsets(rec, index) */	dulint		trx_id);/* in: value of the field *//*************************************************************************Sets the roll pointer field in a clustered index record. */UNIV_INLINEvoidrow_set_rec_roll_ptr(/*=================*/	rec_t*		rec,	/* in: record */	dict_index_t*	index,	/* in: clustered index */	const ulint*	offsets,/* in: rec_get_offsets(rec, index) */	dulint		roll_ptr);/* in: value of the field *//*********************************************************************When an insert to a table is performed, this function builds the entry whichhas to be inserted to an index on the table. */dtuple_t*row_build_index_entry(/*==================*/				/* out: index entry which should be inserted */	dtuple_t*	row, 	/* in: row which should be inserted to the				table */	dict_index_t*	index, 	/* in: index on the table */	mem_heap_t*	heap);	/* in: memory heap from which the memory for				the index entry is allocated *//***********************************************************************An inverse function to dict_row_build_index_entry. Builds a row from arecord in a clustered index. */dtuple_t*row_build(/*======*/				/* out, own: row built; see the NOTE below! */	ulint		type,	/* in: ROW_COPY_POINTERS, ROW_COPY_DATA, or				ROW_COPY_ALSO_EXTERNALS, 				the two last copy also the data fields to				heap as the first only places pointers to				data fields on the index page, and thus is				more efficient */	dict_index_t*	index,	/* in: clustered index */	rec_t*		rec,	/* in: record in the clustered index;				NOTE: in the case ROW_COPY_POINTERS				the data fields in the row will point				directly into this record, therefore,				the buffer page of this record must be				at least s-latched and the latch held				as long as the row dtuple is used! */	const ulint*	offsets,/* in: rec_get_offsets(rec, index)				or NULL, in which case this function				will invoke rec_get_offsets() */	mem_heap_t*	heap);	/* in: memory heap from which the memory				needed is allocated *//***********************************************************************Converts an index record to a typed data tuple. */dtuple_t*row_rec_to_index_entry(/*===================*/				/* out, own: index entry built; see the				NOTE below! */	ulint		type,	/* in: ROW_COPY_DATA, or ROW_COPY_POINTERS:				the former copies also the data fields to				heap as the latter only places pointers to				data fields on the index page */	dict_index_t*	index,	/* in: index */	rec_t*		rec,	/* in: record in the index;				NOTE: in the case ROW_COPY_POINTERS				the data fields in the row will point				directly into this record, therefore,				the buffer page of this record must be				at least s-latched and the latch held				as long as the dtuple is used! */	mem_heap_t*	heap);	/* in: memory heap from which the memory				needed is allocated *//***********************************************************************Builds from a secondary index record a row reference with which we cansearch the clustered index record. */dtuple_t*row_build_row_ref(/*==============*/				/* out, own: row reference built; see the				NOTE below! */	ulint		type,	/* in: ROW_COPY_DATA, or ROW_COPY_POINTERS:				the former copies also the data fields to				heap, whereas the latter only places pointers				to data fields on the index page */	dict_index_t*	index,	/* in: index */	rec_t*		rec,	/* in: record in the index;				NOTE: in the case ROW_COPY_POINTERS				the data fields in the row will point				directly into this record, therefore,				the buffer page of this record must be				at least s-latched and the latch held				as long as the row reference is used! */	mem_heap_t*	heap);	/* in: memory heap from which the memory				needed is allocated *//***********************************************************************Builds from a secondary index record a row reference with which we cansearch the clustered index record. */voidrow_build_row_ref_in_tuple(/*=======================*/	dtuple_t*	ref,	/* in/out: row reference built; see the				NOTE below! */	dict_index_t*	index,	/* in: index */	rec_t*		rec,	/* in: record in the index;				NOTE: the data fields in ref will point				directly into this record, therefore,				the buffer page of this record must be				at least s-latched and the latch held				as long as the row reference is used! */	trx_t*		trx);	/* in: transaction *//***********************************************************************From a row build a row reference with which we can search the clusteredindex record. */voidrow_build_row_ref_from_row(/*=======================*/	dtuple_t*	ref,	/* in/out: row reference built; see the				NOTE below! ref must have the right number				of fields! */	dict_table_t*	table,	/* in: table */	dtuple_t*	row);	/* in: row				NOTE: the data fields in ref will point				directly into data of this row *//***********************************************************************Builds from a secondary index record a row reference with which we cansearch the clustered index record. */UNIV_INLINEvoidrow_build_row_ref_fast(/*===================*/	dtuple_t*	ref,	/* in: typed data tuple where the				reference is built */	const ulint*	map,	/* in: array of field numbers in rec				telling how ref should be built from				the fields of rec */	rec_t*		rec,	/* in: record in the index; must be				preserved while ref is used, as we do				not copy field values to heap */	const ulint*	offsets);/* in: array returned by rec_get_offsets() *//*******************************************************************Searches the clustered index record for a row, if we have the rowreference. */iboolrow_search_on_row_ref(/*==================*/				/* out: TRUE if found */	btr_pcur_t*	pcur,	/* in/out: persistent cursor, which must				be closed by the caller */	ulint		mode,	/* in: BTR_MODIFY_LEAF, ... */	dict_table_t*	table,	/* in: table */	dtuple_t*	ref,	/* in: row reference */	mtr_t*		mtr);	/* in: mtr *//*************************************************************************Fetches the clustered index record for a secondary index record. The latcheson the secondary index record are preserved. */rec_t*row_get_clust_rec(/*==============*/				/* out: record or NULL, if no record found */	ulint		mode,	/* in: BTR_MODIFY_LEAF, ... */	rec_t*		rec,	/* in: record in a secondary index */	dict_index_t*	index,	/* in: secondary index */	dict_index_t**	clust_index,/* out: clustered index */	mtr_t*		mtr);	/* in: mtr *//*******************************************************************Searches an index record. */iboolrow_search_index_entry(/*===================*/				/* out: TRUE if found */	dict_index_t*	index,	/* in: index */	dtuple_t*	entry,	/* in: index entry */	ulint		mode,	/* in: BTR_MODIFY_LEAF, ... */	btr_pcur_t*	pcur,	/* in/out: persistent cursor, which must				be closed by the caller */	mtr_t*		mtr);	/* in: mtr */	#define ROW_COPY_DATA		1#define ROW_COPY_POINTERS	2#define ROW_COPY_ALSO_EXTERNALS	3/* The allowed latching order of index records is the following:(1) a secondary index record ->(2) the clustered index record ->(3) rollback segment data for the clustered index record.No new latches may be obtained while the kernel mutex is reserved.However, the kernel mutex can be reserved while latches are owned. */#ifndef UNIV_NONINL#include "row0row.ic"#endif#endif 

⌨️ 快捷键说明

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