MySQL  8.0.22
Source Code Documentation
mach0data.h File Reference

Utilities for converting data from the database file to the machine format. More...

#include "mtr0types.h"
#include "univ.i"
#include "mach0data.ic"

Go to the source code of this file.

Functions

UNIV_INLINE void mach_write_to_1 (byte *b, ulint n)
 The following function is used to store data in one byte. More...
 
UNIV_INLINE uint8_t mach_read_from_1 (const byte *b)
 The following function is used to fetch data from one byte. More...
 
UNIV_INLINE void mach_write_to_2 (byte *b, ulint n)
 The following function is used to store data in two consecutive bytes. More...
 
UNIV_INLINE uint16_t mach_read_from_2 (const byte *b)
 The following function is used to fetch data from 2 consecutive bytes. More...
 
UNIV_INLINE uint16_t mach_encode_2 (ulint n)
 The following function is used to convert a 16-bit data item to the canonical format, for fast bytewise equality test against memory. More...
 
UNIV_INLINE ulint mach_decode_2 (uint16 n)
 The following function is used to convert a 16-bit data item from the canonical format, for fast bytewise equality test against memory. More...
 
UNIV_INLINE void mach_write_to_3 (byte *b, ulint n)
 The following function is used to store data in 3 consecutive bytes. More...
 
UNIV_INLINE uint32_t mach_read_from_3 (const byte *b)
 The following function is used to fetch data from 3 consecutive bytes. More...
 
UNIV_INLINE void mach_write_to_4 (byte *b, ulint n)
 The following function is used to store data in 4 consecutive bytes. More...
 
UNIV_INLINE uint32_t mach_read_from_4 (const byte *b)
 The following function is used to fetch data from 4 consecutive bytes. More...
 
UNIV_INLINE ulint mach_write_compressed (byte *b, ulint n)
 Write a ulint in a compressed form (1..5 bytes). More...
 
UNIV_INLINE uint32_t mach_get_compressed_size (ulint n)
 Return the size of an ulint when written in the compressed form. More...
 
UNIV_INLINE ib_uint32_t mach_read_next_compressed (const byte **b)
 Read a 32-bit integer in a compressed form. More...
 
UNIV_INLINE void mach_write_to_6 (byte *b, ib_uint64_t id)
 The following function is used to store data in 6 consecutive bytes. More...
 
UNIV_INLINE ib_uint64_t mach_read_from_6 (const byte *b)
 The following function is used to fetch data from 6 consecutive bytes. More...
 
UNIV_INLINE void mach_write_to_7 (byte *b, ib_uint64_t n)
 The following function is used to store data in 7 consecutive bytes. More...
 
UNIV_INLINE ib_uint64_t mach_read_from_7 (const byte *b)
 The following function is used to fetch data from 7 consecutive bytes. More...
 
UNIV_INLINE void mach_write_to_8 (void *b, ib_uint64_t n)
 The following function is used to store data in 8 consecutive bytes. More...
 
UNIV_INLINE ib_uint64_t mach_read_from_8 (const byte *b)
 The following function is used to fetch data from 8 consecutive bytes. More...
 
UNIV_INLINE ulint mach_u64_write_compressed (byte *b, ib_uint64_t n)
 Writes a 64-bit integer in a compressed form (5..9 bytes). More...
 
UNIV_INLINE ib_uint64_t mach_u64_read_next_compressed (const byte **b)
 Read a 64-bit integer in a compressed form. More...
 
UNIV_INLINE ulint mach_u64_write_much_compressed (byte *b, ib_uint64_t n)
 Writes a 64-bit integer in a compressed form (1..11 bytes). More...
 
UNIV_INLINE ib_uint64_t mach_u64_read_much_compressed (const byte *b)
 Reads a 64-bit integer in a compressed form. More...
 
ib_uint64_t mach_parse_u64_much_compressed (const byte **ptr, const byte *end_ptr)
 Read a 64-bit integer in a much compressed form. More...
 
ib_uint32_t mach_parse_compressed (const byte **ptr, const byte *end_ptr)
 Read a 32-bit integer in a compressed form. More...
 
UNIV_INLINE ib_uint64_t mach_u64_parse_compressed (const byte **ptr, const byte *end_ptr)
 Read a 64-bit integer in a compressed form. More...
 
UNIV_INLINE double mach_double_read (const byte *b)
 Reads a double. More...
 
