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

MySQL数据库

开发平台:

Visual C++

  1. /*-
  2.  * See the file LICENSE for redistribution information.
  3.  *
  4.  * Copyright (c) 1996-2002
  5.  * Sleepycat Software.  All rights reserved.
  6.  *
  7.  * $Id: db_upgrade.h,v 1.10 2002/01/11 15:52:26 bostic Exp $
  8.  */
  9. #ifndef _DB_UPGRADE_H_
  10. #define _DB_UPGRADE_H_
  11. /*
  12.  * This file defines the metadata pages from the previous release.
  13.  * These structures are only used to upgrade old versions of databases.
  14.  */
  15. /* Structures from the 3.1 release */
  16. typedef struct _dbmeta31 {
  17. DB_LSN   lsn; /* 00-07: LSN. */
  18. db_pgno_t pgno; /* 08-11: Current page number. */
  19. u_int32_t magic; /* 12-15: Magic number. */
  20. u_int32_t version; /* 16-19: Version. */
  21. u_int32_t pagesize; /* 20-23: Pagesize. */
  22. u_int8_t  unused1[1]; /*    24: Unused. */
  23. u_int8_t  type; /*    25: Page type. */
  24. u_int8_t  unused2[2]; /* 26-27: Unused. */
  25. u_int32_t free; /* 28-31: Free list page number. */
  26. DB_LSN    unused3; /* 36-39: Unused. */
  27. u_int32_t key_count; /* 40-43: Cached key count. */
  28. u_int32_t record_count; /* 44-47: Cached record count. */
  29. u_int32_t flags; /* 48-51: Flags: unique to each AM. */
  30. /* 52-71: Unique file ID. */
  31. u_int8_t  uid[DB_FILE_ID_LEN];
  32. } DBMETA31;
  33. typedef struct _btmeta31 {
  34. DBMETA31  dbmeta; /* 00-71: Generic meta-data header. */
  35. u_int32_t maxkey; /* 72-75: Btree: Maxkey. */
  36. u_int32_t minkey; /* 76-79: Btree: Minkey. */
  37. u_int32_t re_len; /* 80-83: Recno: fixed-length record length. */
  38. u_int32_t re_pad; /* 84-87: Recno: fixed-length record pad. */
  39. u_int32_t root; /* 88-92: Root page. */
  40. /*
  41.  * Minimum page size is 128.
  42.  */
  43. } BTMETA31;
  44. /************************************************************************
  45.  HASH METADATA PAGE LAYOUT
  46.  ************************************************************************/
  47. typedef struct _hashmeta31 {
  48. DBMETA31 dbmeta; /* 00-71: Generic meta-data page header. */
  49. u_int32_t max_bucket; /* 72-75: ID of Maximum bucket in use */
  50. u_int32_t high_mask; /* 76-79: Modulo mask into table */
  51. u_int32_t low_mask; /* 80-83: Modulo mask into table lower half */
  52. u_int32_t ffactor; /* 84-87: Fill factor */
  53. u_int32_t nelem; /* 88-91: Number of keys in hash table */
  54. u_int32_t h_charkey; /* 92-95: Value of hash(CHARKEY) */
  55. #define NCACHED 32 /* number of spare points */
  56. /* 96-223: Spare pages for overflow */
  57. u_int32_t spares[NCACHED];
  58. /*
  59.  * Minimum page size is 256.
  60.  */
  61. } HMETA31;
  62. /*
  63.  * QAM Meta data page structure
  64.  *
  65.  */
  66. typedef struct _qmeta31 {
  67. DBMETA31 dbmeta; /* 00-71: Generic meta-data header. */
  68. u_int32_t start; /* 72-75: Start offset. */
  69. u_int32_t first_recno; /* 76-79: First not deleted record. */
  70. u_int32_t cur_recno; /* 80-83: Last recno allocated. */
  71. u_int32_t re_len; /* 84-87: Fixed-length record length. */
  72. u_int32_t re_pad; /* 88-91: Fixed-length record pad. */
  73. u_int32_t rec_page; /* 92-95: Records Per Page. */
  74. /*
  75.  * Minimum page size is 128.
  76.  */
  77. } QMETA31;
  78. /* Structures from the 3.2 release */
  79. typedef struct _qmeta32 {
  80. DBMETA31 dbmeta; /* 00-71: Generic meta-data header. */
  81. u_int32_t first_recno; /* 72-75: First not deleted record. */
  82. u_int32_t cur_recno; /* 76-79: Last recno allocated. */
  83. u_int32_t re_len; /* 80-83: Fixed-length record length. */
  84. u_int32_t re_pad; /* 84-87: Fixed-length record pad. */
  85. u_int32_t rec_page; /* 88-91: Records Per Page. */
  86. u_int32_t page_ext; /* 92-95: Pages per extent */
  87. /*
  88.  * Minimum page size is 128.
  89.  */
  90. } QMETA32;
  91. /* Structures from the 3.0 release */
  92. typedef struct _dbmeta30 {
  93. DB_LSN   lsn; /* 00-07: LSN. */
  94. db_pgno_t pgno; /* 08-11: Current page number. */
  95. u_int32_t magic; /* 12-15: Magic number. */
  96. u_int32_t version; /* 16-19: Version. */
  97. u_int32_t pagesize; /* 20-23: Pagesize. */
  98. u_int8_t  unused1[1]; /*    24: Unused. */
  99. u_int8_t  type; /*    25: Page type. */
  100. u_int8_t  unused2[2]; /* 26-27: Unused. */
  101. u_int32_t free; /* 28-31: Free list page number. */
  102. u_int32_t flags; /* 32-35: Flags: unique to each AM. */
  103. /* 36-55: Unique file ID. */
  104. u_int8_t  uid[DB_FILE_ID_LEN];
  105. } DBMETA30;
  106. /************************************************************************
  107.  BTREE METADATA PAGE LAYOUT
  108.  ************************************************************************/
  109. typedef struct _btmeta30 {
  110. DBMETA30 dbmeta; /* 00-55: Generic meta-data header. */
  111. u_int32_t maxkey; /* 56-59: Btree: Maxkey. */
  112. u_int32_t minkey; /* 60-63: Btree: Minkey. */
  113. u_int32_t re_len; /* 64-67: Recno: fixed-length record length. */
  114. u_int32_t re_pad; /* 68-71: Recno: fixed-length record pad. */
  115. u_int32_t root; /* 72-75: Root page. */
  116. /*
  117.  * Minimum page size is 128.
  118.  */
  119. } BTMETA30;
  120. /************************************************************************
  121.  HASH METADATA PAGE LAYOUT
  122.  ************************************************************************/
  123. typedef struct _hashmeta30 {
  124. DBMETA30 dbmeta; /* 00-55: Generic meta-data page header. */
  125. u_int32_t max_bucket; /* 56-59: ID of Maximum bucket in use */
  126. u_int32_t high_mask; /* 60-63: Modulo mask into table */
  127. u_int32_t low_mask; /* 64-67: Modulo mask into table lower half */
  128. u_int32_t ffactor; /* 68-71: Fill factor */
  129. u_int32_t nelem; /* 72-75: Number of keys in hash table */
  130. u_int32_t h_charkey; /* 76-79: Value of hash(CHARKEY) */
  131. #define NCACHED30 32 /* number of spare points */
  132. /* 80-207: Spare pages for overflow */
  133. u_int32_t spares[NCACHED30];
  134. /*
  135.  * Minimum page size is 256.
  136.  */
  137. } HMETA30;
  138. /************************************************************************
  139.  QUEUE METADATA PAGE LAYOUT
  140.  ************************************************************************/
  141. /*
  142.  * QAM Meta data page structure
  143.  *
  144.  */
  145. typedef struct _qmeta30 {
  146. DBMETA30    dbmeta; /* 00-55: Generic meta-data header. */
  147. u_int32_t start; /* 56-59: Start offset. */
  148. u_int32_t first_recno; /* 60-63: First not deleted record. */
  149. u_int32_t cur_recno; /* 64-67: Last recno allocated. */
  150. u_int32_t re_len; /* 68-71: Fixed-length record length. */
  151. u_int32_t re_pad; /* 72-75: Fixed-length record pad. */
  152. u_int32_t rec_page; /* 76-79: Records Per Page. */
  153. /*
  154.  * Minimum page size is 128.
  155.  */
  156. } QMETA30;
  157. /* Structures from Release 2.x */
  158. /************************************************************************
  159.  BTREE METADATA PAGE LAYOUT
  160.  ************************************************************************/
  161. /*
  162.  * Btree metadata page layout:
  163.  */
  164. typedef struct _btmeta2X {
  165. DB_LSN   lsn; /* 00-07: LSN. */
  166. db_pgno_t pgno; /* 08-11: Current page number. */
  167. u_int32_t magic; /* 12-15: Magic number. */
  168. u_int32_t version; /* 16-19: Version. */
  169. u_int32_t pagesize; /* 20-23: Pagesize. */
  170. u_int32_t maxkey; /* 24-27: Btree: Maxkey. */
  171. u_int32_t minkey; /* 28-31: Btree: Minkey. */
  172. u_int32_t free; /* 32-35: Free list page number. */
  173. u_int32_t flags; /* 36-39: Flags. */
  174. u_int32_t re_len; /* 40-43: Recno: fixed-length record length. */
  175. u_int32_t re_pad; /* 44-47: Recno: fixed-length record pad. */
  176. /* 48-67: Unique file ID. */
  177. u_int8_t  uid[DB_FILE_ID_LEN];
  178. } BTMETA2X;
  179. /************************************************************************
  180.  HASH METADATA PAGE LAYOUT
  181.  ************************************************************************/
  182. /*
  183.  * Hash metadata page layout:
  184.  */
  185. /* Hash Table Information */
  186. typedef struct hashhdr { /* Disk resident portion */
  187. DB_LSN lsn; /* 00-07: LSN of the header page */
  188. db_pgno_t pgno; /* 08-11: Page number (btree compatibility). */
  189. u_int32_t magic; /* 12-15: Magic NO for hash tables */
  190. u_int32_t version; /* 16-19: Version ID */
  191. u_int32_t pagesize; /* 20-23: Bucket/Page Size */
  192. u_int32_t ovfl_point; /* 24-27: Overflow page allocation location */
  193. u_int32_t last_freed; /* 28-31: Last freed overflow page pgno */
  194. u_int32_t max_bucket; /* 32-35: ID of Maximum bucket in use */
  195. u_int32_t high_mask; /* 36-39: Modulo mask into table */
  196. u_int32_t low_mask; /* 40-43: Modulo mask into table lower half */
  197. u_int32_t ffactor; /* 44-47: Fill factor */
  198. u_int32_t nelem; /* 48-51: Number of keys in hash table */
  199. u_int32_t h_charkey; /* 52-55: Value of hash(CHARKEY) */
  200. u_int32_t flags; /* 56-59: Allow duplicates. */
  201. #define NCACHED2X 32 /* number of spare points */
  202. /* 60-187: Spare pages for overflow */
  203. u_int32_t spares[NCACHED2X];
  204. /* 188-207: Unique file ID. */
  205. u_int8_t  uid[DB_FILE_ID_LEN];
  206. /*
  207.  * Minimum page size is 256.
  208.  */
  209. } HASHHDR;
  210. #endif /* !_DB_UPGRADE_H_ */