about summary refs log tree commit diff
path: root/db2/btree/btree.src
blob: 928dce21960f76543237de5519e4f9dbd4c3af74 (plain) (blame)
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
/*-
 * See the file LICENSE for redistribution information.
 *
 * Copyright (c) 1996, 1997, 1998
 *	Sleepycat Software.  All rights reserved.
 *
 *	@(#)btree.src	10.8 (Sleepycat) 4/10/98
 */

PREFIX	bam

/*
 * BTREE-pg_alloc: used to record allocating a new page.
 *
 * meta_lsn:	the meta-data page's original lsn.
 * page_lsn:	the allocated page's original lsn.
 * pgno:	the page allocated.
 * next:	the next page on the free list.
 */
BEGIN pg_alloc
ARG	fileid		u_int32_t	lu
POINTER	meta_lsn	DB_LSN *	lu
POINTER	page_lsn	DB_LSN *	lu
ARG	pgno		db_pgno_t	lu
ARG	ptype		u_int32_t	lu
ARG	next		db_pgno_t	lu
END

/*
 * BTREE-pg_free: used to record freeing a page.
 *
 * pgno:	the page being freed.
 * meta_lsn:	the meta-data page's original lsn.
 * header:	the header from the free'd page.
 * next:	the previous next pointer on the metadata page.
 */
BEGIN pg_free
ARG	fileid		u_int32_t	lu
ARG	pgno		db_pgno_t	lu
POINTER	meta_lsn	DB_LSN *	lu
DBT	header		DBT		s
ARG	next		db_pgno_t	lu
END

/*
 * BTREE-split: used to log a page split.
 *
 * left:	the page number for the low-order contents.
 * llsn:	the left page's original LSN.
 * right:	the page number for the high-order contents.
 * rlsn:	the right page's original LSN.
 * indx:	the number of entries that went to the left page.
 * npgno:	the next page number
 * nlsn:	the next page's original LSN (or 0 if no next page).
 * pg:		the split page's contents before the split.
 */
BEGIN split
ARG	fileid		u_int32_t	lu
ARG	left		db_pgno_t	lu
POINTER	llsn		DB_LSN *	lu
ARG	right		db_pgno_t	lu
POINTER	rlsn		DB_LSN *	lu
ARG	indx		u_int32_t	lu
ARG	npgno		db_pgno_t	lu
POINTER	nlsn		DB_LSN *	lu
DBT	pg		DBT		s
END

/*
 * BTREE-rsplit: used to log a reverse-split
 *
 * pgno:	the page number of the page copied over the root.
 * pgdbt:	the page being copied on the root page.
 * nrec:	the tree's record count.
 * rootent:	last entry on the root page.
 * rootlsn:	the root page's original lsn.
 */
BEGIN rsplit
ARG	fileid		u_int32_t	lu
ARG	pgno		db_pgno_t	lu
DBT	pgdbt		DBT		s
ARG	nrec		db_pgno_t	lu
DBT	rootent		DBT		s
POINTER rootlsn		DB_LSN *	lu
END

/*
 * BTREE-adj: used to log the adjustment of an index.
 *
 * pgno:	the page modified.
 * lsn:		the page's original lsn.
 * indx:	the index adjusted.
 * indx_copy:	the index to copy if inserting.
 * is_insert:	0 if a delete, 1 if an insert.
 */
BEGIN adj
ARG	fileid		u_int32_t	lu
ARG	pgno		db_pgno_t	lu
POINTER	lsn		DB_LSN *	lu
ARG	indx		u_int32_t	lu
ARG	indx_copy	u_int32_t	lu
ARG	is_insert	u_int32_t	lu
END

/*
 * BTREE-cadjust: used to adjust the count change in an internal page.
 *
 * pgno:	the page modified.
 * lsn:		the page's original lsn.
 * indx:	the index to be adjusted.
 * adjust:	the signed adjustment.
 * total:	if the total tree entries count should be adjusted
 */
BEGIN cadjust
ARG	fileid		u_int32_t	lu
ARG	pgno		db_pgno_t	lu
POINTER	lsn		DB_LSN *	lu
ARG	indx		u_int32_t	lu
ARG	adjust		int32_t		ld
ARG	total		int32_t		ld
END

/*
 * BTREE-cdel: used to log the intent-to-delete of a cursor record.
 *
 * pgno:	the page modified.
 * lsn:		the page's original lsn.
 * indx:	the index to be deleted.
 */
BEGIN cdel
ARG	fileid		u_int32_t	lu
ARG	pgno		db_pgno_t	lu
POINTER	lsn		DB_LSN *	lu
ARG	indx		u_int32_t	lu
END

/*
 * BTREE-repl: used to log the replacement of an item.
 *
 * pgno:	the page modified.
 * lsn:		the page's original lsn.
 * orig:	the original data.
 * new:		the replacement data.
 * duplicate:	the prefix of the replacement that matches the original.
 */
BEGIN repl
ARG	fileid		u_int32_t	lu
ARG	pgno		db_pgno_t	lu
POINTER	lsn		DB_LSN *	lu
ARG	indx		u_int32_t	lu
ARG	isdeleted	u_int32_t	lu
DBT	orig		DBT		s
DBT	repl		DBT		s
ARG	prefix		u_int32_t	lu
ARG	suffix		u_int32_t	lu
END