MySQL 8.0.40
Source Code Documentation
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages
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

static void mach_write_to_1 (byte *b, ulint n)
 The following function is used to store data in one byte. More...
 
static uint8_t mach_read_from_1 (const byte *b)
 The following function is used to fetch data from 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 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)
 Write a ulint in a compressed form (1..5 bytes). More...
 
static uint32_t mach_get_compressed_size (ulint n)
 Return the size of an ulint when written in the 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_6 (byte *b, uint64_t id)
 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 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_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 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...
 
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...
 
uint32_t mach_parse_compressed (const byte **ptr, const byte *end_ptr)
 Read a 32-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)
 Reads a ulint stored in the little-endian format. More...
 
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_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...
 
static 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...
 
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.

Parameters
[in]n16-bit integer in canonical format
Returns
integer in machine-dependent 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 in: 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
[in]bpointer to memory where to write
[in]ddouble

◆ 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.

Parameters
[in]ninteger in machine-dependent format
Returns
16-bit integer in canonical 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 in: 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
[in]bpointer to memory where to write
[in]dfloat

◆ 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]nulint integer to be stored
Returns
compressed size in bytes

◆ mach_parse_compressed()

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

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

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 where to store
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 in: 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
32 bit 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 to 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

Reads a ulint stored in the little-endian format.

Parameters
[in]bufFrom where to read.
[in]buf_sizeFrom how many bytes to read.
Returns
unsigned long int

◆ 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.

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

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

static uint64_t mach_u64_read_much_compressed ( const byte b)
inlinestatic

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

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

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

◆ 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).

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

◆ mach_write_compressed()

static ulint mach_write_compressed ( byte b,
ulint  n 
)
inlinestatic

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

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

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

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]nOne byte 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
[in]destwhere to write
[in]nunsigned 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  id 
)
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]id48-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 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
[in]destwhere to write
[in]dest_sizeinto how many bytes to write
[in]nunsigned long int to write

◆ mach_write_ulonglong()

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

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