MySQL 8.0.39
Source Code Documentation
data0type.ic File Reference

Data types. More...

#include "ha_prototypes.h"
#include "mach0data.h"

Macros

#define APPEND_UNSIGNED()
 

Functions

static ulint dtype_get_charset_coll (ulint prtype)
 Gets the MySQL charset-collation code for MySQL string types. More...
 
static bool dtype_is_utf8 (ulint prtype)
 Determines if a MySQL string type is a subset of UTF-8. More...
 
static ulint dtype_get_mysql_type (const dtype_t *type)
 Gets the MySQL type code from a dtype. More...
 
static void dtype_get_mblen (ulint mtype, ulint prtype, ulint *mbminlen, ulint *mbmaxlen)
 Compute the mbminlen and mbmaxlen members of a data type structure. More...
 
static void dtype_set_mbminmaxlen (dtype_t *type, ulint mbminlen, ulint mbmaxlen)
 Sets the minimum and maximum length of a character, in bytes. More...
 
static void dtype_set_mblen (dtype_t *type)
 Compute the mbminlen and mbmaxlen members of a data type structure. More...
 
static void dtype_set (dtype_t *type, ulint mtype, ulint prtype, ulint len)
 Sets a data type structure. More...
 
static void dtype_copy (dtype_t *type1, const dtype_t *type2)
 Copies a data type structure. More...
 
static ulint dtype_get_mtype (const dtype_t *type)
 Gets the SQL main data type. More...
 
static ulint dtype_get_prtype (const dtype_t *type)
 Gets the precise data type. More...
 
static ulint dtype_get_len (const dtype_t *type)
 Gets the type length. More...
 
static ulint dtype_get_mbminlen (const dtype_t *type)
 Gets the minimum length of a character, in bytes. More...
 
static ulint dtype_get_mbmaxlen (const dtype_t *type)
 Gets the maximum length of a character, in bytes. More...
 
static 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. More...
 
static 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. More...
 
static 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. More...
 
static char * dtype_sql_name (unsigned mtype, unsigned prtype, unsigned len, char *name, unsigned name_sz)
 Returns the type's SQL name (e.g. More...
 
static ulint dtype_get_fixed_size_low (ulint mtype, ulint prtype, ulint len, ulint mbminmaxlen, bool comp)
 Returns the size of a fixed size data type, 0 if not a fixed size type. More...
 
static ulint dtype_get_min_size_low (ulint mtype, ulint prtype, ulint len, ulint mbminmaxlen)
 Returns the minimum size of a data type. More...
 
static ulint dtype_get_max_size_low (ulint mtype, ulint len)
 Returns the maximum size of a data type. More...
 
static ulint dtype_get_sql_null_size (const dtype_t *type, bool comp)
 Returns the ROW_FORMAT=REDUNDANT stored SQL NULL size of a type. More...
 

Detailed Description

Data types.

Created 1/16/1996 Heikki Tuuri

Macro Definition Documentation

◆ APPEND_UNSIGNED

#define APPEND_UNSIGNED ( )
Value:
do { \
if (prtype & DATA_UNSIGNED) { \
snprintf(name + strlen(name), name_sz - strlen(name), " UNSIGNED"); \
} \
} while (0)
constexpr uint32_t DATA_UNSIGNED
Definition: data0type.h:209
case opt name
Definition: sslopt-case.h:33

Function Documentation

◆ dtype_copy()

static void dtype_copy ( dtype_t type1,
const dtype_t type2 
)
inlinestatic

Copies a data type structure.

Parameters
type1in: type struct to copy to
type2in: type struct to copy from

◆ dtype_get_charset_coll()

static ulint dtype_get_charset_coll ( ulint  prtype)
inlinestatic

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

Returns
MySQL charset-collation code
Parameters
prtypein: precise data type

◆ dtype_get_fixed_size_low()

static ulint dtype_get_fixed_size_low ( ulint  mtype,
ulint  prtype,
ulint  len,
ulint  mbminmaxlen,
bool  comp 
)
inlinestatic

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

◆ dtype_get_len()

static ulint dtype_get_len ( const dtype_t type)
inlinestatic

Gets the type length.

Returns
fixed length of the type, in bytes, or 0 if variable-length
Parameters
typein: data type

◆ dtype_get_max_size_low()

static ulint dtype_get_max_size_low ( ulint  mtype,
ulint  len 
)
inlinestatic

Returns the maximum size of a data type.

Note: types in system tables may be incomplete and return incorrect information.

Parameters
[in]mtypemain type
[in]lenlength
Returns
maximum size
Parameters
mtypein: main type
lenin: length

◆ dtype_get_mblen()

static void dtype_get_mblen ( ulint  mtype,
ulint  prtype,
ulint mbminlen,
ulint mbmaxlen 
)
inlinestatic

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

◆ dtype_get_mbmaxlen()

static ulint dtype_get_mbmaxlen ( const dtype_t type)
inlinestatic

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

◆ dtype_get_mbminlen()

static ulint dtype_get_mbminlen ( const dtype_t type)
inlinestatic

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

◆ dtype_get_min_size_low()

static ulint dtype_get_min_size_low ( ulint  mtype,
ulint  prtype,
ulint  len,
ulint  mbminmaxlen 
)
inlinestatic

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

◆ dtype_get_mtype()

static ulint dtype_get_mtype ( const dtype_t type)
inlinestatic

Gets the SQL main data type.

Returns
SQL main data type
Parameters
typein: data type

◆ dtype_get_mysql_type()

static ulint dtype_get_mysql_type ( const dtype_t type)
inlinestatic

Gets the MySQL type code from a dtype.

Returns
MySQL type code; this is NOT an InnoDB type code!
Parameters
typein: type struct

◆ dtype_get_prtype()

static ulint dtype_get_prtype ( const dtype_t type)
inlinestatic

Gets the precise data type.

Returns
precise data type
Parameters
typein: data type

◆ dtype_get_sql_null_size()

static ulint dtype_get_sql_null_size ( const dtype_t type,
bool  comp 
)
inlinestatic

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

◆ dtype_is_utf8()

static bool dtype_is_utf8 ( ulint  prtype)
inlinestatic

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

◆ dtype_new_read_for_order_and_null_size()

static void dtype_new_read_for_order_and_null_size ( dtype_t type,
const byte buf 
)
inlinestatic

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

◆ dtype_new_store_for_order_and_null_size()

static void dtype_new_store_for_order_and_null_size ( byte buf,
const dtype_t type,
ulint  prefix_len 
)
inlinestatic

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

◆ dtype_read_for_order_and_null_size()

static void dtype_read_for_order_and_null_size ( dtype_t type,
const byte buf 
)
inlinestatic

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

◆ dtype_set()

static void dtype_set ( dtype_t type,
ulint  mtype,
ulint  prtype,
ulint  len 
)
inlinestatic

Sets a data type structure.

Parameters
typein: type struct to init
mtypein: main data type
prtypein: precise type
lenin: precision of type

◆ dtype_set_mblen()

static void dtype_set_mblen ( dtype_t type)
inlinestatic

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

Parameters
typein/out: type

◆ dtype_set_mbminmaxlen()

static void dtype_set_mbminmaxlen ( dtype_t type,
ulint  mbminlen,
ulint  mbmaxlen 
)
inlinestatic

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

◆ dtype_sql_name()

static char * dtype_sql_name ( unsigned  mtype,
unsigned  prtype,
unsigned  len,
char *  name,
unsigned  name_sz 
)
inlinestatic

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