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

📄 data0type.h

📁 这是linux下运行的mysql软件包,可用于linux 下安装 php + mysql + apach 的网络配置
💻 H
📖 第 1 页 / 共 2 页
字号:
/******************************************************Data types(c) 1996 Innobase OyCreated 1/16/1996 Heikki Tuuri*******************************************************/#ifndef data0type_h#define data0type_h#include "univ.i"extern ulint	data_mysql_default_charset_coll;#define DATA_MYSQL_LATIN1_SWEDISH_CHARSET_COLL 8#define DATA_MYSQL_BINARY_CHARSET_COLL 63/* SQL data type struct */typedef struct dtype_struct		dtype_t;/* This variable is initialized as the standard binary variable lengthdata type */extern dtype_t* 	dtype_binary;/*-------------------------------------------*//* The 'MAIN TYPE' of a column */#define	DATA_VARCHAR	1	/* character varying of the				latin1_swedish_ci charset-collation; note				that the MySQL format for this, DATA_BINARY,				DATA_VARMYSQL, is also affected by whether the				'precise type' contains				DATA_MYSQL_TRUE_VARCHAR */#define DATA_CHAR	2	/* fixed length character of the				latin1_swedish_ci charset-collation */#define DATA_FIXBINARY	3	/* binary string of fixed length */#define DATA_BINARY	4	/* binary string */#define DATA_BLOB	5	/* binary large object, or a TEXT type;				if prtype & DATA_BINARY_TYPE == 0, then this is				actually a TEXT column (or a BLOB created				with < 4.0.14; since column prefix indexes				came only in 4.0.14, the missing flag in BLOBs				created before that does not cause any harm) */#define	DATA_INT	6	/* integer: can be any size 1 - 8 bytes */#define	DATA_SYS_CHILD	7	/* address of the child page in node pointer */#define	DATA_SYS	8	/* system column *//* Data types >= DATA_FLOAT must be compared using the whole field, not asbinary strings */#define DATA_FLOAT	9#define DATA_DOUBLE	10#define DATA_DECIMAL	11	/* decimal number stored as an ASCII string */#define	DATA_VARMYSQL	12	/* any charset varying length char */#define	DATA_MYSQL	13	/* any charset fixed length char */				/* NOTE that 4.1.1 used DATA_MYSQL and				DATA_VARMYSQL for all character sets, and the				charset-collation for tables created with it				can also be latin1_swedish_ci */#define DATA_MTYPE_MAX	63	/* dtype_store_for_order_and_null_size()				requires the values are <= 63 *//*-------------------------------------------*//* The 'PRECISE TYPE' of a column *//*Tables created by a MySQL user have the following convention:- In the least significant byte in the precise type we store the MySQL typecode (not applicable for system columns).- In the second least significant byte we OR flags DATA_NOT_NULL,DATA_UNSIGNED, DATA_BINARY_TYPE.- In the third least significant byte of the precise type of string types westore the MySQL charset-collation code. In DATA_BLOB columns created with< 4.0.14 we do not actually know if it is a BLOB or a TEXT column. Since thereare no indexes on prefixes of BLOB or TEXT columns in < 4.0.14, this is noproblem, though.Note that versions < 4.1.2 or < 5.0.1 did not store the charset code to theprecise type, since the charset was always the default charset of the MySQLinstallation. If the stored charset code is 0 in the system table SYS_COLUMNSof InnoDB, that means that the default charset of this MySQL installationshould be used.When loading a table definition from the system tables to the InnoDB datadictionary cache in main memory, InnoDB versions >= 4.1.2 and >= 5.0.1 checkif the stored charset-collation is 0, and if that is the case and the type isa non-binary string, replace that 0 by the default charset-collation code ofthis MySQL installation. In short, in old tables, the charset-collation codein the system tables on disk can be 0, but in in-memory data structures(dtype_t), the charset-collation code is always != 0 for non-binary stringtypes.In new tables, in binary string types, the charset-collation code is theMySQL code for the 'binary charset', that is, != 0.For binary string types and for DATA_CHAR, DATA_VARCHAR, and for thoseDATA_BLOB which are binary or have the charset-collation latin1_swedish_ci,InnoDB performs all comparisons internally, without resorting to the MySQLcomparison functions. This is to save CPU time.InnoDB's own internal system tables have different precise types for theircolumns, and for them the precise type is usually not used at all.*/#define DATA_ENGLISH    4       /* English language character string: this				is a relic from pre-MySQL time and only used				for InnoDB's own system tables */#define DATA_ERROR	111	/* another relic from pre-MySQL time */#define DATA_MYSQL_TYPE_MASK 255 /* AND with this mask to extract the MySQL				 type from the precise type */#define DATA_MYSQL_TRUE_VARCHAR 15 /* MySQL type code for the >= 5.0.3				   format true VARCHAR *//* Precise data types for system columns and the length of those columns;NOTE: the values must run from 0 up in the order given! All codes mustbe less than 256 */#define	DATA_ROW_ID	0	/* row id: a dulint */#define DATA_ROW_ID_LEN	6	/* stored length for row id */#define DATA_TRX_ID	1	/* transaction id: 6 bytes */#define DATA_TRX_ID_LEN	6#define	DATA_ROLL_PTR	2	/* rollback data pointer: 7 bytes */#define DATA_ROLL_PTR_LEN 7#define DATA_MIX_ID	3	/* mixed index label: a dulint, stored in				a row in a compressed form */#define DATA_MIX_ID_LEN	9	/* maximum stored length for mix id (in a				compressed dulint form) */#define	DATA_N_SYS_COLS 4 	/* number of system columns defined above *//* Flags ORed to the precise data type */#define DATA_NOT_NULL	256	/* this is ORed to the precise type when				the column is declared as NOT NULL */#define DATA_UNSIGNED	512	/* this id ORed to the precise type when				we have an unsigned integer type */#define	DATA_BINARY_TYPE 1024	/* if the data type is a binary character				string, this is ORed to the precise type:				this only holds for tables created with				>= MySQL-4.0.14 *//* #define	DATA_NONLATIN1	2048 This is a relic from < 4.1.2 and < 5.0.1.				In earlier versions this was set for some				BLOB columns.*/#define	DATA_LONG_TRUE_VARCHAR 4096	/* this is ORed to the precise data				type when the column is true VARCHAR where				MySQL uses 2 bytes to store the data len;				for shorter VARCHARs MySQL uses only 1 byte *//*-------------------------------------------*//* This many bytes we need to store the type information affecting thealphabetical order for a single field and decide the storage size of anSQL null*/#define DATA_ORDER_NULL_TYPE_BUF_SIZE		4/* In the >= 4.1.x storage format we add 2 bytes more so that we can alsostore the charset-collation number; one byte is left unused, though */#define DATA_NEW_ORDER_NULL_TYPE_BUF_SIZE	6/*************************************************************************Gets the MySQL type code from a dtype. */UNIV_INLINEulintdtype_get_mysql_type(/*=================*/				/* out: MySQL type code; this is NOT an InnoDB				type code! */	dtype_t*	type);	/* in: type struct *//*************************************************************************Determine how many bytes the first n characters of the given string occupy.If the string is shorter than n characters, returns the number of bytesthe characters in the string occupy. */ulintdtype_get_at_most_n_mbchars(/*========================*/					/* out: length of the prefix,					in bytes */	const dtype_t*	dtype,		/* in: data type */	ulint		prefix_len,	/* in: length of the requested					prefix, in characters, multiplied by					dtype_get_mbmaxlen(dtype) */	ulint		data_len,	/* in: length of str (in bytes) */	const char*	str);		/* in: the string whose prefix					length is being determined *//*************************************************************************Checks if a data main type is a string type. Also a BLOB is considered astring type. */ibooldtype_is_string_type(/*=================*/			/* out: TRUE if string type */	ulint	mtype);	/* in: InnoDB main data type code: DATA_CHAR, ... *//*************************************************************************Checks if a type is a binary string type. Note that for tables created with< 4.0.14, we do not know if a DATA_BLOB column is a BLOB or a TEXT column. Forthose DATA_BLOB columns this function currently returns FALSE. */ibooldtype_is_binary_string_type(/*========================*/			/* out: TRUE if binary string type */	ulint	mtype,	/* in: main data type */	ulint	prtype);/* in: precise type *//*************************************************************************Checks if a type is a non-binary string type. That is, dtype_is_string_type isTRUE and dtype_is_binary_string_type is FALSE. Note that for tables createdwith < 4.0.14, we do not know if a DATA_BLOB column is a BLOB or a TEXT column.For those DATA_BLOB columns this function currently returns TRUE. */ibooldtype_is_non_binary_string_type(/*============================*/			/* out: TRUE if non-binary string type */	ulint	mtype,	/* in: main data type */

⌨️ 快捷键说明

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