InnoDB Plugin  1.0
Macros | Typedefs | Enumerations | Functions
dict0boot.h File Reference
#include "univ.i"
#include "mtr0mtr.h"
#include "mtr0log.h"
#include "ut0byte.h"
#include "buf0buf.h"
#include "fsp0fsp.h"
#include "dict0dict.h"
#include "dict0boot.ic"
Include dependency graph for dict0boot.h:

Go to the source code of this file.

Macros

#define DICT_HDR_SPACE   0 /* the SYSTEM tablespace */
#define DICT_HDR_PAGE_NO   FSP_DICT_HDR_PAGE_NO
#define DICT_TABLES_ID   1
#define DICT_COLUMNS_ID   2
#define DICT_INDEXES_ID   3
#define DICT_FIELDS_ID   4
#define DICT_TABLE_IDS_ID   5
#define DICT_HDR_FIRST_ID
#define DICT_HDR   FSEG_PAGE_DATA
#define DICT_HDR_ROW_ID   0 /* The latest assigned row id */
#define DICT_HDR_TABLE_ID   8 /* The latest assigned table id */
#define DICT_HDR_INDEX_ID   16 /* The latest assigned index id */
#define DICT_HDR_MAX_SPACE_ID   24 /* The latest assigned space id,or 0*/
#define DICT_HDR_MIX_ID_LOW   28 /* Obsolete,always DICT_HDR_FIRST_ID*/
#define DICT_HDR_TABLES   32 /* Root of SYS_TABLES clust index */
#define DICT_HDR_TABLE_IDS   36 /* Root of SYS_TABLE_IDS sec index */
#define DICT_HDR_COLUMNS   40 /* Root of SYS_COLUMNS clust index */
#define DICT_HDR_INDEXES   44 /* Root of SYS_INDEXES clust index */
#define DICT_HDR_FIELDS   48 /* Root of SYS_FIELDS clust index */
#define DICT_HDR_FSEG_HEADER
#define DICT_FLD_LEN_SPACE   4
#define DICT_FLD_LEN_FLAGS   4
#define DICT_HDR_ROW_ID_WRITE_MARGIN   256

Typedefs

typedef byte dict_hdr_t

Enumerations

