/*- * 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 INCLUDE INCLUDE #include INCLUDE #include INCLUDE #include 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