UNIV_INLINE void mach_double_write (byte *b, double d)
 Writes a double. More...
 
UNIV_INLINE float mach_float_read (const byte *b)
 Reads a float. More...
 
UNIV_INLINE void mach_float_write (byte *b, float d)
 Writes a float. More...
 
UNIV_INLINE ulint mach_read_from_n_little_endian (const byte *buf, ulint buf_size)
 Reads a ulint stored in the little-endian format. More...
 
UNIV_INLINE void mach_write_to_n_little_endian (byte *dest, ulint dest_size, ulint n)
 Writes a ulint in the little-endian format. More...
 
UNIV_INLINE ulint mach_read_from_2_little_endian (const byte *buf)
 Reads a ulint stored in the little-endian format. More...
 
UNIV_INLINE void mach_write_to_2_little_endian (byte *dest, ulint n)
 Writes a ulint in the little-endian format. More...
 
UNIV_INLINE ib_uint64_t mach_read_int_type (const byte *src, ulint len, ibool unsigned_type)
 Convert integral type from storage byte order (big endian) to host byte order. More...
 
UNIV_INLINE void mach_write_int_type (byte *dest, const byte *src, ulint len, bool usign)
 Convert integral type from host byte order to (big-endian) storage byte order. More...
 
UNIV_INLINE void mach_write_ulonglong (byte *dest, ulonglong src, ulint len, bool usign)
 Convert a ulonglong integer from host byte order to (big-endian) storage byte order. More...
 
UNIV_INLINE uint32_t mach_read_ulint (const byte *ptr, mlog_id_t type)
 Read 1 to 4 bytes from a file page buffered in the buffer pool. More...
 

Detailed Description

Utilities for converting data from the database file to the machine format.

Created 11/28/1995 Heikki Tuuri

Function Documentation

◆ mach_decode_2()

UNIV_INLINE ulint mach_decode_2 ( uint16  n)

The following function is used to convert a 16-bit data item from the canonical format, for fast bytewise equality test against memory.

Parameters
[in]n16-bit integer in canonical format
Returns
integer in machine-dependent format

◆ mach_double_read()

UNIV_INLINE double mach_double_read ( const byte b)

Reads a double.

It is stored in a little-endian format.

Returns
double read
Parameters
bin: pointer to memory from where to read

◆ mach_double_write()

UNIV_INLINE void mach_double_write ( byte b,
double  d 
)

Writes a double.

It is stored in a little-endian format.

Parameters
[in]bpointer to memory where to write
[in]ddouble

◆ mach_encode_2()

UNIV_INLINE uint16_t mach_encode_2 ( ulint  n)

The following function is used to convert a 16-bit data item to the canonical format, for fast bytewise equality test against memory.

Parameters
[in]ninteger in machine-dependent format
Returns
16-bit integer in canonical format

◆ mach_float_read()

UNIV_INLINE float mach_float_read ( const byte b)

Reads a float.

It is stored in a little-endian format.

Returns
float read
Parameters
bin: pointer to memory from where to read

◆ mach_float_write()

UNIV_INLINE void mach_float_write ( byte b,
float  d 
)

Writes a float.

It is stored in a little-endian format.

Parameters
[in]bpointer to memory where to write
[in]dfloat

◆ mach_get_compressed_size()

UNIV_INLINE uint32_t mach_get_compressed_size ( ulint  n)

Return the size of an ulint when written in the compressed form.

Parameters
[in]nulint integer to be stored
Returns
compressed size in bytes

◆ mach_parse_compressed()

ib_uint32_t mach_parse_compressed ( const byte **  ptr,
const byte end_ptr 
)

Read a 32-bit integer in a compressed form.

Parameters
[in,out]ptrpointer to memory from where to read; advanced by the number of bytes consumed, or set NULL if out of space
[in]end_ptrend of the buffer
Returns
unsigned value

◆ mach_parse_u64_much_compressed()

ib_uint64_t mach_parse_u64_much_compressed ( const byte **  ptr,
const byte end_ptr 
)

Read a 64-bit integer in a much compressed form.

Parameters
[in,out]ptrpointer to memory from where to read, advanced by the number of bytes consumed, or set NULL if out of space
[in]end_ptrend of the buffer
Returns
unsigned 64-bit integer

◆ mach_read_from_1()

UNIV_INLINE uint8_t mach_read_from_1 ( const byte b)

The following function is used to fetch data from one byte.

