MySQL  8.0.20
Source Code Documentation
dict_sys_t Struct Reference

#include <dict0dict.h>

Public Member Functions

template<typename Functor >
void for_each_table (Functor &functor)
 Iterate each table. More...
 

Static Public Member Functions

static bool is_reserved (space_id_t space)
 Check if a tablespace id is a reserved one. More...
 
static bool is_dd_table_id (table_id_t id)
 Check if a table is hardcoded. More...
 

Public Attributes

DictSysMutex mutex
 mutex protecting the data dictionary; protects also the disk-based dictionary system tables; this mutex serializes CREATE TABLE and DROP TABLE, as well as reading the dictionary data for a table from system tables More...
 
row_id_t row_id
 the next row id to assign; NOTE that at a checkpoint this must be written to the dict system header and flushed to a file; in recovery this must be derived from the log records More...
 
hash_table_ttable_hash
 hash table of the tables, based on name More...
 
hash_table_ttable_id_hash
 hash table of the tables, based on id More...
 
lint size
 varying space in bytes occupied by the data dictionary table and index objects More...
 
dict_table_tsys_tables
 Handler to sys_* tables, they're only for upgrade. More...
 
dict_table_tsys_columns
 SYS_COLUMNS table. More...
 
dict_table_tsys_indexes
 SYS_INDEXES table. More...
 
dict_table_tsys_fields
 SYS_FIELDS table. More...
 
dict_table_tsys_virtual
 SYS_VIRTUAL table. More...
 
dict_table_ttable_stats
 Permanent handle to mysql.innodb_table_stats. More...
 
dict_table_tindex_stats
 Permanent handle to mysql.innodb_index_stats. More...
 
dict_table_tddl_log
 Permanent handle to mysql.innodb_ddl_log. More...
 
dict_table_tdynamic_metadata
 Permanent handle to mysql.innodb_dynamic_metadata. More...
 
 table_LRU
 List of tables that can be evicted from the cache. More...
 
 table_non_LRU
 List of tables that can't be evicted from the cache. More...
 

Static Public Attributes

static std::set< dd::Object_ids_dd_table_ids = {}
 Set of ids of DD tables. More...
 
static constexpr space_id_t s_log_space_first_id = 0xFFFFFFF0UL
 The first ID of the redo log pseudo-tablespace. More...
 
static constexpr space_id_t s_invalid_space_id = 0xFFFFFFFF
 Use maximum UINT value to indicate invalid space ID. More...
 
static constexpr space_id_t s_space_id = 0xFFFFFFFE
 The data dictionary tablespace ID. More...
 
static constexpr space_id_t s_temp_space_id = 0xFFFFFFFD
 The innodb_temporary tablespace ID. More...
 
static constexpr space_id_t undo_space_id_range = 512
 The number of space IDs dedicated to each undo tablespace. More...
 
static constexpr space_id_t s_min_undo_space_id
 The lowest undo tablespace ID. More...
 
static constexpr space_id_t s_max_undo_space_id = s_log_space_first_id - 1
 The highest undo tablespace ID. More...
 
static constexpr space_id_t s_reserved_space_id = s_min_undo_space_id
 The first reserved tablespace ID. More...
 
static constexpr space_id_t s_max_temp_space_id = s_reserved_space_id - 1000
 Leave 1K space_ids and start space_ids for temporary general tablespaces (total 400K space_ids) More...
 
static constexpr space_id_t s_min_temp_space_id
 Lowest temporary general space id. More...
 
static constexpr dd::Object_id s_dd_space_id = 1
 The dd::Tablespace::id of the dictionary tablespace. More...
 
static constexpr dd::Object_id s_dd_sys_space_id = 2
 The dd::Tablespace::id of innodb_system. More...
 
static constexpr dd::Object_id s_dd_temp_space_id = 3
 The dd::Tablespace::id of innodb_temporary. More...
 
static const char * s_dd_space_name = "mysql"
 The name of the data dictionary tablespace. More...
 
static const char * s_dd_space_file_name = "mysql.ibd"
 The file name of the data dictionary tablespace. More...
 
