dict0crea.h
上传用户:romrleung
上传日期:2022-05-23
资源大小:18897k
文件大小:6k
源码类别:

MySQL数据库

开发平台:

Visual C++

  1. /******************************************************
  2. Database object creation
  3. (c) 1996 Innobase Oy
  4. Created 1/8/1996 Heikki Tuuri
  5. *******************************************************/
  6. #ifndef dict0crea_h
  7. #define dict0crea_h
  8. #include "univ.i"
  9. #include "dict0types.h"
  10. #include "dict0dict.h"
  11. #include "que0types.h"
  12. #include "row0types.h"
  13. #include "mtr0mtr.h"
  14. /*************************************************************************
  15. Creates a table create graph. */
  16. tab_node_t*
  17. tab_create_graph_create(
  18. /*====================*/
  19. /* out, own: table create node */
  20. dict_table_t* table, /* in: table to create, built as a memory data
  21. structure */
  22. mem_heap_t* heap); /* in: heap where created */
  23. /*************************************************************************
  24. Creates an index create graph. */
  25. ind_node_t*
  26. ind_create_graph_create(
  27. /*====================*/
  28. /* out, own: index create node */
  29. dict_index_t* index, /* in: index to create, built as a memory data
  30. structure */
  31. mem_heap_t* heap); /* in: heap where created */
  32. /***************************************************************
  33. Creates a table. This is a high-level function used in SQL execution graphs. */
  34. que_thr_t*
  35. dict_create_table_step(
  36. /*===================*/
  37. /* out: query thread to run next or NULL */
  38. que_thr_t* thr); /* in: query thread */
  39. /***************************************************************
  40. Creates an index. This is a high-level function used in SQL execution
  41. graphs. */
  42. que_thr_t*
  43. dict_create_index_step(
  44. /*===================*/
  45. /* out: query thread to run next or NULL */
  46. que_thr_t* thr); /* in: query thread */
  47. /***********************************************************************
  48. Drops the index tree associated with a row in SYS_INDEXES table. */
  49. void
  50. dict_drop_index_tree(
  51. /*=================*/
  52. rec_t* rec, /* in: record in the clustered index of SYS_INDEXES
  53. table */
  54. mtr_t* mtr); /* in: mtr having the latch on the record page */
  55. /********************************************************************
  56. Creates the foreign key constraints system tables inside InnoDB
  57. at database creation or database start if they are not found or are
  58. not of the right form. */
  59. ulint
  60. dict_create_or_check_foreign_constraint_tables(void);
  61. /*================================================*/
  62. /* out: DB_SUCCESS or error code */
  63. /************************************************************************
  64. Adds foreign key definitions to data dictionary tables in the database. We
  65. look at table->foreign_list, and also generate names to constraints that were
  66. not named by the user. A generated constraint has a name of the format
  67. databasename/tablename_ibfk_<number>, where the numbers start from 1, and are
  68. given locally for this table, that is, the number is not global, as in the
  69. old format constraints < 4.0.18 it used to be. */
  70. ulint
  71. dict_create_add_foreigns_to_dictionary(
  72. /*===================================*/
  73. /* out: error code or DB_SUCCESS */
  74. ulint start_id,/* in: if we are actually doing ALTER TABLE
  75. ADD CONSTRAINT, we want to generate constraint
  76. numbers which are bigger than in the table so
  77. far; we number the constraints from
  78. start_id + 1 up; start_id should be set to 0 if
  79. we are creating a new table, or if the table
  80. so far has no constraints for which the name
  81. was generated here */
  82. dict_table_t* table, /* in: table */
  83. trx_t* trx); /* in: transaction */
  84. /* Table create node structure */
  85. struct tab_node_struct{
  86. que_common_t common; /* node type: QUE_NODE_TABLE_CREATE */
  87. dict_table_t* table; /* table to create, built as a memory data
  88. structure with dict_mem_... functions */
  89. ins_node_t* tab_def; /* child node which does the insert of
  90. the table definition; the row to be inserted
  91. is built by the parent node  */
  92. ins_node_t* col_def; /* child node which does the inserts of
  93. the column definitions; the row to be inserted
  94. is built by the parent node  */
  95. commit_node_t* commit_node;
  96. /* child node which performs a commit after
  97. a successful table creation */
  98. /*----------------------*/
  99. /* Local storage for this graph node */
  100. ulint state; /* node execution state */
  101. ulint col_no; /* next column definition to insert */
  102. mem_heap_t* heap; /* memory heap used as auxiliary storage */
  103. };
  104. /* Table create node states */
  105. #define TABLE_BUILD_TABLE_DEF 1
  106. #define TABLE_BUILD_COL_DEF 2
  107. #define TABLE_COMMIT_WORK 3
  108. #define TABLE_ADD_TO_CACHE 4
  109. #define TABLE_COMPLETED 5
  110. /* Index create node struct */
  111. struct ind_node_struct{
  112. que_common_t common; /* node type: QUE_NODE_INDEX_CREATE */
  113. dict_index_t* index; /* index to create, built as a memory data
  114. structure with dict_mem_... functions */
  115. ins_node_t* ind_def; /* child node which does the insert of
  116. the index definition; the row to be inserted
  117. is built by the parent node  */
  118. ins_node_t* field_def; /* child node which does the inserts of
  119. the field definitions; the row to be inserted
  120. is built by the parent node  */
  121. commit_node_t* commit_node;
  122. /* child node which performs a commit after
  123. a successful index creation */
  124. /*----------------------*/
  125. /* Local storage for this graph node */
  126. ulint state; /* node execution state */
  127. dict_table_t* table; /* table which owns the index */
  128. dtuple_t* ind_row;/* index definition row built */
  129. ulint field_no;/* next field definition to insert */
  130. mem_heap_t* heap; /* memory heap used as auxiliary storage */
  131. };
  132. /* Index create node states */
  133. #define INDEX_BUILD_INDEX_DEF 1
  134. #define INDEX_BUILD_FIELD_DEF 2
  135. #define INDEX_CREATE_INDEX_TREE 3
  136. #define INDEX_COMMIT_WORK 4
  137. #define INDEX_ADD_TO_CACHE 5
  138. #ifndef UNIV_NONINL
  139. #include "dict0crea.ic"
  140. #endif
  141. #endif