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

MySQL数据库

开发平台:

Visual C++

  1. /******************************************************
  2. Data dictionary creation and booting
  3. (c) 1996 Innobase Oy
  4. Created 4/18/1996 Heikki Tuuri
  5. *******************************************************/
  6. #ifndef dict0boot_h
  7. #define dict0boot_h
  8. #include "univ.i"
  9. #include "mtr0mtr.h"
  10. #include "mtr0log.h"
  11. #include "ut0byte.h"
  12. #include "buf0buf.h"
  13. #include "fsp0fsp.h"
  14. #include "dict0dict.h"
  15. typedef byte dict_hdr_t;
  16. /**************************************************************************
  17. Gets a pointer to the dictionary header and x-latches its page. */
  18. dict_hdr_t*
  19. dict_hdr_get(
  20. /*=========*/
  21. /* out: pointer to the dictionary header, 
  22. page x-latched */
  23. mtr_t* mtr); /* in: mtr */
  24. /**************************************************************************
  25. Returns a new row, table, index, or tree id. */
  26. dulint
  27. dict_hdr_get_new_id(
  28. /*================*/
  29. /* out: the new id */
  30. ulint type); /* in: DICT_HDR_ROW_ID, ... */
  31. /**************************************************************************
  32. Returns a new row id. */
  33. UNIV_INLINE
  34. dulint
  35. dict_sys_get_new_row_id(void);
  36. /*=========================*/
  37. /* out: the new id */
  38. /**************************************************************************
  39. Reads a row id from a record or other 6-byte stored form. */
  40. UNIV_INLINE
  41. dulint
  42. dict_sys_read_row_id(
  43. /*=================*/
  44. /* out: row id */
  45. byte* field); /* in: record field */
  46. /**************************************************************************
  47. Writes a row id to a record or other 6-byte stored form. */
  48. UNIV_INLINE
  49. void
  50. dict_sys_write_row_id(
  51. /*==================*/
  52. byte* field, /* in: record field */
  53. dulint row_id);/* in: row id */
  54. /*********************************************************************
  55. Initializes the data dictionary memory structures when the database is
  56. started. This function is also called when the data dictionary is created. */
  57. void
  58. dict_boot(void);
  59. /*===========*/
  60. /*********************************************************************
  61. Creates and initializes the data dictionary at the database creation. */
  62. void
  63. dict_create(void);
  64. /*=============*/
  65. /* Space id and page no where the dictionary header resides */
  66. #define DICT_HDR_SPACE 0 /* the SYSTEM tablespace */
  67. #define DICT_HDR_PAGE_NO FSP_DICT_HDR_PAGE_NO
  68. /* The ids for the basic system tables and their indexes */
  69. #define DICT_TABLES_ID ut_dulint_create(0, 1)
  70. #define DICT_COLUMNS_ID ut_dulint_create(0, 2)
  71. #define DICT_INDEXES_ID ut_dulint_create(0, 3)
  72. #define DICT_FIELDS_ID ut_dulint_create(0, 4)
  73. /* The following is a secondary index on SYS_TABLES */
  74. #define DICT_TABLE_IDS_ID ut_dulint_create(0, 5)
  75. #define DICT_HDR_FIRST_ID 10 /* the ids for tables etc. start
  76. from this number, except for basic
  77. system tables and their above defined
  78. indexes; ibuf tables and indexes are
  79. assigned as the id the number
  80. DICT_IBUF_ID_MIN plus the space id */
  81. #define DICT_IBUF_ID_MIN ut_dulint_create(0xFFFFFFFFUL, 0)
  82. /* The offset of the dictionary header on the page */
  83. #define DICT_HDR FSEG_PAGE_DATA
  84. /*-------------------------------------------------------------*/
  85. /* Dictionary header offsets */
  86. #define DICT_HDR_ROW_ID 0 /* The latest assigned row id */
  87. #define DICT_HDR_TABLE_ID 8 /* The latest assigned table id */
  88. #define DICT_HDR_INDEX_ID 16 /* The latest assigned index id */
  89. #define DICT_HDR_MIX_ID 24 /* The latest assigned mix id */
  90. #define DICT_HDR_TABLES 32 /* Root of the table index tree */
  91. #define DICT_HDR_TABLE_IDS 36 /* Root of the table index tree */
  92. #define DICT_HDR_COLUMNS 40 /* Root of the column index tree */
  93. #define DICT_HDR_INDEXES 44 /* Root of the index index tree */
  94. #define DICT_HDR_FIELDS 48 /* Root of the index field index tree */
  95. #define DICT_HDR_FSEG_HEADER 56 /* Segment header for the tablespace
  96. segment into which the dictionary
  97. header is created */
  98. /*-------------------------------------------------------------*/
  99. /* The field number of the page number field in the sys_indexes table
  100. clustered index */
  101. #define DICT_SYS_INDEXES_PAGE_NO_FIELD  8
  102. #define DICT_SYS_INDEXES_SPACE_NO_FIELD  7
  103. /* When a row id which is zero modulo this number (which must be a power of
  104. two) is assigned, the field DICT_HDR_ROW_ID on the dictionary header page is
  105. updated */
  106. #define DICT_HDR_ROW_ID_WRITE_MARGIN 256
  107. #ifndef UNIV_NONINL
  108. #include "dict0boot.ic"
  109. #endif
  110. #endif