InnoDB Plugin  1.0
Macros | Functions
data0type.ic File Reference
#include <string.h>
#include "mach0data.h"
#include "ha_prototypes.h"
Include dependency graph for data0type.ic:
This graph shows which files directly or indirectly include this file:

Macros

#define APPEND_UNSIGNED()

Functions

UNIV_INLINE ulint dtype_get_charset_coll (ulint prtype)
UNIV_INLINE ibool dtype_is_utf8 (ulint prtype)
UNIV_INLINE ulint dtype_get_mysql_type (const dtype_t *type)
UNIV_INLINE void dtype_get_mblen (ulint mtype, ulint prtype, ulint *mbminlen, ulint *mbmaxlen)
UNIV_INLINE void dtype_set_mbminmaxlen (dtype_t *type, ulint mbminlen, ulint mbmaxlen)
UNIV_INLINE void dtype_set_mblen (dtype_t *type)
UNIV_INLINE void dtype_set (dtype_t *type, ulint mtype, ulint prtype, ulint len)
UNIV_INLINE void dtype_copy (dtype_t *type1, const dtype_t *type2)
UNIV_INLINE ulint dtype_get_mtype (const dtype_t *type)
UNIV_INLINE ulint dtype_get_prtype (const dtype_t *type)
UNIV_INLINE ulint dtype_get_len (const dtype_t *type)
UNIV_INLINE ulint dtype_get_mbminlen (const dtype_t *type)
UNIV_INLINE ulint dtype_get_mbmaxlen (const dtype_t *type)
UNIV_INLINE ulint dtype_get_pad_char (ulint mtype, ulint prtype)
UNIV_INLINE void dtype_new_store_for_order_and_null_size (byte *buf, const dtype_t *type, ulint prefix_len)
UNIV_INLINE void dtype_read_for_order_and_null_size (dtype_t *type, const byte *buf)
UNIV_INLINE void dtype_new_read_for_order_and_null_size (dtype_t *type, const byte *buf)
UNIV_INLINE char * dtype_sql_name (unsigned mtype, unsigned prtype, unsigned len, char *name, unsigned name_sz)
UNIV_INLINE ulint dtype_get_fixed_size_low (ulint mtype, ulint prtype, ulint len, ulint mbminmaxlen, ulint comp)
UNIV_INLINE ulint dtype_get_min_size_low (ulint mtype, ulint prtype, ulint len, ulint mbminmaxlen)
UNIV_INLINE ulint dtype_get_max_size_low (ulint mtype, ulint len)
UNIV_INLINE ulint dtype_get_sql_null_size (const dtype_t *type, ulint comp)

Detailed Description

Data types

Created 1/16/1996 Heikki Tuuri

Macro Definition Documentation

#define APPEND_UNSIGNED ( )
Value:
do { \
if (prtype & DATA_UNSIGNED) { \
ut_snprintf(name + strlen(name), \
name_sz - strlen(name), \
" UNSIGNED"); \
} \
} while (0)

Function Documentation

UNIV_INLINE void dtype_copy ( dtype_t type1,
const dtype_t type2 
)

Copies a data type structure.

Parameters
type1in: type struct to copy to
type2in: type struct to copy from
UNIV_INLINE ulint dtype_get_charset_coll ( ulint  prtype)

Gets the MySQL charset-collation code for MySQL string types.

Returns
MySQL charset-collation code
Parameters
prtypein: precise data type
UNIV_INLINE ulint dtype_get_fixed_size_low ( ulint  mtype,
ulint  prtype,
ulint  len,
ulint  mbminmaxlen,
ulint  comp 
)

Returns the size of a fixed size data type, 0 if not a fixed size type.

Returns
fixed size, or 0
Parameters
mtypein: main type
prtypein: precise type
lenin: length
mbminmaxlenin: minimum and maximum length of a multibyte character, in bytes
compin: nonzero=ROW_FORMAT=COMPACT
UNIV_INLINE ulint dtype_get_len ( const dtype_t type)

Gets the type length.

Returns
fixed length of the type, in bytes, or 0 if variable-length
Parameters
typein: data type
UNIV_INLINE ulint dtype_get_max_size_low ( ulint  mtype,
ulint  len 
)

Returns the maximum size of a data type. Note: types in system tables may be incomplete and return incorrect information.

Returns
maximum size
Parameters
mtypein: main type
lenin: length
UNIV_INLINE void dtype_get_mblen ( ulint  mtype,
ulint  prtype,
ulint *  mbminlen,
ulint *  mbmaxlen 
)

Compute the mbminlen and mbmaxlen members of a data type structure.

Parameters
mtypein: main type
prtypein: precise type (and collation)
mbminlenout: minimum length of a multi-byte character
mbmaxlenout: maximum length of a multi-byte character
UNIV_INLINE ulint dtype_get_mbmaxlen ( const dtype_t type)

