MySQL 8.4.0
Source Code Documentation
rem0rec.h File Reference

Record manager. More...

#include <ostream>
#include <sstream>
#include "univ.i"
#include "data0data.h"
#include "mtr0types.h"
#include "page0types.h"
#include "rem/rec.h"
#include "rem0types.h"
#include "trx0types.h"
#include "ut0class_life_cycle.h"
#include "rem0wrec.h"
#include "rem0rec.ic"

Go to the source code of this file.

Classes

class  Rec_offsets
 A helper RAII wrapper for otherwise difficult to use sequence of: More...
 
struct  rec_index_print
 Wrapper for pretty-printing a record. More...
 
struct  rec_offsets_print
 Wrapper for pretty-printing a record. More...
 
class  rec_printer
 Pretty-printer of records and tuples. More...
 

Macros

#define rec_offs_init(offsets)    rec_offs_set_n_alloc(offsets, (sizeof offsets) / sizeof *offsets)
 

Functions

static const rec_trec_get_next_ptr_const (const rec_t *rec, ulint comp)
 The following function is used to get the pointer of the next chained record on the same page. More...
 
static rec_trec_get_next_ptr (rec_t *rec, ulint comp)
 The following function is used to get the pointer of the next chained record on the same page. More...
 
static ulint rec_get_next_offs (const rec_t *rec, ulint comp)
 The following function is used to get the offset of the next chained record on the same page. More...
 
static void rec_set_next_offs_old (rec_t *rec, ulint next)
 The following function is used to set the next record offset field of an old-style record. More...
 
static void rec_set_next_offs_new (rec_t *rec, ulint next)
 The following function is used to set the next record offset field of a new-style record. More...
 
static ulint rec_get_n_owned_old (const rec_t *rec)
 The following function is used to get the number of records owned by the previous directory record. More...
 
static void rec_set_n_owned_old (rec_t *rec, ulint n_owned)
 The following function is used to set the number of owned records. More...
 
static ulint rec_get_n_owned_new (const rec_t *rec)
 The following function is used to get the number of records owned by the previous directory record. More...
 
static void rec_set_n_owned_new (rec_t *rec, page_zip_des_t *page_zip, ulint n_owned)
 The following function is used to set the number of owned records. More...
 
static void rec_set_info_bits_old (rec_t *rec, ulint bits)
 The following function is used to set the info bits of a record. More...
 
static void rec_set_info_bits_new (rec_t *rec, ulint bits)
 The following function is used to set the info bits of a record. More...
 
static void rec_set_status (rec_t *rec, ulint bits)
 The following function is used to set the status bits of a new-style record. More...
 
static ulint rec_get_info_and_status_bits (const rec_t *rec, bool comp)
 The following function is used to retrieve the info and status bits of a record. More...
 
static void rec_set_info_and_status_bits (rec_t *rec, ulint bits)
 The following function is used to set the info and status bits of a record. More...
 
static bool rec_get_deleted_flag (const rec_t *rec, bool comp)
 The following function tells if record is delete marked. More...
 
static void rec_set_deleted_flag_old (rec_t *rec, bool flag)
 The following function is used to set the deleted bit. More...
 
static void rec_set_deleted_flag_new (rec_t *rec, page_zip_des_t *page_zip, bool flag)
 The following function is used to set the deleted bit. More...
 
static void rec_new_set_instant (rec_t *rec)
 The following function is used to set the instant bit. More...
 
static void rec_new_set_versioned (rec_t *rec)
 The following function is used to set the row version bit. More...
 
static void rec_new_reset_instant_version (rec_t *rec)
 The following function is used to reset the instant bit and the row version bit. More...
 
static void rec_old_set_versioned (rec_t *rec, bool flag)
 The following function is used to set the instant bit. More...
 
static bool rec_get_node_ptr_flag (const rec_t *rec)
 The following function tells if a new-style record is a node pointer. More...
 
static ulint rec_get_heap_no_old (const rec_t *rec)
 The following function is used to get the order number of an old-style record in the heap of the index page. More...
 
static void rec_set_heap_no_old (rec_t *rec, ulint heap_no)
 The following function is used to set the heap number field in an old-style record. More...
 
static ulint rec_get_heap_no_new (const rec_t *rec)
 The following function is used to get the order number of a new-style record in the heap of the index page. More...
 
static void rec_set_heap_no_new (rec_t *rec, ulint heap_no)
 The following function is used to set the heap number field in a new-style record. More...
 
static void rec_set_1byte_offs_flag (rec_t *rec, bool flag)
 The following function is used to set the 1-byte offsets flag. More...
 
ulint rec_get_n_extern_new (const rec_t *rec, const dict_index_t *index, ulint n)
 Determine how many of the first n columns in a compact physical record are stored externally. More...
 
static const byterec_get_nth_field_old_instant (const rec_t *rec, uint16_t n, const dict_index_t *index, ulint *len)
 Gets the value of the specified field in the record in old style. More...
 
static const byterec_get_nth_field_instant (const rec_t *rec, const ulint *offsets, ulint n, const dict_index_t *index, ulint *len)
 Gets the value of the specified field in the record. More...
 
static bool rec_field_not_null_not_add_col_def (ulint len)
 Determine if the field is not NULL and not having default value after instant ADD COLUMN. More...
 
static bool rec_offs_comp (const ulint *offsets)
 Determine if the offsets are for a record in the new compact format. More...
 
static bool rec_offs_any_extern (const ulint *offsets)
 Determine if the offsets are for a record containing externally stored columns. More...
 
static const byterec_offs_any_null_extern (const dict_index_t *index, const rec_t *rec, const ulint *offsets)
 Determine if the offsets are for a record containing null BLOB pointers. More...
 
static ulint rec_offs_n_extern (const dict_index_t *index, const ulint *offsets)
 Returns the number of extern bits set in a record. More...
 
static ulint rec_offs_data_size (const ulint *offsets)
 The following function returns the data size of a physical record, that is the sum of field lengths. More...
 
static ulint rec_offs_extra_size (const ulint *offsets)
 Returns the total size of record minus data size of record. More...
 
static ulint rec_offs_size (const ulint *offsets)
 Returns the total size of a physical record. More...
 
static byterec_get_start (const rec_t *rec, const ulint *offsets)
 Returns a pointer to the start of the record. More...
 
static byterec_get_end (const rec_t *rec, const ulint *offsets)
 Returns a pointer to the end of the record. More...
 
static rec_trec_copy (void *buf, const rec_t *rec, const ulint *offsets)
 Copy a physical record to a buffer. More...
 
ulint rec_get_serialize_size (const dict_index_t *index, const dfield_t *fields, ulint n_fields, const dtuple_t *v_entry, ulint *extra, uint8_t rec_version)
 Determines the size of a data tuple prefix in a temporary file. More...
 
void rec_deserialize_init_offsets (const rec_t *rec, const dict_index_t *index, ulint *offsets)
 Determine the offset to each field in temporary file. More...
 
void rec_serialize_dtuple (rec_t *rec, const dict_index_t *index, const dfield_t *fields, ulint n_fields, const dtuple_t *v_entry, uint8_t rec_version)
 Builds a temporary file record out of a data tuple. More...
 
rec_trec_copy_prefix_to_buf (const rec_t *rec, const dict_index_t *index, ulint n_fields, byte **buf, size_t *buf_size)
 Copies the first n fields of a physical record to a new physical record in a buffer. More...
 
static uint64_t rec_hash (const rec_t *rec, const ulint *offsets, ulint n_fields, ulint n_bytes, uint64_t hashed_value, const dict_index_t *index)
 Compute a hash value of a prefix of a leaf page record. More...
 
rec_trec_convert_dtuple_to_rec (byte *buf, const dict_index_t *index, const dtuple_t *dtuple)
 Builds a physical record out of a data tuple and stores it into the given buffer. More...
 
static ulint rec_get_converted_extra_size (ulint data_size, ulint n_fields, bool has_ext)
 Returns the extra size of an old-style physical record if we know its data size and number of fields. More...
 
ulint rec_get_converted_size_comp_prefix (const dict_index_t *index, const dfield_t *fields, ulint n_fields, ulint *extra)
 Determines the size of a data tuple prefix in ROW_FORMAT=COMPACT. More...
 
ulint rec_get_converted_size_comp (const dict_index_t *index, ulint status, const dfield_t *fields, ulint n_fields, ulint *extra)
 Determines the size of a data tuple in ROW_FORMAT=COMPACT. More...
 