Parameters
[in]bpointer to a byte to read
Returns
ulint integer, >= 0, < 256

◆ mach_read_from_2()

UNIV_INLINE uint16_t mach_read_from_2 ( const byte b)

The following function is used to fetch data from 2 consecutive bytes.

The most significant byte is at the lowest address.

Parameters
[in]bpointer to 2 bytes where to store
Returns
2-byte integer, >= 0, < 64k

◆ mach_read_from_2_little_endian()

UNIV_INLINE ulint mach_read_from_2_little_endian ( const byte buf)

Reads a ulint stored in the little-endian format.

Returns
unsigned long int
Parameters
bufin: from where to read

◆ mach_read_from_3()

UNIV_INLINE uint32_t mach_read_from_3 ( const byte b)

The following function is used to fetch data from 3 consecutive bytes.

The most significant byte is at the lowest address.

Parameters
[in]bpointer to 3 bytes to read
Returns
32 bit integer

◆ mach_read_from_4()

UNIV_INLINE uint32_t mach_read_from_4 ( const byte b)

The following function is used to fetch data from 4 consecutive bytes.

The most significant byte is at the lowest address.

Parameters
[in]bpointer to 4 bytes to read
Returns
32 bit integer

◆ mach_read_from_6()

UNIV_INLINE ib_uint64_t mach_read_from_6 ( const byte b)

The following function is used to fetch data from 6 consecutive bytes.

The most significant byte is at the lowest address.

Parameters
[in]bpointer to 6 bytes to read
Returns
48-bit integer

◆ mach_read_from_7()

UNIV_INLINE ib_uint64_t mach_read_from_7 ( const byte b)

The following function is used to fetch data from 7 consecutive bytes.

The most significant byte is at the lowest address.

Parameters
[in]bpointer to 7 bytes to read
Returns
56-bit integer

◆ mach_read_from_8()

UNIV_INLINE ib_uint64_t mach_read_from_8 ( const byte b)

The following function is used to fetch data from 8 consecutive bytes.

The most significant byte is at the lowest address.

Parameters
[in]bpointer to 8 bytes to read
Returns
64-bit integer

◆ mach_read_from_n_little_endian()

UNIV_INLINE ulint mach_read_from_n_little_endian ( const byte buf,
ulint  buf_size 
)

Reads a ulint stored in the little-endian format.

Returns
unsigned long int
Parameters
bufin: from where to read
buf_sizein: from how many bytes to read

◆ mach_read_int_type()

UNIV_INLINE ib_uint64_t mach_read_int_type ( const byte src,
ulint  len,
ibool  unsigned_type 
)

Convert integral type from storage byte order (big endian) to host byte order.

Parameters
[in]srcwhere to read from
[in]lenlength of src
[in]unsigned_typesigned or unsigned flag
Returns
integer value

◆ mach_read_next_compressed()

UNIV_INLINE ib_uint32_t mach_read_next_compressed ( const byte **  b)

Read a 32-bit integer in a compressed form.

Parameters
[in,out]bpointer to memory where to read; advanced by the number of bytes consumed
Returns
unsigned value

◆ mach_read_ulint()

UNIV_INLINE uint32_t mach_read_ulint ( const byte ptr,
mlog_id_t  type 
)

Read 1 to 4 bytes from a file page buffered in the buffer pool.

Parameters
[in]ptrpointer where to read
[in]typeMLOG_1BYTE, MLOG_2BYTES, or MLOG_4BYTES
Returns
value read

◆ mach_u64_parse_compressed()

UNIV_INLINE ib_uint64_t mach_u64_parse_compressed ( const byte **  ptr,
const byte end_ptr 
)

Read a 64-bit integer in a compressed form.

Parameters
[in,out]ptrpointer to memory from where to read; advanced by the number of bytes consumed, or set NULL if out of space
[in]end_ptrend of the buffer
Returns
unsigned value

◆ mach_u64_read_much_compressed()

UNIV_INLINE ib_uint64_t mach_u64_read_much_compressed ( const byte b)

Reads a 64-bit integer in a compressed form.

Parameters
[in]bpointer to memory from where to read
Returns
the value read

◆ mach_u64_read_next_compressed()

UNIV_INLINE ib_uint64_t mach_u64_read_next_compressed ( const byte **  b)

Read a 64-bit integer in a compressed form.

Parameters
[in,out]bpointer to memory where to read; advanced by the number of bytes consumed
Returns
unsigned value

◆ mach_u64_write_compressed()