static const char * s_sys_space_name = "innodb_system"
 The name of the hard-coded system tablespace. More...
 
static const char * s_temp_space_name = "innodb_temporary"
 The name of the predefined temporary tablespace. More...
 
static const char * s_temp_space_file_name = "ibtmp1"
 The file name of the predefined temporary tablespace. More...
 
static const char * s_file_per_table_name = "innodb_file_per_table"
 The hard-coded tablespace name innodb_file_per_table. More...
 
static const char * s_default_undo_space_name_1 = "innodb_undo_001"
 These two undo tablespaces cannot be dropped. More...
 
static const char * s_default_undo_space_name_2 = "innodb_undo_002"
 
static constexpr table_id_t s_dynamic_meta_table_id = 2
 The table ID of mysql.innodb_dynamic_metadata. More...
 
static constexpr space_index_t s_dynamic_meta_index_id = 2
 The clustered index ID of mysql.innodb_dynamic_metadata. More...
 

Member Function Documentation

◆ for_each_table()

template<typename Functor >
void dict_sys_t::for_each_table ( Functor &  functor)
inline

Iterate each table.

Template Parameters
Functorvisitor
Parameters
[in,out]functorto be invoked on each table

◆ is_dd_table_id()

static bool dict_sys_t::is_dd_table_id ( table_id_t  id)
inlinestatic

Check if a table is hardcoded.

it only includes the dd tables

Parameters
[in]idtable ID
Return values
trueif the table is a persistent hard-coded table (dict_table_t::is_temporary() will not hold)
falseif the table is not hard-coded (it can be persistent or temporary)

◆ is_reserved()

static bool dict_sys_t::is_reserved ( space_id_t  space)
inlinestatic

Check if a tablespace id is a reserved one.

Parameters
[in]spacetablespace id to check
Returns
true if a reserved tablespace id, otherwise false

Member Data Documentation

◆ ddl_log

dict_table_t* dict_sys_t::ddl_log

Permanent handle to mysql.innodb_ddl_log.

◆ dynamic_metadata

dict_table_t* dict_sys_t::dynamic_metadata

Permanent handle to mysql.innodb_dynamic_metadata.

◆ index_stats

dict_table_t* dict_sys_t::index_stats

Permanent handle to mysql.innodb_index_stats.

◆ mutex

DictSysMutex dict_sys_t::mutex

mutex protecting the data dictionary; protects also the disk-based dictionary system tables; this mutex serializes CREATE TABLE and DROP TABLE, as well as reading the dictionary data for a table from system tables

◆ row_id

row_id_t dict_sys_t::row_id

the next row id to assign; NOTE that at a checkpoint this must be written to the dict system header and flushed to a file; in recovery this must be derived from the log records

◆ s_dd_space_file_name

const char * dict_sys_t::s_dd_space_file_name = "mysql.ibd"
static

The file name of the data dictionary tablespace.

◆ s_dd_space_id

constexpr dd::Object_id dict_sys_t::s_dd_space_id = 1
static

The dd::Tablespace::id of the dictionary tablespace.

◆ s_dd_space_name

const char * dict_sys_t::s_dd_space_name = "mysql"
static

The name of the data dictionary tablespace.

◆ s_dd_sys_space_id

constexpr dd::Object_id dict_sys_t::s_dd_sys_space_id = 2
static

The dd::Tablespace::id of innodb_system.

◆ s_dd_table_ids

std::set< dd::Object_id > dict_sys_t::s_dd_table_ids = {}
static

Set of ids of DD tables.

The set of SE private IDs of DD tables.

Used to tell whether a table is a DD table. Since the DD tables can be rebuilt with new SE private IDs, this set replaces checks based on ranges of IDs.

◆ s_dd_temp_space_id

constexpr dd::Object_id dict_sys_t::s_dd_temp_space_id = 3
static

The dd::Tablespace::id of innodb_temporary.

◆ s_default_undo_space_name_1

const char * dict_sys_t::s_default_undo_space_name_1 = "innodb_undo_001"
static

These two undo tablespaces cannot be dropped.

◆ s_default_undo_space_name_2

const char * dict_sys_t::s_default_undo_space_name_2 = "innodb_undo_002"
static