enum  dict_col_sys_tables_enum {
  DICT_COL__SYS_TABLES__NAME = 0, DICT_COL__SYS_TABLES__ID = 1, DICT_COL__SYS_TABLES__N_COLS = 2, DICT_COL__SYS_TABLES__TYPE = 3,
  DICT_COL__SYS_TABLES__MIX_ID = 4, DICT_COL__SYS_TABLES__MIX_LEN = 5, DICT_COL__SYS_TABLES__CLUSTER_ID = 6, DICT_COL__SYS_TABLES__SPACE = 7,
  DICT_NUM_COLS__SYS_TABLES = 8
}
enum  dict_fld_sys_tables_enum {
  DICT_FLD__SYS_TABLES__NAME = 0, DICT_FLD__SYS_TABLES__DB_TRX_ID = 1, DICT_FLD__SYS_TABLES__DB_ROLL_PTR = 2, DICT_FLD__SYS_TABLES__ID = 3,
  DICT_FLD__SYS_TABLES__N_COLS = 4, DICT_FLD__SYS_TABLES__TYPE = 5, DICT_FLD__SYS_TABLES__MIX_ID = 6, DICT_FLD__SYS_TABLES__MIX_LEN = 7,
  DICT_FLD__SYS_TABLES__CLUSTER_ID = 8, DICT_FLD__SYS_TABLES__SPACE = 9, DICT_NUM_FIELDS__SYS_TABLES = 10
}
enum  dict_fld_sys_table_ids_enum { DICT_FLD__SYS_TABLE_IDS__ID = 0, DICT_FLD__SYS_TABLE_IDS__NAME = 1, DICT_NUM_FIELDS__SYS_TABLE_IDS = 2 }
enum  dict_col_sys_columns_enum {
  DICT_COL__SYS_COLUMNS__TABLE_ID = 0, DICT_COL__SYS_COLUMNS__POS = 1, DICT_COL__SYS_COLUMNS__NAME = 2, DICT_COL__SYS_COLUMNS__MTYPE = 3,
  DICT_COL__SYS_COLUMNS__PRTYPE = 4, DICT_COL__SYS_COLUMNS__LEN = 5, DICT_COL__SYS_COLUMNS__PREC = 6, DICT_NUM_COLS__SYS_COLUMNS = 7
}
enum  dict_fld_sys_columns_enum {
  DICT_FLD__SYS_COLUMNS__TABLE_ID = 0, DICT_FLD__SYS_COLUMNS__POS = 1, DICT_FLD__SYS_COLUMNS__DB_TRX_ID = 2, DICT_FLD__SYS_COLUMNS__DB_ROLL_PTR = 3,
  DICT_FLD__SYS_COLUMNS__NAME = 4, DICT_FLD__SYS_COLUMNS__MTYPE = 5, DICT_FLD__SYS_COLUMNS__PRTYPE = 6, DICT_FLD__SYS_COLUMNS__LEN = 7,
  DICT_FLD__SYS_COLUMNS__PREC = 8, DICT_NUM_FIELDS__SYS_COLUMNS = 9
}
enum  dict_col_sys_indexes_enum {
  DICT_COL__SYS_INDEXES__TABLE_ID = 0, DICT_COL__SYS_INDEXES__ID = 1, DICT_COL__SYS_INDEXES__NAME = 2, DICT_COL__SYS_INDEXES__N_FIELDS = 3,
  DICT_COL__SYS_INDEXES__TYPE = 4, DICT_COL__SYS_INDEXES__SPACE = 5, DICT_COL__SYS_INDEXES__PAGE_NO = 6, DICT_NUM_COLS__SYS_INDEXES = 7
}
enum  dict_fld_sys_indexes_enum {
  DICT_FLD__SYS_INDEXES__TABLE_ID = 0, DICT_FLD__SYS_INDEXES__ID = 1, DICT_FLD__SYS_INDEXES__DB_TRX_ID = 2, DICT_FLD__SYS_INDEXES__DB_ROLL_PTR = 3,
  DICT_FLD__SYS_INDEXES__NAME = 4, DICT_FLD__SYS_INDEXES__N_FIELDS = 5, DICT_FLD__SYS_INDEXES__TYPE = 6, DICT_FLD__SYS_INDEXES__SPACE = 7,
  DICT_FLD__SYS_INDEXES__PAGE_NO = 8, DICT_NUM_FIELDS__SYS_INDEXES = 9
}
enum  dict_col_sys_fields_enum { DICT_COL__SYS_FIELDS__INDEX_ID = 0, DICT_COL__SYS_FIELDS__POS = 1, DICT_COL__SYS_FIELDS__COL_NAME = 2, DICT_NUM_COLS__SYS_FIELDS = 3 }
enum  dict_fld_sys_fields_enum {
  DICT_FLD__SYS_FIELDS__INDEX_ID = 0, DICT_FLD__SYS_FIELDS__POS = 1, DICT_FLD__SYS_FIELDS__DB_TRX_ID = 2, DICT_FLD__SYS_FIELDS__DB_ROLL_PTR = 3,
  DICT_FLD__SYS_FIELDS__COL_NAME = 4, DICT_NUM_FIELDS__SYS_FIELDS = 5
}
enum  dict_col_sys_foreign_enum {
  DICT_COL__SYS_FOREIGN__ID = 0, DICT_COL__SYS_FOREIGN__FOR_NAME = 1, DICT_COL__SYS_FOREIGN__REF_NAME = 2, DICT_COL__SYS_FOREIGN__N_COLS = 3,
  DICT_NUM_COLS__SYS_FOREIGN = 4
}
enum  dict_fld_sys_foreign_enum {
  DICT_FLD__SYS_FOREIGN__ID = 0, DICT_FLD__SYS_FOREIGN__DB_TRX_ID = 1, DICT_FLD__SYS_FOREIGN__DB_ROLL_PTR = 2, DICT_FLD__SYS_FOREIGN__FOR_NAME = 3,
  DICT_FLD__SYS_FOREIGN__REF_NAME = 4, DICT_FLD__SYS_FOREIGN__N_COLS = 5, DICT_NUM_FIELDS__SYS_FOREIGN = 6
}
enum  dict_fld_sys_foreign_for_name_enum { DICT_FLD__SYS_FOREIGN_FOR_NAME__NAME = 0, DICT_FLD__SYS_FOREIGN_FOR_NAME__ID = 1, DICT_NUM_FIELDS__SYS_FOREIGN_FOR_NAME = 2 }
enum  dict_col_sys_foreign_cols_enum {
  DICT_COL__SYS_FOREIGN_COLS__ID = 0, DICT_COL__SYS_FOREIGN_COLS__POS = 1, DICT_COL__SYS_FOREIGN_COLS__FOR_COL_NAME = 2, DICT_COL__SYS_FOREIGN_COLS__REF_COL_NAME = 3,
  DICT_NUM_COLS__SYS_FOREIGN_COLS = 4
}
enum  dict_fld_sys_foreign_cols_enum {
  DICT_FLD__SYS_FOREIGN_COLS__ID = 0, DICT_FLD__SYS_FOREIGN_COLS__POS = 1, DICT_FLD__SYS_FOREIGN_COLS__DB_TRX_ID = 2, DICT_FLD__SYS_FOREIGN_COLS__DB_ROLL_PTR = 3,
  DICT_FLD__SYS_FOREIGN_COLS__FOR_COL_NAME = 4, DICT_FLD__SYS_FOREIGN_COLS__REF_COL_NAME = 5, DICT_NUM_FIELDS__SYS_FOREIGN_COLS = 6
}
enum  dict_col_sys_tablespaces_enum { DICT_COL__SYS_TABLESPACES__SPACE = 0, DICT_COL__SYS_TABLESPACES__NAME = 1, DICT_COL__SYS_TABLESPACES__FLAGS = 2, DICT_NUM_COLS__SYS_TABLESPACES = 3 }
enum  dict_fld_sys_tablespaces_enum {
  DICT_FLD__SYS_TABLESPACES__SPACE = 0, DICT_FLD__SYS_TABLESPACES__DB_TRX_ID = 1, DICT_FLD__SYS_TABLESPACES__DB_ROLL_PTR = 2, DICT_FLD__SYS_TABLESPACES__NAME = 3,
  DICT_FLD__SYS_TABLESPACES__FLAGS = 4, DICT_NUM_FIELDS__SYS_TABLESPACES = 5
}
enum  dict_col_sys_datafiles_enum { DICT_COL__SYS_DATAFILES__SPACE = 0, DICT_COL__SYS_DATAFILES__PATH = 1, DICT_NUM_COLS__SYS_DATAFILES = 2 }
enum  dict_fld_sys_datafiles_enum {
  DICT_FLD__SYS_DATAFILES__SPACE = 0, DICT_FLD__SYS_DATAFILES__DB_TRX_ID = 1, DICT_FLD__SYS_DATAFILES__DB_ROLL_PTR = 2, DICT_FLD__SYS_DATAFILES__PATH = 3,
  DICT_NUM_FIELDS__SYS_DATAFILES = 4
}