static ulint rec_get_converted_size (const dict_index_t *index, const dtuple_t *dtuple)
 The following function returns the size of a data tuple when converted to a physical record. More...
 
void rec_copy_prefix_to_dtuple (dtuple_t *tuple, const rec_t *rec, const dict_index_t *index, ulint n_fields, mem_heap_t *heap)
 Copies the first n fields of a physical record to a data tuple. More...
 
static uint8_t rec_get_n_fields_length (ulint n_fields)
 Get the length of the number of fields for any new style record. More...
 
static void rec_set_instant_row_version_new (rec_t *rec, uint8_t version)
 Set the row version on one new style leaf page record. More...
 
static void rec_set_instant_row_version_old (rec_t *rec, uint8_t version)
 Set the row version on one old style leaf page record. More...
 
bool rec_validate (const rec_t *rec, const ulint *offsets)
 Validates the consistency of a physical record. More...
 
void rec_print_old (FILE *file, const rec_t *rec)
 Prints an old-style physical record. More...
 
void rec_print_mbr_rec (FILE *file, const rec_t *rec, const ulint *offsets)
 Prints a spatial index record. More...
 
void rec_print_new (FILE *file, const rec_t *rec, const ulint *offsets)
 Prints a physical record. More...
 
void rec_print (FILE *file, const rec_t *rec, const dict_index_t *index)
 Prints a physical record. More...
 
void rec_print (std::ostream &o, const rec_t *rec, ulint info, const ulint *offsets)
 Pretty-print a record. More...
 
std::ostream & operator<< (std::ostream &o, const rec_index_print &r)
 Display a record. More...
 
std::ostream & operator<< (std::ostream &o, const rec_offsets_print &r)
 Display a record. More...
 
trx_id_t rec_get_trx_id (const rec_t *rec, const dict_index_t *index)
 Reads the DB_TRX_ID of a clustered index record. More...
 
bool is_store_version (const dict_index_t *index, size_t n_tuple_fields)
 For a given clustered index, version is to be stored on physical record. More...
 
size_t get_extra_bytes_for_temp_redundant (const dict_index_t *index, bool valid_version)
 

Variables

constexpr ulint REC_1BYTE_OFFS_LIMIT = 0x7FUL
 
constexpr ulint REC_2BYTE_OFFS_LIMIT = 0x7FFFUL
 
constexpr ulint REC_MAX_DATA_SIZE = 16384
 

Detailed Description

Record manager.

Created 5/30/1994 Heikki Tuuri

Macro Definition Documentation

◆ rec_offs_init

#define rec_offs_init (   offsets)     rec_offs_set_n_alloc(offsets, (sizeof offsets) / sizeof *offsets)

Function Documentation

◆ get_extra_bytes_for_temp_redundant()

size_t get_extra_bytes_for_temp_redundant ( const dict_index_t index,
bool  valid_version 
)

◆ is_store_version()

bool is_store_version ( const dict_index_t index,
size_t  n_tuple_fields 
)

For a given clustered index, version is to be stored on physical record.

Parameters
[in]indexclustered index
[in]n_tuple_fieldsnumber of fields in tuple
Returns
true, if version is to be stored

◆ operator<<() [1/2]

std::ostream & operator<< ( std::ostream &  o,
const rec_index_print r 
)

Display a record.

Parameters
[in,out]ooutput stream
[in]rrecord to display
Returns
the output stream

◆ operator<<() [2/2]

std::ostream & operator<< ( std::ostream &  o,
const rec_offsets_print r 
)

Display a record.

Parameters
[in,out]ooutput stream
[in]rrecord to display
Returns
the output stream

◆ rec_convert_dtuple_to_rec()

rec_t * rec_convert_dtuple_to_rec ( byte buf,
const dict_index_t index,
const dtuple_t dtuple 
)

Builds a physical record out of a data tuple and stores it into the given buffer.

Parameters
[in]bufstart address of the physical record
[in]indexrecord descriptor
[in]dtupledata tuple
Returns
pointer to the origin of physical record

Builds a physical record out of a data tuple and stores it into the given buffer.

Returns
pointer to the origin of physical record
Parameters
bufin: start address of the physical record
indexin: record descriptor
dtuplein: data tuple