UNIV_INLINE ulint mach_u64_write_compressed ( byte b,
ib_uint64_t  n 
)

Writes a 64-bit integer in a compressed form (5..9 bytes).

Parameters
[in]bpointer to memory where to store
[in]n64-bit integer to be stored
Returns
size in bytes

◆ mach_u64_write_much_compressed()

UNIV_INLINE ulint mach_u64_write_much_compressed ( byte b,
ib_uint64_t  n 
)

Writes a 64-bit integer in a compressed form (1..11 bytes).

Parameters
[in]bpointer to memory where to store
[in]n64-bit integer to be stored
Returns
size in bytes

◆ mach_write_compressed()

UNIV_INLINE ulint mach_write_compressed ( byte b,
ulint  n 
)

Write a ulint in a compressed form (1..5 bytes).

Parameters
[in]bpointer to memory where to store
[in]nulint integer to be stored
Returns
stored size in bytes

◆ mach_write_int_type()

UNIV_INLINE void mach_write_int_type ( byte dest,
const byte src,
ulint  len,
bool  usign 
)

Convert integral type from host byte order to (big-endian) storage byte order.

Parameters
[in]destwhere to write
[in]srcwhere to read
[in]lenlength of src
[in]usignsigned or unsigned flag

◆ mach_write_to_1()

UNIV_INLINE void mach_write_to_1 ( byte b,
ulint  n 
)

The following function is used to store data in one byte.

Parameters
[in]bpointer to byte where to store
[in]nOne byte integer to be stored, >= 0, < 256

◆ mach_write_to_2()

UNIV_INLINE void mach_write_to_2 ( byte b,
ulint  n 
)

The following function is used to store data in two consecutive bytes.

We store the most significant byte to the lower address.

Parameters
[in]bpointer to 2 bytes where to store
[in]n2-byte integer to be stored, >= 0, < 64k

◆ mach_write_to_2_little_endian()

UNIV_INLINE void mach_write_to_2_little_endian ( byte dest,
ulint  n 
)

Writes a ulint in the little-endian format.

Parameters
[in]destwhere to write
[in]nunsigned long int to write

◆ mach_write_to_3()

UNIV_INLINE void mach_write_to_3 ( byte b,
ulint  n 
)

The following function is used to store data in 3 consecutive bytes.

We store the most significant byte to the lowest address.

Parameters
[in]bpointer to 3 bytes where to store
[in]n3 byte integer to be stored

◆ mach_write_to_4()

UNIV_INLINE void mach_write_to_4 ( byte b,
ulint  n 
)

The following function is used to store data in 4 consecutive bytes.

We store the most significant byte to the lowest address.

Parameters
[in]bpointer to 4 bytes where to store
[in]n4 byte integer to be stored

◆ mach_write_to_6()

UNIV_INLINE void mach_write_to_6 ( byte b,
ib_uint64_t  id 
)

The following function is used to store data in 6 consecutive bytes.

We store the most significant byte to the lowest address.

Parameters
[in]bpointer to 6 bytes where to store
[in]id48-bit integer to write

◆ mach_write_to_7()

UNIV_INLINE void mach_write_to_7 ( byte b,
ib_uint64_t  n 
)

The following function is used to store data in 7 consecutive bytes.

We store the most significant byte to the lowest address.

Parameters
[in]bpointer to 7 bytes where to store
[in]n56-bit integer

◆ mach_write_to_8()

UNIV_INLINE void mach_write_to_8 ( void *  b,
ib_uint64_t  n 
)

The following function is used to store data in 8 consecutive bytes.

We store the most significant byte to the lowest address.

Parameters
[in]bpointer to 8 bytes where to store
[in]n64-bit integer to be stored

◆ mach_write_to_n_little_endian()

UNIV_INLINE void mach_write_to_n_little_endian ( byte dest,
ulint  dest_size,
ulint  n 
)

Writes a ulint in the little-endian format.

Parameters
[in]destwhere to write
[in]dest_sizeinto how many bytes to write
[in]nunsigned long int to write

◆ mach_write_ulonglong()

UNIV_INLINE void mach_write_ulonglong ( byte dest,
ulonglong  src,
ulint  len,
bool  usign 
)

Convert a ulonglong integer from host byte order to (big-endian) storage byte order.

Parameters
[in]destwhere to write
[in]srcwhere to read from
[in]lenlength of dest
[in]usignsigned or unsigned flag