📄 dict0crea.h
字号:
/******************************************************Database object creation(c) 1996 Innobase OyCreated 1/8/1996 Heikki Tuuri*******************************************************/#ifndef dict0crea_h#define dict0crea_h#include "univ.i"#include "dict0types.h"#include "dict0dict.h"#include "que0types.h"#include "row0types.h"#include "mtr0mtr.h" /*************************************************************************Creates a table create graph. */tab_node_t*tab_create_graph_create(/*====================*/ /* out, own: table create node */ dict_table_t* table, /* in: table to create, built as a memory data structure */ mem_heap_t* heap); /* in: heap where created *//*************************************************************************Creates an index create graph. */ind_node_t*ind_create_graph_create(/*====================*/ /* out, own: index create node */ dict_index_t* index, /* in: index to create, built as a memory data structure */ mem_heap_t* heap); /* in: heap where created *//***************************************************************Creates a table. This is a high-level function used in SQL execution graphs. */que_thr_t*dict_create_table_step(/*===================*/ /* out: query thread to run next or NULL */ que_thr_t* thr); /* in: query thread *//***************************************************************Creates an index. This is a high-level function used in SQL executiongraphs. */que_thr_t*dict_create_index_step(/*===================*/ /* out: query thread to run next or NULL */ que_thr_t* thr); /* in: query thread *//***********************************************************************Truncates the index tree associated with a row in SYS_INDEXES table. */ulintdict_truncate_index_tree(/*=====================*/ /* out: new root page number, or FIL_NULL on failure */ dict_table_t* table, /* in: the table the index belongs to */ rec_t* rec, /* in: record in the clustered index of SYS_INDEXES table */ mtr_t* mtr); /* in: mtr having the latch on the record page. The mtr may be committed and restarted in this call. *//***********************************************************************Drops the index tree associated with a row in SYS_INDEXES table. */voiddict_drop_index_tree(/*=================*/ rec_t* rec, /* in: record in the clustered index of SYS_INDEXES table */ mtr_t* mtr); /* in: mtr having the latch on the record page *//********************************************************************Creates the foreign key constraints system tables inside InnoDBat database creation or database start if they are not found or arenot of the right form. */ulintdict_create_or_check_foreign_constraint_tables(void);/*================================================*/ /* out: DB_SUCCESS or error code *//************************************************************************Adds foreign key definitions to data dictionary tables in the database. Welook at table->foreign_list, and also generate names to constraints that werenot named by the user. A generated constraint has a name of the formatdatabasename/tablename_ibfk_<number>, where the numbers start from 1, and aregiven locally for this table, that is, the number is not global, as in theold format constraints < 4.0.18 it used to be. */ulintdict_create_add_foreigns_to_dictionary(/*===================================*/ /* out: error code or DB_SUCCESS */ ulint start_id,/* in: if we are actually doing ALTER TABLE ADD CONSTRAINT, we want to generate constraint numbers which are bigger than in the table so far; we number the constraints from start_id + 1 up; start_id should be set to 0 if we are creating a new table, or if the table so far has no constraints for which the name was generated here */ dict_table_t* table, /* in: table */ trx_t* trx); /* in: transaction *//* Table create node structure */struct tab_node_struct{ que_common_t common; /* node type: QUE_NODE_TABLE_CREATE */ dict_table_t* table; /* table to create, built as a memory data structure with dict_mem_... functions */ ins_node_t* tab_def; /* child node which does the insert of the table definition; the row to be inserted is built by the parent node */ ins_node_t* col_def; /* child node which does the inserts of the column definitions; the row to be inserted is built by the parent node */ commit_node_t* commit_node; /* child node which performs a commit after a successful table creation */ /*----------------------*/ /* Local storage for this graph node */ ulint state; /* node execution state */ ulint col_no; /* next column definition to insert */ mem_heap_t* heap; /* memory heap used as auxiliary storage */};/* Table create node states */#define TABLE_BUILD_TABLE_DEF 1#define TABLE_BUILD_COL_DEF 2#define TABLE_COMMIT_WORK 3#define TABLE_ADD_TO_CACHE 4#define TABLE_COMPLETED 5/* Index create node struct */struct ind_node_struct{ que_common_t common; /* node type: QUE_NODE_INDEX_CREATE */ dict_index_t* index; /* index to create, built as a memory data structure with dict_mem_... functions */ ins_node_t* ind_def; /* child node which does the insert of the index definition; the row to be inserted is built by the parent node */ ins_node_t* field_def; /* child node which does the inserts of the field definitions; the row to be inserted is built by the parent node */ commit_node_t* commit_node; /* child node which performs a commit after a successful index creation */ /*----------------------*/ /* Local storage for this graph node */ ulint state; /* node execution state */ ulint page_no;/* root page number of the index */ dict_table_t* table; /* table which owns the index */ dtuple_t* ind_row;/* index definition row built */ ulint field_no;/* next field definition to insert */ mem_heap_t* heap; /* memory heap used as auxiliary storage */};/* Index create node states */#define INDEX_BUILD_INDEX_DEF 1#define INDEX_BUILD_FIELD_DEF 2#define INDEX_CREATE_INDEX_TREE 3#define INDEX_COMMIT_WORK 4#define INDEX_ADD_TO_CACHE 5#ifndef UNIV_NONINL#include "dict0crea.ic"#endif#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -