dict0crea.h
上传用户:romrleung
上传日期:2022-05-23
资源大小:18897k
文件大小:6k
- /******************************************************
- Database object creation
- (c) 1996 Innobase Oy
- Created 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 execution
- graphs. */
- que_thr_t*
- dict_create_index_step(
- /*===================*/
- /* out: query thread to run next or NULL */
- que_thr_t* thr); /* in: query thread */
- /***********************************************************************
- Drops the index tree associated with a row in SYS_INDEXES table. */
- void
- dict_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 InnoDB
- at database creation or database start if they are not found or are
- not of the right form. */
- ulint
- dict_create_or_check_foreign_constraint_tables(void);
- /*================================================*/
- /* out: DB_SUCCESS or error code */
- /************************************************************************
- Adds foreign key definitions to data dictionary tables in the database. We
- look at table->foreign_list, and also generate names to constraints that were
- not named by the user. A generated constraint has a name of the format
- databasename/tablename_ibfk_<number>, where the numbers start from 1, and are
- given locally for this table, that is, the number is not global, as in the
- old format constraints < 4.0.18 it used to be. */
- ulint
- dict_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 */
- 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