◆ s_dynamic_meta_index_id

constexpr space_index_t dict_sys_t::s_dynamic_meta_index_id = 2
static

The clustered index ID of mysql.innodb_dynamic_metadata.

◆ s_dynamic_meta_table_id

constexpr table_id_t dict_sys_t::s_dynamic_meta_table_id = 2
static

The table ID of mysql.innodb_dynamic_metadata.

◆ s_file_per_table_name

const char * dict_sys_t::s_file_per_table_name = "innodb_file_per_table"
static

The hard-coded tablespace name innodb_file_per_table.

◆ s_invalid_space_id

constexpr space_id_t dict_sys_t::s_invalid_space_id = 0xFFFFFFFF
static

Use maximum UINT value to indicate invalid space ID.

◆ s_log_space_first_id

constexpr space_id_t dict_sys_t::s_log_space_first_id = 0xFFFFFFF0UL
static

The first ID of the redo log pseudo-tablespace.

◆ s_max_temp_space_id

constexpr space_id_t dict_sys_t::s_max_temp_space_id = s_reserved_space_id - 1000
static

Leave 1K space_ids and start space_ids for temporary general tablespaces (total 400K space_ids)

◆ s_max_undo_space_id

constexpr space_id_t dict_sys_t::s_max_undo_space_id = s_log_space_first_id - 1
static

The highest undo tablespace ID.

◆ s_min_temp_space_id

constexpr space_id_t dict_sys_t::s_min_temp_space_id
static
Initial value:
=
s_reserved_space_id - 1000 - 400000

Lowest temporary general space id.

◆ s_min_undo_space_id

constexpr space_id_t dict_sys_t::s_min_undo_space_id
static
Initial value:

The lowest undo tablespace ID.

◆ s_reserved_space_id

constexpr space_id_t dict_sys_t::s_reserved_space_id = s_min_undo_space_id
static

The first reserved tablespace ID.

◆ s_space_id

constexpr space_id_t dict_sys_t::s_space_id = 0xFFFFFFFE
static

The data dictionary tablespace ID.

◆ s_sys_space_name

const char * dict_sys_t::s_sys_space_name = "innodb_system"
static

The name of the hard-coded system tablespace.

◆ s_temp_space_file_name

const char * dict_sys_t::s_temp_space_file_name = "ibtmp1"
static

The file name of the predefined temporary tablespace.

◆ s_temp_space_id

constexpr space_id_t dict_sys_t::s_temp_space_id = 0xFFFFFFFD
static

The innodb_temporary tablespace ID.

◆ s_temp_space_name

const char * dict_sys_t::s_temp_space_name = "innodb_temporary"
static

The name of the predefined temporary tablespace.

◆ size

lint dict_sys_t::size

varying space in bytes occupied by the data dictionary table and index objects

◆ sys_columns

dict_table_t* dict_sys_t::sys_columns

SYS_COLUMNS table.

◆ sys_fields

dict_table_t* dict_sys_t::sys_fields

SYS_FIELDS table.

◆ sys_indexes

dict_table_t* dict_sys_t::sys_indexes

SYS_INDEXES table.

◆ sys_tables

dict_table_t* dict_sys_t::sys_tables

Handler to sys_* tables, they're only for upgrade.

SYS_TABLES table

◆ sys_virtual

dict_table_t* dict_sys_t::sys_virtual

SYS_VIRTUAL table.

◆ table_hash

hash_table_t* dict_sys_t::table_hash

hash table of the tables, based on name

◆ table_id_hash

hash_table_t* dict_sys_t::table_id_hash

hash table of the tables, based on id

◆ table_LRU

dict_sys_t::table_LRU

List of tables that can be evicted from the cache.

◆ table_non_LRU

dict_sys_t::table_non_LRU

List of tables that can't be evicted from the cache.

◆ table_stats

dict_table_t* dict_sys_t::table_stats

Permanent handle to mysql.innodb_table_stats.

◆ undo_space_id_range

constexpr space_id_t dict_sys_t::undo_space_id_range = 512
static

The number of space IDs dedicated to each undo tablespace.


The documentation for this struct was generated from the following files: