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