◆ rec_copy()

static rec_t * rec_copy ( void *  buf,
const rec_t rec,
const ulint offsets 
)
inlinestatic

Copy a physical record to a buffer.

Parameters
[in]bufbuffer
[in]recphysical record
[in]offsetsarray returned by rec_get_offsets()
Returns
pointer to the origin of the copy

◆ rec_copy_prefix_to_buf()

rec_t * rec_copy_prefix_to_buf ( const rec_t rec,
const dict_index_t index,
ulint  n_fields,
byte **  buf,
size_t *  buf_size 
)

Copies the first n fields of a physical record to a new physical record in a buffer.

Parameters
[in]recphysical record
[in]indexrecord descriptor
[in]n_fieldsnumber of fields to copy
[in,out]bufmemory buffer for the copied prefix, or NULL
[in,out]buf_sizebuffer size
Returns
own: copied record

◆ rec_copy_prefix_to_dtuple()

void rec_copy_prefix_to_dtuple ( dtuple_t tuple,
const rec_t rec,
const dict_index_t index,
ulint  n_fields,
mem_heap_t heap 
)

Copies the first n fields of a physical record to a data tuple.

The fields are copied to the memory heap.

Parameters
[out]tupledata tuple
[in]recphysical record
[in]indexrecord descriptor
[in]n_fieldsnumber of fields to copy
[in]heapmemory heap

The fields are copied to the memory heap.

Parameters
tupleout: data tuple
recin: physical record
indexin: record descriptor
n_fieldsin: number of fields to copy
heapin: memory heap

◆ rec_deserialize_init_offsets()

void rec_deserialize_init_offsets ( const rec_t rec,
const dict_index_t index,
ulint offsets 
)

Determine the offset to each field in temporary file.

Parameters
[in]rectemporary file record
[in]indexrecord descriptor
[in,out]offsetsarray of offsets
See also
rec_serialize_dtuple()
rec_serialize_dtuple()
Parameters
recin: temporary file record
indexin: record descriptor
offsetsin/out: array of offsets; in: n=rec_offs_n_fields(offsets)

◆ rec_field_not_null_not_add_col_def()

static bool rec_field_not_null_not_add_col_def ( ulint  len)
inlinestatic

Determine if the field is not NULL and not having default value after instant ADD COLUMN.

Parameters
[in]lenlength of a field
Returns
true if not NULL and not having default value

◆ rec_get_converted_extra_size()

static ulint rec_get_converted_extra_size ( ulint  data_size,
ulint  n_fields,
bool  has_ext 
)
inlinestatic

Returns the extra size of an old-style physical record if we know its data size and number of fields.

Parameters
[in]data_sizedata size
[in]n_fieldsnumber of fields
[in]has_exttrue if tuple has ext fields
Returns
extra size

◆ rec_get_converted_size()

static ulint rec_get_converted_size ( const dict_index_t index,
const dtuple_t dtuple 
)
inlinestatic

The following function returns the size of a data tuple when converted to a physical record.

Parameters
[in]indexrecord descriptor
[in]dtupledata tuple
Returns
size

◆ rec_get_converted_size_comp()

ulint rec_get_converted_size_comp ( const dict_index_t index,
ulint  status,
const dfield_t fields,
ulint  n_fields,
ulint extra 
)

Determines the size of a data tuple in ROW_FORMAT=COMPACT.

Parameters
[in]indexrecord descriptor; dict_table_is_comp() is assumed to hold, even if it does not
[in]statusstatus bits of the record
[in]fieldsarray of data fields
[in]n_fieldsnumber of data fields
[out]extraextra size
Returns
total size
total size
Parameters
indexin: record descriptor; dict_table_is_comp() is assumed to hold, even if it does not
statusin: status bits of the record
fieldsin: array of data fields
n_fieldsin: number of data fields
extraout: extra size

◆ rec_get_converted_size_comp_prefix()

ulint rec_get_converted_size_comp_prefix ( const dict_index_t index,
const dfield_t fields,
ulint  n_fields,
ulint extra 
)

Determines the size of a data tuple prefix in ROW_FORMAT=COMPACT.

Parameters
[in]indexrecord descriptor
[in]fieldsarray of data fields
[in]n_fieldsnumber of data fields
[out]extraextra size
Returns
total size
total size
Parameters
indexin: record descriptor
fieldsin: array of data fields
n_fieldsin: number of data fields
extraout: extra size

◆ rec_get_deleted_flag()

static bool rec_get_deleted_flag ( const rec_t rec,
bool  comp 
)
inlinestatic

The following function tells if record is delete marked.

Parameters
[in]recPhysical record.
[in]compNonzero=compact page format.
Returns
nonzero if delete marked

◆ rec_get_end()

static byte * rec_get_end ( const rec_t rec,
const ulint offsets 
)
inlinestatic

Returns a pointer to the end of the record.

Parameters
[in]recpointer to record
[in]offsetsarray returned by rec_get_offsets()
Returns
pointer to end

◆ rec_get_heap_no_new()

static ulint rec_get_heap_no_new ( const rec_t rec)
inlinestatic

The following function is used to get the order number of a new-style record in the heap of the index page.

Parameters
[in]recphysical record
Returns
heap order number

◆ rec_get_heap_no_old()

static ulint rec_get_heap_no_old ( const rec_t rec)
inlinestatic

The following function is used to get the order number of an old-style record in the heap of the index page.

Parameters
[in]recphysical record
Returns
heap order number

◆ rec_get_info_and_status_bits()

static ulint rec_get_info_and_status_bits ( const rec_t rec,
bool  comp 
)
inlinestatic

The following function is used to retrieve the info and status bits of a record.

(Only compact records have status bits.)

Parameters
[in]recPhysical record.
[in]compNonzero=compact page format.
Returns
info bits

◆ rec_get_n_extern_new()

ulint rec_get_n_extern_new ( const rec_t rec,
const dict_index_t index,
ulint  n 
)

Determine how many of the first n columns in a compact physical record are stored externally.

Parameters
[in]reccompact physical record
[in]indexrecord descriptor
[in]nnumber of columns to scan
Returns
number of externally stored columns
number of externally stored columns
Parameters
recin: compact physical record
indexin: record descriptor
nin: number of columns to scan

◆ rec_get_n_fields_length()

static uint8_t rec_get_n_fields_length ( ulint  n_fields)
inlinestatic

Get the length of the number of fields for any new style record.

Parameters
[in]n_fieldsnumber of fields in the record
Returns
length of specified number of fields

◆ rec_get_n_owned_new()

static ulint rec_get_n_owned_new ( const rec_t rec)
inlinestatic

The following function is used to get the number of records owned by the previous directory record.

Returns
number of owned records in: new-style physical record

◆ rec_get_n_owned_old()

static ulint rec_get_n_owned_old ( const rec_t rec)
inlinestatic

The following function is used to get the number of records owned by the previous directory record.

Returns
number of owned records in: old-style physical record

◆ rec_get_next_offs()

static ulint rec_get_next_offs ( const rec_t rec,
ulint  comp 
)
inlinestatic

The following function is used to get the offset of the next chained record on the same page.

Parameters
[in]recPhysical record.
[in]compNonzero=compact page format.
Returns
the page offset of the next chained record, or 0 if none

◆ rec_get_next_ptr()

static rec_t * rec_get_next_ptr ( rec_t rec,
ulint  comp 
)
inlinestatic

The following function is used to get the pointer of the next chained record on the same page.

Parameters
[in]recPhysical record.
[in]compNonzero=compact page format.
Returns
pointer to the next chained record, or nullptr if none

◆ rec_get_next_ptr_const()

static const rec_t * rec_get_next_ptr_const ( const rec_t rec,
ulint  comp 
)
inlinestatic

The following function is used to get the pointer of the next chained record on the same page.

Parameters
[in]recPhysical record.
[in]compNonzero=compact page format.
Returns
pointer to the next chained record, or nullptr if none

◆ rec_get_node_ptr_flag()

static bool rec_get_node_ptr_flag ( const rec_t rec)
inlinestatic

The following function tells if a new-style record is a node pointer.

Returns
true if node pointer in: physical record

◆ rec_get_nth_field_instant()

static const byte * rec_get_nth_field_instant ( const rec_t rec,
const ulint offsets,
ulint  n,
const dict_index_t index,
ulint len 
)
inlinestatic

Gets the value of the specified field in the record.

This is only used when there is possibility that the record comes from the clustered index, which has some instantly added columns.

Parameters
[in]recphysical record
[in]offsetsarray returned by rec_get_offsets()
[in]nindex of the field
[in]indexclustered index where the record resides, or nullptr if the record doesn't have instantly added columns for sure
[out]lenlength of the field, UNIV_SQL_NULL if SQL null
Returns
value of the field, could be either pointer to rec or default value

◆ rec_get_nth_field_old_instant()

static const byte * rec_get_nth_field_old_instant ( const rec_t rec,
uint16_t  n,
const dict_index_t index,
ulint len 
)
inlinestatic

Gets the value of the specified field in the record in old style.

This is only used for record from instant index, which is clustered index and has some instantly added columns.

Parameters
[in]recphysical record
[in]nindex of the field
[in]indexclustered index where the record resides
[out]lenlength of the field, UNIV_SQL if SQL null
Returns
value of the field, could be either pointer to rec or default value

◆ rec_get_serialize_size()

ulint rec_get_serialize_size ( const dict_index_t index,
const dfield_t fields,
ulint  n_fields,
const dtuple_t v_entry,
ulint extra,
uint8_t  rec_version 
)

Determines the size of a data tuple prefix in a temporary file.

Parameters
[in]indexrecord descriptor
[in]fieldsarray of data fields
[in]n_fieldsnumber of data fields
[in]v_entrydtuple contains virtual column data
[out]extraextra size
[in]rec_versionrow version of record
Returns
total size

Determines the size of a data tuple prefix in a temporary file.

Returns
total size

◆ rec_get_start()

static byte * rec_get_start ( const rec_t rec,
const ulint offsets 
)
inlinestatic

Returns a pointer to the start of the record.

Parameters
[in]recpointer to record
[in]offsetsarray returned by rec_get_offsets()
Returns
pointer to start

◆ rec_get_trx_id()

trx_id_t rec_get_trx_id ( const rec_t rec,
const dict_index_t index 
)

Reads the DB_TRX_ID of a clustered index record.

Parameters
[in]recrecord
[in]indexclustered index
Returns
the value of DB_TRX_ID
the value of DB_TRX_ID
Parameters
recin: record
indexin: clustered index

◆ rec_hash()

static uint64_t rec_hash ( const rec_t rec,
const ulint offsets,
ulint  n_fields,
ulint  n_bytes,
uint64_t  hashed_value,
const dict_index_t index 
)
inlinestatic

Compute a hash value of a prefix of a leaf page record.

Parameters
[in]recleaf page record
[in]offsetsrec_get_offsets(rec)
[in]n_fieldsnumber of complete fields to hash
[in]n_bytesnumber of bytes to hash in the last field
[in]hashed_valuehash value of the index identifier
[in]indexindex where the record resides
Returns
the hashed value

◆ rec_new_reset_instant_version()

static void rec_new_reset_instant_version ( rec_t rec)
inlinestatic

The following function is used to reset the instant bit and the row version bit.

Parameters
[in,out]recnew-style (COMPACT/DYNAMIC) physical record

◆ rec_new_set_instant()

static void rec_new_set_instant ( rec_t rec)
inlinestatic

The following function is used to set the instant bit.

Parameters
[in,out]recnew-style physical record

◆ rec_new_set_versioned()

static void rec_new_set_versioned ( rec_t rec)
inlinestatic

The following function is used to set the row version bit.

Parameters
[in,out]recnew-style (COMPACT/DYNAMIC) physical record

◆ rec_offs_any_extern()

static bool rec_offs_any_extern ( const ulint offsets)
inlinestatic

Determine if the offsets are for a record containing externally stored columns.

Parameters
[in]offsetsarray returned by rec_get_offsets()
Returns
nonzero if externally stored

◆ rec_offs_any_null_extern()

static const byte * rec_offs_any_null_extern ( const dict_index_t index,
const rec_t rec,
const ulint offsets 
)
inlinestatic

Determine if the offsets are for a record containing null BLOB pointers.

Parameters
[in]indexrecord descriptor
[in]recrecord
[in]offsetsarray returned by rec_get_offsets()
Returns
first field containing a null BLOB pointer, or NULL if none found

◆ rec_offs_comp()

static bool rec_offs_comp ( const ulint offsets)
inlinestatic

