MySQL 9.0.0
Source Code Documentation
mach0data.ic File Reference

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

#include "mtr0types.h"
#include "ut0byte.h"

Functions

static void mach_write_to_1 (byte *b, ulint n)
 The following function is used to store data in one byte. More...
 
static void mach_write_to_2 (byte *b, ulint n)
 The following function is used to store data in two consecutive bytes. More...
 
static uint8_t mach_read_from_1 (const byte *b)
 The following function is used to fetch data from one byte. More...
 
static uint16_t mach_read_from_2 (const byte *b)
 The following function is used to fetch data from 2 consecutive bytes. More...
 
static 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...
 
static 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...
 
static void mach_write_to_3 (byte *b, ulint n)
 The following function is used to store data in 3 consecutive bytes. More...
 
static uint32_t mach_read_from_3 (const byte *b)
 The following function is used to fetch data from 3 consecutive bytes. More...
 
static void mach_write_to_4 (byte *b, ulint n)
 The following function is used to store data in 4 consecutive bytes. More...
 
static uint32_t mach_read_from_4 (const byte *b)
 The following function is used to fetch data from 4 consecutive bytes. More...
 
static ulint mach_write_compressed (byte *b, ulint n)
 Writes a ulint in a compressed form where the first byte codes the length of the stored ulint. More...
 
static uint32_t mach_get_compressed_size (ulint n)
 Return the size of an ulint when written in the compressed form. More...
 
static ulint mach_read_compressed (const byte *b)
 Read a ulint in a compressed form. More...
 
static uint32_t mach_read_next_compressed (const byte **b)
 Read a 32-bit integer in a compressed form. More...
 
static void mach_write_to_8 (void *b, uint64_t n)
 The following function is used to store data in 8 consecutive bytes. More...
 
static uint64_t mach_read_from_8 (const byte *b)
 The following function is used to fetch data from 8 consecutive bytes. More...
 
static void mach_write_to_7 (byte *b, uint64_t n)
 The following function is used to store data in 7 consecutive bytes. More...
 
static uint64_t mach_read_from_7 (const byte *b)
 The following function is used to fetch data from 7 consecutive bytes. More...
 
static void mach_write_to_6 (byte *b, uint64_t n)
 The following function is used to store data in 6 consecutive bytes. More...
 
static uint64_t mach_read_from_6 (const byte *b)
 The following function is used to fetch data from 6 consecutive bytes. More...
 
static ulint mach_u64_write_compressed (byte *b, uint64_t n)
 Writes a 64-bit integer in a compressed form (5..9 bytes). More...
 
static uint64_t mach_u64_read_next_compressed (const byte **b)
 Read a 64-bit integer in a compressed form. More...
 
static ulint mach_u64_write_much_compressed (byte *b, uint64_t n)
 Writes a 64-bit integer in a compressed form (1..11 bytes). More...
 
static uint64_t mach_u64_read_much_compressed (const byte *b)
 Reads a 64-bit integer in a compressed form. More...
 
static uint64_t mach_read_next_much_compressed (const byte **b)
 Read a 64-bit integer in a compressed form. More...
 
static uint64_t mach_u64_parse_compressed (const byte **ptr, const byte *end_ptr)
 Read a 64-bit integer in a compressed form. More...
 
static double mach_double_read (const byte *b)
 Reads a double. More...
 
static void mach_double_write (byte *b, double d)
 Writes a double. More...
 
static float mach_float_read (const byte *b)
 Reads a float. More...
 
static void mach_float_write (byte *b, float d)
 Writes a float. More...
 
static ulint mach_read_from_n_little_endian (const byte *buf, ulint buf_size)
 
static void mach_write_to_n_little_endian (byte *dest, ulint dest_size, ulint n)
 Writes a ulint in the little-endian format. More...
 
static ulint mach_read_from_2_little_endian (const byte *buf)
 Reads a ulint stored in the little-endian format. More...
 
static void mach_write_to_2_little_endian (byte *dest, ulint n)
 Writes a ulint in the little-endian format. More...
 
static uint64_t mach_read_int_type (const byte *src, ulint len, bool unsigned_type)
 Convert integral type from storage byte order (big endian) to host byte order. More...
 
static void mach_swap_byte_order (byte *dest, const byte *from, ulint len)
 Swap byte ordering. More...
 
static void mach_write_int_type (byte *dest, const byte *src, ulint len, bool usign)
 
static void mach_write_ulonglong (byte *dest, ulonglong src, ulint len, bool usign)
 
static 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()

static ulint mach_decode_2 ( uint16  n)
inlinestatic

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

Returns
integer in machine-dependent format
Parameters
nin: 16-bit integer in canonical format

◆ mach_double_read()

static double mach_double_read ( const byte b)
inlinestatic

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()

static void mach_double_write ( byte b,
double  d 
)
inlinestatic

Writes a double.

It is stored in a little-endian format.

Parameters
bin: pointer to memory where to write
din: double

◆ mach_encode_2()

static uint16_t mach_encode_2 ( ulint  n)
inlinestatic

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

Returns
16-bit integer in canonical format
Parameters
nin: integer in machine-dependent format

◆ mach_float_read()

static float mach_float_read ( const byte b)
inlinestatic

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()

static void mach_float_write ( byte b,
float  d 
)
inlinestatic

Writes a float.

It is stored in a little-endian format.

Parameters
bin: pointer to memory where to write
din: float

◆ mach_get_compressed_size()

static uint32_t mach_get_compressed_size ( ulint  n)
inlinestatic

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

Parameters
[in]nuint32_t integer (< 2^32) to be stored
Returns
compressed size in bytes

◆ mach_read_compressed()

static ulint mach_read_compressed ( const byte b)
inlinestatic

Read a ulint in a compressed form.