Functions

UNIV_INTERN dict_hdr_t * dict_hdr_get (mtr_t *mtr)
UNIV_INTERN void dict_hdr_get_new_id (table_id_t *table_id, index_id_t *index_id, ulint *space_id)
UNIV_INTERN void dict_hdr_flush_row_id (void)
UNIV_INLINE row_id_t dict_sys_get_new_row_id (void)
UNIV_INLINE row_id_t dict_sys_read_row_id (const byte *field)
UNIV_INLINE void dict_sys_write_row_id (byte *field, row_id_t row_id)
UNIV_INTERN dberr_t dict_boot (void))
UNIV_INTERN dberr_t dict_create (void))
UNIV_INLINE bool dict_is_sys_table (table_id_t id))

Detailed Description

Data dictionary creation and booting

Created 4/18/1996 Heikki Tuuri

Macro Definition Documentation

#define DICT_HDR_FIRST_ID
Value:
10 /* the ids for tables etc. start
from this number, except for basic
system tables and their above defined
indexes; ibuf tables and indexes are
assigned as the id the number
DICT_IBUF_ID_MIN plus the space id */
#define DICT_HDR_FSEG_HEADER
Value:
56 /* Segment header for the tablespace
segment into which the dictionary
header is created */

Function Documentation

UNIV_INTERN dberr_t dict_boot ( void  )

Initializes the data dictionary memory structures when the database is started. This function is also called when the data dictionary is created.

Returns
DB_SUCCESS or error code.
UNIV_INTERN dberr_t dict_create ( void  )

Creates and initializes the data dictionary at the server bootstrap.

Returns
DB_SUCCESS or error code.
UNIV_INTERN void dict_hdr_flush_row_id ( void  )

Writes the current value of the row id counter to the dictionary header file page.

UNIV_INTERN dict_hdr_t* dict_hdr_get ( mtr_t mtr)

Gets a pointer to the dictionary header and x-latches its page.

Returns
pointer to the dictionary header, page x-latched in: mtr
UNIV_INTERN void dict_hdr_get_new_id ( table_id_t *  table_id,
index_id_t *  index_id,
ulint *  space_id 
)

Returns a new table, index, or space id. out: space id (not assigned if NULL)

Parameters
table_idout: table id (not assigned if NULL)
index_idout: index id (not assigned if NULL)
UNIV_INLINE bool dict_is_sys_table ( table_id_t  id)

Check if a table id belongs to system table.

Returns
true if the table id belongs to a system table.
Parameters
idin: table id to check
UNIV_INLINE row_id_t dict_sys_get_new_row_id ( void  )

Returns a new row id.

Returns
the new id
UNIV_INLINE row_id_t dict_sys_read_row_id ( const byte *  field)

Reads a row id from a record or other 6-byte stored form.

Returns
row id in: record field

Reads a row id from a record or other 6-byte stored form.

Returns
row id
Parameters
fieldin: record field
UNIV_INLINE void dict_sys_write_row_id ( byte *  field,
row_id_t  row_id 
)

Writes a row id to a record or other 6-byte stored form. in: row id

Writes a row id to a record or other 6-byte stored form.

Parameters
fieldin: record field
row_idin: row id