- Visual C++源码
- Visual Basic源码
- C++ Builder源码
- Java源码
- Delphi源码
- C/C++源码
- PHP源码
- Perl源码
- Python源码
- Asm源码
- Pascal源码
- Borland C++源码
- Others源码
- SQL源码
- VBScript源码
- JavaScript源码
- ASP/ASPX源码
- C#源码
- Flash/ActionScript源码
- matlab源码
- PowerBuilder源码
- LabView源码
- Flex源码
- MathCAD源码
- VBA源码
- IDL源码
- Lisp/Scheme源码
- VHDL源码
- Objective-C源码
- Fortran源码
- tcl/tk源码
- QT源码
- /*-
- * See the file LICENSE for redistribution information.
- *
- * Copyright (c) 1996, 1997, 1998, 1999, 2000
- * Sleepycat Software. All rights reserved.
- *
- * $Id: btree.src,v 10.26 2000/12/12 17:40:23 bostic Exp $
- */
- PREFIX bam
- INCLUDE #include "db_config.h"
- INCLUDE
- INCLUDE #ifndef NO_SYSTEM_INCLUDES
- INCLUDE #include <sys/types.h>
- INCLUDE
- INCLUDE #include <ctype.h>
- INCLUDE #include <errno.h>
- INCLUDE #include <string.h>
- INCLUDE #endif
- INCLUDE
- INCLUDE #include "db_int.h"
- INCLUDE #include "db_page.h"
- INCLUDE #include "db_dispatch.h"
- INCLUDE #include "db_am.h"
- INCLUDE #include "btree.h"
- INCLUDE #include "txn.h"
- INCLUDE
- /*
- * 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 51
- ARG fileid int32_t ld
- 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
- DEPRECATED pg_alloc1 60
- ARG fileid int32_t ld
- POINTER meta_lsn DB_LSN * lu
- POINTER alloc_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 52
- ARG fileid int32_t ld
- ARG pgno db_pgno_t lu
- POINTER meta_lsn DB_LSN * lu
- DBT header DBT s
- ARG next db_pgno_t lu
- END
- DEPRECATED pg_free1 61
- ARG fileid int32_t ld
- ARG pgno db_pgno_t lu
- POINTER meta_lsn DB_LSN * lu
- POINTER alloc_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.
- */
- DEPRECATED split1 53
- ARG fileid int32_t ld
- 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-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
- * npgno: the next page number
- * nlsn: the next page's original LSN (or 0 if no next page).
- * root_pgno: the root page number
- * pg: the split page's contents before the split.
- * opflags: SPL_NRECS: if splitting a tree that maintains a record count.
- */
- BEGIN split 62
- ARG fileid int32_t ld
- 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
- ARG root_pgno db_pgno_t lu
- DBT pg DBT s
- ARG opflags u_int32_t lu
- 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.
- */
- DEPRECATED rsplit1 54
- ARG fileid int32_t ld
- 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-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.
- * root_pgno: the root page number.
- * nrec: the tree's record count.
- * rootent: last entry on the root page.
- * rootlsn: the root page's original lsn.
- */
- BEGIN rsplit 63
- ARG fileid int32_t ld
- ARG pgno db_pgno_t lu
- DBT pgdbt DBT s
- ARG root_pgno db_pgno_t lu
- 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 55
- ARG fileid int32_t ld
- 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.
- * opflags: CAD_UPDATEROOT: if root page count was adjusted.
- */
- BEGIN cadjust 56
- ARG fileid int32_t ld
- ARG pgno db_pgno_t lu
- POINTER lsn DB_LSN * lu
- ARG indx u_int32_t lu
- ARG adjust int32_t ld
- ARG opflags u_int32_t lu
- 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 57
- ARG fileid int32_t ld
- 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 58
- ARG fileid int32_t ld
- 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
- /*
- * BTREE-root: log the assignment of a root btree page.
- */
- BEGIN root 59
- ARG fileid int32_t ld
- ARG meta_pgno db_pgno_t lu
- ARG root_pgno db_pgno_t lu
- POINTER meta_lsn DB_LSN * lu
- END
- /*
- * BTREE-curadj: undo cursor adjustments on txn abort.
- * Should only be processed during DB_TXN_ABORT.
- * NOTE: the first_indx field gets used to hold
- * signed index adjustment in one case.
- * care should be taken if its size is changed.
- */
- BEGIN curadj 64
- /* Fileid of db affected. */
- ARG fileid int32_t ld
- /* Which adjustment. */
- ARG mode db_ca_mode ld
- /* Page entry is from. */
- ARG from_pgno db_pgno_t lu
- /* Page entry went to. */
- ARG to_pgno db_pgno_t lu
- /* Left page of root split. */
- ARG left_pgno db_pgno_t lu
- /* First index of dup set. Also used as adjustment. */
- ARG first_indx u_int32_t lu
- /* Index entry is from. */
- ARG from_indx u_int32_t lu
- /* Index where entry went. */
- ARG to_indx u_int32_t lu
- END
- /*
- * BTREE-rcuradj: undo cursor adjustments on txn abort in
- * renumbering recno trees.
- * Should only be processed during DB_TXN_ABORT.
- */
- BEGIN rcuradj 65
- /* Fileid of db affected. */
- ARG fileid int32_t ld
- /* Which adjustment. */
- ARG mode ca_recno_arg ld
- /* Root page number. */
- ARG root db_pgno_t ld
- /* Recno of the adjustment. */
- ARG recno db_recno_t ld
- /* Order number of the adjustment. */
- ARG order u_int32_t ld
- END