Gets the maximum length of a character, in bytes.

Returns
maximum length of a char, in bytes, or 0 if this is not a character type
Parameters
typein: type
UNIV_INLINE ulint dtype_get_mbminlen ( const dtype_t type)

Gets the minimum length of a character, in bytes.

Returns
minimum length of a char, in bytes, or 0 if this is not a character type
Parameters
typein: type
UNIV_INLINE ulint dtype_get_min_size_low ( ulint  mtype,
ulint  prtype,
ulint  len,
ulint  mbminmaxlen 
)

Returns the minimum size of a data type.

Returns
minimum size
Parameters
mtypein: main type
prtypein: precise type
lenin: length
mbminmaxlenin: minimum and maximum length of a multi-byte character
UNIV_INLINE ulint dtype_get_mtype ( const dtype_t type)

Gets the SQL main data type.

Returns
SQL main data type
Parameters
typein: data type
UNIV_INLINE ulint dtype_get_mysql_type ( const dtype_t type)

Gets the MySQL type code from a dtype.

Returns
MySQL type code; this is NOT an InnoDB type code!
Parameters
typein: type struct
UNIV_INLINE ulint dtype_get_pad_char ( ulint  mtype,
ulint  prtype 
)

Gets the padding character code for a type.

Returns
padding character code, or ULINT_UNDEFINED if no padding specified
Parameters
mtypein: main type
prtypein: precise type
UNIV_INLINE ulint dtype_get_prtype ( const dtype_t type)

Gets the precise data type.

Returns
precise data type
Parameters
typein: data type
UNIV_INLINE ulint dtype_get_sql_null_size ( const dtype_t type,
ulint  comp 
)

Returns the ROW_FORMAT=REDUNDANT stored SQL NULL size of a type. For fixed length types it is the fixed length of the type, otherwise 0.

Returns
SQL null storage size in ROW_FORMAT=REDUNDANT
Parameters
typein: type
compin: nonzero=ROW_FORMAT=COMPACT
UNIV_INLINE ibool dtype_is_utf8 ( ulint  prtype)

Determines if a MySQL string type is a subset of UTF-8. This function may return false negatives, in case further character-set collation codes are introduced in MySQL later.

Returns
TRUE if a subset of UTF-8
Parameters
prtypein: precise data type
UNIV_INLINE void dtype_new_read_for_order_and_null_size ( dtype_t type,
const byte *  buf 
)

Reads to a type the stored information which determines its alphabetical ordering and the storage size of an SQL NULL value. This is the >= 4.1.x storage format.

Parameters
typein: type struct
bufin: buffer for stored type order info
UNIV_INLINE void dtype_new_store_for_order_and_null_size ( byte *  buf,
const dtype_t type,
ulint  prefix_len 
)

Stores for a type the information which determines its alphabetical ordering and the storage size of an SQL NULL value. This is the >= 4.1.x storage format.

Parameters
bufin: buffer for DATA_NEW_ORDER_NULL_TYPE_BUF_SIZE bytes where we store the info
typein: type struct
prefix_lenin: prefix length to replace type->len, or 0
UNIV_INLINE void dtype_read_for_order_and_null_size ( dtype_t type,
const byte *  buf 
)

Reads to a type the stored information which determines its alphabetical ordering and the storage size of an SQL NULL value. This is the < 4.1.x storage format.

Parameters
typein: type struct
bufin: buffer for stored type order info
UNIV_INLINE void dtype_set ( dtype_t type,
ulint  mtype,
ulint  prtype,
ulint  len 
)

Sets a data type structure.

Parameters
typein: type struct to init
mtypein: main data type
prtypein: precise type
lenin: precision of type
UNIV_INLINE void dtype_set_mblen ( dtype_t type)

Compute the mbminlen and mbmaxlen members of a data type structure.

Parameters
typein/out: type
UNIV_INLINE void dtype_set_mbminmaxlen ( dtype_t type,
ulint  mbminlen,
ulint  mbmaxlen 
)

Sets the minimum and maximum length of a character, in bytes.

Parameters
typein/out: type
mbminlenin: minimum length of a char, in bytes, or 0 if this is not a character type
mbmaxlenin: maximum length of a char, in bytes, or 0 if this is not a character type
UNIV_INLINE char* dtype_sql_name ( unsigned  mtype,
unsigned  prtype,
unsigned  len,
char *  name,
unsigned  name_sz 
)

Returns the type's SQL name (e.g. BIGINT UNSIGNED) from mtype,prtype,len

Returns
the SQL type name
Parameters
mtypein: mtype
prtypein: prtype
lenin: len
nameout: SQL name
name_szin: size of the name buffer