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

📄 data0data.h

📁 这是linux下运行的mysql软件包,可用于linux 下安装 php + mysql + apach 的网络配置
💻 H
字号:
/************************************************************************SQL data field and tuple(c) 1994-1996 Innobase OyCreated 5/30/1994 Heikki Tuuri*************************************************************************/#ifndef data0data_h#define data0data_h#include "univ.i"#include "data0types.h"#include "data0type.h"#include "mem0mem.h"#include "dict0types.h"typedef struct big_rec_struct		big_rec_t;/* Some non-inlined functions used in the MySQL interface: */void dfield_set_data_noninline(	dfield_t* 	field,	/* in: field */	void*		data,	/* in: data */	ulint		len);	/* in: length or UNIV_SQL_NULL */void* dfield_get_data_noninline(	dfield_t* field);	/* in: field */ulintdfield_get_len_noninline(	dfield_t* field);	/* in: field */ulint dtuple_get_n_fields_noninline(	dtuple_t* 	tuple);	/* in: tuple */dfield_t* dtuple_get_nth_field_noninline(	dtuple_t* 	tuple,	/* in: tuple */	ulint		n);	/* in: index of field *//*************************************************************************Gets pointer to the type struct of SQL data field. */UNIV_INLINEdtype_t*dfield_get_type(/*============*/				/* out: pointer to the type struct */	dfield_t*	field);	/* in: SQL data field *//*************************************************************************Sets the type struct of SQL data field. */UNIV_INLINEvoiddfield_set_type(/*============*/	dfield_t*	field,	/* in: SQL data field */	dtype_t*	type);	/* in: pointer to data type struct *//*************************************************************************Gets pointer to the data in a field. */UNIV_INLINEvoid* dfield_get_data(/*============*/				/* out: pointer to data */	dfield_t* field);	/* in: field *//*************************************************************************Gets length of field data. */UNIV_INLINEulintdfield_get_len(/*===========*/				/* out: length of data; UNIV_SQL_NULL if 				SQL null data */	dfield_t* field);	/* in: field *//*************************************************************************Sets length in a field. */UNIV_INLINEvoid dfield_set_len(/*===========*/	dfield_t* 	field,	/* in: field */	ulint		len);	/* in: length or UNIV_SQL_NULL *//*************************************************************************Sets pointer to the data and length in a field. */UNIV_INLINEvoid dfield_set_data(/*============*/	dfield_t* 	field,	/* in: field */	const void*	data,	/* in: data */	ulint		len);	/* in: length or UNIV_SQL_NULL *//**************************************************************************Writes an SQL null field full of zeros. */UNIV_INLINEvoiddata_write_sql_null(/*================*/	byte*	data,	/* in: pointer to a buffer of size len */	ulint	len);	/* in: SQL null size in bytes *//*************************************************************************Copies the data and len fields. */UNIV_INLINEvoid dfield_copy_data(/*=============*/	dfield_t* 	field1,	/* in: field to copy to */	dfield_t*	field2);/* in: field to copy from *//*************************************************************************Copies a data field to another. */UNIV_INLINEvoiddfield_copy(/*========*/	dfield_t*	field1,	/* in: field to copy to */	dfield_t*	field2);/* in: field to copy from *//*************************************************************************Tests if data length and content is equal for two dfields. */UNIV_INLINEibooldfield_datas_are_binary_equal(/*==========================*/				/* out: TRUE if equal */	dfield_t*	field1,	/* in: field */	dfield_t*	field2);/* in: field *//*************************************************************************Tests if dfield data length and content is equal to the given. */ibooldfield_data_is_binary_equal(/*========================*/				/* out: TRUE if equal */	dfield_t*	field,	/* in: field */	ulint		len,	/* in: data length or UNIV_SQL_NULL */	byte*		data);	/* in: data *//*************************************************************************Gets number of fields in a data tuple. */UNIV_INLINEulint dtuple_get_n_fields(/*================*/				/* out: number of fields */	dtuple_t* 	tuple);	/* in: tuple *//*************************************************************************Gets nth field of a tuple. */UNIV_INLINEdfield_t* dtuple_get_nth_field(/*=================*/				/* out: nth field */	dtuple_t* 	tuple,	/* in: tuple */	ulint		n);	/* in: index of field *//*************************************************************************Gets info bits in a data tuple. */UNIV_INLINEulintdtuple_get_info_bits(/*=================*/				/* out: info bits */	dtuple_t* 	tuple);	/* in: tuple *//*************************************************************************Sets info bits in a data tuple. */UNIV_INLINEvoiddtuple_set_info_bits(/*=================*/	dtuple_t* 	tuple,		/* in: tuple */	ulint		info_bits);	/* in: info bits *//*************************************************************************Gets number of fields used in record comparisons. */UNIV_INLINEulintdtuple_get_n_fields_cmp(/*====================*/				/* out: number of fields used in comparisons				in rem0cmp.* */	dtuple_t*	tuple);	/* in: tuple *//*************************************************************************Gets number of fields used in record comparisons. */UNIV_INLINEvoiddtuple_set_n_fields_cmp(/*====================*/	dtuple_t*	tuple,		/* in: tuple */	ulint		n_fields_cmp);	/* in: number of fields used in					comparisons in rem0cmp.* *//**************************************************************Creates a data tuple to a memory heap. The default value for numberof fields used in record comparisons for this tuple is n_fields. */UNIV_INLINEdtuple_t*dtuple_create(/*==========*/	 	 		/* out, own: created tuple */	mem_heap_t*	heap,	/* in: memory heap where the tuple				is created */	ulint		n_fields); /* in: number of fields */	/*************************************************************************Creates a dtuple for use in MySQL. */dtuple_t*dtuple_create_for_mysql(/*====================*/			/* out, own created dtuple */	void** heap,    /* out: created memory heap */	ulint n_fields); /* in: number of fields *//*************************************************************************Frees a dtuple used in MySQL. */voiddtuple_free_for_mysql(/*==================*/	void* heap);/*************************************************************************Sets number of fields used in a tuple. Normally this is set indtuple_create, but if you want later to set it smaller, you can use this. */ voiddtuple_set_n_fields(/*================*/	dtuple_t*	tuple,		/* in: tuple */	ulint		n_fields);	/* in: number of fields *//**************************************************************The following function returns the sum of data lengths of a tuple. The spaceoccupied by the field structs or the tuple struct is not counted. */UNIV_INLINEulintdtuple_get_data_size(/*=================*/				/* out: sum of data lens */	dtuple_t*	tuple);	/* in: typed data tuple *//****************************************************************Returns TRUE if lengths of two dtuples are equal and respective data fieldsin them are equal when compared with collation in char fields (not as binarystrings). */ibooldtuple_datas_are_ordering_equal(/*============================*/				/* out: TRUE if length and fieds are equal				when compared with cmp_data_data:				NOTE: in character type fields some letters				are identified with others! (collation) */	dtuple_t*	tuple1,	/* in: tuple 1 */	dtuple_t*	tuple2);/* in: tuple 2 *//****************************************************************Folds a prefix given as the number of fields of a tuple. */UNIV_INLINEulintdtuple_fold(/*========*/				/* out: the folded value */	dtuple_t*	tuple,	/* in: the tuple */	ulint		n_fields,/* in: number of complete fields to fold */	ulint		n_bytes,/* in: number of bytes to fold in an				incomplete last field */	dulint		tree_id);/* in: index tree id *//***********************************************************************Sets types of fields binary in a tuple. */UNIV_INLINEvoiddtuple_set_types_binary(/*====================*/	dtuple_t*	tuple,	/* in: data tuple */	ulint		n);	/* in: number of fields to set *//**************************************************************************Checks if a dtuple contains an SQL null value. */UNIV_INLINEibooldtuple_contains_null(/*=================*/				/* out: TRUE if some field is SQL null */	dtuple_t*	tuple);	/* in: dtuple *//**************************************************************Checks that a data field is typed. Asserts an error if not. */ibooldfield_check_typed(/*===============*/				/* out: TRUE if ok */	dfield_t*	field);	/* in: data field *//**************************************************************Checks that a data tuple is typed. Asserts an error if not. */ibooldtuple_check_typed(/*===============*/				/* out: TRUE if ok */	dtuple_t*	tuple);	/* in: tuple *//**************************************************************Checks that a data tuple is typed. */ibooldtuple_check_typed_no_assert(/*=========================*/				/* out: TRUE if ok */	dtuple_t*	tuple);	/* in: tuple */#ifdef UNIV_DEBUG/**************************************************************Validates the consistency of a tuple which must be complete, i.e,all fields must have been set. */ibooldtuple_validate(/*============*/				/* out: TRUE if ok */	dtuple_t*	tuple);	/* in: tuple */#endif /* UNIV_DEBUG *//*****************************************************************Pretty prints a dfield value according to its data type. */voiddfield_print(/*=========*/	dfield_t*	dfield);/* in: dfield *//*****************************************************************Pretty prints a dfield value according to its data type. Also the hex stringis printed if a string contains non-printable characters. */ voiddfield_print_also_hex(/*==================*/	dfield_t*	dfield);	 /* in: dfield *//**************************************************************The following function prints the contents of a tuple. */voiddtuple_print(/*=========*/	FILE*		f,	/* in: output stream */	dtuple_t*	tuple);	/* in: tuple *//******************************************************************Moves parts of long fields in entry to the big record vector so thatthe size of tuple drops below the maximum record size allowed in thedatabase. Moves data only from those fields which are not necessaryto determine uniquely the insertion place of the tuple in the index. */big_rec_t*dtuple_convert_big_rec(/*===================*/				/* out, own: created big record vector,				NULL if we are not able to shorten				the entry enough, i.e., if there are				too many short fields in entry */	dict_index_t*	index,	/* in: index */	dtuple_t*	entry,	/* in: index entry */	ulint*		ext_vec,/* in: array of externally stored fields,				or NULL: if a field already is externally				stored, then we cannot move it to the vector				this function returns */	ulint		n_ext_vec);/* in: number of elements is ext_vec *//******************************************************************Puts back to entry the data stored in vector. Note that to ensure thefields in entry can accommodate the data, vector must have been createdfrom entry with dtuple_convert_big_rec. */voiddtuple_convert_back_big_rec(/*========================*/	dict_index_t*	index,	/* in: index */	dtuple_t*	entry,	/* in: entry whose data was put to vector */	big_rec_t*	vector);/* in, own: big rec vector; it is				freed in this function *//******************************************************************Frees the memory in a big rec vector. */voiddtuple_big_rec_free(/*================*/	big_rec_t*	vector);	/* in, own: big rec vector; it is				freed in this function *//*######################################################################*//* Structure for an SQL data field */struct dfield_struct{	void*		data;	/* pointer to data */	ulint		len;	/* data length; UNIV_SQL_NULL if SQL null; */	dtype_t		type;	/* type of data */};struct dtuple_struct {	ulint		info_bits;	/* info bits of an index record:					the default is 0; this field is used					if an index record is built from					a data tuple */	ulint		n_fields;	/* number of fields in dtuple */	ulint		n_fields_cmp;	/* number of fields which should					be used in comparison services					of rem0cmp.*; the index search					is performed by comparing only these					fields, others are ignored; the					default value in dtuple creation is					the same value as n_fields */	dfield_t*	fields;		/* fields */	UT_LIST_NODE_T(dtuple_t) tuple_list;					/* data tuples can be linked into a					list using this field */	ulint		magic_n;	};#define	DATA_TUPLE_MAGIC_N	65478679/* A slot for a field in a big rec vector */typedef struct big_rec_field_struct 	big_rec_field_t;struct big_rec_field_struct {	ulint		field_no;	/* field number in record */	ulint		len;		/* stored data len */	byte*		data;		/* stored data */};/* Storage format for overflow data in a big record, that is, a recordwhich needs external storage of data fields */struct big_rec_struct {	mem_heap_t*	heap;		/* memory heap from which allocated */	ulint		n_fields;	/* number of stored fields */	big_rec_field_t* fields;	/* stored fields */};	#ifndef UNIV_NONINL#include "data0data.ic"#endif#endif

⌨️ 快捷键说明

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