161 lines
3.7 KiB
Plaintext
161 lines
3.7 KiB
Plaintext
/*-
|
|
* See the file LICENSE for redistribution information.
|
|
*
|
|
* Copyright (c) 1996, 1997
|
|
* Sleepycat Software. All rights reserved.
|
|
*/
|
|
|
|
#include "config.h"
|
|
|
|
#ifndef lint
|
|
static const char sccsid[] = "@(#)btree.src 10.6 (Sleepycat) 11/2/97";
|
|
#endif /* not lint */
|
|
|
|
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
|