source: trunk/third/db/btree/btree.src @ 17055

Revision 17055, 6.8 KB checked in by ghudson, 23 years ago (diff)
This commit was generated by cvs2svn to compensate for changes in r17054, which included commits to RCS files with non-trunk default branches.
Line 
1/*-
2 * See the file LICENSE for redistribution information.
3 *
4 * Copyright (c) 1996, 1997, 1998, 1999, 2000
5 *      Sleepycat Software.  All rights reserved.
6 *
7 *      $Id: btree.src,v 1.1.1.2 2002-02-11 16:29:58 ghudson Exp $
8 */
9
10PREFIX  bam
11
12INCLUDE #include "db_config.h"
13INCLUDE
14INCLUDE #ifndef NO_SYSTEM_INCLUDES
15INCLUDE #include <sys/types.h>
16INCLUDE
17INCLUDE #include <ctype.h>
18INCLUDE #include <errno.h>
19INCLUDE #include <string.h>
20INCLUDE #endif
21INCLUDE
22INCLUDE #include "db_int.h"
23INCLUDE #include "db_page.h"
24INCLUDE #include "db_dispatch.h"
25INCLUDE #include "db_am.h"
26INCLUDE #include "btree.h"
27INCLUDE #include "txn.h"
28INCLUDE
29
30/*
31 * BTREE-pg_alloc: used to record allocating a new page.
32 *
33 * meta_lsn:    the meta-data page's original lsn.
34 * alloc_lsn:   the meta-data page's original allocation lsn.
35 * page_lsn:    the allocated page's original lsn.
36 * pgno:        the page allocated.
37 * next:        the next page on the free list.
38 */
39DEPRECATED pg_alloc1    51
40ARG     fileid          int32_t         ld
41POINTER meta_lsn        DB_LSN *        lu
42POINTER page_lsn        DB_LSN *        lu
43ARG     pgno            db_pgno_t       lu
44ARG     ptype           u_int32_t       lu
45ARG     next            db_pgno_t       lu
46END
47
48BEGIN pg_alloc          60
49ARG     fileid          int32_t         ld
50POINTER meta_lsn        DB_LSN *        lu
51POINTER alloc_lsn       DB_LSN *        lu
52POINTER page_lsn        DB_LSN *        lu
53ARG     pgno            db_pgno_t       lu
54ARG     ptype           u_int32_t       lu
55ARG     next            db_pgno_t       lu
56END
57
58/*
59 * BTREE-pg_free: used to record freeing a page.
60 *
61 * pgno:        the page being freed.
62 * meta_lsn:    the meta-data page's original lsn.
63 * alloc_lsn:   the meta-data page's original allocation lsn.
64 * header:      the header from the free'd page.
65 * next:        the previous next pointer on the metadata page.
66 */
67DEPRECATED pg_free1     52
68ARG     fileid          int32_t         ld
69ARG     pgno            db_pgno_t       lu
70POINTER meta_lsn        DB_LSN *        lu
71DBT     header          DBT             s
72ARG     next            db_pgno_t       lu
73END
74
75BEGIN pg_free           61
76ARG     fileid          int32_t         ld
77ARG     pgno            db_pgno_t       lu
78POINTER meta_lsn        DB_LSN *        lu
79POINTER alloc_lsn       DB_LSN *        lu
80DBT     header          DBT             s
81ARG     next            db_pgno_t       lu
82END
83
84/*
85 * BTREE-split: used to log a page split.
86 *
87 * left:        the page number for the low-order contents.
88 * llsn:        the left page's original LSN.
89 * right:       the page number for the high-order contents.
90 * rlsn:        the right page's original LSN.
91 * indx:        the number of entries that went to the left page.
92 * npgno:       the next page number
93 * nlsn:        the next page's original LSN (or 0 if no next page).
94 * pg:          the split page's contents before the split.
95 */
96DEPRECATED split1       53
97ARG     fileid          int32_t         ld
98ARG     left            db_pgno_t       lu
99POINTER llsn            DB_LSN *        lu
100ARG     right           db_pgno_t       lu
101POINTER rlsn            DB_LSN *        lu
102ARG     indx            u_int32_t       lu
103ARG     npgno           db_pgno_t       lu
104POINTER nlsn            DB_LSN *        lu
105DBT     pg              DBT             s
106END
107
108/*
109 * BTREE-split: used to log a page split.
110 *
111 * left:        the page number for the low-order contents.
112 * llsn:        the left page's original LSN.
113 * right:       the page number for the high-order contents.
114 * rlsn:        the right page's original LSN.
115 * indx:        the number of entries that went to the left page.
116 * npgno:       the next page number
117 * npgno:       the next page number
118 * nlsn:        the next page's original LSN (or 0 if no next page).
119 * root_pgno:   the root page number
120 * pg:          the split page's contents before the split.
121 * opflags:     SPL_NRECS: if splitting a tree that maintains a record count.
122 */
123BEGIN split             62
124ARG     fileid          int32_t         ld
125ARG     left            db_pgno_t       lu
126POINTER llsn            DB_LSN *        lu
127ARG     right           db_pgno_t       lu
128POINTER rlsn            DB_LSN *        lu
129ARG     indx            u_int32_t       lu
130ARG     npgno           db_pgno_t       lu
131POINTER nlsn            DB_LSN *        lu
132ARG     root_pgno       db_pgno_t       lu
133DBT     pg              DBT             s
134ARG     opflags         u_int32_t       lu
135END
136
137/*
138 * BTREE-rsplit: used to log a reverse-split
139 *
140 * pgno:        the page number of the page copied over the root.
141 * pgdbt:       the page being copied on the root page.
142 * nrec:        the tree's record count.
143 * rootent:     last entry on the root page.
144 * rootlsn:     the root page's original lsn.
145 */
146DEPRECATED rsplit1      54
147ARG     fileid          int32_t         ld
148ARG     pgno            db_pgno_t       lu
149DBT     pgdbt           DBT             s
150ARG     nrec            db_pgno_t       lu
151DBT     rootent         DBT             s
152POINTER rootlsn         DB_LSN *        lu
153END
154
155/*
156 * BTREE-rsplit: used to log a reverse-split
157 *
158 * pgno:        the page number of the page copied over the root.
159 * pgdbt:       the page being copied on the root page.
160 * root_pgno:   the root page number.
161 * nrec:        the tree's record count.
162 * rootent:     last entry on the root page.
163 * rootlsn:     the root page's original lsn.
164 */
165BEGIN rsplit            63
166ARG     fileid          int32_t         ld
167ARG     pgno            db_pgno_t       lu
168DBT     pgdbt           DBT             s
169ARG     root_pgno       db_pgno_t       lu
170ARG     nrec            db_pgno_t       lu
171DBT     rootent         DBT             s
172POINTER rootlsn         DB_LSN *        lu
173END
174
175/*
176 * BTREE-adj: used to log the adjustment of an index.
177 *
178 * pgno:        the page modified.
179 * lsn:         the page's original lsn.
180 * indx:        the index adjusted.
181 * indx_copy:   the index to copy if inserting.
182 * is_insert:   0 if a delete, 1 if an insert.
183 */
184BEGIN adj               55
185ARG     fileid          int32_t         ld
186ARG     pgno            db_pgno_t       lu
187POINTER lsn             DB_LSN *        lu
188ARG     indx            u_int32_t       lu
189ARG     indx_copy       u_int32_t       lu
190ARG     is_insert       u_int32_t       lu
191END
192
193/*
194 * BTREE-cadjust: used to adjust the count change in an internal page.
195 *
196 * pgno:        the page modified.
197 * lsn:         the page's original lsn.
198 * indx:        the index to be adjusted.
199 * adjust:      the signed adjustment.
200 * opflags:     CAD_UPDATEROOT: if root page count was adjusted.
201 */
202BEGIN cadjust           56
203ARG     fileid          int32_t         ld
204ARG     pgno            db_pgno_t       lu
205POINTER lsn             DB_LSN *        lu
206ARG     indx            u_int32_t       lu
207ARG     adjust          int32_t         ld
208ARG     opflags         u_int32_t       lu
209END
210
211/*
212 * BTREE-cdel: used to log the intent-to-delete of a cursor record.
213 *
214 * pgno:        the page modified.
215 * lsn:         the page's original lsn.
216 * indx:        the index to be deleted.
217 */
218BEGIN cdel              57
219ARG     fileid          int32_t         ld
220ARG     pgno            db_pgno_t       lu
221POINTER lsn             DB_LSN *        lu
222ARG     indx            u_int32_t       lu
223END
224
225/*
226 * BTREE-repl: used to log the replacement of an item.
227 *
228 * pgno:        the page modified.
229 * lsn:         the page's original lsn.
230 * orig:        the original data.
231 * new:         the replacement data.
232 * duplicate:   the prefix of the replacement that matches the original.
233 */
234BEGIN repl              58
235ARG     fileid          int32_t         ld
236ARG     pgno            db_pgno_t       lu
237POINTER lsn             DB_LSN *        lu
238ARG     indx            u_int32_t       lu
239ARG     isdeleted       u_int32_t       lu
240DBT     orig            DBT             s
241DBT     repl            DBT             s
242ARG     prefix          u_int32_t       lu
243ARG     suffix          u_int32_t       lu
244END
245
246/*
247 * BTREE-root: log the assignment of a root btree page.
248 */
249BEGIN root              59
250ARG     fileid          int32_t         ld
251ARG     meta_pgno       db_pgno_t       lu
252ARG     root_pgno       db_pgno_t       lu
253POINTER meta_lsn        DB_LSN *        lu
254END
255
256/*
257 * BTREE-curadj: undo cursor adjustments on abort txn.
258 *     Should only be processed during DB_TXN_ABORT.
259 * NOTE: the first_indx field gets used to hold
260 *      signed index adjustment in one case.
261 *      care should be taken if its size is changed.
262 */
263BEGIN curadj            64
264/* Fileid of db effected. */
265ARG     fileid          int32_t         ld
266/* Which adjustment. */
267ARG     mode            db_ca_mode      ld
268/* Page entry is from. */
269ARG     from_pgno       db_pgno_t       lu
270/* Page entry  went to. */
271ARG     to_pgno         db_pgno_t       lu
272/* Left page of root split. */
273ARG     left_pgno       db_pgno_t       lu
274/* First index of dup set. Also used as adjustment. */
275ARG     first_indx      u_int32_t       lu
276/* Index entry is from. */
277ARG     from_indx       u_int32_t       lu
278/* Index where entry went. */
279ARG     to_indx         u_int32_t       lu
280END
Note: See TracBrowser for help on using the repository browser.