Determine if the offsets are for a record in the new compact format.

Parameters
[in]offsetsarray returned by rec_get_offsets()
Returns
nonzero if compact format

◆ rec_offs_data_size()

static ulint rec_offs_data_size ( const ulint offsets)
inlinestatic

The following function returns the data size of a physical record, that is the sum of field lengths.

SQL null fields are counted as length 0 fields. The value returned by the function is the distance from record origin to record end in bytes.

Parameters
[in]offsetsarray returned by rec_get_offsets()
Returns
size

◆ rec_offs_extra_size()

static ulint rec_offs_extra_size ( const ulint offsets)
inlinestatic

Returns the total size of record minus data size of record.

The value returned by the function is the distance from record start to record origin in bytes.

Parameters
[in]offsetsarray returned by rec_get_offsets()
Returns
size

◆ rec_offs_n_extern()

static ulint rec_offs_n_extern ( const dict_index_t index,
const ulint offsets 
)
inlinestatic

Returns the number of extern bits set in a record.

Parameters
[in]indexrecord descriptor
[in]offsetsarray returned by rec_get_offsets()
Returns
number of externally stored fields

◆ rec_offs_size()

static ulint rec_offs_size ( const ulint offsets)
inlinestatic

Returns the total size of a physical record.

Parameters
[in]offsetsarray returned by rec_get_offsets()
Returns
size

◆ rec_old_set_versioned()

static void rec_old_set_versioned ( rec_t rec,
bool  flag 
)
inlinestatic

The following function is used to set the instant bit.

Parameters
[in,out]recold-style (REDUNDANT) physical record
[in]flagset the bit to this flag

◆ rec_print() [1/2]

void rec_print ( FILE *  file,
const rec_t rec,
const dict_index_t index 
)

Prints a physical record.

Parameters
[in]fileFile where to print
[in]recPhysical record
[in]indexRecord descriptor

◆ rec_print() [2/2]

void rec_print ( std::ostream &  o,
const rec_t rec,
ulint  info,
const ulint offsets 
)

Pretty-print a record.

Parameters
[in,out]ooutput stream
[in]recphysical record
[in]inforec_get_info_bits(rec)
[in]offsetsrec_get_offsets(rec)

◆ rec_print_mbr_rec()

void rec_print_mbr_rec ( FILE *  file,
const rec_t rec,
const ulint offsets 
)

Prints a spatial index record.

Parameters
[in]fileFile where to print
[in]recPhysical record
[in]offsetsArray returned by rec_get_offsets()

◆ rec_print_new()

void rec_print_new ( FILE *  file,
const rec_t rec,
const ulint offsets 
)

Prints a physical record.

Parameters
[in]filefile where to print
[in]recphysical record
[in]offsetsarray returned by rec_get_offsets()
Parameters
filein: file where to print
recin: physical record
offsetsin: array returned by rec_get_offsets()

◆ rec_print_old()

void rec_print_old ( FILE *  file,
const rec_t rec 
)

Prints an old-style physical record.

Parameters
[in]fileFile where to print
[in]recPhysical record

◆ rec_serialize_dtuple()

void rec_serialize_dtuple ( rec_t rec,
const dict_index_t index,
const dfield_t fields,
ulint  n_fields,
const dtuple_t v_entry,
uint8_t  rec_version 
)

Builds a temporary file record out of a data tuple.

Parameters
[out]recrecord
[in]indexrecord descriptor
[in]fieldsarray of data fields
[in]n_fieldsnumber of fields
[in]v_entrydtuple contains virtual column data
[in]rec_versionrec version
See also
rec_deserialize_init_offsets()

◆ rec_set_1byte_offs_flag()

static void rec_set_1byte_offs_flag ( rec_t rec,
bool  flag 
)
inlinestatic

The following function is used to set the 1-byte offsets flag.

Parameters
[in]recphysical record
[in]flagtrue if 1byte form

◆ rec_set_deleted_flag_new()

static void rec_set_deleted_flag_new ( rec_t rec,
page_zip_des_t page_zip,
bool  flag 
)
inlinestatic

The following function is used to set the deleted bit.

Parameters
[in,out]recnew-style physical record
[in,out]page_zipcompressed page, or NULL
[in]flagtrue if delete marked