Parameters
[in]bpointer to memory from where to read
Returns
read integer (< 2^32)

◆ mach_read_from_1()

static uint8_t mach_read_from_1 ( const byte b)
inlinestatic

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()

static uint16_t mach_read_from_2 ( const byte b)
inlinestatic

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 to read
Returns
2-byte integer, >= 0, < 64k

◆ mach_read_from_2_little_endian()

static ulint mach_read_from_2_little_endian ( const byte buf)
inlinestatic

Reads a ulint stored in the little-endian format.

Returns
unsigned long int
Parameters
bufin: from where to read

◆ mach_read_from_3()

static uint32_t mach_read_from_3 ( const byte b)
inlinestatic

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
uint32_t integer

◆ mach_read_from_4()

static uint32_t mach_read_from_4 ( const byte b)
inlinestatic

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()

static uint64_t mach_read_from_6 ( const byte b)
inlinestatic

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()

static uint64_t mach_read_from_7 ( const byte b)
inlinestatic

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()

static uint64_t mach_read_from_8 ( const byte b)
inlinestatic

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 from where read
Returns
64-bit integer

◆ mach_read_from_n_little_endian()

static ulint mach_read_from_n_little_endian ( const byte buf,
ulint  buf_size 
)
inlinestatic

◆ mach_read_int_type()

static uint64_t mach_read_int_type ( const byte src,
ulint  len,
bool  unsigned_type 
)
inlinestatic

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

Returns
integer value
Parameters
srcin: where to read from
lenin: length of src
unsigned_typein: signed or unsigned flag

◆ mach_read_next_compressed()

static uint32_t mach_read_next_compressed ( const byte **  b)
inlinestatic

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_next_much_compressed()

static uint64_t mach_read_next_much_compressed ( const byte **  b)
inlinestatic

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_read_ulint()

static uint32_t mach_read_ulint ( const byte ptr,
mlog_id_t  type 
)
inlinestatic

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_swap_byte_order()

static void mach_swap_byte_order ( byte dest,
const byte from,
ulint  len 
)
inlinestatic

Swap byte ordering.

Parameters
destout: where to write
fromin: where to read from
lenin: length of src

◆ mach_u64_parse_compressed()

static uint64_t mach_u64_parse_compressed ( const byte **  ptr,
const byte end_ptr 
)
inlinestatic

Read a 64-bit integer in a compressed form.

Parameters
[in,out]ptrpointer to memory 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()

static uint64_t mach_u64_read_much_compressed ( const byte b)
inlinestatic

Reads a 64-bit integer in a compressed form.

Returns
the value read
See also
mach_parse_u64_much_compressed()
Parameters
bin: pointer to memory from where to read

◆ mach_u64_read_next_compressed()

static uint64_t mach_u64_read_next_compressed ( const byte **  b)
inlinestatic

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()

static ulint mach_u64_write_compressed ( byte b,
uint64_t  n 
)
inlinestatic

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

Returns
size in bytes
Parameters
bin: pointer to memory where to store
nin: 64-bit integer to be stored

◆ mach_u64_write_much_compressed()

static ulint mach_u64_write_much_compressed ( byte b,
uint64_t  n 
)
inlinestatic

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

Returns
size in bytes
Parameters
bin: pointer to memory where to store
nin: 64-bit integer to be stored

◆ mach_write_compressed()

static ulint mach_write_compressed ( byte b,
ulint  n 
)
inlinestatic

Writes a ulint in a compressed form where the first byte codes the length of the stored ulint.

We look at the most significant bits of the byte. If the most significant bit is zero, it means 1-byte storage, else if the 2nd bit is 0, it means 2-byte storage, else if 3rd is 0, it means 3-byte storage, else if 4th is 0, it means 4-byte storage, else the storage is 5-byte.

Parameters
[in]bpointer to memory where to store
[in]nulint integer (< 2^32) to be stored
Returns
compressed size in bytes

◆ mach_write_int_type()

static void mach_write_int_type ( byte dest,
const byte src,
ulint  len,
bool  usign 
)
inlinestatic
Parameters
destin: where to write
srcin: where to read from
lenin: length of src
usignin: signed or unsigned flag

◆ mach_write_to_1()

static void mach_write_to_1 ( byte b,
ulint  n 
)
inlinestatic

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

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

◆ mach_write_to_2()

static void mach_write_to_2 ( byte b,
ulint  n 
)
inlinestatic

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()

static void mach_write_to_2_little_endian ( byte dest,
ulint  n 
)
inlinestatic

Writes a ulint in the little-endian format.

Parameters
destin: where to write
nin: unsigned long int to write

◆ mach_write_to_3()

static void mach_write_to_3 ( byte b,
ulint  n 
)
inlinestatic

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()

static void mach_write_to_4 ( byte b,
ulint  n 
)
inlinestatic

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()

static void mach_write_to_6 ( byte b,
uint64_t  n 
)
inlinestatic

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]n48-bit integer to write

◆ mach_write_to_7()

static void mach_write_to_7 ( byte b,
uint64_t  n 
)
inlinestatic

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()

static void mach_write_to_8 ( void *  b,
uint64_t  n 
)
inlinestatic

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 (< 2^64) to be stored

◆ mach_write_to_n_little_endian()

static void mach_write_to_n_little_endian ( byte dest,
ulint  dest_size,
ulint  n 
)
inlinestatic

Writes a ulint in the little-endian format.

Parameters
destin: where to write
dest_sizein: into how many bytes to write
nin: unsigned long int to write

◆ mach_write_ulonglong()

static void mach_write_ulonglong ( byte dest,
ulonglong  src,
ulint  len,
bool  usign 
)
inlinestatic
Parameters
destin: where to write
srcin: where to read from
lenin: length of dest
usignin: signed or unsigned flag