◆ rec_set_deleted_flag_old()

static void rec_set_deleted_flag_old ( rec_t rec,
bool  flag 
)
inlinestatic

The following function is used to set the deleted bit.

Parameters
[in]recold-style physical record
[in]flagtrue if delete marked

◆ rec_set_heap_no_new()

static void rec_set_heap_no_new ( rec_t rec,
ulint  heap_no 
)
inlinestatic

The following function is used to set the heap number field in a new-style record.

Parameters
[in,out]recphysical record
[in]heap_nothe heap number

◆ rec_set_heap_no_old()

static void rec_set_heap_no_old ( rec_t rec,
ulint  heap_no 
)
inlinestatic

The following function is used to set the heap number field in an old-style record.

Parameters
[in]recphysical record
[in]heap_nothe heap number

◆ rec_set_info_and_status_bits()

static void rec_set_info_and_status_bits ( rec_t rec,
ulint  bits 
)
inlinestatic

The following function is used to set the info and status bits of a record.

(Only compact records have status bits.)

Parameters
[in,out]reccompact physical record
[in]bitsinfo bits

◆ rec_set_info_bits_new()

static void rec_set_info_bits_new ( rec_t rec,
ulint  bits 
)
inlinestatic

The following function is used to set the info bits of a record.

Parameters
[in,out]recnew-style physical record
[in]bitsinfo bits

◆ rec_set_info_bits_old()

static void rec_set_info_bits_old ( rec_t rec,
ulint  bits 
)
inlinestatic

The following function is used to set the info bits of a record.

Parameters
[in]recold-style physical record
[in]bitsinfo bits

◆ rec_set_instant_row_version_new()

static void rec_set_instant_row_version_new ( rec_t rec,
uint8_t  version 
)
inlinestatic

Set the row version on one new style leaf page record.

This is only needed for table after instant ADD/DROP COLUMN.

Parameters
[in,out]recleaf page record
[in]versionrow version

◆ rec_set_instant_row_version_old()

static void rec_set_instant_row_version_old ( rec_t rec,
uint8_t  version 
)
inlinestatic

Set the row version on one old style leaf page record.

This is only needed for table after instant ADD/DROP COLUMN.

Parameters
[in,out]recleaf page record
[in]versionrow version

◆ rec_set_n_owned_new()

static void rec_set_n_owned_new ( rec_t rec,
page_zip_des_t page_zip,
ulint  n_owned 
)
inlinestatic

The following function is used to set the number of owned records.

Parameters
[in,out]recnew-style physical record
[in,out]page_zipcompressed page, or NULL
[in]n_ownedthe number of owned

◆ rec_set_n_owned_old()

static void rec_set_n_owned_old ( rec_t rec,
ulint  n_owned 
)
inlinestatic

The following function is used to set the number of owned records.

Parameters
[in]recold-style physical record
[in]n_ownedthe number of owned

◆ rec_set_next_offs_new()

static void rec_set_next_offs_new ( rec_t rec,
ulint  next 
)
inlinestatic

The following function is used to set the next record offset field of a new-style record.

◆ rec_set_next_offs_old()

static void rec_set_next_offs_old ( rec_t rec,
ulint  next 
)
inlinestatic

The following function is used to set the next record offset field of an old-style record.

Parameters
[in]recold-style physical record
[in]nextoffset of the next record

◆ rec_set_status()

static void rec_set_status ( rec_t rec,
ulint  bits 
)
inlinestatic

The following function is used to set the status bits of a new-style record.

Parameters
[in,out]recphysical record
[in]bitsinfo bits

◆ rec_validate()

bool rec_validate ( const rec_t rec,
const ulint offsets 
)

Validates the consistency of a physical record.

Parameters
[in]recphysical record
[in]offsetsarray returned by rec_get_offsets()
Returns
true if ok

Variable Documentation

◆ REC_1BYTE_OFFS_LIMIT

constexpr ulint REC_1BYTE_OFFS_LIMIT = 0x7FUL
constexpr

◆ REC_2BYTE_OFFS_LIMIT

constexpr ulint REC_2BYTE_OFFS_LIMIT = 0x7FFFUL
constexpr

◆ REC_MAX_DATA_SIZE

constexpr ulint REC_MAX_DATA_SIZE = 16384
constexpr